原创 【博客大赛】【原创】基于FPGA的1位二进制全加器的设计

2012-5-4 17:03 2725 18 22 分类: FPGA/CPLD

-------------------------------------------------------------------
-- 说明: 半加器的设计
-- 文件: h_adder.vhd
-- 作者:
-- 日期: 2012/03/06
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

--实体描述部分
ENTITY h_adder IS
      PORT(        --端口声明
           a, b : IN  STD_LOGIC;
           co,so: OUT STD_LOGIC
           );
END h_adder;


--结构体描述部分
ARCHITECTURE fh1 OF h_adder IS
    SIGNAL abc : STD_LOGIC_VECTOR (1 DOWNTO 0);  --定义了1个信号节点,该信号节点是两位的
                                                 --或者说是定义标准逻辑矢量数据类型
BEGIN
    abc <= a & b ;      --a与b并置操作,获得二维矢量的数据类型
    PROCESS (abc)       --进程开始
    BEGIN
        CASE abc IS      --类似于真值表表述方式的CASE语句
            WHEN "00" => so<='0';co<='0';
            WHEN "01" => so<='1';co<='0';
            WHEN "10" => so<='1';co<='0';
            WHEN "11" => so<='0';co<='1';
            WHEN OTHERS => NULL;
        END CASE;       --CASE语句结束标志
    END PROCESS;        --进程结束标志
END fh1;

 

-------------------------------------------------------------------
-- 说明: 二输入或门的设计描述
-- 文件: or2a.vhd
-- 作者:
-- 日期: 2012/03/06
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

--实体描述部分
ENTITY or2a IS
      PORT(       --端口声明
           a, b : IN  STD_LOGIC;
              c : OUT STD_LOGIC
             );
END or2a;

--结构体描述部分 
ARCHITECTURE one OF or2a IS
BEGIN
    c <= a OR b;
END one;


 

-------------------------------------------------------------------
-- 说明: 1位二进制全加器的顶层设计
-- 文件: f_adder.vhd
-- 作者:
-- 日期: 2012/03/06
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;


--实体描述部分
ENTITY f_adder IS
      PORT(                  --端口声明
           ain, bin, cin : IN  STD_LOGIC;
           cout, sout    : OUT STD_LOGIC
           );
END f_adder;

--结构体描述部分
ARCHITECTURE fd1 OF f_adder IS
    COMPONENT h_adder     --调用半加器
        PORT(             --半加器的端口声明(注意要和设计的那个半加器端口声明一样,也可以说直接复制过来的)
              a, b : IN  STD_LOGIC;
              co,so: OUT STD_LOGIC
             );
    END COMPONENT;      --结束标志
   
    COMPONENT or2a      --调用或门
        PORT(           --或门的端口声明
           a, b : IN  STD_LOGIC;
              c : OUT STD_LOGIC
              );
    END COMPONENT;
   
SIGNAL d, e, f : STD_LOGIC;    --定义了3个信号节点,作为内部的连接线使用
BEGIN
    u1 : h_adder PORT MAP (a=>ain, b=>bin, co=>d, so=>e);
    u2 : h_adder PORT MAP (a=>e, b=>cin, co=>f, so=>sout);
    u3 : or2a    PORT MAP (a=>d, b=>f, c=>cout);
END fd1;   --结束结构体



 

文章评论4条评论)

登录后参与讨论

用户891316 2012-7-20 12:05

写得很好,很有借鉴意义。

用户377235 2012-5-23 18:50

条理清晰……多写点程序,给我们借鉴啊

用户419124 2012-5-12 10:10

1位还是移位?

用户377235 2012-5-5 12:34

写的太详细了……这个例子很实用,顶着

相关推荐阅读
zhangzhihang 2012-10-10 13:09
【博客大赛】FPGA中嵌入8051内核
        首先,安装Quartus II软件;         在移植前,先做准备工作:使用 KeiC51 软件,编写一个简单的 8051 单片机程序,并生成hex文件,程序如下(只是个...
zhangzhihang 2012-09-13 18:40
【TI博客大赛】电子设计竞赛作品——数字式LCR测量仪
  数字式LCR测量仪   摘  要 本文设计了一个基于MSP430F5438A的低功耗RLC参数自动测试仪,采用数字电桥测量方法测量电阻、电容、电感值及电容电感的D值...
zhangzhihang 2012-05-04 16:58
【博客大赛】【原创】基于FPGA的秒计时器
       本例子是由VHDL语言编写的60秒计时器,主要是学习编程思想,该例子可以根据自己的需要扩展为时钟程序。具体程序如下所示: ----------------------------...
zhangzhihang 2012-04-21 23:29
【博客大赛】【原创】基于FPGA的频率计设计
FPGA即是Field-Programmable Gate Array(现场可编程门阵列)英文的首字母,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。目前以硬件描述语言用得比...
我要评论
4
18
关闭 站长推荐上一条 /2 下一条