Programm läuft nur im Simulator

OP (Firma: Private) #1581810
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.
Gast #1581837
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
OP (Firma: Private) #1581913
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
Moderator (Firma: Titel) Persönliche Seite #1581957
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren