《第5章 硬件描述语言Verilog HDL(2).ppt》由会员分享,可在线阅读,更多相关《第5章 硬件描述语言Verilog HDL(2).ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 硬件描述语言Verilog HDL5.1 Verilog HDL语言简介语言简介5.2 Verilog HDL的特点的特点5.3 Verilog HDL重要的功能和概念重要的功能和概念5.4 Verilog HDL的语法规定与常规要素的语法规定与常规要素5.5 Verilog HDL代码基本结构代码基本结构 5.6 Verilog HDL结构说明语句结构说明语句5.7 Verilog HDL的语句顺序与并行执行的语句顺序与并行执行5.8 Verilog HDL不同抽象级别的模型不同抽象级别的模型5.9 Verilog HDL仿真语句仿真语句 5.10 数字电路数字电路Verilog H
2、DL系统设计系统设计本章内容本章内容5.1 Verilog HDL简介nVerilog发展过程:n1985年:Verilog-XLn1989年:Cadence使用Verilogn1990年:成立OVI推广Verilogn1995年:成为IEEE标准n发展趋势:SystemVerilog、Superlog等。5.2 Verilog特点n简单、规范,易于开发n具有混合仿真的能力n具有高级语言的结构n具有用户定于原语,创建灵活5.3 Verilog HDL重要功能和概念n抽象模型抽象层模块各层均可以由Verilog语言完成Verilog HDL8种行为描述语言n顺序、并行执行n控制过程的启动时间n事
3、件触发nTask结构nFunction结构n各种建立表达式的运算符5.4 Verilog语法规定与常规要素nVerilog规则与C语言类似,但有区别。nC语言是顺序执行,Verilog语言则可以定义并行执行。n从根本上讲,Verilog是描述硬件的语言,而硬件肯定要有并行模块的。Verilog 语义要素n块语句:initial块、always块n赋值语句:阻塞赋值和非阻塞赋值n空格:就是分隔符。n注释:单行注释/,多行注释/*/n整数和实常数:如:64hff01、8b1101_0001,h83an标识符。可以使用大小写字母、和下划线开头,可以包含数字、字母、$符。合法的标识符:shift_re
4、g_a,bus_index 非法的标识符:34net、a*b_netn系统任务和系统函数。以$开头,提供一种封装好的行为。常见的有:$display,$finish,$hold等。n编译命令。以“”反引号开始的标识符是编译器指令。如define,ifdefn值集合0,1,x,zn参数。用于定义时延和变量宽度。n数据类型:有两种:线网类型(net)结构化元器件间的物理连线。Wire、tri等。寄存器类型(reg)抽象的数据存储单元。Reg、integer。5.5 Verilog HDL代码的基本结构nVerilog HDL的基本设计单元是“模块”。Module();端口说明(input,out,
5、inout)参数定义数据类型定义连续赋值语句(assign)过程块(initial和always)行为描述语句底层模块实例任务和函数延时说明块n例如:module block1(a,b,c,d);/端口定义input a,b,c;/I/O说明output d;/I/O 说明wire x;assign d=a|x;/功能描述assign x=(b&c);endmoduleVerilog运算符和优先级算术运算符*/%移位运算符关系运算符 =等式运算符=!=!=缩减、位运算符&|逻辑运算符&|条件运算符?:Verilog HDL门级结构描述n基本门:and、nand、buf、pullup等n用户定义
6、原语n连续赋值语句nassign =Verilog HDL行为建模语句n过程结构initial、always。所有的过程initial、always语句都在0时刻开始执行。n时序控制,用于时延。n事件控制边沿触发:posedge、negedge电平触发语句块。顺序语句beginend并行语句。forkjoinn过程性赋值n只能对寄存器类型的变量赋值。非阻塞性赋值(=)是在语句块结束后,块内的非阻塞性赋值语才完成赋值操作,进行赋值。module nonblocking(clk,a,b,c);output c,b;input clk,a;reg c,b;always(always(posedgep
7、osedge clkclk)begin begin b=a b=a;c=bc=b;endendendmoduleendmodule仿真波形n阻塞赋值阻塞性赋值是指立即赋值,在该语句结束时就完成了赋值操作。module nblocking(clk,a,b,c);output c,b;input clk,a;reg c,b;always(always(posedgeposedge clkclk)begin begin b=a b=a;c=bc=b;endendendmoduleendmodule仿真波形If条件语句nIf条件语句有三种格式:1)if(表达式)语句;2)if(表达式)语句1;else
8、 语句2;3)if(表达式1)语句1;else if(表达式2)语句2;else if(表达式n)语句n;else 语句n+1;case条件语句n语法格式:ncase(控制表达式)n分支表达式1:语句1;n分支表达式2:语句2;nn分支表达式n:语句n;ndefault:语句n1;nendcasenCasez,将高阻忽略nCasex,将高阻和未定x均忽略不计。n循环语句:forever、repeat、while、for5.6 Verilog HDL的结构说明语句nalways说明语句不断重复执行,直到仿真结束nmodule always_demo(counter,tick,clk);noutp
9、ut tick;ninput clk;nreg 7:0 counter;nreg tick;nalways (posedge clk)nbeginn tick=tick;n counter=counter+1;nendninitial语句ntask和function语句分别用来由用户定义任务和函数 ntask;/任务定义n 端口及数据类型声明语句;n 其他语句;nendtask5.7 Verilog HDL语句的顺序执行与并行执行n在“always”模块内,逻辑按书写的顺序执行。nmodule serial1(q,a,clk);noutput q,a;ninput clk;nreg q,a;n
10、 always(posedge clk)n beginn q=q;/阻塞赋值语句n a=q;n endnendmodule续n“always”模块外的“assign”语句、实例元件都是同时(即并行)执行的,它们在程序中的先后顺序对结果并没有影响。nmodule parall2(q,a,clk);noutput q,a;ninput clk;nreg q,a;nalways(posedge clk)n beginn a=q;n endnalways(posedge clk)n beginn q=q;n endnendmodule 5.8 Verilog HDL模块的种类和描述nVerilog模块
11、分为行为模块和可综合模块。n描述分为行为级描述和门级描述。n行为级描述:就电路需要实现的功能进行描述nmodule mux4_1(out,in1,in2,in3,in4,cntrl1,cntrl2);noutput out;ninput in1,in2,in3,in4,cntrl1,cntrl2;nassign out=(in1&cntrl1&cntrl2)|n (in2&cntrl1&cntrl2)|n (in3&cntrl1&cntrl2)|n (in4&cntrl1&cntrl2);nendmodule门级描述n门级描述nmodule mymux(out,in1,in2,in3,in4,
12、cntrl1,cntrl2);noutput out;ninput in1,in2,in3,in4,cntrl1,cntrl2;nwire notctrl1,notcntrl2,w,x,y,z;nnot(notcntrl1,cntrl1);nnot(notcntrl2,cntrl2);nand(w,in1,notcntrl1,notcntrl2);nand(x,in2,notcntrl1,cntrl2);nand(y,in3,cntrl1,notcntrl2);nand(z,in4,cntrl1,cntrl2);nor(out,w,x,y,z);nendmodule以上两种描述的逻辑电路5.9
13、 Verilog HDL仿真语言n仿真的必要n对于完成的模块,如何在成本和效率上完成测试?Verilog HDL仿真语句的基本任务n信息显示系统任务。用于仿真过程中在标准输出设备上显示仿真信息。ndisplay、writen仿真监视系统任务n对变量,字符串等进行监视。n如monitor等5.10常用数字电路的Verilog HDL系统设计n1、组合逻辑门电路设计n加法器nmodule adder4(COUT,SUM,A,B,CIN);noutput3:0 SUM;noutput COUT;ninput3:0 A,B;ninput CIN;nassign COUT,SUM=A+B+CIN;nen
14、dmodule四位加法器的仿真波形 数据比较器 nmodule COMP(A,B,LG,EQ,SM);ninput 1:0 A,B;noutput LG,EQ,SM;nassign LG,EQ,SM=FUNC_COMP(A,B);n function 2:0 FUNC_COMP;n input 1:0 A,B;n if(AB)n FUNC_COMP=3b100;n else if(AB)n FUNC_COMP=3b001;n else n FUNC_COMP=3b010;n endfunctionnendmodule编码器 nmodule ENC(IN,Y);ninput 3:0 IN;nou
15、tput 1:0 Y;nparameter SW_IN0=4b0001;nparameter SW_IN1=4b0010;nparameter SW_IN2=4b0100;nparameter SW_IN3=4b1000;nassign Y=FUNC_ENC(IN);n function 1:0 FUNC_ENC;n input 3:0 IN;n case(IN)n SW_IN0:FUNC_ENC=0;n SW_IN1:FUNC_ENC=1;n SW_IN2:FUNC_ENC=2;n SW_IN3:FUNC_ENC=3;n endcasen endfunctionnendmodule 2、时序
16、逻辑电路系统设计nJK触发器nmodule SY_JK_FF(J,K,CLK,Q,QB);ninput J,K,CLK;noutput Q,QB;nreg Q;nalways(posedge CLK)n case(J,K)n 0:Q=Q;n 1:Q=0;n 2:Q=1;n 3:Q=Q;n endcasenassign QB=Q;nendmodule 摩尔型有限状态机摩尔型有限状态机 nmodule simple(Clock,Resetn,w,z);n input Clock,Resetn,w;n output z;n reg 2:1 y,Y;n parameter 2:1 A=2b00,B=2
17、b01,C=2b10;n /Define the next state combinational circuit n always(w,y)n case(y)n A:if(w)Y=B;n else Y=A;n B:if(w)Y=C;n else Y=A;n C:if(w)Y=C;n else Y=A;n default:Y=2bxx;n endcase n /Define the sequential block n always(negedge Resetn,posedge Clock)n if(Resetn=0)y=A;n else y=Y;n /Define output n assi
18、gn z=(y=C);nendmodulew=1A/Z=0C/Z=0B/Z=0w=0w=1w=0w=1Resetw=0摩尔型串行加法器摩尔型串行加法器 Y2Y1 s SY2CarryoutSum bit Y1全加法器D Q QD Q Q QQClockResetab八位计数器八位计数器 module counter8(out,cout,data,load,cin,clk);output 7:0 out;output cout;input 7:0 data;input load,cin,clk;reg7:0 out;always(posedge clk)begin if(load)out=data;/同步预置数据 else out=out+1+cin;/加1计数 end assign cout=&out&cin;/若out为8hFF,/cin为1,则cout为1endmodule仿真波形