verilog模块的结构、数据类型、变量和基本运算符.ppt

上传人:本田雅阁 文档编号:2127955 上传时间:2019-02-19 格式:PPT 页数:43 大小:189.01KB
返回 下载 相关 举报
verilog模块的结构、数据类型、变量和基本运算符.ppt_第1页
第1页 / 共43页
verilog模块的结构、数据类型、变量和基本运算符.ppt_第2页
第2页 / 共43页
verilog模块的结构、数据类型、变量和基本运算符.ppt_第3页
第3页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《verilog模块的结构、数据类型、变量和基本运算符.ppt》由会员分享,可在线阅读,更多相关《verilog模块的结构、数据类型、变量和基本运算符.ppt(43页珍藏版)》请在三一文库上搜索。

1、第三章 模块的结构、数据类型、变量和基本运算符,3.1 模块的结构,module 模块名(端口信息); 输入/输出说明 内部信号声明 逻辑功能描述 endmodule,Verilog 模块由两部分组成:端口信息和内部功能。,module block1(a, b, c, d, e); input a, b, c; output d, e; assign d = a | ( b endmodule,3.1 模块的结构,Verilog 模块的结构由在module和endmodule 关键词之间的四个主要部分组成: - 端口信息: module block1(a, b, c, d ); - 输入/输出

2、说明 : input a, b, c ; output d ; - 内部信号: wire x; - 功能定义: assign d = a | x ; assign x = ( b endmodule,Verilog HDL模块的结构,请在下面的空格中填入适当的符号 使其成为右图的Verilog 模块 : module block1(a, b, , , ); input , , ; d, ; assign d = a | ( b _,编写Verilog HDL模块的练习,请在下面的空格中填入适当的符号 使其成为右图的Verilog 模块 : module block1(a, b, c , d,

3、e ); input a, b, c; output d, e ; assign d = a | ( b endmodule,编写Verilog HDL模块的练习,module block (a,b,c); output c; input a,b; ; endmodule,module block3(a,b,c); output 2:0 c; input 2:0 a,b; ; block b0(.b(b0),.a(a0),.c(c0); block b1(a1,b1,c1); endmodule,模块的端口定义与调用,端口实现模块互连,要保证连接正确。,本模块信号,另一模块信号,在Verilo

4、g 模块中有三种方法可以生成逻辑电路: - 用 assign 语句(连续赋值语句): assign cs = ( a0 end,Verilog HDL模块中的逻辑表示,如在模块中逻辑功能由下面三个语句块组成 : assign cs = ( a0 end 三条语句是并行的,它们产生独立的逻辑电路; 而在 always 块中: begin 与 end 之间是顺序执行的。,并行和顺序逻辑关系的表示,Verilog模块中的信号,只有两种主要的信号类型: - 寄存器类型: reg 在always 块中被赋值的信号,往往代表 触发器,但不一定是触发器。 - 连线类型: wire 用 assign 关键词指

5、定的组合逻辑的信号 或连线,Verilog模块中的信号要点,需要注意的是: - 寄存器 ( reg )类型不一定是触发器。 - 它只是在 always 块中赋值的信号。,Verilog中reg与wire的不同点,用寄存器 (reg)类型变量生成组合逻辑举例: module rw1( a, b, out1, out2 ) ; input a, b; output out1, out2; reg out1; wire out2; assign out2 = a ; always (b) out1 = b; endmodule,Verilog中reg与wire的不同点,用寄存器 ( reg )类型变

6、量生成触发器的例子: module rw2( clk, d, out1, out2 ) ; input clk, d; output out1, out2; reg out1; wire out2; assign out2 = d end endmodule,Verilog中两种不同的赋值语句,不阻塞(non-blocking) 赋值语句: always (posedge clk) begin b = a ; c = b; end,Verilog中两种不同的赋值语句,阻塞(blocking) 赋值语句: always (posedge clk) begin b = a ; c = b; end

7、,两种不同的赋值语句区别要点,非阻塞(non-blocking) 赋值语句 ( b= a): - 块内的赋值语句同时赋值; - b 的值被赋成新值 a 的操作, 是与块内其他赋值 语句同时完成的; - 建议在时序电路的模块中使用不阻塞赋值;组合逻辑的模块中使用阻塞赋值。 阻塞(blocking) 赋值语句 ( b = a): - 完成该赋值语句后才能做下一句的操作; - b 的值立刻被赋成新值 a; - 时序电路中硬件没有对应的电路,因而综合结果未知。,3.2 数据类型及常量和变量,数据类型用来表示硬件电路的数据存储和传送元素的 总共有19种数据类型 常用4种: reg 型 wire 型 in

8、teger 型 parameter 型,3.2.1 常量,数字 整数常量: 1) 二进制整数(b或B) 2) 十进制整数(d或D) 3) 十六进制整数(h或H) 4) 八进制整数(o或O) 数字表达方式: 如:8b10000011、4hf、5d12、d12、12 x和z值: 不定值和高阻值 如:4b10x0、4b101z、12dz、12d?、8h4x,3.2.1 常量,数字 负数: 位宽前加-号,内部是补码 如:-1=-321=32hFFFFFFFF 1) 默认是32位、十进制 下划线: 仅增加可读性 如:16b10x0_0000_0000_1111 “AB”=16b01000001_0100

9、0010,3.2.1 常量,参数(parameter)型 参数是一个常量,经常用于定义时延和变量的宽度 如: parameter BITWIDTH = 8; parameter e=32, a=8,b=16; 模块引用另一模块的实例时,传递参数值,module top; wire 3:0A4; wire 3:0F4; decode #(3,4) D1(A4,F4) endmodule,module decode(A,F); parameter Width=1; parameter P=2; . endmodule,参数(parameter)型 在一个模块改变另一模块的参数时,使用defpara

10、m命令,include “top.v” include “block.v” include “note.v” module test; wire W; top T(); endmodule,module top; wire W; block B1(); block B2(); endmodule,module block; parameter P=0; endmodule,module note; defparam test.T.B1.P=2, test.T.B2.P=3; endmodule,3.2.2 变量,网络数据类型:表示结构实体之间的物理连接 wire型:用来表示单个门驱动或连续赋值

11、语句驱动的网络型数据,默认值为z,常用assign语句或实例元件的输出赋值。 tri型:用来表示多驱动器驱动的网络型数据 reg型:寄存器类型是数据储存单元的抽象。 通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当,默认值为x。在always 块内被赋值的每一个变量必须是reg型。 wire tri reg型的定义格式相同,变量即在程序运行过程中其值可以改变的量,3.2.2 变量,memory型:通过对reg 型变量建立数组来对存储器建模,可以描述RAM 型存储器,ROM 存储器和reg文件。数组中的每一个单元通过一个数组索引进行寻址。如:reg 3:0 mm 7:0;,变量

12、即在程序运行过程中其值可以改变的量,mm7,mm6,mm5,mm4,mm3,mm2,mm1,mm0,mm3=4b0110;,0110,mm7,mm6,mm5,mm4,mm3,mm2,mm1,mm0,3.3 运算符及表达式,算术运算符(+,,/,) 赋值运算符(=,=,) 拼接运算符( ),运算符按其功能可分为以下几类:,按其所带操作数的个数运算符可分为三种:,单目运算符:可以带一个操作数,操作数放在运算符的右边。 二目运算符:可以带二个操作数,操作数放在运算符的两边。 三目运算符:可以带三个操作,这三个操作数用三目运算符分隔开。,思考题,1. 模块由哪几部分组成?,Verilog 模块的结构由

13、在module和endmodule 关键词之间的四个主要部分组成: - 端口信息: module block1(a, b, c, d ); - 输入/输出说明 : input a, b, c ; output d ; - 内部信号: wire x; - 功能定义: assign d = a | x ; assign x = ( b endmodule,思考题,2. 端口分为几种?,端口分为输入输出和双向端口。,3. 为什么端口要声明信号的位宽?,端口代表了电路的输入输出连接线,因此要明确连线的数量。,4. 能否说模块相当于电路图中的功能模块,端口相当于功能模块的引脚?,能,思考题,5. 模块中

14、的功能描述可以由哪几类语句或语句块组成?它们出现的顺序会不会影响功能的描述?,功能描述由:assign语句、实例化门电路和always块组成。不会。,6. 这几类描述中哪一种直接与电路结构有关?,实例化门电路。,思考题,7. 最基本的Verilog变量有哪几种?,最基本的Verilog变量:wire和reg,8. wire和reg型变量的差别是什么?,无记忆和有记忆 assign语句赋值和always块内赋值,9. 由连续赋值语句assign复制的变量能否是reg型变量?,不能,思考题,10. 在always块中被赋值的变量能否是wire类型的?如果不能,那么必须是什么类型的?他们一定是实际的

15、寄存器吗?,不能;必须是reg类型;不一定是实际的寄存器。,11. 参数类型的变量有什么用处?,用标识符表示一个常量,提高可读性和可维护性 在模块或实例引用时,通过参数传递改变值。 多层次模块构成的电路中,重新定义参数defparam,思考题,12. Verilog语法的参数传递和重新定义有什么直接的应用价值?,使得已编写的从模块具有更大的灵活性。,13. 逻辑比较符小于等于”=”和非阻塞赋值符的表示完全一样,为什么Verilog在语句的解释和编译时不会搞错?,逻辑比较符用在需要逻辑值的地方,通常与语句的后续要求必须是逻辑值,此时”=”为比较符。,思考题,14. 能否说实例引用的描述实际上就是严格意义上的电路结构?,可以说 ,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,3.1 模块的结构,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1