vhdl硬件描述语言与数字逻辑电路设计 第三版 侯伯亨713 .ppt





《vhdl硬件描述语言与数字逻辑电路设计 第三版 侯伯亨713 .ppt》由会员分享,可在线阅读,更多相关《vhdl硬件描述语言与数字逻辑电路设计 第三版 侯伯亨713 .ppt(186页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 1第10章 数字系统的实际设计技巧10.1 数字系统优化的基本方法数字系统优化的基本方法10.2 数字系统设计中的工程实际问题数字系统设计中的工程实际问题2 2在线教务辅导网:在线教务辅导网:http:/教材其余课件及动画素材请查阅在线教务辅导网教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:或者直接输入下面地址:http:/3 3在数字系统设计初期,人们根据系统功能总会画出一些满足系统要求的电路框图,在这些电路框图中往往存在一些不合理或冗余的部分需要进行进一步优化,以提高系统的整体性能。这种冗余的部分在生成门级电路以后是很难去除的。因此,必须在电
2、路框图阶段进行优化。10.1 数字系统优化的基本方法数字系统优化的基本方法4 410.1.1 相同电路的处理相同电路的处理在系统设计的前期,设计人员不一定预先知道有多处存在着相同的运算电路,只有在画出电路框图后才会发现它们的存在。例如在图10-1(a)中,2个状态都需进行B+1运算,要正确实现其功能需要3个B+1的运算电路。但是,进行优化以后实际上只要用1个B+1的运算电路就可以实现正确的逻辑功能,如图10-1(b)所示。5 5图10-1 多个相同运算电路优化实例(a)有多个相同运算的电路;(b)优化后采用一个运算电路6 6如图10-1(a)所示,未优化的VHDL语言程序清单如下:ARCHIT
3、ECTURE rtl of test IS SIGNAL aReg,bReg,cReg:INTEGER RANGE 0 TO 1023;BEGINPROCESS(clk)ISBEGINIF(clk EVENT AND clk=1)THEN CASE stateReg IS7 7WHEN SO=aReg=bReg+1;bReg=bReg+1;cReg=aReg;stateRegaReg=aReg;bReg=cReg;cReg=bReg+1;stateReg=S0;8 8END CASE;END IF;END PROCESS;END ARCHITECTURE rtl 如图10-1(b)所示,优化后
4、的VHDL语言程序清单如下:ARCHITECTURE rtl OF test IS SIGNAL node:INTEGER RANGE 0 TO 1023;BEGINnodeaReg=node;bReg=node;cReg=aReg;stateReg=S1;WHENaReg=aReg;bReg=cReg;10 10cReg=node;stateRegaReg=aReg*bReg;bReg=bReg;cReg=cReg;stateReg18 18aReg=aReg;bReg=cReg*dReg;cReg=cReg;stateReg=S0;END CASE;END IF;END PROCESS;如
5、图10-3(b)所示,优化后的VHDL语言程序清单如下:SIGNAL multin1:INTEGER RANGE 0 TO 1023;SIGNAL multin2:INTEGER RANGE 0 TO 1023;19 19SIGNAL multiout:INTEGER RANGE 0 TO 1023;multin1=aReg WHEN stateReg=S0 ELSE cReg;multin2=bReg WHEN stateReg=S0 ELSE dReg;multout2020aReg=multout;bReg=bReg;cReg=cReg;dReg=dReg;stateRegaReg=aR
6、eg;bReg=multout;cReg=cReg;dReg=dReg;21 21stateReg2424aReg=aReg+bReg;bReg=bReg;stateReg=S1;WHEN aReg=aReg;bReg=aReg-bReg;stateReg=S0;END CASE;END IF;END PROCESS;2525如图10-4(b)所示,优化后的VHDL程序清单如下:SIGNAL addin1:INTEGER RANGE-512 TO 511;SIGNAL addin2:INTEGER RANGE-512 TO 511;SIGNAL addin3:INTEGER RANGE-512
7、 TO 511;addin1=aReg;addin2=bReg WHEN stateReg=S0 ELSE-(bReg;)addoutaReg=addout;bReg=bReg;stateRegaReg=aReg;bReg=addout;2727stateRegaReg=in0;bReg=in1;cReg=in2;stateRegaReg=aReg*(bReg*cReg);临界路径bReg=bReg;cReg=cReg;3838stateRegaReg=aReg*2;bReg=bReg;cReg=cReg;stateReg=S0;END CASE;END IF;END PROCESS;3939
8、从程序中可以看出,aReg=aReg*(bReg*cReg)的路径最长,因此,该系统的工作速度由该路径中信号传送的时间所确定。假设每个乘法器的运算时间需要100 ns,每个选择器的时间延时需要1 ns,那么只考虑2个乘法器所需的运算处理时间就不能小于200ns。由此推断,时钟频率一定不能高于5 MHz。40402)门电路之间延时时间的计算数字系统的延时也包含门电路之间的延时。门电路之间的延时由两部分组成:门电路本身所产生的延时和连线所产生的传输延时。门电路之间的延时时间如图10-5所示。一般来说,连线长度和门的扇出数成正比,当然也就和连线的延时时间成正比。如果某系统都是由门电路组成的,那么其系
9、统总的延时时间应为系统总的延时时间=41 41使用逻辑单元和宏单元的FPGA和CPLD器件的延时,同样可以用下面公式去估算:延时=在ASIC芯片中,标准单元和门阵列的每个门延时约为0.10.5 ns;FPGA芯片中1个单元的延时约为几个ns;LSTTL芯片每个门延时约为10 ns;ASIC芯片如果按1 ns延时计算,则时钟频率可达1 GHz。由此可知,这就是ASIC芯片的工作速度比一般电路高得多的原因。42423)系统延时时间的评估在用EDA软件工具对系统进行综合时,软件会自动寻找系统的临界路径,并为设计者指出系统所能工作的最高频率。由于没有考虑系统的动态工作特性,只以电路图或网表为依据来寻找
10、临界路径,因此把这种分析称为静态定时分析。例如,下面的VHDL语言程序清单中,EDA软件把经过2个乘法器的路径认定为该系统的临界路径,但是实际的信号传输路径是经过一个加法器和一个乘法器(见图10-6)。4343图10-6 实际信号传输路径示意图4444系统的VHDL语言程序描述如下:nodeaReg=node+cReg;bReg=node;cReg=cReg;4545stateRegaReg=node*cReg;bReg=node;cReg=cReg;stateRegaReg=in0;bReg=in1;cReg=in2;stateReg aReg=aReg*bReg;5050bReg=bReg
11、;cReg=cReg;stateReg=S2;WHEN S2 aReg=aReg*(cReg*2);bReg=bReg;cReg=cReg;stateReg=S0;END CASE;END IF;END PROCESS;51 51经修改后,临界路径变为aRegaReg=aReg*bReg;bReg=bReg-1;stateRegaReg=aReg+1;bReg=bReg+2;stateReg=S0;END CASE;END IF;END PROCESS;6464利用多周期路径后的VHDL语言程序描述如下:SIGNAL node:INTEGER RANGE 0 TO(2*16-1);TYPE S
12、TATENAME IS(S0,Sadd,S1);SIGNAL stateReg:STATENAME;Node6565aReg=aReg;bReg=bReg;stateRegaReg=node;bReg=bReg-1;stateRegaReg=aReg+1;bReg=bReg+2;stateReg=S0;6666END CASE;END IF;END PROCESS;在例10-3修改前的S0状态中,aReg*bReg在1个时钟周期中是无法完成的,因此,在S0和S1状态之间插入一个中间状态Sadd。aReg*bReg在S0状态开始就进行运算,到Sadd状态结束,aReg*bReg的中间值node形
13、成,在S1状态开始node值被赋予aReg,然后完成最后的运算。由VHDL语法知道,node=aReg*bReg语句和PROCESS语句是并发执行的,引入的Sadd状态是为了拉长乘法时间,并使node=aReg*bReg运算与PROCESS同步。6767假设aReg*bReg需2个时钟周期,那么这种修改是有效的。这样就缩短了临界路径长度,提高了系统的整体工作速度。68685)减少临界路径上部件的扇出数众所周知,一个部件的扇出数愈多,负载愈重,该部件对信号所产生的延时也就愈大。因此,减少临界路径上部件的扇出数无疑会提高系统的工作速度。图10-10是减少临界路径上部件的扇出数来提高系统工作速度的实
14、例。图10-10(a)中,系统临界路径上部件的扇出数为3。将2个乘法器合并后,如图10-10(b)所示,部件的扇出数变为2。6969图10-10 减少临界路径上部件的扇出数来提高系统工作速度的实例(a)系统原部件连接情况;(b)利用共享乘法器减少扇出数情况7070利用计算系统的临界路径长度来评估系统的工作速度,在大多数情况下是可行的,但是也有例外。例如,当组合电路跨模块进行连接时,有可能使优化效果变差。也就是说,多个组合电路模块合并成一个模块进行优化,其临界路径肯定会更短。另外,多模块连接后的实际路径长度有可能比各模块临界路径长度之和要长。71 7110.2.2 缩小电路规模和降低功耗的方法缩
15、小电路规模和降低功耗的方法1缩小电路规模的方法缩小电路规模的方法缩小电路规模的最基本方法是在设计时尽可能共享资源。1)共享组合电路的部件使用EDA软件达到理想的资源(部件)共享效果,这种情况大多是存在的。例如,在计算A+(BC)和(BC)2时,(BC)是相同的,可以用一个电路来实现。72722)共享寄存器在用VHDL语言设计电路时,要尽可能减少变量和信号量的设置,能共享的尽可能共享,因为冗余的寄存器将会增大电路规模和功耗,特别是位数较长的寄存器更是如此。假如现有100个32位的冗余寄存器,那么就需要3200个触发器。这样大的规模在当前条件下是不能忽视的。73733)共享连线连线也是一种资源。利
16、用三态门使多个输出共享一条总线,这是共享总线的一种形式。当然,在CMOS电路中为了防止总线浮动,通常在输出端要接上拉电阻或者下拉电阻。为了降低功耗有时也不采用三态总线。74744)展开处理时间实现资源共享如果在一个状态中有几次相同种类的运算或译码,那么将几个相同运算依次分散到几个状态中进行处理,此时可以利用共享部件的方法使多个相同运算的电路用一个电路进行分时处理。75755)展开处理空间实现资源共享对数据流图的处理顺序进行适当调整就可以缩小数据流图的规模。(1)通过改变处理顺序来缩小电路规模。图10-11是通过改变处理顺序来缩小电路规模的数据流图。图10-11(a)是未进行修改的数据流图;图1
17、0-11(b)是修改处理顺序后的数据流图。两个图的不同点是后者先作加法,后作乘法。这样修改以后可以节省3个乘法器和1个加法器,从而缩小了电路规模。7676图10-11 通过改变处理顺序来缩小电路规模的数据流图(a)未进行修改的数据流图;(b)修改处理顺序后的数据流图7777(2)通过串行处理来缩小电路规模。图10-12是通过串行处理来缩小电路规模的数据流图。图10-12(a)是未进行修改前的数据流图,图10-12(b)是进行串行处理后的数据流图。图10-12(a)的运算公式为f1=3a+bf2=a+3bf3=f1+f2完成此运算需要2个乘法器和3个加法器。如果直接对f3进行运算:f3=3a+b
18、+a+3b=4a+4b=4(a+b)那么完成4(a+b)运算只要1个加法器和进行2次移位操作即可,如图10-12(b)所示。这样就大大缩小了电路的规模。7878图10-12 通过串行处理缩小电路规模的数据流图(a)未修改前的数据流图;(b)进行串行处理后的数据流图7979(3)复杂运算化简成简单运算。复杂的运算通过适当改变顺序可以变成简单的运算。例如,(a+1)+b)+2)可以用(a+b)+3)来替代。这样就可以省掉1个加法器。(4)利用数据流图中的已有结果。在数据流图中某些分支可能会得到相同的结果,此时可省掉1个分支,利用1个分支已得到的结果参与下一级运算,从而减少重复的运算电路。80802
19、在在RTL级上降低系统功耗的方法级上降低系统功耗的方法功耗是单片系统的一个很重要的指标,功耗愈低,系统的寿命、可靠性和体积也愈低。1)缩小电路的规模电路规模愈小,功耗也就愈小。前述的缩小电路规模的方法对降低功耗都有实际意义。81 812)停止不必要的运算处理下面是某系统的VHDL语言程序描述清单,它由S0S3四个状态组成。S0=1 WHEN stateReg=00 ELSE 0;S1=1 WHEN stateReg=01 ELSE 0;S2=1 WHEN stateReg=10 ELSE 0;S3=1 WHEN stateReg=11 ELSE 0;plus=aReg+bReg;minus=a
20、Reg-bReg;mult=aReg*bReg;nextA=plusWHEN S0=1 ELSE8282minusWHEN S1=1 ELSEmultWHEN S2=1 ELSEbReg;PROCESS(clk)IS BEGINIF(clkEVENT and clk=1)THENIF(reset=1)THENaReg=127;bReg=2;stateReg=00;ELSE8383aReg=nextA;bRegstateRegstateRegstateRegstateReg=00;END CASE END IF;END IF;END PROCESS;8484上述程序中,S0进行加法运算,S1进行
21、减法运算,S2进行乘法运算。经编译综合后,其电路的基本结构如图10-13所示。这样结构的电路无论在何种状态下,所有运算电路都要进行工作。但是实际上S0状态下只要加法运算器工作,S1状态下乘法器就没有必要进行工作。这些运算器没有选择的无用工作会增加电路的功耗。采用下面方法可以停止不必要的运算处理。(1)只允许必要的运算电路工作。为了降低电路的功耗,只选择必要的运算电路进行工作,对图10-13进行修改后电路结构如图10-14所示。图10-14中,在各个运算器的输入端插入一个“与门”,在没有工作必要时使该电路输出为“0”。由此可知,S0状态下乘法运算器和减法运算器不工作,S1状态下乘法器不工作。85
22、85图10-13 某系统的基本电路结构8686图10-14 图10-13修改后的电路结构8787图10-14对应的VHDL语言程序清单如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY hazard3 ISPORT(reset :IN STD_LOGIC;clk :IN STD_LOGIC;(途中省略)8888plusOut :OUT INTEGER RANGE 0 to(2*8-1);s3out :OUT STD_LOGIC;);END ENTITY hazard3;ARCHITECT
23、URE rtl OF hazard3 IS FUNCTION INTAND(val:INTEGER;cond:STD_LOGIC)RETURN INTEGER ISBEGINvec:=CONV_STD_LOGIC_VECTOR(val,8);FOR i IN 0 TO 7 LOOP8989vec(i):=vec(i)AND cond;END LOOP;RETURN CONV_INTEGER(UNSIGNED(vec);END FONCTION INTAND;FUNCTION INTOR4(val1,val2,val3,val4:INTEGER)RETURN INTEGER ISVARIABLE
24、 vec1,vec2,vec3,vec4:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINvec1:=CONV_STD_LOGIC_VECTOR(val1,8);vec2:=CONV_STD_LOGIC_VECTOR(val2,8);9090vec3:=CONV_STD_LOGIC_VECTOR(val3,8);vec4:=CONV_STD_LOGIC_VECTOR(val4,8);RETURN CONV_INTEGER(UNSIGNED(vec1 or vec2 or vec3 or vec4);END FONCTION INTOR4;SIGNAL aReg :INTEG
25、ER RANGE 0 to(2*8-1)(省略)SIGNAL S3:STD_LOGIC;BEGINS0=1 WHEN stateReg=00 ELSE 0;S1=1 WHEN stateReg=01 ELSE 0;S2=1 WHEN stateReg=11 ELSE 0;91 91S3=1 WHEN stateReg=10 ELSE 0;aRegSt0=INTAND(aReg,S0);aRegSt1=INTAND(aReg,S1);aRegSt2=INTAND(aReg,S2);aRegSt3=INTAND(bReg,S3);bRegSt0=INTAND(bReg,S0);bRegSt1=IN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vhdl硬件描述语言与数字逻辑电路设计 第三版 侯伯亨713 vhdl 硬件 描述 语言 数字 逻辑电路 设计 第三 侯伯亨 713

限制150内