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))
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
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
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 300 |
Nodes: | 16 (2 / 14) |
Uptime: | 55:41:01 |
Calls: | 6,712 |
Files: | 12,243 |
Messages: | 5,355,397 |