Verilog模块module(精品).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Verilog模块module(精品).ppt》由会员分享,可在线阅读,更多相关《Verilog模块module(精品).ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二讲Verilog 语法Verilog模块moduleVerilog语法要素Verilog数据类型及逻辑系统2.1 模块模块module模块是模块是verilog设计中的基本功能块,在第一讲有简单交待,设计中的基本功能块,在第一讲有简单交待,这里详细介绍模块内部构成这里详细介绍模块内部构成module 模块名(端口列 表);端口声明端口声明,参数声明参数声明wire,reg和其它类型和其它类型的变量声明的变量声明数据流语句数据流语句(assign)低层模块实例低层模块实例always和和initial块,所有块,所有行为语句都在块内行为语句都在块内任务和函数任务和函数endmodule必须出
2、现必须出现可选可选module能够表示:能够表示:物理块,如物理块,如IC或或ASIC单元单元逻辑块,如一个逻辑块,如一个CPU设计的设计的ALU部分部分整个系统整个系统每一个模块的描述从关键词每一个模块的描述从关键词module开始,有一个名称(如开始,有一个名称(如SN74LS74,DFF,ALU等等),由关键词等等),由关键词endmodule结束结束。module内部的内部的5个部分:个部分:变量声明变量声明数据流语句数据流语句低层模块实例低层模块实例行为描述块行为描述块任务和函数任务和函数每一部分在每一部分在module内部出现的顺序是任意的。内部出现的顺序是任意的。一个一个veri
3、log源文件中可以有多个模块,且对排列顺序不做要求源文件中可以有多个模块,且对排列顺序不做要求。l端口(Terminal)端口是模块与外界环境交互的接口例如IC芯片的输入、输出引脚就是它的端口。对于外部环境来讲,模块内部是不可模块内部是不可见的,对模块的调用见的,对模块的调用(实例引用实例引用)只能通过其端口进行。只能通过其端口进行。这种特点为设计者提供了很大的灵活性:只要接口保持不变,模块内部的修改并不会影响到外部环境我们也常常将端口称为终端(Terminal)。模块端口等价于芯片的管脚(模块端口等价于芯片的管脚(pin)模块通过端口与外部通信模块通过端口与外部通信l端口列表和端口声明端口列
4、表和端口声明端口在模块名字端口在模块名字后的括号中列出后的括号中列出端口可以说明为端口可以说明为input,output及及inout端口等价于硬件端口等价于硬件的引脚的引脚(pin)input 输入端口输入端口output 输出端口输出端口inout 双向端口双向端口端口声明端口声明也可以采用类似也可以采用类似ANSIC格式来声明端口格式来声明端口/D 触发器触发器module D_FF(input d,clk,clr,output reg q,qb);endmodulemodule adder(cout,sum,a,b,cin);input 2:0 a,b;input cin;output
5、 cout;output 2:0 sum;assign cout,sum=a+b+cin;endmodule例设计三位全加器例设计三位全加器这个例子描述了一个三位的加法器。从例子中可以看出整个这个例子描述了一个三位的加法器。从例子中可以看出整个Verilog HDL程序是嵌套在程序是嵌套在module和和endmodule声明语句里声明语句里的,只出现了一个的,只出现了一个assign语句。语句。adderaddersum2:0a2:0a2:0b2:0b2:0cincincoutcout模块名模块名端口列表端口列表端口声明端口声明数据流语句数据流语句例例SR触发器模块触发器模块/SR 触发器触
6、发器module SR_FF(Q,Q_n,S,R);output Q,Q_n;/端口声明端口声明input S,R;nand n1(Q,S,Q_n);nand n2(Q_n,R,Q);endmodule模块中的模块中的5个部分并没全部出现,个部分并没全部出现,只出现在低层次模块实例只出现在低层次模块实例化化nand为为verilog中的与中的与非门门级原语部件非门门级原语部件D触发器模块触发器模块/D 触发器触发器module D_FF(d,clk,clr,q,qb);output q,qb;input d,clk,clr;reg q,qb;/输出端口输出端口q,qb值保存值保存always(
7、posedge clk)beginif(clr)q=1b0;elseq=d;endnot(qb,q);endmodule 该模块内包括该模块内包括always行为行为块语句块语句always块行为描述语句块行为描述语句4位寄存器设计位寄存器设计module D_FF(d,clk,clr,q,qb);.endmodulemodule REG4(d,clk,clr,q,qb);output 3:0 q,qb;input 3:0 d;input clk,clr;D_FF d0(d 0,clk,clr,q 0,qb 0);D_FF d1(d 1,clk,clr,q 1,qb 1);D_FF d2(d
8、2,clk,clr,q 2,qb 2);D_FF d3(d 3,clk,clr,q 3,qb 3);endmodule模块中只出现在模块中只出现在低层次模块实例化低层次模块实例化可以将模块的实例通过端口连接起来构成一个大的系可以将模块的实例通过端口连接起来构成一个大的系统或元件。统或元件。在上面的例子中,在上面的例子中,REG4有模块有模块DFF的四个实例。注意,的四个实例。注意,每个实例都有自己的名字每个实例都有自己的名字(d0,d1,d2,d3)。实例名是实例名是每个对象唯一的标记,通过这个标记可以查看每个实每个对象唯一的标记,通过这个标记可以查看每个实例的内部。例的内部。实例中端口的次序
9、与模块定义的次序相同。实例中端口的次序与模块定义的次序相同。模块实例化与调用程序不同。每个实例都是模块的一模块实例化与调用程序不同。每个实例都是模块的一个完全的拷贝,相互独立、并行。个完全的拷贝,相互独立、并行。模块实例化模块实例化(module instances).端口与外部信号的连端口与外部信号的连接接在调用模块时,可以用在调用模块时,可以用顺序连接顺序连接和和按名连接按名连接把模块定义的把模块定义的端口与外部信号连接起来端口与外部信号连接起来顺序连接:需要连接的顺序连接:需要连接的信号信号需要与模块声明的端口列表一致;需要与模块声明的端口列表一致;按名连接:端口和外部信号按名字连接在一
10、起按名连接:端口和外部信号按名字连接在一起.D_FF d0(d 0,clk,clr,q 0,qb 0);D_FF d1(d 1,clk,clr,q 1,qb 1);D_FF d2(d 2,clk,clr,q 2,qb 2);D_FF d3(d 3,clk,clr,q 3,qb 3);当设计大规模系统时,端口太多,记住端口顺序不大可当设计大规模系统时,端口太多,记住端口顺序不大可能,可以采用按名连接方法。能,可以采用按名连接方法。不需要连接的端口直接忽略掉即可不需要连接的端口直接忽略掉即可D_FF d0(.d(d 0),.clk(clk),.clr(clr),.q(q 0),.qb(qb 0);
11、D_FF d0(.d(d 0),.clk(clk),.clr(clr),.q(q 0);2.2 Verilog 语法要素标识符关键词空白和注释常量字符串延时操作符1.标识符标识符(identifiers)标识符是用户在描述时给标识符是用户在描述时给Verilog对象起的名字对象起的名字标识符必须以字母标识符必须以字母(a-z,A-Z)或或(_)开头,后面可以是字母、数字、开头,后面可以是字母、数字、($)或或(_)。最长可以是最长可以是1023个字符个字符标识符区分大小写,标识符区分大小写,sel和和SEL是不同的标识符是不同的标识符模块、端口和实例的名字都是标识符模块、端口和实例的名字都是标
12、识符module MUX2_1(out,a,b,sel);output out;input a,b,sel;not not1(sel_,sel);and and1(a1,a,sel_);and and2(b1,b,sel);or or1 (out,a1,b1);endmoduleVerilog标识符标识符合法和非法标识符合法和非法标识符 合法的:合法的:shift_reg_a busa_index bus263非法的:非法的:34net 34net /不能用数字开头a*a*b_netb_net /不能含有非字母符号*n263 n263 /不能含有非字母符号1、用有意义的有效的名字如、用有意义的
13、有效的名字如Sum、CPU_addr等。等。2、用下划线区分词。、用下划线区分词。3、采用一些前缀或后缀,如、采用一些前缀或后缀,如时钟采用时钟采用Clk 前缀:前缀:Clk_50,Clk_CPU;低电平采用低电平采用_n 后缀:后缀:Enable_n;4、统一一定的缩写如全局复位信号、统一一定的缩写如全局复位信号Rst。5、同一信号在不同层次保持一致性,如同一时钟信号必须在各模块、同一信号在不同层次保持一致性,如同一时钟信号必须在各模块保持一致。保持一致。6、参数采用大写,如、参数采用大写,如SIZE。标识符书写注意事项:标识符书写注意事项:2.关键词关键词Verilog HDL 定义了一系
14、列保留字,叫做关键词。注意只有小写的关键词才是保留字。例如,标识符always(这是个关键词)与标识符ALWAYS(非关键词)是不同的。always and assign begin buf buf if0 bufif1 case casex casez cmos deassign default defparam disable edge else end endcase endmodule endfunction endprimitive endspecify endtable endtask event for force forever fork function highz0 hig
15、hz1 if ifnone initial inout input integer join large macrmodule medium module nand negedge nmos nor not notif0 notif1 or output parameter pmos posedge primitive pull0 pull1 pullup pulldown rcmos real realtime reg release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared small specify specparam str
16、ong0 strong1 supply0 supply1table task time trantranif0 tranif1 tri tri0 tri1 triand trior trireg vectored wait wand weak0 weak1 while wire wor xnor xor3.空白符和注释空白符和注释module MUX2_1(out,a,b,sel);/Port declarations output out;input sel,/control input b,/*data inputs*/a;/*The netlist logic selects input
17、”a”when sel=0 and it selects”b”when sel=1.*/not(sel_,sel);and(a1,a,sel_),(b1,b,sel);/What does this/line do?or(out,a1,b1);endmodule格式自由格式自由使用空白符提高可读性及代码组使用空白符提高可读性及代码组织。织。Verilog忽略空白符除非用于忽略空白符除非用于分开其它的语言标记。分开其它的语言标记。多行注释,在多行注释,在/*/内内单行注释单行注释到行末结束到行末结束4.整数常量和实数常量整数常量和实数常量整数的大小可以定义也可以不定义。整数表示为:整数的大小可以
18、定义也可以不定义。整数表示为:其中其中 size:大小,由十进制数表示的位数大小,由十进制数表示的位数(bit)表示。缺省为表示。缺省为32位位 base:数基,可为数基,可为2(b)、8(o)、10(d)、16(h)进制。缺省为进制。缺省为10进制进制 value:是所选数基内任意有效数字,包括是所选数基内任意有效数字,包括X、Z。实数常量可以用十进制或科学表示法表示。实数常量可以用十进制或科学表示法表示。Verilog中,常量中,常量(literals)可是整数也可以是实数可是整数也可以是实数12 unsized decimal(zero-extended to 32 bits)H83a
19、unsized hexadecimal(zero-extended to 32 bits)8b1100_ 0001 8-bit binary64hff01 64-bit hexadecimal(zero-extended to 64 bits)9O17 9-bit octal32bz01x Z-extended to 32 bits3b1010_ 1101 3-bit number,truncated to 3b1016.3 decimal notation32e-4 scientific notation for 0.00324.1E3 scientific notation for 410
20、0整数常量和实数常量整数常量和实数常量整数的大小可以定义也可以不定义。整数表示为:整数的大小可以定义也可以不定义。整数表示为:数字中(数字中(_)忽略,便于查看)忽略,便于查看没有定义大小没有定义大小(size)整数缺省为整数缺省为32位位缺省数基为十进制缺省数基为十进制数基数基(base)和数字和数字(16进制进制)中的字母无大小写之分中的字母无大小写之分当数值当数值value大于指定的大小时,截去高位。如大于指定的大小时,截去高位。如 2b1101表示表示的是的是2b01实数常量实数常量实数可用科学表示法或十进制表示实数可用科学表示法或十进制表示科学表示法表示方式:科学表示法表示方式:,表
21、示:表示:尾数尾数10指数指数5.字符串(字符串(string)字符串要在一行中用双引号括起来,也就是不能跨行。字符串要在一行中用双引号括起来,也就是不能跨行。字符串中可以使用一些字符串中可以使用一些C语言转义语言转义(escape)符,如符,如t n可以使用一些可以使用一些C语言格式符语言格式符(如如%b)在仿真时产生格式化输在仿真时产生格式化输出:出:”This is a normal string”This string has a t tab and ends with a new linen”This string formats a value:val=%b”Verilog中,字符
22、串大多用于显示信息的命令中。中,字符串大多用于显示信息的命令中。Verilog没有没有字符串数据类型字符串数据类型6.延时说明延时说明“#”用于说明过程用于说明过程(procedural)语句和门的实例的延时,但不能语句和门的实例的延时,但不能用于模块的实例化。用于模块的实例化。module MUX2_ 1(out,a,b,sel);output out;input a,b,sel;not#1 not1(sel_,sel);and#2 and1(a1,a,sel_);and#2 and2(b1,b,sel);or#1 or1(out,a1,b1);endmodule门延时有很多类名字:门延时门
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 模块 module 精品
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内