3.3 基本运算逻辑和它们的Verilog HDL模型

上传人:dao****ing 文档编号:243132797 上传时间:2024-09-16 格式:PPT 页数:34 大小:674KB
返回 下载 相关 举报
3.3 基本运算逻辑和它们的Verilog HDL模型_第1页
第1页 / 共34页
3.3 基本运算逻辑和它们的Verilog HDL模型_第2页
第2页 / 共34页
3.3 基本运算逻辑和它们的Verilog HDL模型_第3页
第3页 / 共34页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,基本运算逻辑和它们的,Verilog HDL,模型,第,5,章,2011.3.25,加法器,Xi,Yi,Ci-1,Si,Ci,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,1,0,1,1,1,0,0,1,1,1,1,1,1,表中,Xi,、,Yi,表示两个加数,,Si,表示和,,Ci-1,表示来自低位的进位、,Ci,表示向高位的进位。,C,i,= X,i,Y,i,+ Y,i,C,i-1,+ X,i,C,i-1,S,i,= X,i,C,i,+ Y,i,C,i,+ C,i-1,C,i,+ X,i,Y,i,C,i-1,全加器和,Si,的表达式也可以表示为:,Si = PiCi-1,其中,Pi = XiYi,Ci = PiCi-1 + Gi,其中,Gi = XiYi,图,5.1,由,4,个,1,位全加器组成的,超前进位,4,位加法器,A,2,B,2,A,1,B,1,A,0,B,0,C,2,三位超前进位加法器,C,-1,S,2,S,1,S,0,0,全加器,Y,1,X,1,S1,P,0,G,0,C,0,P,1,G,1,C,1,P,2,G,2,C,2,P,3,G,3,C,-1,超前进位加法器,全加器,Y,0,X,0,S0,全加器,Y,2,X,2,S2,全加器,Y,3,X,3,S3,P* G*,P* G*,图,5.2,由,4,个,4,位全加器组成的,超前进位,16,位加法器,0,四位全加器,Y47,X47,S47,P*,0,G*,0,C*,0,P*,1,G*,1,C*,1,P*,2,G*,2,C*,2,P*,3,G*,3,C,-1,超前进位加法器,P* G*,四位全加器,Y,03,X,03,S03,四位全加器,Y,811,X,811,S811,四位全加器,Y,1215,X,1215,S1215,在实现算法时(如卷积运算和快速傅立叶变换),常常用到加法运算,由于多位并行加法器是由多层组合逻辑构成,加上超前进位形成逻辑虽然减少了延迟,但还是有多级门和布线的延迟,而且随着位数的增加延迟还会积累。,由于加法器的延迟,使加法器的使用频率受到限制,这是指计算的节拍(即时钟)必须要大于运算电路的延迟,只有在输出稳定后才能输入新的数进行下一次运算。,如果设计的是,32,位或,64,位的加法器,延迟就会更大。为了加快计算的节拍,可以在运算电路的组合逻辑层中加入多个寄存器组来暂存中间结果。,也就是采用数字逻辑设计中常用的流水线(,pipe-line,)办法,来提高运算速度,以便更有效地利用该运算电路。,module add_4( X, Y, sum, C);,input 3 : 0 X, Y;,output 3: 0 sum;,output C;,assign C, Sum = X + Y;,endmodule,而,16,位加法器只需要扩大位数即可,module add_16( X, Y, sum, C);,input 15 : 0 X, Y;,output 15 : 0 sum;,output C;,assign C, Sum = X + Y;,endmodule,设计者可以考虑提高电路的,速度,,也可以考虑节省电路元件以减少电路占用硅片的,面积,。,综合器会自动根据选项为你挑选一种基本加法器的结构。有的高性能综合器还可以根据用户对运算速度的要求插入流水线结构,来提高运算器的性能。,可见在综合工具的资源库中存有许多种基本的电路结构,通过编译系统的分析,自动为设计者选择一种电路结构,随着综合器的日益成熟它的功能将越来越强。,然后设计者还需通过布局布线工具生成具有布线延迟的电路,再进行后仿真,便可知道该加法器的实际延时。,根据实际的延迟便可以确定使用该运算逻辑的最高频率。若需要重复使用该运算器,则需要在控制数据流动的状态机中为其安排必要的时序。,乘法电路,设两个,n,位二进制正数,X,和,Y,:,X : X n-1X1 X0,Y : Y n-1 Y1Y0,则,X,和,Y,的乘积,Z,有,2n,位。,式中,YiX,称为部分积,记为,Pi,,有,显然,两个一位二进制数相乘遵循如下规则,:,00=0; 01=0; 10=0; 11=1,因此,YiXj,可用一个,与,门实现,记,Pi.j = Yi X j,两个,4,位二进制数,X,和,Y,相乘,被乘数,: X,3,X,2,X,1,X,0,),乘 数,: Y,3,Y,2,Y,1,Y,0,_,Y,0,X,3,Y,0,X,2,Y,0,X,1,Y,0,X,0,Y,1,X,3,Y,1,X,2,Y,1,X,1,Y,1,X,0,Y,2,X,3,Y,2,X,2,Y,2,X,1,Y,2,X,0,Y,3,X,3,Y,3,X,2,Y,3,X,1,Y,3,X,0,_,乘积:,Z,7,Z,6,Z,5,Z,4,Z,3,Z,2,Z,1,Z,0,M U,M U,M U,M U,M U,M U,M U,M U,M U,M U,M U,M U,M U,M U,M U,M U,0,Y,3,X,0,Y,3,X,1,Y,3,X,2,Y,3,X,3,Y,2,X,0,Y,2,X,1,Y,2,X,2,Y,2,X,3,Y,1,X,0,Y,1,X,1,Y,1,X,2,Y,1,X,3,Y,0,X,3,0,Y,0,X,2,0,Y,0,X,1,0,Y,0,X,0,0,0,0,0,Z,7,Z,6,Z,5,Z,4,Z,3,Z,2,Z,1,Z,0,与 门,A B,Co,全 加 器,Ci,S,Yi Xj S,k,C,I,Co,Pij,Sk+1,乘法单元(,MU,),与门,Y,0,X,0,与门,Y,0,X,2,与门,Y,0,X,1,与门,Y,0,X,3,与门,Y,1,X,3,M U,Y,2,X,2,与门,Y,2,X,3,M U,Y,3,X,2,M U,Y,1,X,2,M U,Y,2,X,1,M U,Y,3,X,0,M U,Y,1,X,1,M U,Y,2,X,0,M U,Y,1,X,0,M U,Y,3,X,1,A,2,B,2,A,1,B,1,A,0,B,0,C,2,三位超前进位加法器,C,-1,S,2,S,1,S,0,与门,Y,3,X,3,0,0,Z,7,Z,6,Z,5,Z,4,Z,3,Z,2,Z,1,Z,0,进位节省乘法器,module mult_4( X, Y, Product);,input 3 : 0 X, Y;,output 7 : 0 Product;,assign Product = X * Y;,endmodule,module mult_8( X, Y, Product);,input 7 : 0 X, Y;,output 15 : 0 Product;,assign Product = X * Y;,endmodule,流水线(,pipeline,),流水线的设计方法已经在高性能的、需要经常进行大规模运算的系统中得到广泛的应用,如,CPU,(中央处理器)等。,目前流行的,CPU,,如,intel,的奔腾处理器在指令的读取和执行周期中充分地运用了流水线技术以提高它们的性能。,高性能的,DSP,(数字信号处理)系统也在它的构件(,building- block functions),中使用了流水线设计技术。,流水线设计的概念,流水线设计(,Pipeline Design,)是经常用于提高所设计系统运行速度的一种有效方法。为了保障数据快速传输,必须使系统运行在尽可能高的频率上,但如果某些复杂逻辑功能的完成需要较长的延时,就会使系统很难运行在较高的频率上。,流水线技术实际上就是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组暂存中间数据。,K,级的流水线就是从组合逻辑的输入到输出恰好有,K,个寄存器组(分为,K,级,每一级都有,1,个寄存器组),上一级的输出是下一级的输入而又无反馈的电路。,把组合逻辑设计转换为流水线设计,这个组合逻辑包括两级。第一级的延迟是,T1,和,T3,两个延迟中的最大值;第二级的延迟等于,T2,的延迟。,为了通过这个组合逻辑得到稳定的计算结果输出,需要等待的传播延迟为:, max(T1,T3) + T2 ,个时间单位。,在从输入到输出的每一级插入寄存器后,流水线设计的第一级寄存器所具有的总延迟为,T1,与,T3,时延中的最大值加上寄存器的,T,co,(触发时间)。,第二级寄存器延迟为,T2,的时延加上,Tco,。,采用流水线设计为取得稳定的输出总体计算周期为,:,max(max(T1,T3)+Tco,(T2+Tco),流水线设计需要,2,个时钟周期来获取第一个计算结果,而只需要,1,个时钟周期来获取随后的计算结果。,开始时用来获取第一个计算结果的,2,个时钟周期被称为,采用流水线设计的首次延迟,(,latency,),。,对于,CPLD,来说,器件的延迟(如,T1,、,T2,和,T3,)相对于触发器的,Tco,要长得多,并且寄存器的建立时间,Tsu,也要比器件的延迟快得多。,只有在上述关于硬件时延的假设为真的情况下,流水线设计才能获得比同功能的组合逻辑设计更高的性能。,采用流水线设计的优势在于它能提高吞吐量,(,throughput),。,假设,T1,、,T2,和,T3,具有同样的传递延迟,Tpd,。,对于,组合逻辑设计,而言,总的延迟为,2*Tpd,。,对于,流水线设计,来说,计算周期为,(Tpd+Tco),。,前面提及的,首次延迟,(,latency,)的概念实际上就是将(从输入到输出)最,长的路径进行初始化所需要的时间总量;,吞吐延迟,则是执行一次重复性操作所需要的时间总量。,在组合逻辑设计中,首次延迟和吞吐延迟同为,2*Tpd,。,在流水线设计中,首次延迟是,2*(Tpd+Tco),而吞吐延迟是,Tpd+Tco,。,如果,CPLD,硬件能提供快速的,Tco,,则流水线设计相对于同样功能的组合逻辑设计能提供更大的吞吐量。,典型的富含寄存器资源的,CPLD,器件(如,Lattice,的,ispLSI 8840,)的,Tpd,为,8.5ns,,,Tco,为,6ns,。,流水线设计在性能上的提高是以消耗较多的,寄存器,资源为代价的。,对于非常简单的用于数据传输的组合逻辑设计,例如上述例子,将它们转换成流水线设计可能只需增加很少的寄存器单元。,随着组合逻辑变得复杂,为了保证中间的计算结果都在同一时钟周期内得到,必须在各级之间加入更多的寄存器。,如果需要在,CPLD,中实现复杂的流水线设计,以获取更优良的性能,具有丰富寄存器资源的,CPLD,结构并且具有可预测的延迟这两大特点的,FPGA,是一个很有吸引力的选择。,流水线加法器与组合逻辑加法器的比较,实现加法功能需要三级电路:,(,1,)加法器输入的数据产生器和传送器;,(,2,)数据产生器和传送器的超前进位部分;,(,3,)数据产生、传送功能和超前进位三者求和部分。,在,n,位组合逻辑全加器中插入三层寄存器或寄存器组,将它转变为,n,位流水线全加器,进位的产生和传递,n,n,寄存器,寄存器,n,n,超前进位单元,n,n,寄存器,n-1,寄存器,寄存器,寄存器,寄存器,超前进位单元,n-1,n,寄存器,n,寄存器,n,n,an+1,bn+1,c-1,C -1,C -1,Cn+2,Cn+2,Cn+2,Cn+2,Pn+1,Gn+1,(b) n,位流水线全加器,Sn+1,进位的产生和传递,n,n,n,n,超前进位单元,n-1,求和单元,n,n,Sn+1,Cn+1,C-1,Pn+1,Gn+1,an+1,bn+1,Cout,(a) n,位纯组合逻辑全加器,若用拥有,840,个宏单元和,312,个有寄存能力,I/O,单元的,Lattice ispLSI8840,分别来实现,16,位组合逻辑全加器和,16,位流水线全加器并比较它们的运行速度, 对于,16,位组合逻辑全加器, 共用了,34,个宏单元。,执行一次计算需经过,3,个,GLB,层,每次计算总延迟为,45.6ns,。,而,16,位流水线全加器共用了,81,个宏单元。执行一次计算只需经过,1,个,GLB,层,每次计算总延迟为,15.10ns,(但第一次计算需要多用三个时钟周期),吞吐量约增加了三倍。,Li10.1,非流水线方式实现,8,位全加器,module adder8(cout,sum,ina,inb,cin,clk);,output7:0 sum;,output cout;,input7:0 ina,inb;,input cin,clk;,reg7:0 tempa,tempb,sum;,reg cout;,reg tempc;,always (posedge clk),begin,tempa=ina;,tempb=inb;,tempc=cin;,end,always (posedge clk),begin,cout,sum=tempa+tempb+tempc;,end,endmodule,4,级流水线方式实现,8,位全加器,module pipeline(cout,sum,ina,inb,cin,clk);,output7:0,sum; output cout;,input7:0,ina,inb; input cin,clk;,reg7:0,tempa,tempb,sum;,reg,tempci,firstco,secondco,thirdco,cout;,reg1:0,firsts,thirda,thirdb;,reg3:0,seconda,secondb,seconds;,reg5:0,firsta,firstb,thirds;,always (posedge clk),begin,tempa=ina; tempb=inb; tempci=cin;,end,/,输入数据缓存,always (posedge clk),begin,firstco,firsts=tempa1:0+tempb1:0+tempci; /,第一级加(低,2,位),firsta=tempa7:2; firstb=tempb7:2;,end,/,未参加计算的数据缓存,always (posedge clk),begin,secondco,seconds=firsta1:0+firstb1:0+firstco,firsts; /,第,2,级加,(,第,2,、,3,位相加,),seconda=firsta5:2; secondb=firstb5:2;,end,/,数据缓存,always (posedge clk),begin,thirdco,thirds=seconda1:0+secondb1:0+secondco,seconds; /,第,3,级加,(,第,4,、,5,位相加,),thirda=seconda3:2; thirdb=secondb3:2;,end,/,数据缓存,always (posedge clk),cout,sum=thirda1:0+thirdb1:0+thirdco,thirds; /,第,4,级加,(,高两位相加,),endmodule,比较器,X,Y,(X Y),(X = Y),(X = Y),(X = Y),(X Y),XGY = 1; /,设置,X,大于,Y,的信号为,1,else XGY = 0;,if (X Y),XSY = 1; /,设置,X,小于,Y,的信号为,1,else XSY = 0;,end,endmodule,多路器,多路选择器(,Multiplexer,)简称多路器,它是一个多输入、单输出的组合逻辑电路,在数字系统中有着广泛的应用。它可以根据地址码的不同,从多个输入数据中选取一个,让其输出到公共的输出端。在算法电路的实现中多路器常用来根据地址码来调度数据。,我们可以很容易地写出一个有,2,位地址码,可以从,4,组输入信号线中选出,1,组通过公共输出端输出的功能表。,地址,1,地址,0,输入,1,输入,2,输入,3,输入,4,输出,0,0,1,0,0,0,输入,1,0,1,0,1,0,0,输入,2,1,0,0,0,1,0,输入,3,1,1,0,0,0,1,输入,4,module Mux_8( addr,in1, in2, in3, in4, in5, in6, in7, in8, Mout, nCS);,input 2:0 addr;,input width-1 in1, in2, in3, in4, in5, in6, in7, in8;,output width-1 Mout;,parameter width = 8;,always (addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8),begin,if (!ncs),case(addr),3b000: Mout = in1;,3b001: Mout = in2;,3b010: Mout = in3;,3b011: Mout = in4;,3b100: Mout = in5;,3b101: Mout = in6;,3b110: Mout = in7;,3b111: Mout = in8;,endcase,else,Mout = 0;,end,endmodule,总线和总线操作,总线是运算部件之间数据流通的公共通道。在硬线逻辑构成的运算电路中,只要电路的规模允许,我们可以比较自由地来确定总线的位宽,因此可以大大提高数据流通的速度。,适当的总线的位宽,配合适当并行度的运算逻辑和步骤能显著地提高专用信号处理逻辑电路的运算能力。,各运算部件和数据寄存器组可以通过带控制端的三态门与总线的连接。,通过对控制端电平的控制来确定在某一时间片段内,总线归哪个或哪几个部件使用(任何时间片段只能有一个部件发送,但可以有几个接收)。,module SampleOfBus( DataBus, link_bus,,,write );,inout,11:0 DataBus; /,总线双向端口,input link_bus; /,向总线输出数据的控制电平,input write;,reg 11:0 outsigs;,assign,DataBus = (link_bus) ? outsigs : 12 h zzz ;,/,当,link_bus,为高电平时通过总线把存在,outsigs,的计算结果输出,always (posedge write) /,每当,write,信号上跳沿时,begin /,接收总线上数据并乘以,5,outsigs = DataBus * 5; /,把计算结果存入,outsigs,end,endmodule,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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