2016-07-17 5 views
-1

私はこのウェブサイトで見たほとんどのカウンタと異なり、私のBCDカウンタは1つの8ビットBCDカウンタを作るために2つの4ビット加算器を使用する必要があります。これまで私が行ってきたことは、通常の全加算器を設計し、それを通常の4ビット加算器を設計するのに使用したことです。あなたが見ることができるようにVHDL:2つの通常の4ビット加算器を使用して8ビットのBCDカウンタを設計するにはどうすればよいですか?

library ieee; 
use ieee.std_logic_1164.all; 

entity adder8b_custom is 
port(
    X: in std_logic_vector(7 downto 0); 
    Y: in std_logic_vector (7 downto 0); 
    S: out std_logic_vector (7 downto 0)); 
end adder8b_custom; 

architecture adder8b_custom of adder8b_custom is 

component adder4b 
    port ( X : in STD_LOGIC_VECTOR (3 downto 0); 
      Y : in STD_LOGIC_vector (3 downto 0); 
      C0: in STD_LOGIC; 
      S : out STD_LOGIC_VECTOR (3 downto 0); 
      C4: out STD_LOGIC); 
end component; 

signal s1:std_logic_vector (7 downto 0); --for addition 
signal s2:std_logic_vector (7 downto 0); --for subtraction 
signal s3, s4, s5, s6: std_logic_vector (3 downto 0);--placeholders 
signal i, j, k, l: std_logic; 

begin 
    u1: adder4b port map (X => X (3 downto 0), Y => "0001",c0=>'0', S => s3 (3 downto 0), c4=>i); 
    s1(3 downto 0) <=s3(3 downto 0) when s3 (3 downto 0) /="1010" 
    else "0000"; 
    s<=s1; 
    --u2: adder4b port map (X => X (7 downto 4), Y => "0001" ,c0 => i, S => s4 (3 downto 0), c4=>j); 
    --s1(7 downto 4) <= s4(3 downto 0) when s4(3 downto 0) /= "1010" 
    --else "0000"; 
    --s(7 downto 4)<= s1; 
end; 

、信号の後にすべてが台無しにされ、私はそれを修正する方法を知っている知っていますか:

これは、これまでのところ、私のコードです。

すべての入力をいただきありがとうございます。

答えて

0

4bit加算器が正しく動作している場合は、低いニブルから高いニブルのキャリーインにマップするだけで済みます。次に、それぞれ8ビットをマップします。

私はVHDLで演奏して以来、長すぎるので、必要なコードを覚えています。

+0

助けてくれてありがとう、それはまさに私が考えていたものでした!しかし問題はあなたのものと同じです:私は言語に悪いです。誰かが私のためにこれをコードで解決できるかどうかは疑問だった。マシュー入力してくれてありがとう! –

関連する問題