收藏 分享(赏)

第5章 硬件描述语言Verilog HDL(2).ppt

上传人:dreamzhangning 文档编号:5752563 上传时间:2019-03-15 格式:PPT 页数:36 大小:297.50KB
下载 相关 举报
第5章 硬件描述语言Verilog HDL(2).ppt_第1页
第1页 / 共36页
第5章 硬件描述语言Verilog HDL(2).ppt_第2页
第2页 / 共36页
第5章 硬件描述语言Verilog HDL(2).ppt_第3页
第3页 / 共36页
第5章 硬件描述语言Verilog HDL(2).ppt_第4页
第4页 / 共36页
第5章 硬件描述语言Verilog HDL(2).ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、第5章 硬件描述语言Verilog HDL,5.1 Verilog HDL语言简介 5.2 Verilog HDL的特点 5.3 Verilog HDL重要的功能和概念 5.4 Verilog HDL的语法规定与常规要素 5.5 Verilog HDL代码基本结构 5.6 Verilog HDL结构说明语句 5.7 Verilog HDL的语句顺序与并行执行 5.8 Verilog HDL不同抽象级别的模型 5.9 Verilog HDL仿真语句 5.10 数字电路Verilog HDL系统设计,本章内容,5.1 Verilog HDL简介,Verilog发展过程: 1985年:Verilog

2、-XL 1989年:Cadence使用Verilog 1990年:成立OVI推广Verilog 1995年:成为IEEE标准 发展趋势:SystemVerilog、Superlog等。,5.2 Verilog特点,简单、规范,易于开发 具有混合仿真的能力 具有高级语言的结构 具有用户定于原语,创建灵活,5.3 Verilog HDL重要功能和概念,抽象模型,抽象层模块各层均可以由Verilog语言完成,Verilog HDL8种行为描述语言,顺序、并行执行 控制过程的启动时间 事件触发 Task结构 Function结构 各种建立表达式的运算符,5.4 Verilog语法规定与常规要素,Ver

3、ilog规则与C语言类似,但有区别。 C语言是顺序执行,Verilog语言则可以定义并行执行。 从根本上讲,Verilog是描述硬件的语言,而硬件肯定要有并行模块的。,Verilog 语义要素,块语句:initial块、always块 赋值语句:阻塞赋值和非阻塞赋值 空格:就是分隔符。 注释:单行注释/,多行注释/*/ 整数和实常数:如:64hff01、8b1101_0001,h83a,标识符。可以使用大小写字母、和下划线开头,可以包含数字、字母、$符。合法的标识符:shift_reg_a,bus_index非法的标识符:34net、a*b_net 系统任务和系统函数。以$开头,提供一种封装好

4、的行为。常见的有:$display,$finish,$hold等。 编译命令。以“”反引号开始的标识符是编译器指令。如define, ifdef,值集合0,1,x,z 参数。用于定义时延和变量宽度。 数据类型:有两种: 线网类型(net)结构化元器件间的物理连线。Wire、tri等。 寄存器类型(reg)抽象的数据存储单元。Reg、integer。,5.5 Verilog HDL代码的基本结构,Verilog HDL的基本设计单元是“模块”。 Module(); 端口说明(input,out,inout) 参数定义 数据类型定义 连续赋值语句(assign) 过程块(initial和alway

5、s) 行为描述语句 底层模块实例 任务和函数 延时说明块,例如: module block1(a,b,c,d ); /端口定义 input a,b,c; / I/O说明 output d; / I/O 说明 wire x; assign d = a | x; /功能描述 assign x = ( b & c ); endmodule,Verilog运算符和优先级,Verilog HDL门级结构描述,基本门:and、nand、buf、pullup等 用户定义原语 连续赋值语句 assign = ,Verilog HDL行为建模语句,过程结构initial、always。所有的过程initial、

6、always语句都在0时刻开始执行。 时序控制,用于时延。 事件控制 边沿触发:posedge、negedge 电平触发 语句块。顺序语句beginend 并行语句。forkjoin,过程性赋值 只能对寄存器类型的变量赋值。,非阻塞性赋值(=)是在语句块结束后,块内的非阻塞性赋值语才完成赋值操作,进行赋值。,module nonblocking(clk,a,b,c);output c,b; input clk,a; reg c,b;always (posedge clk) begin b = a ; c = b;end endmodule,仿真波形,阻塞赋值,阻塞性赋值是指立即赋值,在该语句结

7、束时就完成了赋值操作。,module nblocking(clk,a,b,c); output c,b; input clk,a; reg c,b; always (posedge clk) begin b = a ;c = b;end endmodule,仿真波形,If条件语句,If条件语句有三种格式: 1)if (表达式) 语句; 2)if (表达式) 语句1;else 语句2; 3)if (表达式1) 语句1;else if (表达式2) 语句2; else if (表达式n)语句n; else 语句n+1;,case条件语句,语法格式: case(控制表达式)分支表达式1: 语句1;分

8、支表达式2: 语句2;分支表达式n: 语句n;default: 语句n1; endcase,Casez,将高阻忽略 Casex,将高阻和未定x均忽略不计。 循环语句:forever、repeat、while、for,5.6 Verilog HDL的结构说明语句,always说明语句不断重复执行,直到仿真结束 module always_demo (counter,tick,clk); output tick; input clk; reg 7:0 counter; reg tick; always (posedge clk) begintick = tick;counter = counter

9、 + 1; end,initial语句 task和function语句分别用来由用户定义任务和函数 task ; /任务定义端口及数据类型声明语句;其他语句; endtask,5.7 Verilog HDL语句的顺序执行与并行执行,在 “always”模块内,逻辑按书写的顺序执行。 module serial1(q, a, clk); output q, a; input clk; reg q, a;always (posedge clk)beginq=q; /阻塞赋值语句a=q;end endmodule,续,“always”模块外的“assign”语句、实例元件都是同时(即并行)执行的 ,

10、它们在程序中的先后顺序对结果并没有影响 。 module parall2(q, a, clk); output q, a; input clk; reg q, a; always (posedge clk)begina=q;end always (posedge clk)beginq=q; end endmodule,5.8 Verilog HDL模块的种类和描述,Verilog模块分为行为模块和可综合模块。 描述分为行为级描述和门级描述。 行为级描述:就电路需要实现的功能进行描述 module mux4_1(out, in1, in2, in3, in4, cntrl1, cntrl2);

11、output out; input in1, in2, in3, in4, cntrl1, cntrl2; assign out=(in1 endmodule,门级描述,门级描述 module mymux(out,in1,in2,in3,in4,cntrl1,cntrl2); output out; input in1,in2,in3,in4,cntrl1,cntrl2; wire notctrl1,notcntrl2,w,x,y,z; not(notcntrl1,cntrl1); not(notcntrl2,cntrl2); and(w,in1,notcntrl1,notcntrl2); a

12、nd(x,in2,notcntrl1,cntrl2); and(y,in3,cntrl1,notcntrl2); and(z,in4,cntrl1,cntrl2); or(out,w,x,y,z); endmodule,以上两种描述的逻辑电路,5.9 Verilog HDL仿真语言,仿真的必要 对于完成的模块,如何在成本和效率上完成测试?,Verilog HDL仿真语句的基本任务,信息显示系统任务。用于仿真过程中在标准输出设备上显示仿真信息。 display、write 仿真监视系统任务 对变量,字符串等进行监视。 如monitor等,5.10常用数字电路的Verilog HDL系统设计,1、

13、组合逻辑门电路设计 加法器 module adder4(COUT, SUM, A, B, CIN); output3:0 SUM; output COUT; input3:0 A, B; input CIN; assign COUT, SUM=A+B+CIN; endmodule,四位加法器的仿真波形,数据比较器,module COMP(A, B, LG, EQ, SM); input 1:0 A, B; output LG, EQ, SM; assign LG, EQ, SM = FUNC_COMP (A, B);function 2:0 FUNC_COMP;input 1:0 A ,B;i

14、f(AB)FUNC_COMP = 3b100;else if (AB)FUNC_COMP = 3b001;else FUNC_COMP = 3b010;endfunction endmodule,编码器,module ENC (IN, Y); input 3:0 IN; output 1:0 Y; parameter SW_IN0 = 4b0001; parameter SW_IN1 = 4b0010; parameter SW_IN2 = 4b0100; parameter SW_IN3 = 4b1000; assign Y= FUNC_ENC (IN);function 1:0 FUNC_

15、ENC;input 3:0 IN;case (IN)SW_IN0: FUNC_ENC = 0;SW_IN1: FUNC_ENC = 1;SW_IN2: FUNC_ENC = 2;SW_IN3: FUNC_ENC = 3;endcaseendfunction endmodule,2、时序逻辑电路系统设计,JK触发器 module SY_JK_FF(J, K, CLK, Q, QB); input J, K, CLK; output Q, QB; reg Q; always (posedge CLK)case (J, K)0: Q = Q;1: Q = 0;2: Q = 1;3: Q = Q;en

16、dcase assign QB = Q; endmodule,摩尔型有限状态机,module simple (Clock, Resetn, w, z); input Clock, Resetn, w; output z; reg 2:1 y, Y; parameter 2:1 A = 2b00, B = 2b01, C = 2b10; / Define the next state combinational circuit always (w, y) case (y) A: if (w) Y = B; else Y = A; B: if (w) Y = C; else Y = A; C: i

17、f (w) Y = C; else Y = A; default: Y = 2bxx; endcase / Define the sequential block always (negedge Resetn, posedge Clock) if (Resetn = 0) y = A; else y = Y; / Define output assign z = (y = C); endmodule,摩尔型串行加法器,八位计数器,module counter8 ( out, cout, data, load, cin, clk ) ; output 7:0 out; output cout; input 7:0 data; input load, cin, clk ; reg7:0 out; always (posedge clk)beginif(load)out = data; / 同步预置数据elseout = out + 1 + cin; / 加1计数endassign cout = /若out为8hFF,/cin为1,则cout为1 endmodule,仿真波形,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报