单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,华东理工大学,East China University of Science And Technology,第二讲 如何编写和验证简单,的纯组合逻辑模块,数字逻辑系统设计是一个非常细致、严密和费时的复杂过程,做这项工作的人员必须具有极其认真负责的工作态度、敏捷的头脑、顽强的毅力和细致踏实的作风,2.1,加法器,在数字电路课程里我们已学习过一位的加法电路,即全,加器。它的真值表很容易写出,电路结构也很简单仅由几个,与门和非门组成,。,表,2.2.1,一位全加器的真值表,表中,Xi,、,Yi,表示两个加数,,Si,表示和,,Ci-1,表示来自低位的进位、,Ci,表示向高位的进位。从真值表很容易写出逻辑表达式如下:,Ci=Xi Yi+Yi Ci-1+Xi Ci-1,Si=Xi Ci+Yi Ci+Ci-1 Ci+Xi Yi Ci-1,2.1,加法器,用,Verilog HDL,来描述加法器是相当容易的,只需要把运,算表达式写出就可以了。,module add_4(X,Y,sum,C);,input 3:0 X,Y;,output 3:0 sum;,output C;,assign C,Sum =X+Y;,endmodule,在数字信号处理的快速运算电路中常常用到多位数字量的加法运算,这时需要用到并行加法器。并行加法器比串行加法器快得多,电路结构也不太复杂。,2.1,加法器,而,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,这样设计的加法器在行为仿真时是没有延时的。借助综,合器,可以根据以上,Verilog HDL,源代码自动将其综合成典,型的加法器电路结构。,2.2,乘法器,则,X,和,Y,的乘积,Z,有,2n,位,并且式中,Y,i,X,称为,部分积,记为,P,i,,显然,两个一位二进制数相乘遵,循如下规则,:,00=0;01=0;10=0;11=1,因此,YiXj,可用一个与门实现,记,P,i.j,=Y,i,X,j,设两个,n,位二进制正数,X,和,Y,:,X:Xn-1X1 X0,Y:Yn-1 Y1Y0,2.2,乘法器,图,2.2.3,逐位进位并行乘法器,快速乘法器常采用网格形式的迭带阵列结构,图,2.2.3,示出两个四位二进制数相乘的结构图。,2.2,乘法器,图,2.2.5,进位节省乘法器,为了提高乘法运算速度可以改为图,5.5,所示的进位节省乘法器(,Carry-Save Multiplier,),2.2,乘法器,用,Verilog HDL,来描述乘法器是相当容易的,只需要把运算表达式,写出就可以了,module mult_4(X,Y,Product);,input 3:0 X,Y;,output 7:0 Product;,assign Product=X*Y;,endmodule,而,8,位乘法器只需要扩大位数即可,module mult_8(X,Y,Product);,input 7:0 X,Y;,output 15:0 Product;,assign Product=X*Y;,endmodule,这样设计的乘法器在行为仿真时是没有延时的。借助综合器,可以根据以上,Verilog HDL,源代码自动将其综合成典型的乘法器电路结构。,2.3,比较器,数值大小比较逻辑在计算逻辑中是常用的一种逻,辑电路,一位二进制数的比较是它的基础。,X Y,(XY),(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,用,Verilog HDL,来设计比较电路是很容易的。,综合工具能自动把以上源代码综合成一个八位比较器,2.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,多路器是一个多输入、单输出的组合逻辑电路,在数字系统中有着广泛的应用。它可以根据地址码的不同,从多个输入数据中选取一个,让其输出到公共的输出端。,综合工具能自动把以上源代码综合成一个数据位宽为,8,的八路选一数据多路器,2.5,总线和总线操作,总线是运算部件之间数据流通的公共通道。,module SampleOfBus(DataBus,link_bus,,,write);,inout 11:0 DataBus;,/,总线双向端口,input link_bus;,/,向总线输出数据的控制电平,reg 11:0 outsigs;,assign DataBus=(link_bus)?outsigs:12 h zzz;,/,当,link_bus,为高电平时通过总线把存在,outsigs,的计算结果输出,always(posedge write),/,每当,write,信号上跳沿时,begin,/,接收总线上数据并乘以五,outsigs=DataBus*5;,/,把计算结果存入,outsigs,end,endmodule,上面是一个简单的与总线有接口的模块是如何对总线进行操作的例子通过以上例子我们可以理解使这个总线连接模块能正常工作的最重要的因素是与其他模块的配合,2.6,流水线,流水线(,pipe-line,)设计技术,:,流水线的设计方法已经在高性能的、需要经常进行大规,模运算的系统中得到广泛的应用,如,CPU,(中央处理器)等,。,流水线设计的概念,:,所谓流水线设计实际上就是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组暂存中间数据。,采用流水线设计的优势在于它能提高吞吐(,throughput,),流水线设计在性能上的提高是以消耗较多的寄存器资源为代价的,2.6,流水线,组合逻辑设计转化为流水线设计,第一级的延迟是,T1,和,T3,两个延迟中的最大值,第二级的延迟等于,T2,的延迟,为了通过这个组合逻辑得到稳定的计算结果输出,需要等待的传播延迟为,max(T1,T3)+T2,个时间单位。,寄存器的,Tco,(触发时间),采用流水线设计为取得稳定的输出总体计算周期为,:,max(max(T1,T3)+Tco,(T2+Tco),