加法器与减法器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子设计自动化
大作业
题目加法器与减法器
学院泉城学院
班级电气09Q2班
姓名李文建
学号 20093005034
二O一一年十一月六日
加法器和减法器
一、设计要求:
(1)构造一个四位二进制加法器和一个四位二进制减法器,完成各自的功能仿真。(2)利用四个按键输入四位加数(或减数)和被加数(或被减数)。
(3)用七段数码管显示四位和(或差),用一只发光二极管指示进位(或借位)信号。(4)利用个开关控制,确定是四位二进制加法器还是一个四位二进制减法器。
二、总体设计:
1、总体结构图
2、各模块功能
(1)第一个4-16译码器实现输入四位加数(或减数)和被加数(或被减数)。
(2)开关模块:控制B0、B1、B2、B3,当M=0时,执行A+B,当M=1时,执行A-B。
(3)加法(减法)器模块:
加法器:采用全加器的串行进位,本四位二进制加法器由四个一位二进制加法器组成,输入A i、B i、C i,输出S i、C i+1。
减法器:与加法器的区别仅仅在于最后的和数为两数相减。
(4)LED灯:
加法器:灯亮表示有进位,灯灭表示无进位。
减法器:灯亮表示有借位,灯灭表示无进位。
(5)第二个4-16译码器:输入为四为加法器的和S0、S1、S2、S3,输出为Y0—Y6分别控制七段数码管的a1、b1、c1、d1、e1、f1、g1,输出Y9—Y15分别控制第二个七段数码管的a2、b2、c2、d2、e2、f2、g2。
(6)数码管:显示输出结果。
三、单元模块设计
1、第一个4—16译码器
(1)模块功能
通过四个按键输入四位二进制数,由译码器得到四位加数(或减数)和被加数(或被减数)的所有组合,从而实现加法器(或减法器)的输入。
(2)端口定义
输入端:X0、X1、X2、X3。
输出端:Y[0…15]。
Y[0…3]分别接到A[0…3],
Y[4…6]分别接到B[0…3]。
(3)VHDL源程序
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Decoder is
Port (
DIN : in std_logic_vector(3 downto 0);
DOUT : out std_logic_vector(15 downto 0) );
end Decoder;
architecture rtl of Decoder is
begin
process (DIN) begin
case(DIN) is
when "0000" => DOUT <= "0111111111111111";
when "0001" => DOUT <= "1011111111111111";
when "0010" => DOUT <= "1101111111111111";
when "0011" => DOUT <= "1110111111111111";
when "0100" => DOUT <= "1111011111111111";
when "0101" => DOUT <= "1111101111111111";
when "0110" => DOUT <= "1111110111111111";
when "0111" => DOUT <= "1111111011111111";
when "1000" => DOUT <= "1111111101111111";
when "1001" => DOUT <= "1111111110111111";
when "1010" => DOUT <= "1111111111011111";
when "1011" => DOUT <= "1111111111101111";
when "1100" => DOUT <= "1111111111110111";
when "1101" => DOUT <= "1111111111111011";
when "1110" => DOUT <= "1111111111111101";
when "1111" => DOUT <= "1111111111111110";
when others => DOUT <= "1111111111111111";
end case;
end process;
end rtl;
2、开关模块
(1)模块功能
实现加法器和减法器的选择功能
(2) VHDL源程序
If(M=0)
ENTITY adder is
PORT(clk : in STD_LOGIC;
Din1 :in signed (3downto 0);
Din2 :in signed (3 downto 0);
Dout:out signed (3 downto 0));
END adder;
If(M=1)
ENTITY suber is
PORT(clk : in STD_LOGIC;
Din1 :in signed (13 downto 0);
Din2 :in signed (15 downto 0);
Dout :out signed(15 downto 0));
END suber;
3、加法(减法)器模块
(1)模块功能
实现两个二进制数字的相加(相减)运算。当到达时钟上升沿时,将两数输入,运算,输出结果。
(2)端口定义