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

上传人:s****8 文档编号:67210399 上传时间:2022-12-24 格式:PPT 页数:43 大小:189KB
返回 下载 相关 举报
verilog模块的结构、数据类型、变量和基本运算符.ppt_第1页
第1页 / 共43页
verilog模块的结构、数据类型、变量和基本运算符.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

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

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

2、);assign e=(b&c);endmodule3.1 3.1 模块的模块的结构结构Verilog Verilog 模块的结构由在模块的结构由在模块的结构由在模块的结构由在modulemodule和和和和endmodule endmodule 关键词之间的四个主要部分组成:关键词之间的四个主要部分组成:关键词之间的四个主要部分组成:关键词之间的四个主要部分组成:-端口信息:端口信息:端口信息:端口信息:module block1(a,b,c,d);module block1(a,b,c,d);-输入输入输入输入/输出说明输出说明输出说明输出说明 :input a,b,c;input a,b

3、,c;output d;output d;-内部信号:内部信号:内部信号:内部信号:wire x;wire x;-功能定义:功能定义:功能定义:功能定义:assign d=a|x;assign d=a|x;assign x=(b&c);assign x=(b&c);endmodule endmodule VerilogVerilog HDL HDL模块的结构模块的结构请在下面的空格中填入适当的符号请在下面的空格中填入适当的符号请在下面的空格中填入适当的符号请在下面的空格中填入适当的符号 使其成为右图的使其成为右图的使其成为右图的使其成为右图的Verilog Verilog 模块模块模块模块 :

4、module block1(a,b,);module block1(a,b,);input ,;input ,;d,;d,;assign d =a|(b&c);assign d =a|(b&c);assign e =(b&c);assign e =(b&c);_ _编写编写VerilogVerilog HDL HDL模块的练习模块的练习abcde请在下面的空格中填入适当的符号请在下面的空格中填入适当的符号请在下面的空格中填入适当的符号请在下面的空格中填入适当的符号 使其成为右图的使其成为右图的使其成为右图的使其成为右图的Verilog Verilog 模块模块模块模块 :module bloc

5、k1(a,b,module block1(a,b,c c,d d,e e););input input a a,b b,c c;output output d,d,e e;assign d =a|(b&c);assign d =a|(b&c);assign e =(b&c);assign e =(b&c);endmoduleendmodule编写编写VerilogVerilog HDL HDL模块的练习模块的练习abcdemodule block(a,b,c);output c;input a,b;endmodulemodule block3(a,b,c);output 2:0 c;input

6、 2:0 a,b;block b0(.b(b0),.a(a0),.c(c0);block b1(a1,b1,c1);endmodule模块的模块的端口定义与调用端口定义与调用端口实现模块互连,要保证连接正确。端口实现模块互连,要保证连接正确。端口实现模块互连,要保证连接正确。端口实现模块互连,要保证连接正确。本模块本模块本模块本模块信号信号信号信号另一模另一模另一模另一模块信号块信号块信号块信号在在在在Verilog Verilog 模块中有三种方法可以生成逻辑电路:模块中有三种方法可以生成逻辑电路:模块中有三种方法可以生成逻辑电路:模块中有三种方法可以生成逻辑电路:-用用用用 assign

7、assign assign assign 语句语句语句语句(连续赋值语句连续赋值语句连续赋值语句连续赋值语句):assign cs =(a0&a1&a2);assign cs =(a0&a1&a2);-用用用用 元件的实例调用元件的实例调用元件的实例调用元件的实例调用:and2 and_inst(q,a,b);and2 and_inst(q,a,b);-用用用用 always always always always 块块块块(过程块过程块过程块过程块):always (posedge clk or posedge clr)always (posedge clk or posedge clr)

8、begin if(clr)q=0;else if(en)q=d;begin if(clr)q=0;else if(en)q=d;end endVerilog HDL模块中的逻辑表示abcde 如在模块中逻辑功能由下面三个语句块组成如在模块中逻辑功能由下面三个语句块组成如在模块中逻辑功能由下面三个语句块组成如在模块中逻辑功能由下面三个语句块组成 :assign cs =(a0&a1&a2);/-1 assign cs =(a0&a1&a2);/-1 and2 and_inst(q and2 and_inst(qo outut,a,b);/-2,a,b);/-2 always (posedge c

9、lk or posedge clr)/-3 always (posedge clk or posedge clr)/-3 begin if(clr)q=0;else if(en)q=d;begin if(clr)q=0;else if(en)q=d;endend三条语句是并行的,它们产生独立的逻辑电路;三条语句是并行的,它们产生独立的逻辑电路;三条语句是并行的,它们产生独立的逻辑电路;三条语句是并行的,它们产生独立的逻辑电路;而在而在而在而在 always always always always 块中块中块中块中:begin:begin:begin:begin 与与与与 end end en

10、d end 之间是顺序执行的。之间是顺序执行的。之间是顺序执行的。之间是顺序执行的。并行和顺序并行和顺序逻辑关系的表示逻辑关系的表示VerilogVerilog模块中的信号模块中的信号只有两种主要的信号类型:只有两种主要的信号类型:-寄存器类型:寄存器类型:reg 在在always always 块中被赋值的信号,块中被赋值的信号,往往往往代表代表 触发器,但不一定是触发器。触发器,但不一定是触发器。-连线类型连线类型:wire 用用 assign assign 关键词指定的组合逻辑的信号关键词指定的组合逻辑的信号 或连线或连线VerilogVerilog模块中的信号要点模块中的信号要点需要注

11、意的是:需要注意的是:-寄存器寄存器(reg reg)类型类型不一定是触发器不一定是触发器。-它只是在它只是在 always always 块中赋值的信号块中赋值的信号。VerilogVerilog中中regreg与与wirewire的不同点的不同点用寄存器用寄存器用寄存器用寄存器(regreg)类型变量生成组合逻辑举类型变量生成组合逻辑举类型变量生成组合逻辑举类型变量生成组合逻辑举例例例例:module rw1(a,b,out1,out2);module rw1(a,b,out1,out2);input a,b;input a,b;output out1,out2;output out1,o

12、ut2;reg out1;reg out1;wire out2;wire out2;assign out2=a;assign out2=a;always(b)out1=b;always(b)out1=b;endmodule endmodule aout2BUFFbINVout1VerilogVerilog中中regreg与与wirewire的不同点的不同点用寄存器用寄存器用寄存器用寄存器(reg reg reg reg)类型变量生成触发器的类型变量生成触发器的类型变量生成触发器的类型变量生成触发器的例子例子例子例子:module rw2(clk,d,out1,out2);module rw2(

13、clk,d,out1,out2);input clk,d;input clk,d;output out1,out2;output out1,out2;reg out1;reg out1;wire out2;wire out2;assign out2=d&out1;assign out2=d&out1;always(posedge clk)always(posedge clk)begin out1=d;endbegin out1=d;endendmodule endmodule dout2AND2i1clkout1DQDFFVerilogVerilog中两种不同的赋值语句中两种不同的赋值语句不阻

14、塞(不阻塞(不阻塞(不阻塞(non-blocking)non-blocking)赋值语句:赋值语句:赋值语句:赋值语句:always(posedge clk)always(posedge clk)begin begin b=a;b=a;c=b;c=b;end endclkDFFcDQDQabDFFVerilogVerilog中两种不同的赋值语句中两种不同的赋值语句阻塞(阻塞(阻塞(阻塞(blocking)blocking)赋值语句:赋值语句:赋值语句:赋值语句:always(posedge clk)always(posedge clk)begin begin b=a;b=a;c=b;c=b;e

15、nd end clkDFFcDQab两种不同的赋值语句区别要点 非阻塞(非阻塞(非阻塞(非阻塞(non-blocking)non-blocking)赋值语句赋值语句赋值语句赋值语句(b=a)(b=a):-块内的块内的块内的块内的赋值语句同时赋值;赋值语句同时赋值;赋值语句同时赋值;赋值语句同时赋值;-b -b -b -b 的值被赋成新值的值被赋成新值的值被赋成新值的值被赋成新值 a a a a 的操作的操作的操作的操作,是与块内其他赋值是与块内其他赋值是与块内其他赋值是与块内其他赋值 语句同语句同语句同语句同时完成的;时完成的;时完成的;时完成的;-建议在时序电路的模块中使用建议在时序电路的模

16、块中使用建议在时序电路的模块中使用建议在时序电路的模块中使用不阻塞不阻塞不阻塞不阻塞赋值赋值赋值赋值;组合逻辑的模;组合逻辑的模;组合逻辑的模;组合逻辑的模块中使用阻塞赋值块中使用阻塞赋值块中使用阻塞赋值块中使用阻塞赋值。阻塞(阻塞(阻塞(阻塞(blocking)blocking)赋值语句赋值语句赋值语句赋值语句(b=a)(b=a):-完成该赋值语句后才能做下一句的操作;完成该赋值语句后才能做下一句的操作;完成该赋值语句后才能做下一句的操作;完成该赋值语句后才能做下一句的操作;-b -b -b -b 的值立刻被赋成新值的值立刻被赋成新值的值立刻被赋成新值的值立刻被赋成新值 a;a;a;a;-时

17、序电路中硬件没有对应的电路,因而综合结果未知时序电路中硬件没有对应的电路,因而综合结果未知时序电路中硬件没有对应的电路,因而综合结果未知时序电路中硬件没有对应的电路,因而综合结果未知。3.2 3.2 数据类型及常量和变量数据类型及常量和变量数据类型用来表示硬件电路的数据存储和传数据类型用来表示硬件电路的数据存储和传送元素的送元素的总共有总共有1919种数据类型种数据类型常用常用4 4种种:regreg 型型型型wire wire 型型型型integer integer 型型型型parameter parameter 型型型型3.2.1 3.2.1 常量常量n数字整数常量:1)二进制整数(b或B

18、)2)十进制整数(d或D)3)十六进制整数(h或H)4)八进制整数(o或O)数字表达方式:如:8b10000011、4hf、5d12、d12、12x和z值:不定值和高阻值 如:4b10 x0、4b101z、12dz、12d?、8h4x3.2.1 3.2.1 常量常量n数字数字负数:位宽前加-号,内部是补码如:-1=-321=32hFFFFFFFF1)默认是32位、十进制下划线:仅增加可读性 如:16b10 x0_0000_0000_1111“AB”=16b01000001_010000103.2.1 3.2.1 常量常量n参数(参数(parameter)型)型参数是一个常量,经常用于定义时延和

19、变量的宽度如:parameter BITWIDTH=8;parameter e=32,a=8,b=16;模块引用另一模块的实例时,传递参数值module top;wire 3:0A4;wire 3:0F4;decode#(3,4)D1(A4,F4)endmodulemodule decode(A,F);parameter Width=1;parameter P=2;.endmodulen参数(参数(parameter)型)型在一个模块改变另一模块的参数时,使用defparam命令include“top.v”include“block.v”include“note.v”module test;w

20、ire W;top T();endmodulemodule top;wire W;block B1();block B2();endmodulemodule block;parameter P=0;endmodulemodule note;defparam test.T.B1.P=2,test.T.B2.P=3;endmodulenotetesttopblockblockB2B2T3.2.2 3.2.2 变量变量n网络数据类型网络数据类型:表示结构实体之间的物理连接wire型:用来表示单个门驱动或连续赋值语句驱动的网络型数据,默认值为z,常用assign语句或实例元件的输出赋值。tri型:用来

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

22、在程序运行过程中其值可以改变的量mm7mm6mm5mm4mm3mm2mm1mm0mm3=4b0110;0110mm7mm6mm5mm4mm3mm2mm1mm03.3 3.3 运算符及表达式运算符及表达式算术运算符(+,,/,)赋值运算符(=,=,=)逻辑运算符(&,|,!)条件运算符(?:)位运算符(,|,&,)移位运算符()拼接运算符()运算符按其功能运算符按其功能可分为以下几类可分为以下几类:按其所带操作数的个按其所带操作数的个数运算符可分为三种数运算符可分为三种:单目运算符单目运算符:可以带一个操作数,操作数放在运算符的右边。二目运算符二目运算符:可以带二个操作数,操作数放在运算符的两边

23、。三目运算符三目运算符:可以带三个操作,这三个操作数用三目运算符分隔开。思考题思考题1.模块由哪几部分组成?Verilog Verilog 模块的结构由在模块的结构由在模块的结构由在模块的结构由在modulemodule和和和和endmodule endmodule 关键词之间的四个主要部分组成:关键词之间的四个主要部分组成:关键词之间的四个主要部分组成:关键词之间的四个主要部分组成:-端口信息:端口信息:端口信息:端口信息:module block1(a,b,c,d);module block1(a,b,c,d);-输入输入输入输入/输出说明输出说明输出说明输出说明 :input a,b,c

24、;input a,b,c;output d;output d;-内部信号:内部信号:内部信号:内部信号:wire x;wire x;-功能定义:功能定义:功能定义:功能定义:assign d=a|x;assign d=a|x;assign x=(b&c);assign x=(b&c);endmodule endmodule 思考题思考题2.端口分为几种?端口分为输入输出和双向端口。端口分为输入输出和双向端口。端口分为输入输出和双向端口。端口分为输入输出和双向端口。3.为什么端口要声明信号的位宽?端口代表了电路的输入输出连接线,因此要明确端口代表了电路的输入输出连接线,因此要明确端口代表了电路的

25、输入输出连接线,因此要明确端口代表了电路的输入输出连接线,因此要明确连线的数量。连线的数量。连线的数量。连线的数量。4.能否说模块相当于电路图中的功能模块,端口相当于功能模块的引脚?能能思考题思考题5.模块中的功能描述可以由哪几类语句或语句块组成?它们出现的顺序会不会影响功能的描述?功能描述由:功能描述由:功能描述由:功能描述由:assignassign语句、实例化门电路和语句、实例化门电路和语句、实例化门电路和语句、实例化门电路和alwaysalways块组成。不会。块组成。不会。块组成。不会。块组成。不会。6.这几类描述中哪一种直接与电路结构有关?实例化门电路。实例化门电路。实例化门电路。

26、实例化门电路。思考题思考题7.最基本的Verilog变量有哪几种?最基本的Verilog变量:wire和reg8.wire和reg型变量的差别是什么?无记忆和有记忆无记忆和有记忆无记忆和有记忆无记忆和有记忆assignassign语句赋值和语句赋值和语句赋值和语句赋值和alwaysalways块内赋值块内赋值块内赋值块内赋值9.由连续赋值语句assign复制的变量能否是reg型变量?不能不能思考题思考题10.在always块中被赋值的变量能否是wire类型的?如果不能,那么必须是什么类型的?他们一定是实际的寄存器吗?不能;必须是不能;必须是不能;必须是不能;必须是regreg类型;不一定是实际

27、的寄存器。类型;不一定是实际的寄存器。类型;不一定是实际的寄存器。类型;不一定是实际的寄存器。11.参数类型的变量有什么用处?用标识符表示一个常量,提高可读性和可维护性用标识符表示一个常量,提高可读性和可维护性用标识符表示一个常量,提高可读性和可维护性用标识符表示一个常量,提高可读性和可维护性在模块或实例引用时,通过参数传递改变值。在模块或实例引用时,通过参数传递改变值。在模块或实例引用时,通过参数传递改变值。在模块或实例引用时,通过参数传递改变值。多层次模块构成的电路中,重新定义参数多层次模块构成的电路中,重新定义参数多层次模块构成的电路中,重新定义参数多层次模块构成的电路中,重新定义参数d

28、efparamdefparam思考题思考题12.Verilog语法的参数传递和重新定义有什么直接的应用价值?使得已编写的从模块具有更大的灵活性。使得已编写的从模块具有更大的灵活性。使得已编写的从模块具有更大的灵活性。使得已编写的从模块具有更大的灵活性。13.逻辑比较符小于等于”=”和非阻塞赋值符的表示完全一样,为什么Verilog在语句的解释和编译时不会搞错?逻辑比较符用在需要逻辑值的地方,通常与语句的逻辑比较符用在需要逻辑值的地方,通常与语句的逻辑比较符用在需要逻辑值的地方,通常与语句的逻辑比较符用在需要逻辑值的地方,通常与语句的后续要求必须是逻辑值,此时后续要求必须是逻辑值,此时后续要求必

29、须是逻辑值,此时后续要求必须是逻辑值,此时”=”=”为比较符。为比较符。为比较符。为比较符。思考题思考题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 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 模块的模块的结构结构

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com