Forum: FPGA, VHDL & Co. Programm läuft nur im Simulator


von Toni M. (Firma: Private) (toggle2)


Lesenswert?

Hallo,

ich habe das Programm im Anhang für das Spantan 3an Board geschrieben. 
In der Simulation funktioniert alles, aber sobald ich das Programm auf 
das Board übertrage, zeigt as Display zwar 00:00:00 an, geht aber mit 
der Uhrzeit nicht hoch. Drückt man STD_S (hochzählen der Stunden 
Button), dann fängt die Uhr an in einer rasenden Geschwindigkeit (statt 
im Sekundentakt) hochzuzählen bis z. B. 12:25:45. Dabei wird aber auch 
immer berücksichtigt, dass die Stunden nur bis 23 und die 
Minuten/Sekunden bis 59 gehen.

Ich hoffe echt ihr könnt mir helfen, da mir nichts mehr einfällt... Wenn 
noch Fragen zu dem Programm sein sollten, dann einfach nachfragen.

von Duke Scarring (Gast)


Lesenswert?

Hallo Armin,

1) Wie schnell ist Dein Takt?

2) Wenn STD_S und MIN_S Taster sind, mußt Du die noch entprellen.

3) In die sensitivity-List müssen nur die asynchronen Signale.
1
Statemachine_01: process (takt, reset, AB_02, AB_03, 
2
                          ZUSTAND, SEC_E, SEC_Z, MIN_E, MIN_Z, STD_E, STD_Z)
Bei Dir ist das takt und reset.

4) Falls reset auch von außen kommt (Taster?) mußt Du es 
einsynchronisieren.

5) Wo ist Deine Testbench?

P.S.: Es reicht hier die .vhd-Files zu veröffentlichen.

Duke

von Toni M. (Firma: Private) (toggle2)


Lesenswert?

1.) Der Takt ist 50MHZ

2.) Die Taster sind bereits auf dem Board entprellt (laut Hersteller) 
Hat mit anderen Projekten auch schon funktioniert.

3.) Hab ich gemacht, hat aber auf das Programm wenig Auswirkungen, außer 
das eine Warnung kommt: One more signals are missing... Gehe mal davon 
aus, dass das die sind die ich gelöscht habe, da Zeilenangabe auch 
stimmt.

4.) Die Reset Taste ich die einzige, die richtig funktioniert. Nach dem 
Drücken ist alles wieder auf 00:00:00

5.) Im Anhang

6.) Ich heiße Toni

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Duke Scarring schrieb:
> 3) In die sensitivity-List müssen nur die asynchronen Signale....
Der Prozess ist erst mal Getaktet und dann noch Kombinatorisch, da muß 
die Sensitivliste schon so sein...  :-o
1
   if    reset='1' then ZUSTAND <= A;
2
   elsif  takt='1' and takt'event then  -- getaktet
3
      ZUSTAND <= FOLGEZUSTAND;  
4
   end if;
5
  
6
   case ZUSTAND is                      -- kombinatorisch
7
      :
Allerdings ist diese Schreibweise durchaus unüblich. Das ist quasi eine 
2-Prozess-SM in einen Prozess gepackt...

> Drückt man STD_S (hochzählen der Stunden Button), dann fängt die Uhr an
> in einer rasenden Geschwindigkeit (statt im Sekundentakt) hochzuzählen
Tritt der Effekt auch mit der MIN_S Taste auf?
Ich steige da jetzt nicht mit den vielen Zählern so ganz durch, aber das 
hier könntest du anders schreiben:
1
MUX_1: process(MIN_S, c_szeh_int, sec)
2
begin
3
   case MIN_S is
4
  when '1'    => c_szer_int <= sec;
5
  when others => c_szer_int <= c_szeh_int; 
6
   end case;
7
end process MUX_1;
Nämlich so:
1
c_szer_int <= sec when MIN_S='1' else c_szeh_int;

von Toni M. (Firma: Private) (toggle2)


Lesenswert?

Danke für den Tipp mit der MIN_S Taste. Hab mich da noch mal dran 
gegeben und die Uhr komplett neu gemacht und jetzt läuft es...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.