资源描述:
《数字电路EDA设计与应用 教学课件 作者 聂小燕 鲁才 第5章 常用数字电路的设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第5章常用数字电路的设计5.1组合逻辑电路设计5.2时序逻辑电路设计5.3存储器的设计5.4常用接口电路设计15.1组合逻辑电路设计2任一时刻的输出仅仅取决于当时的输入,与电路原来的状态无关,这样的数字电路叫做组合逻辑电路。用VHDL语言描述组合逻辑电路通常使用并行语句或者进程。常见的组合逻辑电路有运算电路、编码器、译码器和数据选择器等。35.1.1运算电路设计1.加法器的设计加法器有半加器和全加器两种,利用两个半加器可以构成一个全加器。半加器和全加器有什么区别?半加器只是加数与被加数相加,而全加器是加数、被加数与进位值相加。所以半加器不考虑进位,而全加器要考虑进位。4
2、【例5-1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;s,c:OUTSTD_LOGIC);ENDh_adder;ARCHITECTURErtlOFh_adderISBEGINc<=aANDb;s<=aXORb;ENDrtl;51位全加器可以由两个半加器和一个或门连接而成。6【例5-2】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYf_adderISPORT(a
3、,b,ci:INSTD_LOGIC;s,co:OUTSTD_LOGIC);ENDf_adder;ARCHITECTUREarcOFf_adderISCOMPONENTh_adder--调用半加器声明语句PORT(a,b:INSTD_LOGIC;s,c:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALs1,c1,c2:STD_LOGIC;--定义三个信号作为内部的连接线BEGINu1:h_adderPORTMAP(a,b,s1,c1);--例化语句u2:h_adderPORTMAP(s1,ci,s,c2);co<=c1ORc2;ENDarc;72.减法器
4、的设计1位全减器由两个半减器和一个或门连接而成。【例5-3】半减器的VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_suberISPORT(a,b:INSTD_LOGIC;diff,sub:OUTSTD_LOGIC);ENDENTITYh_suber;ARCHITECTURErtlOFh_suberISBEGINsub<=NOTaANDb;diff<=aXORb;ENDARCHITECTURErtl;8根据图5-3利用元件例化语句来实现1位全减器的顶层设计描述。9【例5-4】1位全减器LIBRARYIEEE;US
5、EIEEE.STD_LOGIC_1164.ALL;ENTITYf_suberISPORT(a,b,subin:INSTD_LOGIC;d,subout:OUTSTD_LOGIC);ENDf_suber;ARCHITECTUREarcOFf_suberISCOMPONENTh_suberPORT(a,b:INSTD_LOGIC;diff,sub:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALs1,c1,c2:STD_LOGIC;BEGINu1:h_suberPORTMAP(a,b,s1,c1);u2:h_suberPORTMAP(s1,subin,d,
6、c2);subout<=c1ORc2;ENDarc;103.乘法器的设计对于乘法器,可以通过自主编写加法器和移位寄存器来实现。但是,QuartusII给设计者提供了更高效的方法,利用集成在软件内部的参数化宏功能模块LPM-MULT可以非常方便的实现乘法器。115.1.2编码器设计12【例5-5】8-3编码器LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYpriencoderISPORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);EN:INSTD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(2DOW
7、NTO0));ENDpriencoder;ARCHITECTURErtlOFpriencoderISBEGINPROCESS(A)BEGINIFEN='1'THEN13CASEAISWHEN"00000001"=>Y<="000";WHEN"00000010"=>Y<="001";WHEN"00000100"=>Y<="010";WHEN"00001000"=>Y<="011";WHEN"00010000"=>Y<="100";WHEN"00100000"=>Y<="101";WHEN"01000000"=>Y<="110";WHEN"1