>

O

ohadohad2

Guest
Ahoj všichni, zajímalo by mě, jestli někdo může vysvětlit, proč jsem Zdá se, že dostanu stejnou chybu znovu a znovu.

Tak jsem psal kód a část byla kontraproduktivní.

Poté, co jsem úspěšně psaní kódu jsem si všiml, že hrabě Zdá se, že jednají velmi strangly, z nějakého důvodu rozporu výstup Zdá se, že změna v polovině hodiny i když jeho hodiny okraj spuštěna.

Chcete-li zkontrolovat toto jsem použil VHDL průběhů souboru.

Zde jsou některé odlišné kódy jsem psal pro přesné pult a všechny se zdají mít stejný problém (Im také připevnění obraz jednoho z načasování simulace):

subjektu Počítadlo je
generické (N: integer: = 7);
port (Povolit, CLK, RST: v bit;
Počet: integer mimo rozsah 0 až N);
konec Počítadlo;Architektura Počítání Počítadlo je

Typ Count_State je (nula, jeden, dva, tři, čtyři, pět, šest, sedm);
signál Current_State: Count_State;

začít
procesu (CLK, RST)
začít

pokud RST = '1 'pak Current_State <= nula;
elsif clk'event a CLK = '1 'pak

případ Current_State je

kdy nula => Current_State <= jedna;
Když jeden => Current_State <= dva;
Když dva => Current_State <= tři;
Když se tři => Current_State <= čtyři;
Když se čtyři => Current_State <= pět;
když pět => Current_State <= šest;
Když Šest => Current_State <= sedm;
když sedm => Current_State <= Zero;
konec případu;
end if;
ukončení procesu;

s Current_State vybrat

Počet <= 0, když Zero,
1 Při One,
2 Když dva,
3 Když se tři,
4 Když čtyři,
5 Po pět,
6 když Six,
7 Když sedm;

konec započítávání;-------------------------------------------------- --------------------------------------

subjektu Dflop je
port (D, RST, CLK, umožňují: v bit;
Q: mimo bit);
konec Dflop;

Architektura Chovejte z Dflop je
začít
procesu (CLK, RST)
začít

pokud RST = '1 'pak
Q <= '0 ';

elsif (clk'event a CLK = '1 '), pak
pokud enable = '1 'pak
Q <= D;
end if;
end if;

ukončení procesu;
Chovej se konec;

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

subjektu Struc_Counter je
generické (N: integer: = 7);
port (CLK, RST, umožňují: v bit;
Počet: integer mimo rozsah 0 až N);
konec Struc_Counter;

Architektura strukturálních o Struc_Counter je

složka Dflop
port (D, RST, CLK, umožňují: v bit;
Q: mimo bit);
konce složky;
-------------------------------------------------- --------------------------------------

signál ina, INB, Inc, outA, outB, outC: bit;
signál ABC: bit_vector (0 až 2);

začít

ina <= ((outA a (ne outB)) nebo (outB a (outA xor outC)));
INB <= (outB xor outC);
vč <= (ne outC);

A1: Dflop port map (D => ina, RST => RST, CLK => CLK, enable => Povolit, Q => outA);
B1: Dflop port map (D => INB, RST => RST, CLK => CLK, enable => Povolit, Q => outB);
C1: Dflop port map (D => inc, RST => RST, ČLK => ČLK zaškrtneme => povolit, Q => outC);ABC <= outA & outB & outC;

s ABC vybrat

Počet <= 0, když "000",
1 Když "001",
2 Při "010",
3 Když se "011",
4 Je-li "100",
5 Když "101",
6 Po "110",
7 Když "111";

konec strukturálních;subjektu Počítadlo je
generické (n: integer: = 7);
port (Povolit, CLK, RST: v bit;
Počet: integer mimo rozsah 0 až N);
konec Počítadlo;Architektura Počítání Počítadlo je
signál CNT: integer rozmezí 0 až N;
začít
procesu (CLK, RST)

začít

pokud RST = 1 'pak cnt <= 0;

elsif (clk'event a CLK = '1 '), pak
pokud enable = '1 'pak
CNT <= CNT 1;
pokud CNT = N pak
CNT <= 0;
end if;
end if;
end if;

ukončení procesu;

Počet <= cnt;

konec započítávání;
Omlouváme se, ale musíte přihlásit a prohlížet tuto přílohu

 
Myslím, že byste měli zvážit hardware zpožděný čas, i když je to hodiny spuštěno design, ale každý signál vnitřní FPGA má různé routing, takže si ne-tak-docela křivky.

 
pwq1999 napsal:

Myslím, že byste měli zvážit hardware zpožděný čas, i když je to hodiny spuštěno design, ale každý signál vnitřní FPGA má různé routing, takže si ne-tak-docela křivky.
 

Welcome to EDABoard.com

Sponsor

Back
Top