图第6章仍D4设计应用实例 第a章仍?2设计应用实例 6.18位加法器的设计 628位乘法器的设计 63序列检测器的设计 6.4正负脉宽数控调制信号发生器的设计 65数字频率计的设计 6.6秒表的设计 67MCS51单片机与 FPGA/CPLD总线接口逻辑设计 68交通灯信号控制器的设计 69语音信箱控制系统的设计 6,10PID控制器的设计 611空调系统有限状态自动机的设计 6,12闹钟系统的设让 BACK
第6章 VHDL设计应用实例 第6章 VHDL设计应用实例 6.1 8位加法器的设计 6.2 8位乘法器的设计 6.3 序列检测器的设计 6.4 正负脉宽数控调制信号发生器的设计 6.5 数字频率计的设计 6.6 秒表的设计 6.7 MCS–51单片机与FPGA/CPLD总线接口逻辑设计 6.8 交通灯信号控制器的设计 6.9 语音信箱控制系统的设计 6.10 PID控制器的设计 6.11 空调系统有限状态自动机的设计 6.12 闹钟系统的设计
图第6章仍D4设计应用实例 6.18位加法器的设计 1.设计思路 加法器是数字系统中的基本逻辑器件,减法器和硬件乘法 器都可由加法器来构成。多位加法器的构成有两种方式:并行 进位和串行进位方式。并行进位加法器设有进位产生逻辑,运 算速度较快;串行进位方式是将全加器级联构成多位加法器。 并行进位加法器通常比串行级联加法器占用更多的资源。随着 位数的增加,相同位数的并行加法器与串行加法器的资源占用 差距也越来越大。因此,在工程中使用加法器时,要在速度和 容量之间寻找平衡点
第6章 VHDL设计应用实例 6.1 8位加法器的设计 1.设计思路 加法器是数字系统中的基本逻辑器件,减法器和硬件乘法 器都可由加法器来构成。多位加法器的构成有两种方式:并行 进位和串行进位方式。并行进位加法器设有进位产生逻辑,运 算速度较快;串行进位方式是将全加器级联构成多位加法器。 并行进位加法器通常比串行级联加法器占用更多的资源。随着 位数的增加,相同位数的并行加法器与串行加法器的资源占用 差距也越来越大。因此,在工程中使用加法器时,要在速度和 容量之间寻找平衡点
图第6章仍D4设计应用实例 实践证明,4位二进制并行加法器和串行级联加法器占用 几乎相同的资源。这样,多位加法器由4位二进制并行加法器 级联构成是较好的折中选择。本设计中的8位二进制并行加法 器即是由两个4位二进制并行加法器级联而成的,其电路原理 图如图6.1所示
第6章 VHDL设计应用实例 实践证明,4位二进制并行加法器和串行级联加法器占用 几乎相同的资源。这样,多位加法器由4位二进制并行加法器 级联构成是较好的折中选择。本设计中的8位二进制并行加法 器即是由两个4位二进制并行加法器级联而成的,其电路原理 图如图6.1所示
图第6章仍D4设计应用实例 ADDER4B S[3.0 CI CIN S[3.0] A3.0AB3.0 B3.0B30 CoUT s709 AⅣ70□ A[7.0] ADDER4B B(7.01DB1o1 S[T.4 CIN S[3.0 A[7.4] A[B3.0 COUT B[4] B[3.0 COUT 图618位加法器电路原理图
第6章 VHDL设计应用实例 图6.1 8位加法器电路原理图
图第6章仍D4设计应用实例 2.VHDL源程序 )4位二进制并行加法器的源程序 aDDER4BVHD LIBRARY IEEE USE IEEE STD LOGIC 1164ALL: USE IEEE STD LOGIC UNSIGNEDALL ENTITY ADDER4BIS-4位二进制并行加法器 PORT(CIN: IN STD LOGIC;-低位进位 A: IN STD LOGIC VECTOR(3 DOWNTO0);-4位加数 B: IN STD LOGIC VECTOR(3 DOWNTO0);-4位被加数 S: OUT STD LOGIC VECTORI3 DOWNTO0);-4位和 CONT: OUT STD LOGIC) 进位输出
第6章 VHDL设计应用实例 2.VHDL源程序 1) 4位二进制并行加法器的源程序ADDER4B.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER4B IS --4位二进制并行加法器 PORT(CIN:IN STD_LOGIC; --低位进位 A: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位加数 B: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位被加数 S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --4位和 CONT: OUT STD_LOGIC); --进位输出
图第6章仍D4设计应用实例 END ADDER4B ARCHITECTURE ART OF ADDER4B IS SIGNAL SINT: STD LOGIC VECTOR(4 DOWNTO O) SIGNAL AA, BB: STD LOGIC VECTOR(4 DOWNTO O) BEGIN AA<=0&A;-将4位加数矢量扩为5位,为进位提供空间 BB<=0&B;-将4位被加数矢量扩为5位,为进位提供空间 SINT<=AA+BB+CIN S<-SINT(3 DOWNTO O CONT=SINT(4); END ART
第6章 VHDL设计应用实例 END ADDER4B; ARCHITECTURE ART OF ADDER4B IS SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL AA,BB: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN AA<='0'& A; --将4位加数矢量扩为5位,为进位提供空间 BB<='0'& B; --将4位被加数矢量扩为5位,为进位提供空间 SINT<=AA+BB+CIN ; S<=SINT(3 DOWNTO 0); CONT<=SINT(4); END ART;
图第6章仍D4设计应用实例 2)8位二进制加法器的源程序 ADDER8BVHD LIBRARY IEEE USE IEEE STD LOGIC 1164.ALI USE IEEE STD LOGIC UNSIGNED.ALL: ENTITY ADDER8B IS 由4位二进制并行加法器级联而成的8位二进制加法器 PORT(CIN: IN STD LOGIC; A: IN STD LOGIC VECTOR(7 DOWNTO O); B: IN STD LOGIC VECTOR(7 DOWNTO O) S: OUT STD LOGIC VECTOR(7 DOWNTO 0) COUT: OUT STD LOGIC) END ADDER8B ARCHICTURE ART OF ADDERSB IS
第6章 VHDL设计应用实例 2) 8位二进制加法器的源程序ADDER8B.VHD LIBRARY IEEE; USE IEEE_STD.LOGIC_1164.ALL; USE IEEE_STD.LOGIC_UNSIGNED.ALL: ENTITY ADDER8B IS --由4位二进制并行加法器级联而成的8位二进制加法器 PORT(CIN:IN STD_LOGIC; A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT:OUT STD_LOGIC); END ADDER8B; ARCHICTURE ART OF ADDER8B IS
图第6章仍D4设计应用实例 COMPONENET ADDER4B -对要调用的元件 ADDER4B的界面端口进行定义 PORT(CIN: IN STD LOGIC; A: IN STD LOGIC VECTOR( DOWNTO O); B: IN STD LOGIC VECTOR(3 DOWNTO 0) S: OUT STD LOGIC VECTOR(3 DOWNTO O); CONT: OUT STD LOGIC) END COMPONENT SIGNAL CARRY OUT: STD LOGIO;-4位加法器的进位标志 BEGIN U1: ADDer4B-1例化(安装)个4位二进制加法器U1l
第6章 VHDL设计应用实例 COMPONENET ADDER4B --对要调用的元件ADDER4B的界面端口进行定义 PORT(CIN:IN STD_LOGIC; A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CONT:OUT STD_LOGIC); END COMPONENT ; SIGNAL CARRY_OUT:STD_LOGIC; --4位加法器的进位标志 BEGIN U1:ADDER4B --例化(安装)一个4位二进制加法器U1
图第6章仍D4设计应用实例 PORT MAP(CIN→>CIN,A→>A(3 DOWNTO0),B=>B(3 DOWNTOO) S=>S(3 DOWNTO O), COUT>CARRY OUT); U2: ADDER4B-例化(安装)个4位二进制加法器U2 PORT MAP(CIN=>CARRY OUT, A=>A(7 DOWNTO 4) B=>B(7 DOWNTO 4) S=>S(7 DOWNTO 4); CONT=>CONT) END ART
第6章 VHDL设计应用实例 PORT MAP(CIN=>CIN,A=>A(3 DOWNTO 0),B=>B(3 DOWNTO0), S=>S(3 DOWNTO 0),COUT=>CARRY_OUT); U2:ADDER4B --例化(安装)一个4位二进制加法器U2 PORT MAP(CIN=>CARRY_OUT,A=>A(7 DOWNTO 4), B=>B(7 DOWNTO 4), S=>S (7 DOWNTO 4);CONT=>CONT); END ART;
图第6章仍D4设计应用实例 3.硬件逻辑验证 选择实验电路结构图NO.1,由5.2的实验电路结构图NO.1和 图6.1确定引脚的锁定。如可取实验电路结构图的PIO3~PIO0接 A[3.0],PO7~PO4接A[74],PIOl~PO8接B[3.0], PO15~PIO12接B74],PIO49接CIN。此加法器的被加数A和 加数B分别由键2与键1、键4与键3输入,加法器的最低位进位 CIN由键8输入,计算结果将分别通过PIO23~PIO20,PIO19 PO16输出并显示于数码管6(高4位)和数码管5(低4位),溢出进 位由PIO39输出,当有进位时,结果显示于发光管D8
第6章 VHDL设计应用实例 3.硬件逻辑验证 选择实验电路结构图NO.1,由5.2的实验电路结构图NO.1和 图6.1确定引脚的锁定。如可取实验电路结构图的PIO3~PIO0接 A[3..0],PIO7~PIO4接A[7..4], PIO11~PIO8接B[3..0], PIO15~PIO12接B[7..4],PIO49接CIN。此加法器的被加数A和 加数B分别由键2与键1、键4与键3输入,加法器的最低位进位 CIN由键8输入,计算结果将分别通过PIO23~PIO20,PIO19~ PIO16输出并显示于数码管6(高4位)和数码管5(低4位),溢出进 位由PIO39输出,当有进位时,结果显示于发光管D8