资源描述:
《verilog模块的结构、数据类型、变量和基本运算符》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章模块的结构、数据类型、变量和基本运算符3.1模块的结构module模块名(端口信息);输入/输出说明内部信号声明逻辑功能描述endmoduleVerilog模块由两部分组成:端口信息和内部功能。abcdemoduleblock1(a,b,c,d,e);inputa,b,c;outputd,e;assignd=a
2、(b&~c);assigne=(b&~c);endmodule3.1模块的结构Verilog模块的结构由在module和endmodule关键词之间的四个主要部分组成:-端口信息:moduleblock1(a,b,c,d);-输入
3、/输出说明:inputa,b,c;outputd;-内部信号:wirex;-功能定义:assignd=a
4、x;assignx=(b&~c);endmoduleVerilogHDL模块的结构请在下面的空格中填入适当的符号使其成为右图的Verilog模块:moduleblock1(a,b,—,—,—);input—,—,—;——d,—;assignd=a
5、(b&~c);assigne=(b&~c);_______编写VerilogHDL模块的练习abcde请在下面的空格中填入适当的符号使其成为右图的Verilog模块:moduleblock1(a,
6、b,c,d,e);inputa,b,c;outputd,e;assignd=a
7、(b&~c);assigne=(b&~c);endmodule编写VerilogHDL模块的练习abcdemoduleblock(a,b,c);outputc;inputa,b;……;endmodulemoduleblock3(a,b,c);output[2:0]c;input[2:0]a,b;……;blockb0(.b(b[0]),.a(a[0]),.c(c[0]));blockb1(a[1],b[1],c[1]);endmodule模块的端口定义与调用端口实现模
8、块互连,要保证连接正确。本模块信号另一模块信号在Verilog模块中有三种方法可以生成逻辑电路:-用assign语句(连续赋值语句):assigncs=(a0&~a1&~a2);-用元件的实例调用:and2and_inst(q,a,b);-用always块(过程块):always@(posedgeclkorposedgeclr)beginif(clr)q<=0;elseif(en)q<=d;endVerilogHDL模块中的逻辑表示abcde如在模块中逻辑功能由下面三个语句块组成:assigncs=(a0&~a1&~a2);//-----1an
9、d2and_inst(qout,a,b);//-----2always@(posedgeclkorposedgeclr)//-----3beginif(clr)q<=0;elseif(en)q<=d;end三条语句是并行的,它们产生独立的逻辑电路;而在always块中:begin与end之间是顺序执行的。并行和顺序逻辑关系的表示Verilog模块中的信号只有两种主要的信号类型:-寄存器类型:reg在always块中被赋值的信号,往往代表触发器,但不一定是触发器。-连线类型:wire用assign关键词指定的组合逻辑的信号或连线Verilog模块
10、中的信号要点需要注意的是:-寄存器(reg)类型不一定是触发器。-它只是在always块中赋值的信号。Verilog中reg与wire的不同点用寄存器(reg)类型变量生成组合逻辑举例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1=~b;endmoduleaout2BUFFbINVout1Verilog中reg与wire的不同点用寄存器(reg)类型变量生成触发器的例子:modulerw2(clk,d,
11、out1,out2);inputclk,d;outputout1,out2;regout1;wireout2;assignout2=d&~out1;always@(posedgeclk)beginout1<=d;endendmoduledout2AND2i1clkout1DQDFFVerilog中两种不同的赋值语句不阻塞(non-blocking)赋值语句:always@(posedgeclk)beginb<=a;c<=b;endclkDFFcDQDQabDFFVerilog中两种不同的赋值语句阻塞(blocking)赋值语句:always@(
12、posedgeclk)beginb=a;c=b;endclkDFFcDQab两种不同的赋值语句区别要点非阻塞(non-blocking)赋值语句(b<