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
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