从算法设计到硬线逻辑的实现.ppt

上传人:za****8 文档编号:12854343 上传时间:2020-05-31 格式:PPT 页数:82 大小:432.06KB
返回 下载 相关 举报
从算法设计到硬线逻辑的实现.ppt_第1页
第1页 / 共82页
从算法设计到硬线逻辑的实现.ppt_第2页
第2页 / 共82页
从算法设计到硬线逻辑的实现.ppt_第3页
第3页 / 共82页
点击查看更多>>
资源描述
从算法设计到硬线逻辑的实现,复杂数字逻辑系统的VerilogHDL设计方法简介,北京航空航天大学EDA实验室夏宇闻,数字信号处理、计算、程序算法和硬线逻辑的基本概念,数字信号处理计算(Computing)算法和数据结构编程语言和程序体系结构硬线逻辑,数字信号处理的基本概念,现代电子系统设备中广泛使用了数字信号处理专用集成电路。用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作。处理工作从本质上说都是数学运算。完全可以用计算机或微处理器来完成处理工作。,计算(Computing)的基本概念,“Computing这门学问研究怎样系统地有步骤地描述和转换信息,实质上它是一门覆盖了多个知识和技术范畴的学问,其中包括了计算的理论、分析、设计、效率和应用。它提出的最基本的问题是什么样的工作能自动完成,什么样的不能。”(摘自Denningetal.,“ComputingasaDiscipline,”CommunicationofACM,January,1989)。,算法和数据结构的基本概念,算法就是解决特定问题的有序步骤。数据结构就是解决特定问题的相应的模型。,编程语言和程序的基本概念,编程语言:程序员利用一种由专家设计的既可以被人理解,也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言。程序:由编程语言所表达的算法问题的求解过程就是。常用的编程语言:C、Pascal、Fortran、Basic或汇编语言。,计算机体系结构和硬线逻辑的基本概念,计算机体统结构:是一门讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问。硬线逻辑:由与门、或门、非门、触发器、多路器等基本逻辑部件造成的逻辑系统。,数字信号处理系统的分类,非实时系统:信号处理的工作是可以事后进行。实时系统:信号处理的工作必须在规定的很短的时间内完成。,数字信号处理系统的实现,非实时系统:通用的计算机和利用通用计算机改装的设备,主要工作量是编写“C”程序。实时系统:信号处理专用的微处理器为核心的设备,主要工作量是编写汇编程序。,实时数字信号处理系统实现中存在的技术难点,算法问题。电路实现问题:如果由最快的信号处理专用的微处理器为核心的设备也来不及处理如此大量的数据怎么办呢?,实时数字信号处理系统实现中存在的技术难点和解决办法,算法问题。研究并行快速算法。电路实现问题:设计并研制具有并行结构的数字和计算逻辑结构。,实时数字信号处理系统实现中存在的技术难点和解决办法,电路实现的两个方向:FPGA专用集成电路,实时数字信号处理系统实现中存在的技术难点和解决办法,用于信号处理的FPGA和专用集成电路(ASIC)设计的方法:VerilogHDL建模、仿真、综合和全面验证。,复杂数字逻辑系统的VerilogHDL设计方法简介,什么是复杂的数字逻辑系统?,嵌入式微处理机系统数字信号处理系统高速并行计算逻辑高速通信协议电路高速编码/解码、加密/解密电路复杂的多功能智能接口门逻辑总数超过几万门达到几百甚至达几千万门的数字系统,为什么要设计复杂的数字逻辑系统?,对嵌入式系统的性能要求越来越高-通用的微处理机不能满足要求-硬件结构是提高系统总体性能的关键-软件只能提高系统的灵活性能-军用系统的实时、高可靠、低功耗要求-系统的功能专一,但对其各种性能要求极高-降低系统的设计和制造成本,怎样设计如此复杂的系统?,传统的设计方法:-查用器件手册;-选用合适的微处理器和电路芯片;-设计面包板和线路板;-调试;-定型;-设计复杂的系统(几十万门以上)极其困难。,怎样设计如此复杂的系统?,现代的设计方法:-选用合适的EDA仿真工具;-选用合适电路图输入和HDL编辑工具;-逐个编写可综合HDL模块;-逐个编写HDL测试模块;-逐个做VerilogHDL电路逻辑访真;-编写VerilogHDL总测试模块;-做系统电路逻辑总仿真;,怎样设计如此复杂的系统?,现代的设计方法(续前):-选用合适的基本逻辑元件库和宏库-租用或购买必要的IP核;-选用合适的综合器;-进行综合得到门级电路结构;-布局布线,得到时延文件;-后仿真;-定型,FPGA编码或ASIC投片,Top-Down设计思想,用EDA设计数字系统的流程,为什么要用硬件描述语言来设计?,电路的逻辑功能容易理解;便于计算机对逻辑进行分析处理;把逻辑设计与具体电路的实现分成两个独立的阶段来操作;逻辑设计与实现的工艺无关;逻辑设计的资源积累可以重复利用;可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)。,有哪几种硬件描述语言?各有什么特点?,VerilogHDL-较多的第三方工具的支持-语法结构比VHDL简单-学习起来比VHDL容易-仿真工具比较好使-测试激励模块容易编写,VerilogHDL的发展历史,有哪几种硬件描述语言?各有什么特点?,VHDL-比VerilogHDL早几年成为IEEE标准;-语法/结构比较严格,因而编写出的模块风格比较清晰;-比较适合由较多的设计人员合作完成的特大型项目(一百万门以上)。,两者建模能力的比较,VerilogHDL的应用方面,ASIC和FPGA设计师可用它来编写可综合的代码。描述系统的结构,做高层次的仿真。验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证。库模型的设计:可以用于描述ASIC和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(MacroCell)。,VerilogHDL的抽象级别,语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。行为级:技术指标和算法的Verilog描述RTL级:逻辑功能的Verilog描述门级:逻辑结构的Verilog描述开关级:具体的晶体管物理器件的描述,VerilogHDL的抽象级别,行为级:有关行为和技术指标模块,容易理解RTL级:有关逻辑执行步骤的模块,较难理解门级:有关逻辑部件互相连接的模块,很难理解开关级:有关物理形状和布局参数的模块,非常难理解,抽象级别和综合与仿真的关系,行为仿真:行为的验证和验证模块分割的合理性前仿真:即RTL级仿真,检查有关模块逻辑执行步骤是否正确。逻辑综合:把RTL级模块转换成门级。后仿真:用门级模型做验证,检查门的互连逻辑其功能是否正确。布局布线:在门级模型的基础上加上了布线延时布局布线后仿真:与真实的电路最接近的验证。,行为级和RTL级,modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;Regout;always(sloraorb)if(!sl)out=a;elseout=b;endmodule,a,b,sl,out,行为级和RTL级,这个行为的描述并没有说明如果输入a或b是三态的(高阻时)输出应该是什么,但有具体结构的真实电路是有一定的输出的。RTL模块的数据流动必须基于时钟。RTL模块在每个时钟的沿时刻,其变量的值必定是精确的。RTL模块是可综合的,它是行为模块的一个子集合。,结构级,modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;notu1(ns1,sl);and#1u2(sela,a,nsl);and#1u3(selb,b,sl);or#2u4(out,sela,selb);endmodule,out,VerilogHDL入门,modulemyadder(clock,reset,a,b,sum);parameterwidth=8;inputclock,reset;inputwidth-1:0a,b;outputwidth:0sum;regwidth-1:0a_reg,b_reg;regwidth:0sum;always(posedgeclockornegedgereset)if(!reset)begina_reg=b0;b_reg=b0;sum=b0;end,VerilogHDL入门,elsebegina_reg=a;b_reg=b;sum=a_reg+b_reg;endendmodule,VerilogHDL模块的测试,includemyadder.vmodulet;wire8:0sumout;reg7:0ain,bin;regclk;myadder(.clock(clk),.reset(rst),.a(ain),.b(bin),.sum(sumout);initialbeginrst=1;clk=0;ain=0;bin=3;#70rst=0;#70rst=1;endalways#50clk=clk;always(posedgeclk)beginain=ain+2;bin=bin+5;endendmodule,VerilogHDL测试,由于t模块中VerilogHDL语句的功能可以对myadder模块进行测试myadder模块输入了必须的信号:rst,clk,ain,bin观测该模块的输出:sumout看一看它是否符合设计要求。,有关VerilogHDL的几个重要基本概念,综合:通过工具把用VerilogHDL描述的模块自动转换为用门级电路网表表示的模块的过程。寄存器传输级VerilogHDL模块:也可称为RTL(Verilog)HDL模块。它是符合特定标准和风格的描述状态转移和变化的VerilogHDL模块。能用综合器把它转换为门级逻辑。,有关VerilogHDL的几个重要基本概念,VerilogHDL测试模块:用VerilogHDL描述的模块,可以用来产生测试信号序列并可以接收被测试模块的信号,用于验证所设计的模块是否能正常运行,往往不可综合成具体门级电路。VerilogHDL顶层(测试)模块:同上。,有关VerilogHDL的几个重要基本概念,布局布线:把用综合器自动生成的门级网表(EDIF)通过运行一个自动操作的布局布线工具,使其与具体的某种FPGA或某种ASIC工艺库器件对应起来,并加以连接的过程。VerilogHDL后仿真测试模块:同3)、4),但被测试的模块至少是一个门级描述的或用具体FPGA(ASIC)库器件(带时间延迟信息)描述的结构型VerilogHDL模块。,Verilog模块由两部分组成:端口信息和内部功能。moduleblock1(a,b,c,d,e);inputa,b,c;outputd,e;assignd=a|(bendmodule,VerilogHDL模块和接口,a,b,c,d,e,Verilog模块的结构由在module和endmodule关键词之间的四个主要部分组成:-端口信息:moduleblock1(a,b,c,d);-输入/输出说明:inputa,b,c;outputd;-内部信号:wirex;-功能定义:assignd=a|x;assignx=(bendmodule,VerilogHDL模块的结构,请在下面的空格中填入适当的符号使其成为右图的Verilog模块:moduleblock1(a,b,);input,;d,;assignd=a|(b_,编写VerilogHDL模块的练习,a,b,c,d,e,请在下面的空格中填入适当的符号使其成为右图的Verilog模块:moduleblock1(a,b,c,d,e);inputa,b,c;outputd,e;assignd=a|(bendmodule,编写VerilogHDL模块的练习,a,b,c,e,d,在Verilog模块中有三种方法可以生成逻辑电路:-用assign语句:assigncs=(a0end,VerilogHDL模块中的逻辑表示,a,b,c,d,e,如在模块中逻辑功能由下面三个语句块组成:assigncs=(a0end三条语句是并行的,它们产生独立的逻辑电路;而在always块中:begin与end之间是顺序执行的。,并行和顺序逻辑关系的表示,Verilog模块中的信号,只有两种主要的信号类型:-寄存器类型:reg在always块中被赋值的信号,往往代表触发器,但不一定是触发器。-连线类型:wire用assign关键词指定的组合逻辑的信号或连线,Verilog模块中的信号要点,需要注意的是:-寄存器(reg)类型不一定是触发器。-它只是在always块中赋值的信号。,Verilog中reg与wire的不同点,用寄存器(reg)类型变量生成组合逻辑举例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always(b)out1=b;endmodule,a,out2,BUFF,b,INV,out1,Verilog中reg与wire的不同点,用寄存器(reg)类型变量生成触发器的例子:modulerw2(clk,d,out1,out2);inputclk,d;outputout1,out2;regout1;wireout2;assignout2=dendendmodule,d,out2,AND2i1,clk,out1,D,Q,DFF,Verilog中两种不同的赋值语句,不阻塞(non-blocking)赋值语句:always(posedgeclk)beginb=a;c=b;end,clk,DFF,c,D,Q,D,Q,a,b,DFF,Verilog中两种不同的赋值语句,阻塞(blocking)赋值语句:always(posedgeclk)beginb=a;c=b;end,clk,DFF,c,D,Q,a,b,两种不同的赋值语句区别要点,不阻塞(non-blocking)赋值语句(b=a):-块内的赋值语句同时赋值;-b的值被赋成新值a的操作,是与块内其他赋值语句同时完成的;-建议在可综合风格的模块中使用不阻塞赋值。阻塞(blocking)赋值语句(b=a):-完成该赋值语句后才能做下一句的操作;-b的值立刻被赋成新值a;-硬件没有对应的电路,因而综合结果未知。,组合逻辑设计要点,组合逻辑的两种VerilogHDL表示:-用assign语句:assignq=(al=1?)d:0;-用always块:always(alord)beginif(al=1)q=d;elseq=0;end,组合逻辑设计要点,组合逻辑的两种VerilogHDL表示:-用always块时,没注意加else语句:如:always(alord)beginif(al=1)q=d;end则:此时生成的不是纯组合逻辑,因为当al=0时,q能保留原来的值,所以生成的电路中有锁存器。,组合逻辑设计要点,用always块时,必须注意电平敏感的信号表是否完全,如:always(aorbororcord)beginout=(aend此时生成的不是纯组合逻辑,因为当e变化时,out不能立即跟着变化。只有当a或b或c或d变化时e的变化后果才显示出来。可见需要有一个寄存器来储存e的变化。,时序逻辑设计要点,时序逻辑的VerilogHDL表示:-用always:如:always(posedgeclock)begin(!reset)do_reset;elsecase(state)state_1:do_state_1;,时序逻辑设计要点,-用always:(继续上页)如:state_2:do_state_2;state_3:do_state_3;state_4:do_state_4;state_5:do_state_5;default:state=xx;end,时序逻辑设计要点,-用always:(继续上页)如:taskdo_reset;beginReset_Every_Register;Prepare_For_Next_State;endendtask,时序逻辑设计要点,-用always:(继续上页)如:taskdo_state_1;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtask,时序逻辑设计要点,-用always:(继续上页)如:taskdo_state_2;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtask,Verilog模块的种类和用途,行为模块:-在仿真时其表现的功能与某实体逻辑电路完全一致的VerilogHDL模块,但并没有手段生成对应的门级逻辑电路与之对应。可综合模块:-可通过综合工具,自动地转换为门级逻辑电路的VerilogHDL模块。它的仿真可以在两个层次上进行,行为级和门级。,HDL行为模块的功能,行为模块:-用于系统分割时验证各部分的功能指标分配是否合理;-在仿真时可用于替代与所设计电路系统相连接的现成可购得的外围电路;-用于产生测试信号和数据输入到所设计电路系统并接收它的应答信号和输出以验证其功能。,HDL可综合模块的功能,可综合模块:-想要设计的用硬线逻辑构成的电路系统;-由基本的逻辑器件为基础所构成的各种层次的结构模块;-综合器能理解并能将其编译为门级逻辑的模块;-对一般的综合器而言,单纯的RTL级VerilogHDL模块以及RTL和结构型混合HDL模块。,为什么Verilog能支持大型设计,Verilog语法支持多层次多模块设计:-用include宏指令可以在一个模块中包含多个模块;-在一个模块中可以用实例调用别的模块中定义的电路结构,构成多层次模块;-在一个模块中可以用多个任务和函数来表达复杂的状态机和结构;-一个设计项目往往由一个顶层测试模块和多个可综合模块和若干个外围接口模块构成。,为什么Verilog能支持大型设计,设计项目举例:-myproject-可综合部分(我们想要设计的逻辑电路部分):-mk_1.v,mk_2.v,mk_3.v,.mk_8.v-mk_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.,为什么Verilog能支持大型设计,设计项目举例:-myproject-外围部分:-ww_1.v,ww_2.v,ww_3.v,ww_4.v.-激励部分:-SG_1.v,SG_2.v.-顶层测试模块:-包括可综合部分、外围部分、激励部分-还包括测试步骤和输出文件等。,其他形式的Verilog模块,外围部分:-这部分逻辑不用综合成电路,但为了验证我们的设计,其行为必须与真实器件完全一致。下面我们介绍一个简化的RAM模块,我们所设计的电路用到了该RAM,但电路结构中并不包括这个RAM。,RAM的Verilog模块,timescale1ns/1nsmoduleram(data,addr,ena,read,write);inout7:0data;input9:0addr;inputena,read,write;reg7:0ram8hff:0;assign#20data=(read,RAM的Verilog模块,(续上页)always(posedgewrite)begin#10ramaddr=data;endendmodule,激励源的Verilog模块,timescale1ns/1nsdefinetimeslice200modulesigs(ack,clock,read,write,addr,data);inputack;outputclock,read,write;output15:0addr;inout7:0data;regclock,read,write;,激励源的Verilog模块,(续上页)reg15:0addr;regw_r;/usedtorecordifreadorwritereg7:0DataToRam;/usedtostackthedataassign#10data=(w_r)?hzz:DataToRam;initialbeginclock=0;w_r=0;DataToRam=0;,激励源的Verilog模块,(续上页)addr=16h0000;endalways#(timeslice/2)clock=clock;always(posedgeack)if(w_r=0)begin#(5*timeslice)write=1;#(timeslice)write=0;end,激励源的Verilog模块,(续上页)elsebegin#(5*timeslice)read=1;#(timeslice)read=0;endalways(posedgeack)beginDataToRam=DataToRam+2;addr=addr+1;endendmodule,激励源的Verilog模块,(续上页)-上面这个模块可根据从被测试模块输出的ack信号逐一发出读/写、地址、数据至被测试模块,可以用来检验被测试模块的功能是否正确,但没有具体的门级电路系统与之对应。,顶层测试Verilog模块,timescale1ns/1nsinclude可综合模块.v.include外围电路.v.include激励信号.v.moduletop;wire连线定义.Reg初试化块中寄存器定义.initialbegin定义波形记录、输入数据文件、记录输出文件、监视重要信号、记录重要时刻、设置仿真时间等。end,顶层测试Verilog模块,信号模块xh1(.clock(clk),.reset(rst),.ack(ackn).);.可综合模块mysj1(.clock(clk),reset(rst),.ack(ackn).);.外围模块ram1(.read(rd),.write(wrt),.data(databus).);.endmodule,不同抽象级别的HDL模型,系统级(SystemLevel)算法级(AlgorithmLevel)寄存器传输级(RegisterTransferLevel)门级(GateLevel)开关级(SwitchLevel),可综合的VerilogHDL模型,算法级(AlgorithmLevel)-部分可综合寄存器传输级(RegisterTransferLevel)-完全可综合门级(GateLevel)-完全可综合开关级(SwitchLevel)-用于基本逻辑器件仿真模型的建库,综合工具和要点,综合是把VerilogHDL源代码通过综合工具,转变为相应工艺的门级逻辑表示的一个过程;在综合之前,VerilogHDL源代码的风格必须经过严格检查,仅仅符合语法不一定能综合;不同的综合工具性能有差别,支持的VerilogHDL源代码的语法集合和风格也略有差别。综合工具必须在已知基本逻辑单元库的前提下,才能进行综合。,仿真和综合工具概述,常用的仿真工具:-Verilog-XL-NC-Verilog-ModelSim-VeriBest-ViewLogic-.,常用的综合工具:-Synplify-Exemplar-SynopsysExpress-SynopsysDesigner-.,VerilogHDL设计示例,设计示例一:用基本逻辑单元构成上层逻辑设计示例二:结构型模块的构成设计示例三:模块的测试和功能验证入门设计示例四:简单状态机设计要点设计示例五设计示例六设计示例七,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!