电子信息工程专业基础课

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

EDA技术BIGCEDA技术唐英杰电子信息工程专业基础课EDA技术BIGC第五章VerilogHDL语言(二)一、VerilogHDL模型的不同抽象级别VerilogHDL模型可以是实际电路中不同级别的抽象。同一个物理电路,可以在不同的层次上用VerilogHDL语句来描述它。从行为和功能的角度来描述某一个电路模块——行为模块;从电路结构的角度来描述该电路模块——结构模块。抽象的级别和它们对应的模块类型有5种:1、系统级2、算法级3、RTL级4、门级5、开关级行为级结构级EDA技术BIGC第五章VerilogHDL语言(二)1、VerilogHDL门级结构描述用于门级描述关键字包括:not(非门)、and(与门)、nand(与非门)、or(或门)、nor(或非门)、xor(异或门)、xnor(异或非门)、buf(缓冲器)以及bufif1、bufif0、notif1、notif0等各种三态门。门级描述语句格式为门类型[驱动能力延时](门实例列表);nand#10nd1(a,data,clock,clear);使用了一个名为nd1的与非门,输入为data、clock、clear。输出为a,输出与输入的延时为10个时间单位EDA技术BIGC第五章VerilogHDL语言(二)用门级结构描述D触发器EDA技术BIGC第五章VerilogHDL语言(二)moduleflop(data,clock,clear,q,qb);inputdata,clock,clear;outputq,qb;nand#10nd1(a,data,clock,clear),nd2(b,ndata,clock),nd4(d,c,b,clear),nd5(e,c,nclock),nd6(f,d,nclock),nd8(qb,q,f,clear);nand#9nd3(c,a,d),nd7(q,e,qb);not#10iv1(ndata,data),iv2(nclock,clock);endmoduleEDA技术BIGC第五章VerilogHDL语言(二)由已经设计成的模块构成更高一层的模块如果已经编制一个模块,可以在另外的模块中引用这个模块方式:1、flopflop_d(d1,clk,clrb,q,qn);2、flopflop_d(.clock(clk),.q(q),.clear(clrb)..qb(qn),.data(d1));EDA技术BIGC第五章VerilogHDL语言(二)clrdqclkclrdqclkclrdqclkq0d0clrdqclkd3d2q2q3q1d1clrbclkf4f3f2f1四位寄存器电路结构图【例】用触发器组成带有清零端的4位寄存器EDA技术BIGC第五章VerilogHDL语言(二)`include“flop.v”modulehardreg(d,clk,clrb,q);inputclk,clrb;input[3:0]d;output[3:0]q;flopf1(d[0],clk,clrb,q[0],),f2(d[1],clk,clrb,q[1],),f3(d[2],clk,clrb,q[2],),f4(d[3],clk,clrb,q[3],);endmoduleEDA技术BIGC第五章VerilogHDL语言(二)通过VerilogHDL语言中的模块实例可以引用,可以构成任何复杂结构的电路,这种以结构方式建立的Verilog模型不仅可以仿真,而且也是可以综合的,其本质是表示电路的具体结构。EDA技术BIGC第五章VerilogHDL语言(二)2、VerilogHDL的行为描述可以用比较抽象的Verilog描述方法来建立模型【例】用行为描述的方法描述带有清零端的4位寄存器modulehardreg(d,clk,clrb,q);inputclk,clrb;input[3:0]d;output[3:0]q;reg[3:0]q;always@(posedgeclkorposedgeclrb).EDA技术BIGC第五章VerilogHDL语言(二)beginif(clrb)q=0;elseq=d;endendmoduleEDA技术BIGC第五章VerilogHDL语言(二)3、用户定义的原语用户定义的原语是从英语userdefinedprimitives直接翻译而来,简称UDP。利用UDP用户可以定义自己设计的基本逻辑元件的功能,也就是,可以利用UDP来定义有自己特色的用于仿真的基本逻辑元件模块并建立相应的原语库。primitiveudp_and(out,a,b);outputout;inputa,b;table//ab:out;00:0;01:0;10:0;11:1;endtableendprimitiveEDA技术BIGC第五章VerilogHDL语言(二)注意点:UDP只能有一个输出端,而且必须是端口说明列表的第一项;UDP可以有多个输入端,最多允许有10个输入端;UDP所有端口变量必须是标量,也就是1位的;在UDP的真值表项中,只允许出现0、1、x,不允许出现Z;只有输出端才可以被定义为寄存器型变量;Initial语句用于为时序电路内部赋初值,只允许赋0、1、x,默认值为x。EDA技术BIGC第五章VerilogHDL语言(二)二、如何编写和验证简单的纯组合逻辑模块数字逻辑系统的设计是一个非常细致、严密和费时间的复杂过程,做这项工作的人员必须具有极其认真负责的工作态度、敏捷的头脑、顽强的毅力和细致踏实的作风。每个部件模块的设计工作包括:1、电路模块的设计2、测试模块的设计3、设计文档的编写和整理测试模块的设计和文档编写是比电路模块设计更为重要的设计环节。测试是否严密和完整决定了系统设计的成败,设计文档的完整和准确也是系统设计成败的关键,缺少完整的设计说明文件,就不能维持设计工作的连续性,给今后的调试和维护带来困难。EDA技术BIGC第五章VerilogHDL语言(二)加法器moduleADDER4BIT(Ain,Bin,SUM,OVF);input[3:0]Ain,Bin;output[3:0]SUM;outputOVF;assign{OVF,SUM}=Ain+Bin;Endmodule这种描述方法比较直观,可以直接用综合器转换为门级组合逻辑互相连接的描述。仍然用同样的测试模块测试。这种描述使得逻辑关系更容易明白。EDA技术BIGC第五章VerilogHDL语言(二)乘法器modulemult_8(x,y,product);input[7:0]x,y;output[15:0]product;assignproduct=x*y;EndmoduleEDA技术BIGC第五章VerilogHDL语言(二)比较器modulecompare(x,y,xgy,xsy,xey);input[width-1:0]x,y;output[15:0]xgy,xsy,xey;regxgy,xsy,xeyParameterwidth=8;always@(xory)beginif(x==y)xey=1;EDA技术BIGC第五章VerilogHDL语言(二)elsexey=0;if(xy)xgy=1;elsexgy=0;if(xy)xsy=1;elsexsy=0;endendmoduleEDA技术BIGC第五章VerilogHDL语言(二)多路器modulemux_8(addr,in1,in2,in3,in4,in5,in6,in7,in8,mout,ncs);input[2:0]addr;input[width-1:0]in1,in2,in3,in4,in5,in6,in7,in8;inputncs;ouput[width-1:0]mout;parameterwidth=8;always@(addrorin1orin2orin3orin4orin5orin6orin7orin8orncs)beginEDA技术BIGC第五章VerilogHDL语言(二)if(!ncs)case(addr)3’b000mout=in1;3’b001mout=in2;3’b010mout=in3;3’b011mout=in4;3’b100mout=in5;3’b101mout=in6;3’b110mout=in7;3’b111mout=in8;endcaseelsemout=0;endendmoduleEDA技术BIGC第五章VerilogHDL语言(二)三、复杂数字系统的构成数字逻辑就其本质而言,只有组合逻辑和时序逻辑两大类。组合逻辑可以用来完成简单的逻辑功能时序逻辑则可以用来产生与运算过程有关的(时钟)多个控制信号序列包括存储运算的结果和取出存储器中的数据在用可综合的硬件描述语言设计的复杂运算逻辑系统中,往往用同步状态机来产生与时钟节拍密切相关的多个控制信号序列,用它来控制多路器或数据通道的开启/关闭,来使有限的组合逻辑运算器资源得到充分的运行,并寄存有意义的运算结果,或把它们传送到指定的地方。EDA技术BIGC第五章VerilogHDL语言(二)组合逻辑:输出只是输入逻辑电平的函数(有延时),与电路的原始状态无关。时序逻辑:输出不只是输入的逻辑电平的函数,还与电路所处的状态有关。同步时序逻辑是在同一时钟跳变节拍的前提下,如输入条件满足,则进入下一状态,否则仍留在原来的状态的状态机。数字逻辑电路的构成EDA技术BIGC第五章VerilogHDL语言(二)组合逻辑:由与、或、非门组成的网络。常用的有:多路器、数据通路开关、加法器、乘法器等,没有记忆功能。时序逻辑:由多个触发器和多个组合逻辑块组成的网络。常用的有:计数器、复杂的数据流动控制逻辑、运算控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设计是设计复杂的数字逻辑系统的核心。EDA技术BIGC第五章VerilogHDL语言(二)【例】一个八位数据通路控制器in[7]ControlSwitchout[7]in[0]out[0]…...…...`defineON1‘b1`defineOFF1‘b0wireControlSwitch;wire[7:0]out,in;assignout=(ControlSwith==`ON)?in:8‘h00EDA技术BIGC第五章VerilogHDL语言(二)in[7:0]开关out[7:0]tt3102153262880215320000EDA技术BIGC第五章VerilogHDL语言(二)in[7]ControlSwitchout[7]CLOCKDQ[7]CLOCKin[0]ControlSwitchout[0]DQ[0]out[7]out[0]带寄存器的八位数据通路控制器EDA技术BIGC第五章VerilogHDL语言(二)`defineON1‘b1`defineOFF1‘b0wireControlSwitch;wireclockwire[7:0]out,in;always@(posedgeclock)beginif(ControlSwith==`ON)out=in;elseout=out;endEDA技术BIGC第五章VerilogHDL语言(二)【例】一个八位三态数据通路控制器outbuf[7]LinkBusSwitchbus[7]EDA技术BIGC第五章VerilogHDL语言(二)`defineON1‘b1`defineOFF1‘b0wireLinkBusSwitch;wire[7:0]outbuf;inout[7:0]bus;assignbus=(LinkBusSwitch==`ON)?outbuf:8‘hzzoutbuf[7:0]开bus[7:0]tt310215326288021532ZZZZLinkBusSwitch关EDA技术BIGC第五章VerilogHDL语言(二)避免竞争和冒险由于组合逻辑和布线的延迟引起abcabttcclockEDA技术BIGC第五章VerilogHDL语言(二)ba#2#3#4cedba

1 / 104
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功