繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> EDA与PLD---博客 >> 带进位加法器之VHDL描述
带进位加法器之VHDL描述
作者:   来源: 发表时间:2006-12-30  字号:  
学过VHDL的人都知道,VHDL是提供了操作符“+”,而且在很多情况下,我们是可以直接用这个加操作符的。但是,VHDL提供的加法操作只能给出“和”,却无法给出“进位”。例如我们在设计计数器的时候经常用到的加1操作,对于一个8位的计数器,当计数器的结果为0xff时,如果在加1就为0x00。实际上,结果应该时0x100,而最高位的1就是进位,我们无法利用。而我们的实际设计中,不仅要用“和”,有时还要用到两个数相加的进位。所以有必要用VHDL来描述一个带进位的加法器,下面的代码可以完成这样的功能。加法器实际上完全可以由组合逻辑实现,但在频率较高的场合下工作时,容易产生毛刺。所以整个加法器设计成时序电路的形式,所有的加操作都是时钟的上升沿触发的。

--------------------------------------------------------------------------------
-- Engineer: skycanny
-- Module Name: fulladder - Behavioral
-- Tool versions: ISE 7.1
-- Description: This module is designed to discribe a full adder with carry
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity fulladder is
port(
reset : in std_logic;
clk : in std_logic;
operand1: in std_logic_vector(7 downto 0);
operand2: in std_logic_vector(7 downto 0);
carry : out std_logic;
sum : out std_logic_vector(7 downto 0)
);
end fulladder;

architecture Behavioral of fulladder is

begin

process(reset,clk)
variable sum_t : std_logic_vector(7 downto 0);
variable carry_t: std_logic;
begin
if(reset = '0') then
carry <= '0';
sum <= (others => '0');
elsif(rising_edge(clk)) then
carry_t := '0';
for i in 0 to 7 loop
sum_t(i) := operand1(i) xor operand2(i) xor carry_t;
carry_t := (operand1(i) and operand2(i)) or (carry_t and (operand1(i) or operand2(i)));
end loop;
carry <= carry_t;
sum <= sum_t;
end if;
end process;

end Behavioral;

通过对上述代码的综合(XST),布局布线和后仿真,可以发现整个加法器是可以正常工作的。也没有毛刺的现象,避免了逻辑电路设计中最忌讳的一点。仿真时钟是100mhz。

整个设计过程是这样的:首先写出一位全加器的真值表,根据真值表画出卡诺图,化简卡诺图,写出了sum和carry的逻辑表达式。然后根据逻辑表达式写出上面的RTL级的代码。可见基础的数电知识还是很重要的。估计现在很少有人卡诺图了吧。


!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: RAM之VHDL描述
  • 下一篇: IBM采用自成形材料绝缘 芯片提速三分之一

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网