




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VerilogHDL设计方法简介算法实现用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作。硬线逻辑由与门、或门、非门、触发器、多路器等基本逻辑部件造成的逻辑系统。从算法设计到硬线逻辑的实现2020/12/101VerilogHDL设计方法简介算法实现2020/12/1传统处理器的问题算法问题研究并行快速算法电路实现问题设计并研制具有并行结构的数字和计算逻辑结构。电路实现的两个方向:
FPGA专用集成电路VerilogHDL建模、仿真、综合和全面验证。2020/12/102传统处理器的问题算法问题2020/12/102什么是复杂的数字逻辑系统?嵌入式微处理机系统数字信号处理系统高速并行计算逻辑高速通信协议电路高速编码/解码、加密/解密电路复杂的多功能智能接口门逻辑总数超过几万门达到几百甚至达几千万门的数字系统2020/12/103什么是复杂的数字逻辑系统?嵌入式微处理机系统2020/12/有哪几种硬件描述语言?
各有什么特点?VerilogHDL较多的第三方工具的支持语法结构比VHDL简单学习起来比VHDL容易仿真工具比较好使测试激励模块容易编写2020/12/104有哪几种硬件描述语言?
各有什么特点?VerilogHDLVerilogHDL的建模方式即:模块的描述方式:行为级建模模块内部只包括过程块和连续赋值语句,而不包括实例调用语句和基本元件实例调用语句。RTL级属于行为级结构级建模模块内部只包括实例调用语句。包括门级和开关级行为级与结构级混合建模两者兼而有之2020/12/105VerilogHDL的建模方式即:模块的描述方式:202VerilogHDL的抽象级别语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。行为级:技术指标和算法的Verilog描述RTL级:逻辑功能的Verilog描述门级:逻辑结构的Verilog描述开关级:具体的晶体管物理器件的描述2020/12/106VerilogHDL的抽象级别语言本身提供了各种层次抽象VerilogHDL的抽象级别行为级:有关行为和技术指标模块,容易理解RTL级:有关逻辑执行步骤的模块,较难理解门级:有关逻辑部件互相连接的模块,很难理解开关级:有关物理形状和布局参数的模块,非常难理解2020/12/107VerilogHDL的抽象级别行为级:有关行为和技术指标抽象级别和综合与仿真的关系行为仿真:行为的验证和验证模块分割的合理性前仿真:即RTL级仿真,检查有关模块逻辑执行步骤是否正确。逻辑综合:把RTL级模块转换成门级。后仿真:用门级模型做验证,检查门的互连逻辑其功能是否正确。布局布线:在门级模型的基础上加上了布线延时布局布线后仿真:与真实的电路最接近的验证。2020/12/108抽象级别和综合与仿真的关系行为仿真:行为的验证和验证模块分割Verilog程序结构一个完整的电路系统由若干模块构成一个模块可由若干子模块构成模块——类比C语言函数是verilog的基本单位描述么个功能或结构,以及与其他模块的通信接口一个模块是相对独立的功能体,一般通过高层模块调用其他模块的实例构成系统模块是并行运行的Module模块名(端口列表);endmodule端口定义:Input输入端口Output输出端口Inout输入/输出端口数据类型说明:RegWireparameter逻辑功能定义:AssignAlwaysFunctionTask……2020/12/109Verilog程序结构一个完整的电路系统由若干模块构成ModVerilog程序结构modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmodule2020/12/1010Verilog程序结构modulerw1(a,b,verilogHDL语法要素语言要素注释、间隔符、标识符、关键字、运算符数据类型名字空间表达式模块结构级行为级代码风格2020/12/1011verilogHDL语法要素语言要素2020/12/1011verilogHDL数据类型数据值0、1、x、z数据类型网络(wire…)变量(reg…)只有reg和integer可综合reg只能在initial或always内被赋值Verilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。
参数parameter向量指定了长度的wire或reg称为矢量(否则为标量)多维向量:wire型(结构化描述);reg型(行为化描述)存储器:reg型向量向量的可访问性2020/12/1012verilogHDL数据类型数据值2020/12/1012Verilog模块中的信号只有两种主要的信号类型:-寄存器类型:reg
在always块中被赋值的信号,往往代表触发器,但不一定是触发器。-连线(网络)类型:wire用assign关键词指定的组合逻辑的信号或连线寄存器(reg)类型不一定是触发器。它只是在always块中赋值的信号。2020/12/1013Verilog模块中的信号只有两种主要的信号类型:2020/Verilog中reg与wire的不同点用寄存器(reg)类型变量生成组合逻辑举例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1014Verilog中reg与wire的不同点用寄存器(reg)Verilog中reg与wire的不同点用寄存器(reg)类型变量生成触发器的例子:modulerw2(clk,d,out1,out2);inputclk,d;outputout1,out2;regout1;wireout2;assignout2=d&~out1;always@(posedgeclk)beginout1<=d;endendmoduledout2AND2i1clkout1DQDFF2020/12/1015Verilog中reg与wire的不同点用寄存器(regverilogHDL名字空间2020/12/1016verilogHDL名字空间2020/12/1016verilogHDL语言表达式操作符算术、关系、相等关系、逻辑、按位、归约、移位、条件、连接、复制延迟表达式表达式位宽2020/12/1017verilogHDL语言表达式操作符2020/12/1017VerilogHDL模块的结构Verilog模块的结构由在module和endmodule关键词之间的四个主要部分组成:-端口信息:moduleblock1(a,b,c,d);-输入/输出说明:inputa,b,c;outputd;-内部信号:wirex;-功能定义:assignd=a|x;assignx=(b&~c); and#1u3(selb,b,sl);endmodule
2020/12/1018VerilogHDL模块的结构Verilog模块的结构由VerilogHDL模块中的逻辑表示在Verilog模块中有三种方法可以生成逻辑电路:-用assign语句:
assigncs=(a0&~a1&~a2);-用元件的实例调用:and2and_inst(q,a,b);-用always块:always@(posedgeclkorposedgeen)beginif(clr)q<=0;elseif(en)q<=d;end2020/12/1019VerilogHDL模块中的逻辑表示在Verilog模块并行和顺序逻辑关系的表示如在模块中逻辑功能由下面三个语句块组成:assigncs=(a0&~a1&~a2);//-----1and2and_inst(qout,a,b);//-----2always@(posedgeclkorposedgeclr)//-----3beginif(clr)q<=0;elseif(en)q<=d;end1、2、3三条语句是并行的,它们产生独立的逻辑电路;而在always块中:begin与end之间是顺序执行的。2020/12/1020并行和顺序逻辑关系的表示如在模块中逻辑功能由下面三个语句块组结构级outabslselbselansl只有实例调用Moduletan(out,a,b,sl);inputa,b,sl;outputout; notu1(ns1,sl);and#1u3(selb,b,sl); and#1u2(sela,a,nsl);or#2u4(out,sela,selb);endmodule2020/12/1021结构级outabslselbselansl只有实例调用202行为级只有连续赋值语句和always过程块modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1022行为级只有连续赋值语句和always过程块aout2BUFF行为级模块描述语句——过程语句Initial语句——不能被综合带延时控制的语句带顺序过程的语句(begin…end)只执行一次Always语句敏感信号为组合逻辑的语句敏感信号为时钟沿的语句(时序逻辑)语句则不断重复执行2020/12/1023行为级模块描述语句——过程语句Initial语句——不能被综行为级模块描述语句——语句块将两条或更多条语句合成语法结构上相当于一条语句的机制。顺序语句块(begin…end)语句按顺序一次执行并行语句块(fork…join)块内语句并发执行2020/12/1024行为级模块描述语句——语句块将两条或更多条语句合成语法结构上行为级模块描述语句——赋值语句门基元赋值语句连续赋值语句(assign)——针对组和逻辑过程赋值语句(只出现在always语句中
)阻塞赋值语句(=)首先计算右边的值,然后立即赋给左边顺序块内的语句依次执行,并行块内语句并行执行多用于行为仿真和时序仿真非阻塞赋值语句(<=)在begin…end顺序块中,语句间并发执行仿真中,先计算右边的值,在时钟沿统一赋值给左边2020/12/1025行为级模块描述语句——赋值语句门基元赋值语句2020/12/Verilog中两种不同的赋值语句不阻塞(non-blocking)赋值语句:
always@(posedgeclk)beginb<=a;c<=b;endclkDFFcDQDQabDFF2020/12/1026Verilog中两种不同的赋值语句不阻塞(non-blockVerilog中两种不同的赋值语句阻塞(blocking)赋值语句:
always@(posedgeclk)beginb=a;c=b;endclkDFFcDQab2020/12/1027Verilog中两种不同的赋值语句阻塞(blocking)两种不同的赋值语句区别要点非阻塞(non-blocking)赋值语句(b<=a):块内的赋值语句同时赋值;b的值被赋成新值a的操作,是与块内其他赋值语句同时完成的;建议在可综合风格的模块中使用不阻塞赋值。阻塞(blocking)赋值语句(b=a):完成该赋值语句后才能做下一句的操作;b的值立刻被赋成新值a;硬件没有对应的电路,因而综合结果未知。2020/12/1028两种不同的赋值语句区别要点非阻塞(non-blocking)两种不同的赋值语句区别要点阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。过程性赋值的赋值对象有可能综合成wire,latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。过程性赋值语句中的任何延时在综合时都将忽略。建议同一个变量单一地使用阻塞或者非阻塞赋值。2020/12/1029两种不同的赋值语句区别要点阻塞赋值和非阻塞赋值就该赋值本身是行为级模块描述语句——分支语句是verilog中的高级程序语句——来源于CIf_else分支控制语句单分支、双分支、嵌套Case分支控制语句执行第一个匹配项,各匹配项不需要互斥表达式不一定是常量表达式2020/12/1030行为级模块描述语句——分支语句是verilog中的高级程序语行为级模块描述语句——循环语句forever循环repeat循环while循环for循环2020/12/1031行为级模块描述语句——循环语句forever循环2020/1关于调用实例调用函数调用任务调用2020/12/1032关于调用实例调用2020/12/1032组合逻辑设计要点组合逻辑的两种VerilogHDL表示:-用assign语句:
assignq=(al==1?)d:0;-用always块:
always@(alord)beginif(al==1)q<=d;elseq<=0;end2020/12/1033组合逻辑设计要点组合逻辑的两种VerilogHDL表示:2组合逻辑设计要点组合逻辑的两种VerilogHDL表示:
-用always块时,没注意加else语句:如:always@(alord)beginif(al==1)q<=d;end则:此时生成的不是纯组合逻辑,因为当al==0时,q能保留原来的值,所以生成的电路中有锁存器。2020/12/1034组合逻辑设计要点组合逻辑的两种VerilogHDL表示:2组合逻辑设计要点用always块时,必须注意电平敏感的信号表是否完全,如:always@(aorbororcord)beginout=(a&b&c)|(d&e);end此时生成的不是纯组合逻辑,因为当e变化时,out不能立即跟着变化。只有当a或b或c或d变化时e的变化后果才显示出来。可见需要有一个寄存器来储存e的变化。2020/12/1035组合逻辑设计要点用always块时,必须注意电平敏感的信号表时序逻辑设计要点时序逻辑的VerilogHDL表示:-用always:如:always@(posedgeclock)begin if(!reset) do_reset; elsecase(state)
state_1:do_state_1; state_2:do_state_2; state_3:do_state_3; state_4:do_state_4; state_5:do_state_5; default:state<=xx;end2020/12/1036时序逻辑设计要点时序逻辑的VerilogHDL表示:202时序逻辑设计要点taskdo_state_1;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_state_2;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_reset;beginReset_Every_Register;Prepare_For_Next_State;endendtask2020/12/1037时序逻辑设计要点taskdo_state_1;taskdverilogHDL代码风格涉及的因素速度和面积功耗涉及的技术逻辑复制和复用计数并行和流水线计数同步和一、异步单元处理技术2020/12/1038verilogHDL代码风格涉及的因素2020/12/103有关VerilogHDL的几个重要基本概念综合:通过工具把用VerilogHDL描述的模块自动转换为用门级电路网表表示的模块的过程。寄存器传输级VerilogHDL模块:也可称为RTL(Verilog)HDL模块。它是符合特定标准和风格的描述状态转移和变化的VerilogHDL模块。能用综合器把它转换为门级逻辑。VerilogHDL测试模块:
用VerilogHDL描述的模块,可以用来产生测试信号序列并可以接收被测试模块的信号,用于验证所设计的模块是否能正常运行,往往不可综合成具体门级电路。2020/12/1039有关VerilogHDL的几个重要基本概念综合:2020有关VerilogHDL的几个重要基本概念VerilogHDL顶层(测试)模块:同上。布局布线:把用综合器自动生成的门级网表(EDIF)通过运行一个自动操作的布局布线工具,使其与具体的某种FPGA或某种ASIC工艺库器件对应起来,并加以连接的过程。VerilogHDL后仿真测试模块:同上,但被测试的模块至少是一个门级描述的或用具体FPGA(ASIC)库器件(带时间延迟信息)描述的结构型VerilogHDL模块。2020/12/1040有关VerilogHDL的几个重要基本概念VerilogVerilog模块的种类——行为模块在仿真时其表现的功能与某实体逻辑电路完全一致的VerilogHDL模块,但并没有手段生成对应的门级逻辑电路与之对应。功能用于系统分割时验证各部分的功能指标分配是否合理;在仿真时可用于替代与所设计电路系统相连接的现成可购得的外围电路;用于产生测试信号和数据输入到所设计电路系统并接收它的应答信号和输出以验证其功能。2020/12/1041Verilog模块的种类——行为模块在仿真时其表现的功能与某Verilog模块的种类——可综合模块可通过综合工具,自动地转换为门级逻辑电路的VerilogHDL模块。它的仿真可以在两个层次上进行,行为级和门级。功能想要设计的用硬线逻辑构成的电路系统;以基本的逻辑器件为基础所构成的各种层次的结构模块;综合器能理解并能将其编译为门级逻辑的模块;对一般的综合器而言,单纯的RTL级VerilogHDL模块以及RTL和结构型混合HDL模块。2020/12/1042Verilog模块的种类——可综合模块可通过综合工具,自动地为什么Verilog能支持大型设计Verilog语法支持多层次多模块设计:用`include宏指令可以在一个模块中包含多个模块;在一个模块中可以用实例调用别的模块中定义的电路结构,构成多层次模块;在一个模块中可以用多个任务和函数来表达复杂的状态机和结构;一个设计项目往往由一个顶层测试模块和多个可综合模块和若干个外围接口模块构成。2020/12/1043为什么Verilog能支持大型设计Verilog语法支持多设计项目举例——myproject可综合部分(我们想要设计的逻辑电路部分):mk_1.v,mk_2.v,mk_3.v,.....mk_8.vmk_11.v,mk_12.v,mk_13.v.....mk_21.v,mk_22.v,mk_23.v...........mk_81.v,mk_82.v,mk_83.v.....2020/12/1044设计项目举例——myproject可综合部分(我们想要设计设计项目举例——myproject外围部分:ww_1.v,ww_2.v,ww_3.v,ww_4.v...激励部分:SG_1.v,SG_2.v....顶层测试模块:包括可综合部分、外围部分、激励部分,还包括测试步骤和输出文件等。2020/12/1045设计项目举例——myproject外围部分:2020/12/Myproject——外围部分这部分逻辑不用综合成电路,但为了验证我们的设计,其行为必须与真实器件完全一致。
下面我们介绍一个简化的RAM模块,我们所设计的电路用到了该RAM,但电路结构中并不包括这个RAM。2020/12/1046Myproject——外围部分这部分逻辑不用综合成电路,但为RAM的Verilog模块`timescale1ns/1nsmoduleram(data,addr,ena,read,write);inout[7:0]data;input[9:0]addr;inputena,read,write;reg[7:0]ram[8‘hff:0];assign#20data=(read&&ena)?ram[addr]: 8‘hzz;always@(posedgewrite)begin#10ram[addr]<=data;endendmodule2020/12/1047RAM的Verilog模块`timescale1ns激励源的Verilog模块`timescale1ns/1ns`definetimeslice200modulesigs(ack,clock,read,write,addr,data);inputack;outputclock,read,write;output[15:0]addr;inout[7:0]data;regclock,read,write;reg[15:0]addr;regw_r;//usedtorecordifreadorwritereg[7:0]DataToRam;//usedtostackthedata2020/12/1048激励源的Verilog模块`timescale1ns/激励源的Verilog模块assign#10data=(w_r)?‘hzz:DataToRam;initialbegin clock=0;w_r=0; DataToRam=0;addr=16‘h0000; endalways#(`timeslice/2)clock=~clock;2020/12/1049激励源的Verilog模块assign#10dat激励源的Verilog模块always@(posedgeack)if(w_r==0)begin#(5*`timeslice)write=1;#(`timeslice)write=0;end elsebegin#(5*`timeslice)read=1;#(`timeslice)read=0;endalways@(posedgeack)begin DataToRam=DataToRam+2;addr=addr+1;endendmodule2020/12/1050激励源的Verilog模块always@(posed激励源的Verilog模块上面这个模块可根据从被测试模块输出的ack信号逐一发出读/写、地址、数据至被测试模块,可以用来检验被测试模块的功能是否正确,但没有具体的门级电路系统与之对应。2020/12/1051激励源的Verilog模块上面这个模块可根据从被测试模块顶层测试Verilog模块`timescale1ns/1ns`include可综合模块.v....`include外围电路.v....`include激励信号.v....moduletop;wire连线定义....Reg初试化块中寄存器定义....initialbegin定义波形记录、输入数据文件、记录输出文件、监视重要信号、记录重要时刻、设置仿真时间等。
end2020/12/1052顶层测试Verilog模块`timescale1ns/顶层测试Verilog模块信号模块xh1(.clock(clk),.reset(rst),.ack(ackn).....);.....可综合模块mysj1(.clock(clk),reset(rst),.ack(ackn)...);.....外围模块ram1(.read(rd),.write(wrt),.data(databus)...);.....endmodule2020/12/1053顶层测试Verilog模块信号模块2020/12/105不同抽象级别的HDL模型系统级(SystemLevel)算法级(AlgorithmLevel)寄存器传输级(RegisterTransferLevel)门级(GateLevel)开关级(SwitchLevel)2020/12/1054不同抽象级别的HDL模型系统级(SystemLeve可综合的VerilogHDL模型算法级(AlgorithmLevel)部分可综合寄存器传输级(RegisterTransferLevel)完全可综合门级(GateLevel)完全可综合开关级(SwitchLevel)用于基本逻辑器件仿真模型的建库2020/12/1055可综合的VerilogHDL模型算法级(Algori综合工具和要点综合是把VerilogHDL源代码通过综合工具,转变为相应工艺的门级逻辑表示的一个过程;在综合之前,VerilogHDL源代码的风格必须经过严格检查,仅仅符合语法不一定能综合;不同的综合工具性能有差别,支持的VerilogHDL源代码的语法集合和风格也略有差别。综合工具必须在已知基本逻辑单元库的前提下,才能进行综合。2020/12/1056综合工具和要点综合是把VerilogHDL源代码通过综合仿真和综合工具概述常用的仿真工具:Verilog-XLNC-VerilogModelSimVeriBestViewLogic.....常用的综合工具SynplifyExemplarSynopsysExpressSynopsysDesigner.....2020/12/1057仿真和综合工具概述常用的仿真工具:常用的综合工具2020/综合小结Verilog中的变量有线网类型和寄存器类型。线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器。因些连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。过程性赋值的赋值对象有可能综合成wire,latch,和flip-flop,取决于具体状况。过程性赋值语句中的任何延时在综合时都将忽略。通常会将进行运算操作的结果比原操作数扩展一位,用来存放进位或者借位。2020/12/1058综合小结Verilog中的变量有线网类型和寄存器类型。线网型PPT教学课件谢谢观看ThankYouForWatching59PPT教学课件谢谢观看ThankYouForWatchVerilogHDL设计方法简介算法实现用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作。硬线逻辑由与门、或门、非门、触发器、多路器等基本逻辑部件造成的逻辑系统。从算法设计到硬线逻辑的实现2020/12/1060VerilogHDL设计方法简介算法实现2020/12/1传统处理器的问题算法问题研究并行快速算法电路实现问题设计并研制具有并行结构的数字和计算逻辑结构。电路实现的两个方向:
FPGA专用集成电路VerilogHDL建模、仿真、综合和全面验证。2020/12/1061传统处理器的问题算法问题2020/12/102什么是复杂的数字逻辑系统?嵌入式微处理机系统数字信号处理系统高速并行计算逻辑高速通信协议电路高速编码/解码、加密/解密电路复杂的多功能智能接口门逻辑总数超过几万门达到几百甚至达几千万门的数字系统2020/12/1062什么是复杂的数字逻辑系统?嵌入式微处理机系统2020/12/有哪几种硬件描述语言?
各有什么特点?VerilogHDL较多的第三方工具的支持语法结构比VHDL简单学习起来比VHDL容易仿真工具比较好使测试激励模块容易编写2020/12/1063有哪几种硬件描述语言?
各有什么特点?VerilogHDLVerilogHDL的建模方式即:模块的描述方式:行为级建模模块内部只包括过程块和连续赋值语句,而不包括实例调用语句和基本元件实例调用语句。RTL级属于行为级结构级建模模块内部只包括实例调用语句。包括门级和开关级行为级与结构级混合建模两者兼而有之2020/12/1064VerilogHDL的建模方式即:模块的描述方式:202VerilogHDL的抽象级别语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。行为级:技术指标和算法的Verilog描述RTL级:逻辑功能的Verilog描述门级:逻辑结构的Verilog描述开关级:具体的晶体管物理器件的描述2020/12/1065VerilogHDL的抽象级别语言本身提供了各种层次抽象VerilogHDL的抽象级别行为级:有关行为和技术指标模块,容易理解RTL级:有关逻辑执行步骤的模块,较难理解门级:有关逻辑部件互相连接的模块,很难理解开关级:有关物理形状和布局参数的模块,非常难理解2020/12/1066VerilogHDL的抽象级别行为级:有关行为和技术指标抽象级别和综合与仿真的关系行为仿真:行为的验证和验证模块分割的合理性前仿真:即RTL级仿真,检查有关模块逻辑执行步骤是否正确。逻辑综合:把RTL级模块转换成门级。后仿真:用门级模型做验证,检查门的互连逻辑其功能是否正确。布局布线:在门级模型的基础上加上了布线延时布局布线后仿真:与真实的电路最接近的验证。2020/12/1067抽象级别和综合与仿真的关系行为仿真:行为的验证和验证模块分割Verilog程序结构一个完整的电路系统由若干模块构成一个模块可由若干子模块构成模块——类比C语言函数是verilog的基本单位描述么个功能或结构,以及与其他模块的通信接口一个模块是相对独立的功能体,一般通过高层模块调用其他模块的实例构成系统模块是并行运行的Module模块名(端口列表);endmodule端口定义:Input输入端口Output输出端口Inout输入/输出端口数据类型说明:RegWireparameter逻辑功能定义:AssignAlwaysFunctionTask……2020/12/1068Verilog程序结构一个完整的电路系统由若干模块构成ModVerilog程序结构modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmodule2020/12/1069Verilog程序结构modulerw1(a,b,verilogHDL语法要素语言要素注释、间隔符、标识符、关键字、运算符数据类型名字空间表达式模块结构级行为级代码风格2020/12/1070verilogHDL语法要素语言要素2020/12/1011verilogHDL数据类型数据值0、1、x、z数据类型网络(wire…)变量(reg…)只有reg和integer可综合reg只能在initial或always内被赋值Verilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。
参数parameter向量指定了长度的wire或reg称为矢量(否则为标量)多维向量:wire型(结构化描述);reg型(行为化描述)存储器:reg型向量向量的可访问性2020/12/1071verilogHDL数据类型数据值2020/12/1012Verilog模块中的信号只有两种主要的信号类型:-寄存器类型:reg
在always块中被赋值的信号,往往代表触发器,但不一定是触发器。-连线(网络)类型:wire用assign关键词指定的组合逻辑的信号或连线寄存器(reg)类型不一定是触发器。它只是在always块中赋值的信号。2020/12/1072Verilog模块中的信号只有两种主要的信号类型:2020/Verilog中reg与wire的不同点用寄存器(reg)类型变量生成组合逻辑举例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1073Verilog中reg与wire的不同点用寄存器(reg)Verilog中reg与wire的不同点用寄存器(reg)类型变量生成触发器的例子:modulerw2(clk,d,out1,out2);inputclk,d;outputout1,out2;regout1;wireout2;assignout2=d&~out1;always@(posedgeclk)beginout1<=d;endendmoduledout2AND2i1clkout1DQDFF2020/12/1074Verilog中reg与wire的不同点用寄存器(regverilogHDL名字空间2020/12/1075verilogHDL名字空间2020/12/1016verilogHDL语言表达式操作符算术、关系、相等关系、逻辑、按位、归约、移位、条件、连接、复制延迟表达式表达式位宽2020/12/1076verilogHDL语言表达式操作符2020/12/1017VerilogHDL模块的结构Verilog模块的结构由在module和endmodule关键词之间的四个主要部分组成:-端口信息:moduleblock1(a,b,c,d);-输入/输出说明:inputa,b,c;outputd;-内部信号:wirex;-功能定义:assignd=a|x;assignx=(b&~c); and#1u3(selb,b,sl);endmodule
2020/12/1077VerilogHDL模块的结构Verilog模块的结构由VerilogHDL模块中的逻辑表示在Verilog模块中有三种方法可以生成逻辑电路:-用assign语句:
assigncs=(a0&~a1&~a2);-用元件的实例调用:and2and_inst(q,a,b);-用always块:always@(posedgeclkorposedgeen)beginif(clr)q<=0;elseif(en)q<=d;end2020/12/1078VerilogHDL模块中的逻辑表示在Verilog模块并行和顺序逻辑关系的表示如在模块中逻辑功能由下面三个语句块组成:assigncs=(a0&~a1&~a2);//-----1and2and_inst(qout,a,b);//-----2always@(posedgeclkorposedgeclr)//-----3beginif(clr)q<=0;elseif(en)q<=d;end1、2、3三条语句是并行的,它们产生独立的逻辑电路;而在always块中:begin与end之间是顺序执行的。2020/12/1079并行和顺序逻辑关系的表示如在模块中逻辑功能由下面三个语句块组结构级outabslselbselansl只有实例调用Moduletan(out,a,b,sl);inputa,b,sl;outputout; notu1(ns1,sl);and#1u3(selb,b,sl); and#1u2(sela,a,nsl);or#2u4(out,sela,selb);endmodule2020/12/1080结构级outabslselbselansl只有实例调用202行为级只有连续赋值语句和always过程块modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1081行为级只有连续赋值语句和always过程块aout2BUFF行为级模块描述语句——过程语句Initial语句——不能被综合带延时控制的语句带顺序过程的语句(begin…end)只执行一次Always语句敏感信号为组合逻辑的语句敏感信号为时钟沿的语句(时序逻辑)语句则不断重复执行2020/12/1082行为级模块描述语句——过程语句Initial语句——不能被综行为级模块描述语句——语句块将两条或更多条语句合成语法结构上相当于一条语句的机制。顺序语句块(begin…end)语句按顺序一次执行并行语句块(fork…join)块内语句并发执行2020/12/1083行为级模块描述语句——语句块将两条或更多条语句合成语法结构上行为级模块描述语句——赋值语句门基元赋值语句连续赋值语句(assign)——针对组和逻辑过程赋值语句(只出现在always语句中
)阻塞赋值语句(=)首先计算右边的值,然后立即赋给左边顺序块内的语句依次执行,并行块内语句并行执行多用于行为仿真和时序仿真非阻塞赋值语句(<=)在begin…end顺序块中,语句间并发执行仿真中,先计算右边的值,在时钟沿统一赋值给左边2020/12/1084行为级模块描述语句——赋值语句门基元赋值语句2020/12/Verilog中两种不同的赋值语句不阻塞(non-blocking)赋值语句:
always@(posedgeclk)beginb<=a;c<=b;endclkDFFcDQDQabDFF2020/12/1085Verilog中两种不同的赋值语句不阻塞(non-blockVerilog中两种不同的赋值语句阻塞(blocking)赋值语句:
always@(posedgeclk)beginb=a;c=b;endclkDFFcDQab2020/12/1086Verilog中两种不同的赋值语句阻塞(blocking)两种不同的赋值语句区别要点非阻塞(non-blocking)赋值语句(b<=a):块内的赋值语句同时赋值;b的值被赋成新值a的操作,是与块内其他赋值语句同时完成的;建议在可综合风格的模块中使用不阻塞赋值。阻塞(blocking)赋值语句(b=a):完成该赋值语句后才能做下一句的操作;b的值立刻被赋成新值a;硬件没有对应的电路,因而综合结果未知。2020/12/1087两种不同的赋值语句区别要点非阻塞(non-blocking)两种不同的赋值语句区别要点阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。过程性赋值的赋值对象有可能综合成wire,latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。过程性赋值语句中的任何延时在综合时都将忽略。建议同一个变量单一地使用阻塞或者非阻塞赋值。2020/12/1088两种不同的赋值语句区别要点阻塞赋值和非阻塞赋值就该赋值本身是行为级模块描述语句——分支语句是verilog中的高级程序语句——来源于CIf_else分支控制语句单分支、双分支、嵌套Case分支控制语句执行第一个匹配项,各匹配项不需要互斥表达式不一定是常量表达式2020/12/1089行为级模块描述语句——分支语句是verilog中的高级程序语行为级模块描述语句——循环语句forever循环repeat循环while循环for循环2020/12/1090行为级模块描述语句——循环语句forever循环2020/1关于调用实例调用函数调用任务调用2020/12/1091关于调用实例调用2020/12/1032组合逻辑设计要点组合逻辑的两种VerilogHDL表示:-用assign语句:
assignq=(al==1?)d:0;-用always块:
always@(alord)beginif(al==1)q<=d;elseq<=0;end2020/12/1092组合逻辑设计要点组合逻辑的两种VerilogHDL表示:2组合逻辑设计要点组合逻辑的两种VerilogHDL表示:
-用always块时,没注意加else语句:如:always@(alord)beginif(al==1)q<=d;end则:此时生成的不是纯组合逻辑,因为当al==0时,q能保留原来的值,所以生成的电路中有锁存器。2020/12/1093组合逻辑设计要点组合逻辑的两种VerilogHDL表示:2组合逻辑设计要点用always块时,必须注意电平敏感的信号表是否完全,如:always@(aorbororcord)beginout=(a&b&c)|(d&e);end此时生成的不是纯组合逻辑,因为当e变化时,out不能立即跟着变化。只有当a或b或c或d变化时e的变化后果才显示出来。可见需要有一个寄存器来储存e的变化。2020/12/1094组合逻辑设计要点用always块时,必须注意电平敏感的信号表时序逻辑设计要点时序逻辑的VerilogHDL表示:-用always:如:always@(posedgeclock)begin if(!reset) do_reset; elsecase(state)
state_1:do_state_1; state_2:do_state_2; state_3:do_state_3; state_4:do_state_4; state_5:do_state_5; default:state<=xx;end2020/12/1095时序逻辑设计要点时序逻辑的VerilogHDL表示:202时序逻辑设计要点taskdo_state_1;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_state_2;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_reset;beginReset_Every_Register;Prepare_For_Next_State;endendtask2020/12/1096时序逻辑设计要点taskdo_state_1;taskdverilogHDL代码风格涉及的因素速度和面积功耗涉及的技术逻辑复制和复用计数并行和流水线计数同步和一、异步单元处理技术2020/12/1097verilogHDL代码风格涉及的因素2020/12/103有关VerilogHDL的几个重要基本概念综合:通过工具把用VerilogHDL描述的模块自动转换为用门级电路网表表示的模块的过程。寄存器传输级VerilogHDL模块:也可称为RTL(Verilog)HDL模块。它是符合特定标准和风格的描述状态转移和变化的VerilogHDL模块。能用综合器把它转换为门级逻辑。VerilogHDL测试模块:
用VerilogHDL描述的模块,可以用来产生测试信号序列并可以接收被测试模块的信号,用于验证所设计的模块是否能正常运行,往往不可综合成具体门级电路。2020/12/1098有关VerilogHDL的几个重要基本概念综合:2020有关VerilogHDL的几个重要基本概念VerilogHDL顶层(测试)模块:同上。布局布线:把用综合器自动生成的门级网表(EDIF)通过运行一个自动操作的布局布线工具,使其与具体的某种FPGA或某种ASIC工艺库器件对应起来,并加以连接的过程。VerilogHDL后仿真测试模块:同上,但被测试的模块至少是一个门级描述的或用具体FPGA(ASIC)库器件(带时间延迟信息)描述的结构型VerilogHDL模块。2020/12/1099有关VerilogHDL的几个重要基本概念VerilogVerilog模块的种类——行为模块在仿真时其表现的功能与某实体逻辑电路完全一致的VerilogHDL模块,但并没有手段生成对应的门级逻辑电路与之对应。功能用于系统分割时验证各部分的功能指标分配是否合理;在仿真时可用于替代与所设计电路系统相连接的现成可购得的外围电路;用于产生测试信号和数据输入到所设计电路系统并接收它的应答信号和输出以验证其功能。2020/12/10100Verilog模块的种类——行为模块在仿真时其表现的功能与某Verilog模块的种类——可综合模块可通过综合工具,自动地转换为门级逻辑电路的VerilogHDL模块。它的仿真可以在两个层次上进行,行为级和门级。功能想要设计的用硬线逻辑构成的电路系统;以基本的逻辑器件为基础所构成的各种层次的结构模块;综合器能理解并能将其编译为门级逻辑的模块;对一般的综合器而言,单纯的RTL级VerilogHDL模块以及RTL和结构型混合HDL模块。2020/12/10101Verilog模块的种类——可综合模块可通过综合工具,自动地为什么Verilog能支持大型设计Verilog语法支持多层次多模块设计:用`include宏指令可以在一个模块中包含多个模块;在一个模块中可以用实例调用别的模块中定义的电路结构,构成多层次模块;在一个模块中可以用多个任务和函数来表达复杂的状态机和结构;一个设计项目往往由一个顶层测试模块和多个可综合模块和若干个外围接口模块构成。2020/12/10102为什么Verilog能支持大型设计Verilog语法支持多设计项目举例——myproject可综合部分(我们想要设计的逻辑电路部分):mk_1.v,mk_2.v,mk_3.v,.....mk_8.vmk_11.v,mk_12.v,mk_13.v.....mk_21.v,mk_22.v,mk_23.v...........mk_81.v,mk_82.v,mk_83.v.....2020/12/10103设计项目举例——myproject可综合部分(我们想要设计设计项目举例——myproject外围部分:ww_1.v,ww_2.v,ww_3.v,ww_4.v...激励部分:SG_1.v,SG_2.v....顶层测试模块:包括可综合部分、外围部分、激励部分,还包括测试步骤和输出文件等。2020/12/10104设计项目举例——myproject外围部分:2020/12/Myproject——外围部分这部分逻辑不用综合成电路,但为了验证我们的设计,其行为必须与真实器件完全一致。
下面我们介绍一个简化的RAM模块,我们所设计的电路用到了该RAM,但电路结构中并不包括这个RAM。2020/12/10105Myproject——外围部分这部分逻辑不用综合成电路,但为RAM的Verilog模块`timescale1ns/1nsmoduleram(data,addr,ena,read,write);inout[7:0]data;input[9:0]addr;inputena,read,write;reg[7:0]ram[8‘hff:0];assign#20data=(read&&ena)?ram[addr]: 8‘hzz;always@(posedgewrite)begin#10ram[addr]<=data;endendmodule2020/12/10106RAM的Verilog模块`timescale1ns激励源的Verilog模块`timescale1ns/1ns`definetimeslice200modulesigs(ack,clock,read,write,addr,data);inputack;outputclock,read,write;output[15:0]addr;inout[7:0]data;regclock,read,write;reg[15:0]addr;regw_r;//u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特教学校宣传工作计划
- 中班上学期家长交流会计划
- 制造业出纳职责与成本控制岗位职责
- 医院压疮管理流程的质量控制
- 2025年成人教育工作室年度培训计划
- 口腔医学研究项目职责与实施细则
- 初中美术教育工作计划与目标
- 供应链管理监理控制措施框架
- 高校学生互评的心得体会
- 教育培训机构师资与设备配置计划
- 薪酬管理的试题及答案
- 信息技术基础知识试题及答案
- 2024年江苏省南京市中考语文质检试卷
- 2分钟双人相声剧本
- 小学数学节低年级一二年级七巧板竞赛试题
- 轮扣架支撑模板施工方案(169页)
- 冷冻肉类供货合同参考
- 关联交易同期资料模板
- 电路板研发合同
- 罗斯公司理财Chap002全英文题库及答案
- 《中考化学总复习资料(通用)》
评论
0/150
提交评论