• 8-bit full adder issue

    From Marco De Luca@21:1/5 to All on Mon Apr 17 08:36:44 2023
    stavo seguendo la lezione del mio insegnante e ho copiato il suo codice. Il suo compilatore
    non ha dato alcun avviso o errore, ma quando provo a compilarlo con my
    PC, viene visualizzato un avviso sui componenti non limitati. ci ho provato
    usa anche std_logic invece di bit, ma niente (idk ho ​​provato tutto).
    Sto iniziando a odiare vhdl e non so cosa devo fare. Ragazzi
    hai qualche idea?
    Grazie a tutti in anticipo

    SCRIPT 1
    entity addern is
    generic (enne: integer:=8);
    port( c_in: in bit;
    x_in: in bit_vector (enne-1 downto 0);
    y_in: in bit_vector (enne-1 downto 0);
    c_out, s: out bit;
    s_out: out bit_vector (enne-1 downto 0)
    );
    end entity;
    -- quello che ho fatto qui è definire praticamente una serie di 8 full adder, praticamente lo posso immaginare come una black box in cui all'interno ho tutti i componenti
    -- che sto per andare a definire all'interno dell'architecture
    architecture archi of addern is
    signal carry_chain : bit_vector (enne-2 downto 0);

    component cfa is
    port(
    a: in bit;
    b: in bit;
    ci:in bit;
    s: out bit;
    co: out bit
    );
    end component;
    begin
    --qui è necessario fare attenzione perchè tutti i blocchetti non sono uguali, i due estremi non sono collegati a nulla, mentre quelli interni invece sono collegati tra di loro
    gen_stat: for index in 0 to (enne-1) generate
    --fino all'end generate qui è come se stessimo mettendo uno dopo l'altro n pezzi.
    --come già detto abbiamo 3 differenti casi di blocchetti: estremo destro, estremo sinistro e interni:
    begin
    prima_cella:if (index=0) generate
    begin
    cella_0: component cfa
    port map(a=>x_in(index),
    b=>y_in(index),
    ci=>c_in,
    s=>s_out(index),
    co=>carry_chain(index)
    );
    end generate;
    ultima_cella:if (index=(enne-1)) generate
    begin
    cella_n: component cfa
    port map(a=>x_in(index),
    b=>y_in(index),
    ci=>carry_chain(index-1),
    s=>s_out(index),
    co=>c_out
    );
    end generate;

    altre_celle:if ((index/=0) and (index/=(enne-1)))generate
    begin
    celle: component cfa
    port map(a=>x_in(index),
    b=>y_in(index),
    ci=>carry_chain(index-1),
    s=>s_out(index),
    co=>carry_chain(index)
    );
    end generate;
    end generate;
    end architecture;





    TESTBENCH (SCRIPT2)
    entity tb is
    end entity;

    architecture struct of tb is
    signal add1,add2,somma : bit_vector (7 downto 0);
    signal riporto : bit;
    begin
    sommatore: entity work.addern
    generic map (enne=>8)
    port map(x_in=>add1, y_in=>add2, c_in=>'0',c_out=>riporto, s_out=>somma);

    process is
    begin
    add1<="00000000";
    add2<="00000000";
    wait for 50 ns;
    add1<="00001100";
    add2<="11100000";
    wait for 50 ns;
    add1<="00011100";
    add2<="00011111";
    wait for 50 ns;
    add1<="00001111";
    add2<="11100000";
    wait for 50 ns;
    add1<="01111111";
    add2<="00000111";
    wait for 50 ns;
    add1<="00011100";
    add2<="00010000";
    wait for 50 ns;
    add1<="01110010";
    add2<="00000111";
    wait for 50 ns;
    add1<="00111100";
    add2<="01111100";
    wait for 50 ns;
    wait;
    end process;
    end architecture;


    ERRORS:
    adder_n.vhd:35:40:warning: component instance "cella_sin" is not bound adder_n.vhd:15:14:warning: (in default configuration of addern(archi)) adder_n.vhd:45:41:warning: component instance "cella_des" is not bound adder_n.vhd:15:14:warning: (in default configuration of addern(archi)) adder_n.vhd:56:40:warning: component instance "celle" is not bound adder_n.vhd:15:14:warning: (in default configuration of addern(archi))

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marc Guardiani@21:1/5 to Marco De Luca on Mon Apr 17 14:35:08 2023
    On Monday, April 17, 2023 at 11:36:46 AM UTC-4, Marco De Luca wrote:
    stavo seguendo la lezione del mio insegnante e ho copiato il suo codice. Il suo compilatore
    non ha dato alcun avviso o errore, ma quando provo a compilarlo con my
    PC, viene visualizzato un avviso sui componenti non limitati. ci ho provato usa anche std_logic invece di bit, ma niente (idk ho ​​provato tutto). Sto iniziando a odiare vhdl e non so cosa devo fare. Ragazzi
    hai qualche idea?
    Grazie a tutti in anticipo

    SCRIPT 1
    entity addern is
    generic (enne: integer:=8);
    port( c_in: in bit;
    x_in: in bit_vector (enne-1 downto 0);
    y_in: in bit_vector (enne-1 downto 0);
    c_out, s: out bit;
    s_out: out bit_vector (enne-1 downto 0)
    );
    end entity;
    -- quello che ho fatto qui è definire praticamente una serie di 8 full adder, praticamente lo posso immaginare come una black box in cui all'interno ho tutti i componenti
    -- che sto per andare a definire all'interno dell'architecture
    architecture archi of addern is
    signal carry_chain : bit_vector (enne-2 downto 0);

    component cfa is
    port(
    a: in bit;
    b: in bit;
    ci:in bit;
    s: out bit;
    co: out bit
    );
    end component;
    begin
    --qui è necessario fare attenzione perchè tutti i blocchetti non sono uguali, i due estremi non sono collegati a nulla, mentre quelli interni invece sono collegati tra di loro
    gen_stat: for index in 0 to (enne-1) generate
    --fino all'end generate qui è come se stessimo mettendo uno dopo l'altro n pezzi.
    --come già detto abbiamo 3 differenti casi di blocchetti: estremo destro, estremo sinistro e interni:
    begin
    prima_cella:if (index=0) generate
    begin
    cella_0: component cfa
    port map(a=>x_in(index),
    y_in(index),
    c_in,
    s_out(index),
    carry_chain(index)
    );
    end generate;
    ultima_cella:if (index=(enne-1)) generate
    begin
    cella_n: component cfa
    port map(a=>x_in(index),
    y_in(index),
    carry_chain(index-1),
    s_out(index),
    c_out
    );
    end generate;

    altre_celle:if ((index/=0) and (index/=(enne-1)))generate
    begin
    celle: component cfa
    port map(a=>x_in(index),
    y_in(index),
    carry_chain(index-1),
    s_out(index),
    carry_chain(index)
    );
    end generate;
    end generate;
    end architecture;





    TESTBENCH (SCRIPT2)
    entity tb is
    end entity;

    architecture struct of tb is
    signal add1,add2,somma : bit_vector (7 downto 0);
    signal riporto : bit;
    begin
    sommatore: entity work.addern
    generic map (enne=>8)
    port map(x_in=>add1, y_in=>add2, c_in=>'0',c_out=>riporto, s_out=>somma);

    process is
    begin
    add1<="00000000";
    add2<="00000000";
    wait for 50 ns;
    add1<="00001100";
    add2<="11100000";
    wait for 50 ns;
    add1<="00011100";
    add2<="00011111";
    wait for 50 ns;
    add1<="00001111";
    add2<="11100000";
    wait for 50 ns;
    add1<="01111111";
    add2<="00000111";
    wait for 50 ns;
    add1<="00011100";
    add2<="00010000";
    wait for 50 ns;
    add1<="01110010";
    add2<="00000111";
    wait for 50 ns;
    add1<="00111100";
    add2<="01111100";
    wait for 50 ns;
    wait;
    end process;
    end architecture;


    ERRORS:
    adder_n.vhd:35:40:warning: component instance "cella_sin" is not bound adder_n.vhd:15:14:warning: (in default configuration of addern(archi)) adder_n.vhd:45:41:warning: component instance "cella_des" is not bound adder_n.vhd:15:14:warning: (in default configuration of addern(archi)) adder_n.vhd:56:40:warning: component instance "celle" is not bound adder_n.vhd:15:14:warning: (in default configuration of addern(archi))

    Remove the extra "begin" statements after each generate (in 4 places). For example:

    gen_stat: for index in 0 to (enne-1) generate
    --REMOVE begin

    --Marc

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marc Guardiani@21:1/5 to Marc Guardiani on Tue Apr 18 18:52:25 2023
    On Monday, April 17, 2023 at 5:35:10 PM UTC-4, Marc Guardiani wrote:
    On Monday, April 17, 2023 at 11:36:46 AM UTC-4, Marco De Luca wrote:
    stavo seguendo la lezione del mio insegnante e ho copiato il suo codice. Il suo compilatore
    non ha dato alcun avviso o errore, ma quando provo a compilarlo con my
    PC, viene visualizzato un avviso sui componenti non limitati. ci ho provato
    usa anche std_logic invece di bit, ma niente (idk ho ​​provato tutto). Sto iniziando a odiare vhdl e non so cosa devo fare. Ragazzi
    hai qualche idea?
    Grazie a tutti in anticipo


    <snip vhdl code>

    Remove the extra "begin" statements after each generate (in 4 places). For example:
    gen_stat: for index in 0 to (enne-1) generate
    --REMOVE begin

    --Marc

    OK, if you haven't gotten it yet. Here's another hint:
    You have to define an entity named cfa that does your one bit adder.

    --Marc

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)