Counter deluje zelo čudno - pomoč je potrebna.

O

ohadohad2

Guest
Pozdravljeni vsi, jaz sprašujem, če lahko kdo razloži, zakaj sem se zdi, da zaslužiti isto zmota znova in znova.

Torej sem pisal kodo in je bil del nje števec.

Ko sem zaključil pisanje kode sem opazil, da število se zdi, da deluje zelo strangly, iz neznanega razloga nasprotju izhodno zdi, da spremenite sredine ure čeprav je njegova ura rob sproži.

Če želite preveriti to sem rabil VHDL vala datoteko.

Tukaj je nekaj različnih kod sem napisal za natančen števec in vse se zdi, da imajo isti problem (Im tudi pritrditev sliko ene od časa simulacije):

Podjetje Števec
generično (N: integer: = 7);
pristanišča (omogočiti, CLK, Železniški vozni park: v bit;
Count: od celo število območju med 0 in N);
end Counter;arhitektura Preštevanje Števec

Tip je Count_State (Zero, ena, dva, tri, štiri, pet, šest, sedem);
signal Current_State: Count_State;

začeti
proces (CLK, Železniški vozni park)
začeti

če rst = '1 'potem Current_State <= Zero;
elsif clk'event in CLK = '1 'potem

primeru je Current_State

ko Zero => Current_State <= One;
Ko je eden => Current_State <= Dve;
če sta dve => Current_State <= tri;
ko Trije => Current_State <= Four;
Ko Štiri => Current_State <= Five;
ko Pet => Current_State <= Six;
Ko Šest => Current_State <= Sedem;
ko Sedem => Current_State <= Zero;
koncu postopka;
konca, če;
koncu postopka;

z Current_State izberite

Count <= 0, ko nič,
1, če One,
2, če sta dve,
3 ko se tri,
4 ko Four,
5, kadar Pet,
6, ko je šest,
7, ko Sedem;

end Štetje;-------------------------------------------------- --------------------------------------

Podjetje je Dflop
pristanišča (D, rst, CLK, da: v bit;
Q: ven bit);
end Dflop;

arhitektura se obnašajte za Dflop je
začeti
proces (CLK, Železniški vozni park)
začeti

če rst = '1 'potem
Q <= 0 ";

elsif (clk'event in CLK = '1 '), potem
če bi = '1 'potem
Q <= D;
konca, če;
konca, če;

koncu postopka;
Zato se obnašajte;

-------------------------------------------------- --------------------------------------

Podjetje je Struc_Counter
generično (N: integer: = 7);
pristanišča (CLK, Železniški vozni park, omogočiti: v bit;
Count: od celo število območju med 0 in N);
end Struc_Counter;

arhitektura strukturnih o Struc_Counter je

komponenta Dflop
pristanišča (D, rst, CLK, da: v bit;
Q: ven bit);
end komponente;
-------------------------------------------------- --------------------------------------

signal INA, INB, inc, outa, outB, outC: bit;
signal ABC: bit_vector (0 do 2);

začeti

ina <= ((outa in (ne outB)) ali (outB in (outa XOR outC)));
INB <= (outB XOR outC);
inc <= (ne outC);

A1: Dflop pristanišča map (D => INA, rst => rst, CLK => CLK, omogočiti => omogoči, Q => outa);
B1: Dflop pristanišča map (D => INB, rst => rst, CLK => CLK, omogočiti => omogoči, Q => outB);
C1: Dflop pristanišča map (D => inc, rst => rst, CLK => CLK, omogočiti => omogoči, Q => outC);ABC <= outa & outB & outC;

z ABC izberite

Count <= 0, ko "000",
1 ko se "001",
2 ko se "010",
3 ko se "011",
4, ko "100",
5, ko "101",
6, ko "110",
7, ko "111";

namen strukturnih;Podjetje Števec
generično (N: integer: = 7);
pristanišča (omogočiti, CLK, Železniški vozni park: v bit;
Count: od celo število območju med 0 in N);
end Counter;arhitektura Preštevanje Števec
signal CNT: celo število območju med 0 in N;
začeti
proces (CLK, Železniški vozni park)

začeti

če rst = '1 'potem CNT <= 0;

elsif (clk'event in CLK = '1 '), potem
če bi = '1 'potem
CNT <= CNT 1;
če CNT = N nato
CNT <= 0;
konca, če;
konca, če;
konca, če;

koncu postopka;

Count <= CNT;

end Štetje;

 
Mislim, da bi morali razmisliti strojne opreme zamudo časa, čeprav je ura sproži design, vendar vsak signal notranji FPGA ima različne poti, tako da boste dobili, ne-tako-zelo vala.

 
pwq1999 napisal:

Mislim, da bi morali razmisliti strojne opreme zamudo časa, čeprav je ura sproži design, vendar vsak signal notranji FPGA ima različne poti, tako da boste dobili, ne-tako-zelo vala.
 

Welcome to EDABoard.com

Sponsor

Back
Top