新VHDL硬件描述语言与数字逻辑电路设计 第三版 侯伯亨7 13 第10章.pptVIP

新VHDL硬件描述语言与数字逻辑电路设计 第三版 侯伯亨7 13 第10章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
         在数字系统设计初期,人们根据系统功能总会画出一些满足系统要求的电路框图,在这些电路框图中往往存在一些不合理或冗余的部分需要进行进一步优化,以提高系统的整体性能。这种冗余的部分在生成门级电路以后是很难去除的。因此,必须在电路框图阶段进行优化。 10.1.1 相同电路的处理    在系统设计的前期,设计人员不一定预先知道有多处存在着相同的运算电路,只有在画出电路框图后才会发现它们的存在。例如在图10-1(a)中,2个状态都需进行B+1运算,要正确实现其功能需要3个B+1的运算电路。但是,进行优化以后实际上只要用1个B+1的运算电路就可以实现正确的逻辑功能,如图10-1(b)所示。    图10-1 多个相同运算电路优化实例 (a) 有多个相同运算的电路;(b) 优化后采用一个运算电路    如图10-1(a)所示,未优化的VHDL语言程序清单如下:   ARCHITECTURE rtl of test IS    SIGNAL aReg,bReg,cReg:INTEGER RANGE 0 TO 1023;       BEGIN    PROCESS(clk) IS    BEGIN    IF(clk EVENT AND clk=1) THEN    CASE stateReg IS    WHEN SO=   aReg=bReg+1;   bReg=bReg+1;   cReg=aReg;   stateReg=S1;    WHEN S1=    aReg=aReg;   bReg=cReg;   cReg=bReg+1;   stateReg=S0;    END CASE;   END IF;  END PROCESS;   END ARCHITECTURE rtl   如图10-1(b)所示,优化后的VHDL语言程序清单如下:   ARCHITECTURE rtl OF test IS       SIGNAL node: INTEGER RANGE 0 TO 1023;      BEGIN   node=bReg+1;    PROCESS (clk) IS    BEGIN   IF (clkEVENT AND clk=1) THEN    CASE stateReg IS   WHEN S0=    aReg=node;    bReg=node;    cReg=aReg;    stateReg=S1;   WHEN    aReg=aReg;    bReg=cReg;    cReg=node;    stateReg=S0;   END CASE;   END IF;   END PROCESS;   END ARCHITECTURE rtl; 10.1.2 运算顺序的改变   在设计电路时适当地改变运算顺序就可以达到优化电路的目的。如图10-2(a)所示,为了进行node(b×a)+(b×c)的运算,按常规的运算顺序画出的数据流图如图10-2(a)中的左图所示。为实现该运算,需要2个乘法器和1个加法器。现在用因式分解的方法来改变原式的运算顺序,即先作加法后再进行乘法运算,即nodeb×(a+c),其数据流图如图10-2(a)中的右图所示。修改运算顺序后,实现该运算只需1个乘法器和1个加法器。显然,这样就减少了电路的规模。   图10-2(b)示出了另一种改变计算顺序的方法。原式node(((a+b)+c)+d)经改变后变为node((a+b)+(c+d)),这样做可使运算电路的级数减少,(a+b)和(c+d)可以进行并行运算,从而提高了电路的运算速度。   在用VHDL语言编程时,可以在源程序中加括号来改变运算顺序,也可以将中间运算结果视为节点来控制运算顺序。这样做可使源程序在编译或综合时就能达到优化电路的目的。    图10-2 改变运算顺序优化电路 (a) 缩小了电路规模;(b) 提高了运算速度 10.1.3 常数运算的运用   在前面已经提到,计算机工作时状态有Fetch、Decode等,在形成门级电路时通常将这些状态名赋以常数值,如Fetch赋以0,Decode赋以1等。在运算式中使用布尔代数性质对常数进行操作可简化运算电路。例如:    x AND 1 = x   x AND 0 = 0   x OR 1 = 1   x OR 0 = x    这种情况下,EDA软件在编译时都能进行自动化处理,其原因也就在于此。 10.1.4 相同运算电路的使用    在设计电路时,即使参与运算的数据不同,只要不是进行同

您可能关注的文档

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档