版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 Verilog设计入门 主要内容主要内容u 3.1 组合电路的组合电路的Verilog描述描述u 3.2 时序模块及其时序模块及其Verilog表述表述u 3.3 二进制计数器及其二进制计数器及其Verilog设计设计Verilog概述概述u什么是什么是Verilog HDL?uVerilog HDL(Hardware Discription Language)是一种硬件描述语言,用于是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设从算法级、门级到开关级的多种抽象设计层次的数字系统建模。计层次的数字系统建模。Verilog的历史的历史u最初是于最初是于1983年由年由Gate
2、way Design Automation公司公司(后被后被Cadence收购收购)为其模拟为其模拟器产品开发的硬件建模语言器产品开发的硬件建模语言u1990年,年,Cadence公司成立公司成立OVI(Open Verilog International)组织来负责推广组织来负责推广Verilogu1995年,年,IEEE制定了制定了Verilog HDL标准,即标准,即IEEE Std 1364 - 1995Verilog与与VHDLu目前,设计者使用目前,设计者使用Verilog和和VHDL的情的情况况美国:美国:Verilog: 60%, VHDL: 40%台湾:台湾:Verilog:
3、 50%, VHDL: 50%3.1 组合电路的组合电路的Verilog描述描述 3.1.1 2选选1多路选择器及其多路选择器及其Verilog描述描述 3.1 组合电路的Verilog描述 3.1.1 2选选1多路选择器及其多路选择器及其Verilog描述描述 absy3.1 组合电路的Verilog描述 3.1.1 2选选1多路选择器及其多路选择器及其Verilog描述描述 端口在模块名字端口在模块名字后的括号中列出后的括号中列出端口等价于硬件端口等价于硬件的引脚的引脚(pin)端口可以说明为端口可以说明为input, output及及inoutmodule是层次化设计是层次化设计的基本构
4、件的基本构件模块内部的逻辑模块内部的逻辑功能和电路结构功能和电路结构Assign关键字引关键字引导导 的赋值语句的赋值语句 标示符标示符 module(模块模块)umodule能够表示:能够表示:物理块,如物理块,如IC或或ASIC单元单元逻辑块,如一个逻辑块,如一个CPU设计的设计的ALU部分部分整个系统整个系统u每一个模块的描述从关键词每一个模块的描述从关键词module开始,有一个开始,有一个名称名称(如(如SN74LS74,DFF,ALU等等),由关键词等等),由关键词endmodule结束。结束。module是层是层次化设计的基次化设计的基本构件本构件逻辑描述放在逻辑描述放在modu
5、le内部内部模块端口模块端口(module ports)端口在模块名字端口在模块名字后的括号中列出后的括号中列出端口可以说明为端口可以说明为input, output及及inout端口等价于硬件端口等价于硬件的引脚的引脚(pin)u注意模块的名称注意模块的名称DFF,端口列表及说明,端口列表及说明u模块通过端口与外部通信模块通过端口与外部通信赋值语句赋值语句 条件操作符条件操作符 关键字关键字 赋值语句和条件操作符赋值语句和条件操作符条件运算符条件运算符三三目运算符目运算符信号信号 = = 条件条件?表达式表达式1 1:表达式表达式2 2 条件运算符为条件运算符为?:?: 用法:用法:当条件为
6、当条件为真真,信号取表,信号取表达式达式1 1的值;为的值;为假假,则,则取表达式取表达式2 2的值。的值。关键字关键字u关键字关键字事先定义好的确认符,用来组织语事先定义好的确认符,用来组织语言结构;或者用于定义言结构;或者用于定义Verilog HDLVerilog HDL提供的门提供的门元件(如元件(如andand,notnot,oror,bufbuf)。)。u用用小写小写字母定义!字母定义! 如如always,assign,begin,case,casex,else,end,for,function,if,input,output,repeat,table,time,while,wir
7、e。用户程序中的变量、用户程序中的变量、节点等名称不能与关节点等名称不能与关键字同名!键字同名!Verilog HDL关键字关键字edgeelseendendcaseendfunctionendprimitiveendmoduleendspecifyendtableendtaskeventforforceforeverforkfunction highz0highz1 ififnoneinitialinoutinputintegerjoinlargemacromodulemediummodulenandnegedgenor notnotif0notif1nmosoroutputparamete
8、rpmosposedgeprimitivepulldownpulluppull0pull1andalwaysassignbeginbufbufif0bufif1casecasexcasezcmosdeassigndefaultdefparamdisableVerilog HDL关键字关键字(续)(续)tri0tri1 vectoredwaitwandweak0weak1whilewireworxnorxorrcmosrealrealtimeregreleaserepeatrnmosrpmosrtranrtranif0rtranif1scalaredsmallspecifyspecparamst
9、rengthstrong0 strong1supply0supply1tabletasktrantranif0tranif1timetritriandtriortrireg标识符标识符 所谓标识别符就是用户为程序描述中的所谓标识别符就是用户为程序描述中的Verilog Verilog 对对象所起的名字。象所起的名字。 标识符必须以英语字母(标识符必须以英语字母(a-z, A-Za-z, A-Z)起头,或者用)起头,或者用下横线符(下横线符( _ _ )起头。其中可以包含数字、)起头。其中可以包含数字、$ $符和符和下横线符。下横线符。 标识符最长可以达到标识符最长可以达到10231023个字符
10、。个字符。 模块名、端口名和实例名都是标识符。模块名、端口名和实例名都是标识符。 VerilogVerilog语言是语言是大小写敏感大小写敏感的,因此的,因此sel sel 和和 SEL SEL 是是两个不同的标识符。两个不同的标识符。合法和非法标识符合法和非法标识符 shift_reg_a shift_reg_a busa_indexbusa_index bus263bus26334net 34net a a* *b_net b_net n263n263Verilog Verilog 是大小写敏感的。所有的是大小写敏感的。所有的Verilog Verilog 关键词都是小写的。关键词都是小写
11、的。非法的非法的合法的合法的1、不能用数字开头、不能用数字开头2、不能含有非字母符号、不能含有非字母符号*3、不能含有非字母符号、不能含有非字母符号空格和注释u Verilog 是一种格式很自由的语言。是一种格式很自由的语言。u 空格在文本中起一个分离符的作用,别的空格在文本中起一个分离符的作用,别的没有其没有其 他用处。他用处。u 单行注释符用单行注释符用 /* 与与C 语言一致语言一致u多行注释符用多行注释符用 /* - */ 与与C 语言一致语言一致规范的书写格式规范的书写格式u规定了文本布局、命名和注释的约定,以提规定了文本布局、命名和注释的约定,以提高源代码的高源代码的可读性可读性和
12、和可维护性可维护性。 最顶层的最顶层的module_endmodule模块放在最左模块放在最左侧侧 低一层次的语句向右靠一个低一层次的语句向右靠一个TAB键的距离键的距离 同一语句关键字对齐同一语句关键字对齐文件取名和存盘文件取名和存盘u 文件的扩展名为文件的扩展名为.vu 文件名与该程序的模块名一致文件名与该程序的模块名一致u 文件取名大小写敏感文件取名大小写敏感u 文件名不应该用中文文件名不应该用中文 和数字和数字u 文件存在英文名字的文件夹中,不要存文件存在英文名字的文件夹中,不要存在根目录或桌面上在根目录或桌面上Verilog HDL程序是由程序是由模块模块构成的。每个模块嵌套在构成的
13、。每个模块嵌套在module和和endmodule声明语句中。模块是可以进行层次嵌套的。声明语句中。模块是可以进行层次嵌套的。每个模块要进行端口定义,并说明输入输出端口,然后对模每个模块要进行端口定义,并说明输入输出端口,然后对模块的功能进行行为逻辑描述。块的功能进行行为逻辑描述。程序书写格式自由,一行可以写几个语句,一个语句也可以程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写。分多行写。除了除了endmodule语句、语句、begin_end语句和语句和fork_join语句外,语句外,每个语句和数据定义的最后必须有分号。每个语句和数据定义的最后必须有分号。可用可用/*.*/和
14、和/.对程序的任何部分作注释。加上必要的注对程序的任何部分作注释。加上必要的注释,以增强程序的可读性和可维护性。释,以增强程序的可读性和可维护性。3.1 组合电路的Verilog描述 3.1.2 4选选1多路选择器及其多路选择器及其case语句表述方式语句表述方式 3.1 组合电路的Verilog描述 主要的数据类型主要的数据类型Verilog 有几种主要的数据类型:有几种主要的数据类型: Nets 表示器件之间的物理连接表示器件之间的物理连接, 称为网络连接类型称为网络连接类型 Register 表示抽象的储存单元,称为寄存器变量类型表示抽象的储存单元,称为寄存器变量类型 Parameter
15、 表示运行时的常数,称为参数类型表示运行时的常数,称为参数类型 寄存器阵列寄存器阵列主要的数据类型主要的数据类型-Net-Net型变量定义型变量定义Nets(网络连线):(网络连线):由模块或门驱动的连线。由模块或门驱动的连线。驱动端信号的改变会立刻驱动端信号的改变会立刻传递到输出的连线上。传递到输出的连线上。 如果不明确地说明连接如果不明确地说明连接是何种类型,应该是是何种类型,应该是指指 wire 类型。类型。例如:右图上,例如:右图上,selb的改的改变,会自动地立刻影响或变,会自动地立刻影响或门的输出。门的输出。 netsabslselbselansloutwire型变量型变量最常用的
16、最常用的netsnets型变量,常用来表示以型变量,常用来表示以assignassign语句赋值的语句赋值的组合组合逻辑信号。逻辑信号。模块中的输入模块中的输入/ /输出信号类型输出信号类型缺省缺省为为wirewire型。型。可用做任何方程式的输入,或可用做任何方程式的输入,或“assign”assign”语句和实例语句和实例元件的输出。元件的输出。wirewire 数据名数据名1,1,数据名数据名2, ,2, ,数据名数据名n;n;wiren-1:0wiren-1:0 数据名数据名1,1,数据名数据名2, ,2, ,数据名数据名m;m;或或 wiren:1wiren:1 数据名数据名1,1,
17、数据名数据名2, ,2, ,数据名数据名m;m;每条总线每条总线位宽为位宽为n共有共有m条总线条总线wirewire型向量(总线)型向量(总线)主要的数据类型主要的数据类型-reg-reg型变量定义型变量定义 寄存器(寄存器(register)类型变量)类型变量 register 型变量能保持其值,直到它被赋于新的值。型变量能保持其值,直到它被赋于新的值。 register 型变量常用于行为建模,产生测试的激励信号型变量常用于行为建模,产生测试的激励信号 常用行为语句结构来给寄存器类型的变量赋值。常用行为语句结构来给寄存器类型的变量赋值。 如果信号变量是在过程块如果信号变量是在过程块 (ini
18、tial(initial块块 或或 alwaysalways块块) )中中被赋值的,必须把它声明为寄存器类型变量被赋值的,必须把它声明为寄存器类型变量abslselbselansloutreg_areg_selreg_bureg型变量型变量定义定义在过程块中被赋值的信号在过程块中被赋值的信号,往往往往代表触发器代表触发器,但,但不一定不一定就是触发器(也可以是组合逻辑信号)!就是触发器(也可以是组合逻辑信号)!regreg 数据名数据名1,1,数据名数据名2, ,2, ,数据名数据名n;n;regn-1:0regn-1:0 数据名数据名1,1,数据名数据名2, ,2, ,数据名数据名m;m;或
19、或 regn:1regn:1 数据名数据名1,1,数据名数据名2, ,2, ,数据名数据名m;m;每个向量每个向量位宽为位宽为n共有共有m个个reg型向量型向量 例例 reg4:1 regc,regd; / reg4:1 regc,regd; / /regc,regdregc,regd为为4 4位宽的位宽的regreg型向量型向量regreg型向量(总线)型向量(总线)主要的数据类型主要的数据类型-reg型变量定义型变量定义u用于行为建模用于行为建模u两种语句:两种语句:pinitial 只能执行一次只能执行一次palways 循环执行循环执行u一个模块内可包含任意多个一个模块内可包含任意多个
20、initial 和和always语句,语句,它们相互并行执行,即,它们的执行顺序与其在模块它们相互并行执行,即,它们的执行顺序与其在模块中的顺序无关中的顺序无关过程语句结构过程语句结构always语句语句过程语句结构过程语句结构alwaysalways语句语句ualways语句反复执行语句反复执行例:例: always #5 Clock=Clock;u由事件控制的顺序过程的由事件控制的顺序过程的always语句语句例:例:module HalfAdder(A, B, Sum, Carry); input A, B; output Sum, Carry; reg Sum,Carry; alway
21、s(A or B) begin Sum=AB; Carry=A&B; end endmoduleu电平敏感事件控制电平敏感事件控制例:例:always(A or B)u边沿触发事件控制边沿触发事件控制例:例:always(negedge Clock)过程语句结构过程语句结构always语句语句块语句块语句 begin_end块语句用来将多个语句组织在一起,使得他们在语法上如同一个语句。块语句用来将多个语句组织在一起,使得他们在语法上如同一个语句。块语句分为两类:块语句分为两类:u顺序块:语句置于关键字顺序块:语句置于关键字begin和和end之间,块中的语句以顺序方式执行。之间,块中的
22、语句以顺序方式执行。u并行块:关键字并行块:关键字fork和和join之间的是并行块语句,块中的语句并行执行。之间的是并行块语句,块中的语句并行执行。Fork和和join语句常用于语句常用于test bench描述。这是因为可以一起给出矢量及描述。这是因为可以一起给出矢量及其绝对时间,而不必描述所有先前事件的时间。其绝对时间,而不必描述所有先前事件的时间。u在顺序块中,语句一条接一条地计算执行。在顺序块中,语句一条接一条地计算执行。u在并行块中,所有语句在各自的延迟之后立即计算执行。在并行块中,所有语句在各自的延迟之后立即计算执行。begin #5 a = 3; #5 a = 5; #5 a
23、= 4;endfork #5 a = 3; #15 a = 4; #10 a = 5;join上面的两个例子在功能上是等价的。上面的两个例子在功能上是等价的。Fork-join例子里的赋值故意打乱顺序是例子里的赋值故意打乱顺序是为了强调顺序是没有关系的。为了强调顺序是没有关系的。注意注意fork-join块是典型的不可综合语句,并且在一些仿真器时效率较差。块是典型的不可综合语句,并且在一些仿真器时效率较差。 块语句 begin_end条件语句-case语句casecase语句是测试表达式与另外一系列表达式分支是否匹配语句是测试表达式与另外一系列表达式分支是否匹配的一个多路条件语句。的一个多路条
24、件语句。uCase语句进行逐位比较以求完全匹配(包括语句进行逐位比较以求完全匹配(包括x和和z)。)。uDefault语句可选,在没有任何条件成立时执行。语句可选,在没有任何条件成立时执行。此时如果未说明此时如果未说明default,Verilog不执行任何动作。不执行任何动作。u多个多个default语句是非法的。语句是非法的。条件语句-case语句case , :赋值语句或空语句;:赋值语句或空语句; , :赋值语句或空语句;:赋值语句或空语句; default:赋值语句或空语句;:赋值语句或空语句;endcase重要内容:重要内容:u1、使用、使用default语句是一个很好的编程习惯,
25、特别是用于检测语句是一个很好的编程习惯,特别是用于检测x和和z。u2、Casez和和casex为为case语句的变体,允许比较无关语句的变体,允许比较无关(dont-care)值。值。ucase表达式或表达式或case项中的任何位为无关值时,在比较过程中该位不项中的任何位为无关值时,在比较过程中该位不予考虑。予考虑。u在在casez语句中,语句中,? 和和 z 被当作无关值。被当作无关值。u在在casex语句中,语句中,?,z 和和 x 被当作无关值。被当作无关值。数字表达数字表达(1 1)整数型常量整数型常量(即(即整常数整常数)的)的4 4种进制表示形式:种进制表示形式:二进制整数(二进制
26、整数(b b或或B B););十进制整数(十进制整数(d d或或D D););十六进制整数(十六进制整数(h h或或H H););八进制整数(八进制整数(o o或或O O)。)。数字表达数字表达v注:注:这里位宽指对应二进制数的宽度。这里位宽指对应二进制数的宽度。u 整常数的整常数的3种表达方式:种表达方式:数据表达数据表达(2 2)x x和和z z值值x x表示不定值,表示不定值,z z表示高阻值;表示高阻值;8b1001xxxx或8 h9x8b1010zzzz或8 haz每个字符代表的二进制数的宽度取决于所用的进制;每个字符代表的二进制数的宽度取决于所用的进制;当用二进制表示时,已标明位宽
27、的数若用当用二进制表示时,已标明位宽的数若用x x或或z z表示某些位,则只有在表示某些位,则只有在最左边最左边的的x x或或z z具有具有扩展性扩展性!为清晰可见,最好直接写出每一位的值!为清晰可见,最好直接写出每一位的值! 例例8bzx = 8bzzzz_zzzx 8bzx = 8bzzzz_zzzx 例例8b1x = 8b0000_001x8b1x = 8b0000_001x“?”是是z z的另一种表示符号,建议在的另一种表示符号,建议在casecase语句中使用语句中使用?表示高阻态表示高阻态z 例例 casez (select) casez (select) 4b?1: out =
28、a; 4b?1: out = a; 4b?1?: out = b; 4b?1?: out = b; 4b?1?: out = c; 4b?1?: out = c; 4b1?: out = d; 4b1?: out = d; endcase endcase3.1 组合电路的Verilog描述 3.1.3 4选选1多路选择器及其数据流描述方式多路选择器及其数据流描述方式 按位逻辑操作符按位逻辑操作符双双目运算符目运算符单单目运算符目运算符位运算其结果与操作数位数相同。位运算符中的双目运算符要位运算其结果与操作数位数相同。位运算符中的双目运算符要求对两个操作数的相应位求对两个操作数的相应位逐位逐位进
29、行运算。进行运算。两个不同长度的操作数进行位运算时,将自动按两个不同长度的操作数进行位运算时,将自动按右右端端对齐对齐,位,位数少的操作数会在高位用数少的操作数会在高位用0 0补齐。补齐。 例例 若若A = 5b11001A = 5b11001,B = 3b101B = 3b101, 则则A & B = A & B = (5b110015b11001)& &(5b5b0000101101)= 5b00001 = 5b00001 运算结果为运算结果为1 1位的逻辑值位的逻辑值1 1或或0 0。 等于运算符等于运算符(= =)(= =)和全等运算符和全等运算符(=
30、= =)(= = =)的的区别区别: :使用使用等于等于运算符时,两个操作数必须运算符时,两个操作数必须逐位逐位相等相等, ,结果才为结果才为1 1;若某些位为若某些位为x x或或z z,则结果为,则结果为0 0。使用使用全等全等运算符时,若两个操作数的相应位完全运算符时,若两个操作数的相应位完全一致一致(如同(如同是是1 1,或同是,或同是0 0,或同是,或同是x x,或同是,或同是z z), ,则结果为则结果为1 1;否则为;否则为0 0。 所有的等式运算符优先级别相同。所有的等式运算符优先级别相同。 = = = = =和!和!= = =运算符常用于运算符常用于casecase表达式的判别
31、,又称为表达式的判别,又称为“casecase等等式运算符式运算符”。等式运算符等式运算符-双双目运算符等式运算符等式运算符-双双目运算符u 例例 if( if(A A = = = 1bx1bx) $display(“AisX”) $display(“AisX”);/当当A A为不为不定值时,定值时, 式(式(A A = = = = 1bx1bx)的运算结果为)的运算结果为x x,则该语句不执,则该语句不执行行 if(if(A A = = = = = 1bx1bx) $display(“AisX”) $display(“AisX”);/当当A A为为不定值时,式(不定值时,式(A A = =
32、= = = = 1bx1bx)的运算结果为)的运算结果为1 1,该语句执,该语句执行行表表3-1 “= =”的真值表的真值表表表3-2 “= = =”的真值表的真值表等于等于运算的结果运算的结果可能为可能为1或或0全等于全等于运算的运算的结果只有结果只有1或或0赋值语句赋值语句u 分为两类:分为两类:连续赋值语句,过程赋值语句连续赋值语句,过程赋值语句 (1 1)连续连续赋值语句赋值语句assignassign语句,用于对语句,用于对wirewire型变量型变量赋值,是描述赋值,是描述组合逻辑组合逻辑最常用的方法之一。最常用的方法之一。 例例 assign c=a&b; /a assi
33、gn c=a&b; /a、b b、c c均为均为wirewire型变量型变量u描述的是描述的是组合逻辑,并行操作组合逻辑,并行操作u在在过程块外部使用过程块外部使用。u用于用于netnet驱动。驱动。u在等式左边可以有一个简单延时说明。在等式左边可以有一个简单延时说明。只限于在表达式左边用只限于在表达式左边用#delay#delay形式形式u可以是显式或隐含的。可以是显式或隐含的。 语法:语法: #delay strength = ; #delay strength = ;wire out;assign out = a & b; / 显显式式wire inv = in; / 隐
34、含隐含赋值语句赋值语句(2 2)过程过程赋值语句赋值语句用于对用于对regreg型变量赋值,有两种方式:型变量赋值,有两种方式:非阻塞(非阻塞(non-blocking)non-blocking)赋值方式:赋值方式: 赋值符号为赋值符号为=,如,如 b b = a a ; 阻塞(阻塞(blocking)blocking)赋值方式:赋值方式: 赋值符号为赋值符号为= =,如,如 b b = = a a ;二、非阻塞赋值与阻塞二、非阻塞赋值与阻塞赋值的区别赋值的区别1. 1. 非阻塞非阻塞赋值方式赋值方式 clkDFFcD QD QabDFF非阻塞非阻塞赋值赋值在在块块结束时才完结束时才完成赋值操
35、作!成赋值操作!注:注:c c的值比的值比b b的值落后一个时钟周期!的值落后一个时钟周期!赋值语句赋值语句2. 2. 阻塞阻塞赋值方式赋值方式 阻塞阻塞赋值赋值在在该语该语句句结束时就完成结束时就完成赋值操作!赋值操作!clkDFFcD Qab注:在一个块语句中,如果有多条阻塞注:在一个块语句中,如果有多条阻塞赋值语句,在赋值语句,在前面的赋值语句没有完成之前,后面的语句就不能被前面的赋值语句没有完成之前,后面的语句就不能被执行,就像被阻塞了一样,因此称为执行,就像被阻塞了一样,因此称为阻塞阻塞赋值方式赋值方式。 这里这里c c的值与的值与b b的值一样的值一样 !赋值语句赋值语句非阻塞非阻
36、塞(non-blocking)non-blocking)赋值方式赋值方式 ( b= a) ( b= a):nb b的值被赋成新值的值被赋成新值a a的操作的操作, , 并不是立刻完成的,而并不是立刻完成的,而是在块结束时才完成;是在块结束时才完成;n块内的多条块内的多条赋值语句在块结束时同时赋值;赋值语句在块结束时同时赋值;n硬件有对应的电路硬件有对应的电路。阻塞阻塞(blocking)blocking)赋值方式赋值方式 ( b = a) ( b = a):nb b的值立刻被赋成新值的值立刻被赋成新值a a;n完成该赋值语句后才能执行下一句的操作;完成该赋值语句后才能执行下一句的操作;n硬件没
37、有对应的电路,因而综合结果未知。硬件没有对应的电路,因而综合结果未知。非阻塞非阻塞赋值与赋值与阻塞阻塞赋值方式的主要赋值方式的主要区别区别v建议在初学时只使用一种方式,不要混用!建议在初学时只使用一种方式,不要混用!v建议在可综合风格的模块中使用建议在可综合风格的模块中使用非阻塞非阻塞赋值!赋值!赋值语句赋值语句3.1 组合电路的Verilog描述 3.1.5 加法器及其加法器及其Verilog描述描述 3.1 组合电路的Verilog描述 3.1 组合电路的Verilog描述 3.1.5 加法器及其加法器及其Verilog描述描述 顶层模块和例化语句顶层模块和例化语句u模块是可以进行层次嵌套
38、的。模块是可以进行层次嵌套的。每个每个Verilog HDL源文件中只准有一个顶层模块,其他为子模块。源文件中只准有一个顶层模块,其他为子模块。源文件源文件与顶层模块同名与顶层模块同名!应在顶层模块中对子模块进行例化。应在顶层模块中对子模块进行例化。u元件例化:引入一种连接关系,将预先设计好的模块定义为一个元件例化:引入一种连接关系,将预先设计好的模块定义为一个元件,用例化语句引入到上一层的设计中。元件,用例化语句引入到上一层的设计中。可以将模块的实例通过端口连接起来构成一个大的系统或元件。可以将模块的实例通过端口连接起来构成一个大的系统或元件。自上而下层次化设计的一种重要途径。自上而下层次化
39、设计的一种重要途径。例化可以是一个设计模块(例化可以是一个设计模块(设计模块例化设计模块例化),也可以是),也可以是 FPGA元件元件库中的元件(库中的元件(门元件例化门元件例化)例化是调用复制的含义例化是调用复制的含义门元件例化门元件例化程序通过调用一个在程序通过调用一个在VerilogVerilog语言库中现存的语言库中现存的实例门元件来实现某逻辑门功能。实例门元件来实现某逻辑门功能。模块元件例化模块元件例化顶层模块(顶层模块(trist1trist1)调用由某子模块()调用由某子模块(mytrimytri)定义的实例元件()定义的实例元件(tri_insttri_inst)来实现某功能。
40、)来实现某功能。例化元件名例化元件名门元件关键字门元件关键字and myand3( f,a,b,c);顶层模块和例化语句顶层模块和例化语句module trist1(out,in,enable); output out; input in, enable; mytri tri_inst(out,in,enable);endmodulemodule mytri(out,in,enable); output out; input in, enable; assign out = enable? in:bz; / * 如果如果enable为为1,则,则out = in,否则为高阻态,否则为高阻态 *
41、 /endmodule例化元件名例化元件名子模块名子模块名顶层模块顶层模块子模块子模块顶层模块和例化语句顶层模块和例化语句3.1 组合电路的Verilog描述 例化语句格式:例化语句格式: 端口名关联法端口名关联法位置关联法位置关联法3.1 组合电路的Verilog描述 3.1.5 加法器及其加法器及其Verilog描述描述 可综合建模类型只有两种可综合建模类型只有两种:4组合逻辑组合逻辑: :任何时候,如果输出信号直接由当前的输入信号的任何时候,如果输出信号直接由当前的输入信号的组合决定,则此逻辑为组合逻辑。组合决定,则此逻辑为组合逻辑。4时序逻辑:时序逻辑:如果逻辑中具有记忆功能,则此逻辑
42、为时序逻辑。如果逻辑中具有记忆功能,则此逻辑为时序逻辑。在任何给定的时刻,如果输出不能完全由输入信号在任何给定的时刻,如果输出不能完全由输入信号确定,则此逻辑具有记忆功能。确定,则此逻辑具有记忆功能。3.2 时序模块及其Verilog表述 3.2 时序模块及其Verilog表述 3.2.1 边沿触发型触发器及其边沿触发型触发器及其Verilog表述表述 3.2 时序模块及其Verilog表述 3.2.1 边沿触发型触发器及其边沿触发型触发器及其Verilog表述表述 边沿敏感时序u 时序控制时序控制可以用在可以用在RTL级或行为级组合逻辑或时序逻辑描述中。级或行为级组合逻辑或时序逻辑描述中。u
43、 可以用关键字可以用关键字posedge(上升沿)(上升沿)和和negedge(下降沿)(下降沿)限定信号敏限定信号敏 感边沿。感边沿。u 敏感表中可以有多个信号,用关键字敏感表中可以有多个信号,用关键字or连接。连接。always(negedge Clock)电平敏感事件控制电平敏感事件控制always(A or B)3.2 时序模块及其Verilog表述 3.2.2 电平触发型锁存器及其电平触发型锁存器及其Verilog表述表述 注:注:u锁存器的动作行为如下:锁存器的动作行为如下: 当时钟信号为当时钟信号为 1时,输入数据的值直时,输入数据的值直 接传给输出。接传给输出。 当时钟信号为当
44、时钟信号为0时,输出保持当前状时,输出保持当前状 态不变。态不变。u 用不完整的条件语句,产生时序电路用不完整的条件语句,产生时序电路 复位控制信号是可综合风格有限状态机代码的重要组成部分,通常在复位控制信号是可综合风格有限状态机代码的重要组成部分,通常在有限状态机建模中有复位控制信号。有限状态机建模中有复位控制信号。带复位端的时序电路建模带复位端的时序电路建模同步复位:同步复位:module DFF2(q,clk,r,d);module DFF2(q,clk,r,d);input clk, d, r;input clk, d, r;output q; reg q;output q; reg
45、q;always (always (posedge clkposedge clk) ) if(r) if(r) q=0; q=0; elseif(r=0) elseif(r=0) q=d; q=d;endmoduleendmodule同步块中的异步复位:同步块中的异步复位:module async(q,ck,r,d);module async(q,ck,r,d);input clk, d, r;input clk, d, r;output q; reg q;output q; reg q;always (always (posedge clk or posedge clk or negedge r negedge r) ) if(!r) if(!r) q=0; q=0; elseif(r) elseif(r) q=d; q=d;endmoduleendmodule3.2 时序模块及其Verilog表述 3.2.5 异步复位型锁存器及其异步复位型锁存器及其Verilog表述表述 3.2 时序模块及其Veri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年白酒行业经销商扶持政策销售合作协议
- 2024年度幼儿园绿化维护合同3篇
- 面包供销合同模板
- 路面维修结算合同范例
- 2024年企业并购重组咨询服务合同
- 2024年度墓园墓地购置与墓园生态保护合同3篇
- 饭店转让租房合同范例
- 门窗设备维修合同范例
- 酒店酒类供货合同范例
- 晋城网络推广合同范例
- 五年级上册数学试题试卷(8篇)
- 2024-2025学年四年级科学上册第三单元《运动和力》测试卷(教科版)
- 学术规范与论文写作智慧树知到答案2024年浙江工业大学
- 2024年典型事故案例警示教育手册15例
- 科研伦理与学术规范 期末考试
- 巴蜀文化知识考试参考题库150题(含答案)
- EN1779-欧洲无损检测标准
- 生态保护红线划定.ppt
- 机械原理榫槽成型半自动切削机课程设计
- QC小组活动、地泵泵送混凝土布料浇筑方法改进
- 技术规范书(工程类)
评论
0/150
提交评论