balie in VHDL

V

voho

Guest
Hi all,

hoe je een teller 48 bits doen in VHDL, want toen ik mijn code test ik merkte dit probleem:

hex: 00 00 00 00 00 00
.....................
.....................
01 FF FF FF FF FF

<img src="http://www.edaboard.com/images/smiles/icon_surprised.gif" alt="Verbazing" border="0" />

k
01 00 00 00 00 00: fout
02 00 00 00 00 00

<img src="http://www.edaboard.com/images/smiles/icon_surprised.gif" alt="Verbazing" border="0" />

k

het is een probleem van het dragen ik denk?

 
Het is iets als dit:

Code:signaal cnt, cnt_nxt: std_logic_vector (47 Downto 0);

beginnen

proces (clk_i, reset_n_i) beginnen

indien reset_n_i = '0 'dan

cnt <= 0;

elsif clk_i'event en clk_i = '1 'dan

cnt <= cnt_nxt;

end if;

einde procescnt_nxt <= teller 1;einde beh;
 
cube007 wrote:

Het is iets als dit:Code:signaal cnt, cnt_nxt: std_logic_vector (47 Downto 0);

beginnen

proces (clk_i, reset_n_i) beginnen

indien reset_n_i = '0 'dan

cnt <= 0;

elsif clk_i'event en clk_i = '1 'dan

cnt <= cnt_nxt;

end if;

einde procescnt_nxt <= teller 1;
ok ...
U kunt beter schrijven wat goede VHDL!eerst ...
zet de Numeric_std bibliotheek on-line ..
=> Gebruik ieee.numeric_std.all;dan de teller zal zijn als dit ...cpt_int is een signaal 48 bits of wat je wilt ...;

cpt_out de output van de tellerproces (Raz, CLK)

beginnen

indien raz = '1 'dan cpt_int <= (others => '0');

elsif rising_edge (clk)

dan

als cpt_int = x "FFFFFFFFFFFF" dan cpt_int <= (others => '0 '); - optioneel lijn (voor de simulatie!)

else cpt_int <= std_logic_vector (unsigned (cpt_int) 1);

end if;

end if;

einde proces

cpt_out <= cpt_int;that's all

goede VHDL!einde beh;
 
Beste manier om zo'n grote teller ontwerp is te verdelen in kleinere
tellers.Dit zal teller hardware testen possble en eenvoudig!
Probeer op te bouwen 16-bits teller en instantiate het driewerf tot en met 48 bit teller te krijgen!

 

Welcome to EDABoard.com

Sponsor

Back
Top