您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Java > Verilog语言入门1
第3章Verilog设计入门3.1组合电路的Verilog描述3.1.12选1多路选择器及其Verilog描述3.1组合电路的Verilog描述3.1.12选1多路选择器及其Verilog描述1)关键字moduleendmodule引导的完整的电路模块描述。2)标识符MUX21a是用户自定义电路名,有其命名规则。3)端口表的表述。5)关键字assign引导的赋值语句,条件语句的表述。4)关键字inputoutput描述电路外部端口的信号类型和流动方向。3.1组合电路的Verilog描述3.1.12选1多路选择器及其Verilog描述1.模块表达2.端口语句、端口信号名和端口模式3.1组合电路的Verilog描述3.1.12选1多路选择器及其Verilog描述3.赋值语句和条件操作符4.关键字5.标识符6.规范的程序书写格式7.文件取名和存盘第3章Verilog设计入门本次课程的学习要点进一步掌握Verilog语言的语法特点:wire和reg数据(信号)类型;always@引导的过程语句结构和assign引导的并行语句;case语句;阻塞式赋值“=”和非阻塞式赋值“=”;If_else语句;Verilog中的数字表达、并位操作及操作符的使用,包括逻辑操作符、等式操作符、算术操作符;顶层文件的概念和例化语句的使用。3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式1.reg型变量类型定义Verilog常用两种信号类型:wire和reg类型1)信号类型定义:3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式2)范围:3)特殊使用可定义为wire类型的信号包括:所有输入信号、assign引导的连续赋值语句的输出信号、实体元件例化中的输出信号、assign语句中需要的端口以外的连线信号。可定义为reg类型的信号包括:always引导的块语句中被赋值的信号、时序逻辑电路中需要的寄存器类型变量。以下两条语句:可简化为:3.1组合电路的Verilog描述3.1.34选1多路选择器及其数据流描述方式3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式2.always@引导的过程语句结构1)两类语句一般表述2)两类语句的特点always@引导的过程语句的特点:引导由begin和end扩起来的多条语句块,形成语句块;块中各语句顺序执行;块语句中被赋值的变量必须为reg类型。Verilog常用两种语句结构:always@和assign3.1组合电路的Verilog描述assign连续赋值语句的特点:只能引导一条语句,多条语句要用多个assign引导;并行性,当驱动表达式中的变量发生变化时,语句才被执行,否则不执行;assign引导的语句中的所有信号为wire型;同一目标变量名不允许有多个驱动源,例如以下表达方式不允许:3.1.24选1多路选择器及其case语句表述方式3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式3.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式5.并位操作和数字表达4’b0010=4’B0010,表示00103’o5=3’O5=3’b101,表示1014’hA=4’HA=4’b1010,表示10104’d9=4’D9=4’b1001,表示10013.1组合电路的Verilog描述3.1.24选1多路选择器及其case语句表述方式4.case条件语句和4种逻辑状态注意:1)表达式取值必须在case以下列出的取值范围内,且数据类型匹配;2)允许case以下列出的多个值同时满足表达式,执行最先满足表达式的分支项;3)default的使用。3.1组合电路的Verilog描述两种过程赋值操作:(1)阻塞式赋值“=”:语句执行结束,右侧表达式的值立刻赋给左侧目标变量。(2)非阻塞式赋值“=”:对于always引导的块语句中含有多条阻塞式赋值语句时,当执行某一条语句时,其它语句不允许执行,被阻塞了,具有顺序执行的特点。对于always引导的块语句中含有多条非阻塞式赋值语句时,当执行某一条语句时,对于块中的其它语句的执行不被阻塞,可以理解为并行执行,但是块中所有信号的赋值是在块语句结束时同时进行的。3.1.24选1多路选择器及其case语句表述方式6.赋值操作符“=”,只能用于顺序语句,不能用于assign引导的并行语句3.1组合电路的Verilog描述例:always@(A、B)beginM1=A;M2=B&M1;Q=M1|M2;endalways@(A、B)beginM1=A;M2=B&M1;Q=M1|M2;end3.1.24选1多路选择器及其case语句表述方式3.1组合电路的Verilog描述3.1.34选1多路选择器及其数据流描述方式3.1组合电路的Verilog描述3.1.34选1多路选择器及其数据流描述方式1.按位逻辑操作符注意:若两个操作数长度不同,则综合器自动将短的数据按左端补0的规则进行运算操作3.1组合电路的Verilog描述3.1.34选1多路选择器及其数据流描述方式2.等式操作符注意:1)等式操作符的结果为1位逻辑值,真或伪;2)“==”的两个操作二进制数中有“Z”或“X”时,判为假;“===”将两个操作数中的“Z”或“X”,当成确定值比较。3.1组合电路的Verilog描述3.1.44选1多路选择器及其if语句描述方式3.1组合电路的Verilog描述3.1.44选1多路选择器及其if语句描述方式1.if_else条件语句if(表达式)begin语句1;语句2;…..语句n;endelsebegin语句n+1;语句n+2;…..语句n+n;end3.1组合电路的Verilog描述3.1.44选1多路选择器及其if语句描述方式2.数据表示方式1)操作符两端数据类型不匹配时,Verilog能自动匹配;2)当所赋的值大于被赋值信号的最大值时,首先将所赋值便换为二进制,然后根据被赋值信号的位宽向左端截取多余位数。例:定义Y[1:0],当执行Y=9时,Y得到的赋值是2’b01。3.1组合电路的Verilog描述3.1.5加法器及其Verilog描述1.半加器描述3.1组合电路的Verilog描述3.1.5加法器及其Verilog描述1.基于assign引导的赋值语句和逻辑操作符的描述moduleh_adder(a,b,so,co);inputa,b;outputso,co;assignso=a^b;assignco=a&b;endmodule3.1组合电路的Verilog描述moduleh_adder2(a,b,so,co);inputa,b;outputso,co;regso,co;always@(a,b,so,co)begincase({a,b})0:beginso=0;co=1'b0;end1:beginso=1;co=1'b0;end2:beginso=1;co=1'b0;end3:beginso=0;co=1'b1;enddefault:beginso=0;co=0;endendcaseendendmodule2.基于always@引导的过程语句和逻辑操作符的描述3.1.5加法器及其Verilog描述3.1组合电路的Verilog描述moduleh_adder(a,b,so,co);inputa,b;outputso,co;assign{co,so}=a+b;endmodule3.基于assign引导的连续赋值语句和算数操作符的描述3.1.5加法器及其Verilog描述3.1组合电路的Verilog描述3.1.5加法器及其Verilog描述4.算数操作符的使用3.1组合电路的Verilog描述5.全加器描述----用半加器模块和或门模块描述3.1.5加法器及其Verilog描述3.1组合电路的Verilog描述5.全加器描述----用半加器、或门模块及例化语句描述3.1.5加法器及其Verilog描述moduleor2a(a,b,c);inputa,b;outputc;assignc=a|b;endmodule3.1组合电路的Verilog描述5.全加器描述----用半加器、或门模块及例化语句描述3.1.5加法器及其Verilog描述modulef_adder(ain,bin,cin,sum,cout);inputain,bin,cin;outputsum,cout;wiree,d,f;h_adderu1(ain,bin,e,d);//位置例化法例化语句h_adderu2(.a(e),.b(cin),.so(sum),.co(f));//端口关联法例化语句or2a(.a(d),.b(f),.c(cout));//端口关联法例化语句endmodule3.1组合电路的Verilog描述5.全加器描述----用半加器、或门模块及例化语句描述3.1.5加法器及其Verilog描述3.1组合电路的Verilog描述5.全加器描述----顶层文件及例化语句描述3.1.5加法器及其Verilog描述3.1组合电路的Verilog描述3.1.5加法器及其Verilog描述5.全加器顶层文件设计和例化语句信号关联法例化语句:位置关联法例化语句:注意:被例化的元件可以是任何HDL语言描述的模块、FPGA库元件,甚至IP核。模块元件名例化元件名(.例化元件端口(例化元件外接端口),……);3.1组合电路的Verilog描述3.1.5加法器及其Verilog描述6.8位加法器描述moduleADDER8B(A,B,CIN,DOUT,COUT);output[7:0]DOUT;outputCOUT;input[7:0]A,B;inputCIN;wire[8:0]DATA;assignDATA=A+B+CIN;assignCOUT=DATA[8];//注意数值表示assignDOUT=DATA[7:0];//注意数值表示endmodule3.1组合电路的Verilog描述3.1.5加法器及其Verilog描述6.8位加法器描述moduleADDER8B(A,B,CIN,COUT,DOUT);input[7:0]A,B;inputCIN;output[7:0]DOUT;outputCOUT;assign{COUT,DOUT}=A+B+CIN;endmodule3.1组合电路的Verilog描述3.1.5加法器及其Verilog描述3.8位加法器描述作业习题3-6:1)用两个过程语句结构描述MUXK模块;2)用例化语句描述MUXK模块。作业习题3-7:用Verilog描述减法器(1)首先设计1位半减器,然后用例化语句将它们连接起来,图3-30中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。(2)根据图3-30设计1位全减器。(3)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计。作业半减器的真值表:xydiffs_out0000011110101100diff=xˆy;s_out=(~x)&y;表达式:case、if_else语句描述表达式、算数操作符描述作业1)半减器——分别用case语句、if_else语句、逻辑操作符、算数操作符4种方式描述用逻辑操作符半减器描述:作业2)1位全减器——用半减器及例化语句描述作业3)8位减法器——用1位全加器例化语句描述作业8位减法器仿真波形:3.2时序模块及其Verilog表述3.2.1边沿触发型触发器及其Verilog表述工作原理:时钟上升沿到来时,将D送入
本文标题:Verilog语言入门1
链接地址:https://www.777doc.com/doc-3931791 .html