Gå til innhold

VHDL: hjelp til enkel tellekrets


Anbefalte innlegg

Først av alt: jeg er fullstendig nybegynner når det gjelder programmering, så fint om jeg får svar deretter... :)

 

Jeg har et ALTERA DE2-kort, og programmerer med quartusII

 

Skal etterhvert lage en stoppeklokke, og jobber med 7-segment displayet nå. Har fått segmentene HEX0 og HEX1 til å telle til 9, for så å starte på nytt igjen. Men nå ønsker jeg at når HEX0 har talt til 9, skal HEX1 vise 1, altså så jeg får tallet ti (10).

 

Gjorde et lite forsøk (som er kommentert vekk), men det er sikkert ganske på trynet... :)

 

Takk på forhånd!

telling.zip

Lenke til kommentar
Videoannonse
Annonse
Først av alt: jeg er fullstendig nybegynner når det gjelder programmering, så fint om jeg får svar deretter... :)

 

Jeg har et ALTERA DE2-kort, og programmerer med quartusII

 

Skal etterhvert lage en stoppeklokke, og jobber med 7-segment displayet nå. Har fått segmentene HEX0 og HEX1 til å telle til 9, for så å starte på nytt igjen. Men nå ønsker jeg at når HEX0 har talt til 9, skal HEX1 vise 1, altså så jeg får tallet ti (10).

 

Gjorde et lite forsøk (som er kommentert vekk), men det er sikkert ganske på trynet... :)

 

Takk på forhånd!

 

Hei.

 

Det du bør gjøre er å lage flere instanser av en dekadeteller, som har en carry-utgang. Denne carry-utgangen kan gå høy hver gang telleren starter på nytt. Du bruker så denne utgangen til å drive klokkeinngangen på den neste dekadetelleren.

 

Jeg anbefaler at du lager et modulært design, dvs at du legger dekadeteller + bcd-enkoder i en egen entitet, og så kan du veldig lett slå sammen så mange som du vil av disse i topp-entiteten din.

 

Jeg ville valgt et interface på dekadetelleren som følger:

entity dec_bcd is

 port (
   clk    : in  std_logic;                      -- clock
   arst_n : in  std_logic;                      -- asynchronous reset
   count  : in  std_logic;                      -- counter enable
   carry  : out std_logic;                      -- carry out
   hex    : out std_logic_vector(7 downto 0));  -- bcd control vector

end dec_bcd;

 

Du kan så instansiere disse på følgende måte:

 

  dec_bcd_1: dec_bcd
   port map (
     clk    => clk,
     arst_n => arst_n,
     count  => count_1,
     carry  => carry_1,
     hex    => hex1);

 dec_bcd_2: dec_bcd
   port map (
     clk    => clk,
     arst_n => arst_n,
     count  => carry_1,
     carry  => carry_2,
     hex    => hex2);

 

Håper dette hjelper

Endret av kurant
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...