2016-07-17 6 views
-1

Im Gegensatz zu den meisten Zählern, die ich auf dieser Website gesehen habe, benötigt mein BCD-Zähler die Verwendung von zwei 4-Bit-Addierern, um 1 8-Bit BCD-Zähler zu machen. Was ich bisher gemacht habe, ist die Entwicklung eines regulären Volladdierers, mit dem ein normaler 4-Bit-Addierer entworfen wurde.VHDL: Wie verwende ich 2 normale 4-Bit-Addierer, um einen 8-Bit-BCD-Zähler zu entwerfen?

Dies ist mein Code so weit:

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; 

Wie Sie alles, nachdem die Signale sehen kann, ist vermasselt und ich weiß, wie es zu beheben.

Ich schätze alle Eingaben.

Antwort

0

Wenn Ihr 4-Bit-Addierer korrekt arbeitet, müssen Sie nur den Übertrag vom niedrigen Nibble zum Übertrag des hohen Nibbles zuordnen. Dann kartieren Sie jeweils Ihre 8bit.

Es ist zu lange her, seit ich mit VHDL gespielt habe, damit ich mich an den Code erinnern kann, den Sie brauchen.

+0

Danke für die Hilfe, das war genau das, was ich dachte! Das Problem ist jedoch das gleiche wie bei Ihnen: Ich bin schlecht in der Sprache. Ich habe mich nur gefragt, ob jemand das für mich im Code lösen könnte. Danke für deine Eingabe Matthew! –

Verwandte Themen