《硬件描述语言VerilogHDL基础.ppt》由会员分享,可在线阅读,更多相关《硬件描述语言VerilogHDL基础.ppt(43页珍藏版)》请在金锄头文库上搜索。
1、CSLG硬件描述语言Verilog HDL基础CSLG 1 Verilog 语言的基本语法规则 2 变量的数据类型 3 Verilog 程序的基本结构 4 逻辑功能的仿真与测试CSLG硬件描述语言HDL(Hardware Description Languag )类似于高级程序设计语言(C语言).它是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,复杂数字逻辑系统所的逻辑功能。HDL是高层次自动化设计的起点和基础. 硬件描述语言Verilog HDL基础CSLG计算机对HDL的处理:逻辑综合 是指从HDL描述的数字逻辑电路模型中导出电路基本元件列表以及元
2、件之间的连接关系(常称为门级网表)的过程。类似对高级程序语言设计进行编译产生目标代码的过程。产生门级元件及其连接关系的数据库,根据这个数据库可以制作出集成电路或印刷电路板PCB。逻辑仿真逻辑仿真 是指用计算机仿真软件对数字逻辑电路的结构和行为进行预测.仿真器对HDL描述进行解释,以文本形式或时序波形图形式给出电路的输出。在仿真期间如发现设计中存在错误,就再要对HDL描述进行及时的修改。CSLG1 Verilog语言的基本语法规则为对数字电路进行描述(常称为建模),Verilog语言规定了一套完整的语法结构。1间隔符: Verilog 的间隔符主要起分隔文本的作用,可以使文本错落有致,便于阅读与
3、修改。间隔符包括空格符(b)、TAB 键(t)、换行符(n)及换页符。2注释符:注释只是为了改善程序的可读性,在编译时不起作用。多行注释符(用于写多行注释): /* - */;单行注释符 :以/开始到行尾结束为注释文字。CSLG标识符:给对象(如模块名、电路的输入与输出端口、变量等)取名所用的字符串。由英文字母、数字,符和下划线组成,并且以英文字母或下划线开始,如,clk、counter8、_net、bus_A 。关键词:是Verilog语言本身规定的特殊字符串,用来定义语言的结构。例如,module、endmodule、input、output、wire、reg、and等都是关键词。关键词都
4、是小写,关键词不能作为标识符使用 。3标识符和关键词CSLG为了表示数字逻辑电路的逻辑状态,Verilog语言规定了4种基本的逻辑值。 0逻辑逻辑0、逻辑假、逻辑假 1逻辑逻辑1、逻辑真、逻辑真 x或或X不确定的值(未知状态)不确定的值(未知状态) z或或Z高阻态高阻态4逻辑值集合CSLG5常量及其表示实数型常量十进制记数法 如: 0.1、2.0、5.67科学记数法 如: 23_5.1e2、5E4 23510.0、 0.0005常量十进制数的形式的表示方法:表示有符号常量例如:30、2带基数的形式的表示方法: 表示常量格式为:整数型例如:3b101、5o37、8he3,8b1001_0011
5、CSLGvVerilog允许用参数定义语句定义一个标识符来代表一个常量,称为符号常量。v定义的格式为:parameter 参数名1常量表达式1,参数名2常量表达式2,;如parameter BIT=1, BYTE=8, PI=3.14;6字符串:字符串是双撇号内的字符序列CSLG2 变量的数据类型1.线网类型:是指输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接. 例:wire L; /将上述电路的输出信号L声明为网络型变量 wire 7:0 data bus; /声明一个8-bit宽的网络型总线变量常用的线网类型由关键词wire定义wire型变量的定义格式如下:w
6、ire n-1:0 变量名1,变量名2,变量名n;变量宽度例:线网型变量L的值由与门的驱动信号a和b所决定,即La&b。a、b的值发生变化,线网L的值会立即跟着变化。 & b a L CSLG寄存器型变量对应的是具有状态保持作用的电等路元件,如触发器寄存器。寄存器型变量只能在initial或always内部被赋值。2、寄存器型寄存器类型寄存器类型功能说明功能说明reg常用的寄存器型变量常用的寄存器型变量integer32位带符号的整数型变量位带符号的整数型变量real64位带符号的实数型变量,位带符号的实数型变量,time64位无符号的时间变量位无符号的时间变量4种寄存器类型的变量例: reg
7、 clock;/定义一个1位寄存器变量 reg 3:0 counter; /定义一个4位寄存器变量抽象描述,不对应具体硬件CSLG2、每个模块先要进行端口的定义,并说明输入(input)和输出(output),然后对模块功能进行描述。3 Verilog程序的基本结构Verilog使用大约100个预定义的关键词定义该语言的结构1、 VerilogHDL程序由模块构成。每个模块的内容都是嵌在关键词module和endmodule两个语句之间。每个模块实现特定的功能。3、除了endmodule语句外,每个语句后必须有分号。4、可以用/* - */和/.对VerilogHDL程序的任何部分做注释。CS
8、LG模块定义的一般语法结构如下:CSLG端口类型说明电路结构描述模块名数据类型说明例 用结构描述方式建立门电路Verilog模型/Gate-level description of simple circuitmodule mux2to1(a, b, sel, out); input a, b, sel; /定义输入信号 output out; /定义输出信号 wire selnot, a1, b1 ; /定义内部节点信号数据类型/下面对电路的逻辑功能进行描述 not U1(selnot, sel); and U2(a1, a, selnot); and U3(b1, b, sel); or
9、U4(out, a1, b1);endmodule CSLG4 逻辑功能的仿真与测试逻辑电路的设计块完成后,就要测试这个设计块描述的逻辑功能是否正确。为此必须在输入端口加入测试信号,而从其输出端口检测其结果是否正确,这一过程常称为搭建测试平台。根据仿真软件的不同,搭建测试平台的方法也不同。图2.3.3 例2.3.1的仿真输出波形CSLG用Verilog HDL描述组合逻辑电路CSLG用VerilogHDL描述组合逻辑电路v用VerilogHDL描述组合逻辑电路有三种不同抽象级别:门级描述数据流描述行为级描述vVerilogHDL描述的电路就是该电路的VerilogHDL模型。CSLG行为描述方
10、式:行为描述方式: 一般使用下述语句描述,可以对组合、时序逻辑电路建模。 1)initial 语句 2)always 语句数据流描述方式:数据流描述方式: 一般使用assign语句描述,主要用于对组合逻辑电路建模。门级描述:门级描述: 一般使用Primitive(内部元件)、自定义的下层模块对电路描述。主要用于层次化设计中。CSLG基本门级元件模型 元件符号元件符号功能说明功能说明元件符号元件符号功能说明功能说明andand多输入端的与门多输入端的与门nandnand多输入端的与非门多输入端的与非门oror多输入端的或门多输入端的或门nornor多输入端的或非门多输入端的或非门xorxor多输
11、入端的异或门多输入端的异或门xnorxnor多输入端的异或非门多输入端的异或非门bufbuf多输出端的缓冲器多输出端的缓冲器notnot多输出端的反相器多输出端的反相器bufif1bufif1控制信号高电平有效的三态缓冲控制信号高电平有效的三态缓冲器器notif1notif1控制信号高电平有效的控制信号高电平有效的三态反相器三态反相器bufif0bufif0控制信号低电平有效的三态缓冲控制信号低电平有效的三态缓冲器器notif0notif0控制信号低电平有效的控制信号低电平有效的三态反相器三态反相器多输入门多输出门三态门1. 组合逻辑电路的门级建模门级建模:将逻辑电路图用HDL规定的文本语言表
12、示出来。CSLGVerilog 基本门级元件 and n-input AND gate nand n-input NAND gate or n-input OR gate nor n-input NOR gate xor n-input exclusive OR gate xnor n-input exclusive NOR gate buf n-output buffer not n-output inverter bufif0 tri-state buffer; lo enable bufif1 tri-state buffer; hi enable notif0 tri-state in
13、verter; lo enable notif1 tri-state inverter; hi enableCSLG1、多输入门只允许有一个输出,但可以有多个输入。 and A1(out,in1,in2,in3); 输入2xxx1zxxx1xxx01111110zx10 输入1nand nand真值表X- 不确定状态Z- 高阻态 and真值表x0zx0xx10100000zX10 输入1and输入2 xxx xx调用名CSLGXX1XZXX1XX11111XX100ZX10输入1 or输入2 or真值表输入2XXXXZXXXXXXX011XX100ZX10输入1 xorxor真值表CSLG2、
14、多输出门允许有多个输出,但只有一个输入。 not N1(out1,out2,in);xx10zx10输 入buf输 出 buf真值表 输 出xx01zx10输 入notnot真值表 buf B1(out1,out2,in);out1inout2outNout1inout2outNCSLGbufif1真值表xxxzzxxxzx1/z1/z1z10/z0/z0z0zx10控制输入bufif1数据输入xxxzzxxxzx0/z0/z0z11/z1/z10zzx10控制输入notif1数据输入notif1真值表3、三态门有一个输出、一个数据输入和一个输入控制。如果输入控制信号无效,则三态门的输出为高阻
15、态z。 CSLG4、设计举例/Gate-level description of a 2-to-4-line decoder module _2to4decoder (A1,A0,E,Y); input A,B,E; output 3:0 Y; wire A1not,A0not,Enot; not n1 (A1not,A1), n2 (A0not,A0), n3 (Enot,E); nand n4 (Y0,A1not,A0not,Enot), n5 (Y1,A1not,A0,Enot), n6 (Y2,A1,A0not,Enot), n7 (Y3,A1,A0,Enot);endmodule 试
16、用Verilog语言的门级元件描述2线-4线译码器. 说明部分功能描述CSLG例2 用Verilog的门级元件进行描述由三态门构成的2选1数据选择器 。/Gate-level description of a 2-to-1-line multiplexer module _2to1muxtri (A,B,SEL,L); input A,B,SEL output L; tri L;/也是线网型变量,由多个门驱动 bufif1 (L,B,SEL); bufif0 (L,A,SEL);endmodule CSLG5、分层次的电路设计方法简介 4位全加器的层次结构框图分层次的电路设计:在电路设计中,将
17、两个或多个模块组合起来描述电路逻辑功能的设计方法。设计方法:自顶向下和自底向上两种常用的设计方法CSLGmodule halfadder (S,C,A,B); input A,B; output S,C;/Instantiate primitive gates xor (S,A,B); and (C,A,B);endmodule/Gate-level hierarchical description of 4-bit adder / Description of half adderCSLG/Description of 1-bit full addermodule fulladder (S,
18、CO,A,B,CI); input A,B,CI; output S,CO; wire S1,D1,D2; /内部节点信号/Instantiate the halfadder halfadder HA1 (S1,D1,A,B); halfadder HA2 (S,D2,S1,CI); or g1(CO,D2,D1);endmoduleD1S1D2CSLG/Description of 4-bit full addermodule _4bit_adder (S,C3,A,B,C_1); input 3:0 A,B; input C_1; output 3:0 S; output C3; wire
19、 C0,C1,C2; /内部进位信号/Instantiate the fulladder fulladder FA0 (S0,C0,A0,B0,C_1), FA1 (S1,C1,A1,B1,C0), FA2 (S2,C2,A2,B2,C1), FA3 (S3,C3,A3,B3,C2);endmodule CSLG 数据流建模能在较高的抽象级别描述电路的逻辑功能。通过逻辑综合软件,能够自动地将数据流描述转换成为门级电路。 2 组合逻辑电路的数据流建模CSLGVerilog HDL的运算符类型类型符号符号功能说明功能说明类型类型符号符号功能说明功能说明算术运算符算术运算符(双目运算(双目运算符)符
20、)+-*/%二进制加二进制加二进制减二进制减二进制乘二进制乘二进制除二进制除求模求模关系运算符关系运算符(双目运算符)(双目运算符)=右移右移左移左移CSLG位运算符与缩位运算的比较A:4b1010 、B:4b1111,AB= 1010 AB= 0101A|B= 1111 A&B= 1010A = 0101B = 0000 位运算A=1B=1A=0B=0|A=1|B=0&A=1&B=1&A=1&0&1&0=0 缩位运算CSLG对同一个操作数的重复拼接还可以双重大括号构成的运算符例如4A=4b1111,2A,2B,C=8b11101000。作用是将两个或多个信号的某些位拼接起来成为一个新的操作数
21、,进行运算操作。位拼接运算符设A=1b1,B=2b10,C=2b00则B,C4b1000A,B1,C03b110A,B,C,3b101=8b11000101。CSLG一般用法:condition_expr?expr1:expr2;条件运算符是三目运算符,运算时根据条件表达式的值选择表达式。首先计算第一个操作数condition_expr的值,如果结果为逻辑1,则选择第二个操作数expr1的值作为结果返回,结果为逻辑0,选择第三个操作数expr2的值作为结果返回。CSLG2、数据流建模举例连续赋值语句的执行过程是:只要逻辑表达式右边变量的逻辑值发生变化,则等式右边表达式的值会立即被计算出来并赋给
22、左边的变量。注意,在assign语句中,左边变量的数据类型必须是wire型。 数据流建模使用的基本语句是连续赋值语句assign ,该语句用于对wire型变量进行赋值,它由关键词assign开始,后面跟着由操作数和运算符组成的逻辑表达式。 2选1数据选择器的连续赋值描述是: wire A,B,SEL,L; /声明4个连线型变量assign L=(A & SEL)|(B & SEL); /连续赋值CSLG/Dataflow description of a 2-to-4-line decoder,module decoder_df (A1,A0,E,Y); input A1,A0,E; outp
23、ut 3:0 Y; assign Y0 = (A1 & A0 & E); assign Y1 = (A1 & A0 & E); assign Y2 = (A1 & A0 & E); assign Y3 = (A1 & A0 & E);endmodule CSLG/Dataflow description of 2-to-1-line multiplexermodule mux2x1_df (A,B,SEL,L); input A,B,SEL; output L; assign L = SEL ? A : B;endmodule 用条件运算符描述了一个2选1的数据选择器。在连续赋值语句中,如果S
24、EL1,则输出LA;否则LB。CSLG3 组合逻辑电路的行为级建模 行为级建模就是描述数字逻辑电路的功能和算法。一般使用always结构,后面跟着一系列过程赋值语句,给reg类型的变量赋值。 CSLGif (condition_expr1) true_statement1;else if (condition_expr2) true_statement2;else if (condition_expr3) true_statement3;else default_statement;1、条件语句( if语句)条件语句就是根据判断条件是否成立,确定下一步的运算。if (condition_exp
25、r) true_statement;if (condition_expr) true_statement;else fale_ statement;Verilog语言中有3种形式的if语句:if后面的条件表达式一般为逻辑表达式或关系表达式。执行if语句时,首先计算表达式的值,若结果为0、x或z,按“假”处理;若结果为1,按“真”处理,并执行相应的语句。 CSLG是一种多分支条件选择语句,一般形式如下:case (case_expr) item_expr1: statement1; item_expr2: statement2; default: default_statement; /defa
26、ult语句可以省略2、多路分支语句(case语句)CSLG/Behavioral description of 2-to-1-line multiplexermodule mux2to1_bh(A, B, SEL, L); input A, B, SEL; output L; reg L; /define register variable always (SEL or A or B) if (SEL = 1) L = b; /也可以写成 if (SEL) L=B; else L = A;endmodule 例CSLG/Behavioral description of 4-to-1-line multiplexermodule mux4to1_bh(A,SEL,E,L); input3:0 A; input1:0 SEL; output L; reg L; always (A or SEL or E) begin if (E=1) L = 0; else case (SEL) 2d0: L = A0; 2d1: L = A1; 2d2: L = A2; 2d3: L = A3; endcase endendmodule