Forum: FPGA, VHDL & Co. Takt 2 mal verdoppeltn für State Machine


von FPGA-Fragender (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte einen SRAM ( SRAM hat 10ns Zugriffszeit ) controller für eine 
Spartan 3 Starter Board von Digilent entwerfen.

Mein  bisheriger Entwurf hat zwar funktioniert, aber wie mir jetzt erst 
klar geworden ist nur durch Zufall :-))

Hab nochmal die Datenblätter durchgearbeitet.

Ich brauche nicht die maximale Geschwindigkeit es genügt, wenn ich mit 
50 Mhz bei jedem Takt lesen oder schreiben kann, also 20ns Zyklus Zeit.

Ich hab nicht beachtet, dass jeder Schreibvorgang mit einer steigenden 
Flanke abgeschlossen werden muss. D.h. das mehrfache schreiben 
nacheinander brachte Fehler.

Ich brauche also ein Write Enable Signal siehe Anlage.

Nun meine Frage wie würdet Ihr das Problem am elegantesten lösen.

DCM aufbauen mit vierfachem Takt und eine State machine mit 4 States. 
Ist das der richtige Weg ?

Ich hoffe es geht auch einfacher ? Gebt mir bitte einen Rat bevor ich in 
die falsche Richtung laufe.

Gruß vom FPGA-Fragenden

P.S. Danke für die vielen Guten Infos, die ich durch das Board schon 
bekommen hab.

von Falk B. (falk)


Lesenswert?

@ FPGA-Fragender (Gast)

>Ich brauche nicht die maximale Geschwindigkeit es genügt, wenn ich mit
>50 Mhz bei jedem Takt lesen oder schreiben kann, also 20ns Zyklus Zeit.

>DCM aufbauen mit vierfachem Takt und eine State machine mit 4 States.
>Ist das der richtige Weg ?

Takt auf 100 MHz verdoppeln und steigende sowie fallende Flanke nutzen 
reicht. Damit hat man auch 4 Zustände, mit welchen man den Zugriff 
korrekt codieren kann.

Dein Timingdiagramm ist noch nicht so ganz OK. Die Adressen sollten 
NICHT gleichzeitig mit WR wechseln.

MFG
Falk

P.S. Bildformate

von FPGA-Fragender (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Falk,

ich habs im timing Diagramm abgeändert.

Ich hab noch nie mit fallenden Flanken und 2 Takten gearbeitet und 
versteh nicht so ganz wie ich die Abfrage schreiben muss ?

Beispiel für die Abfragen der States 1 bis 4
==============================================

proces my_machine ( clk100 )
..

if ( CLK100'event ) then
    if Clk100 = '1' then
        if ( clk50 = '1' ) then  pinzip
            WE = '0' ; -- state 1
        else
            WE = '0' ; -- state 3
       end if ;
   else
       if ( clk50 = '1' ) then  pinzip
            WE = '0' ; -- state 2
       else
            WE = '1' ; -- state 4
       end if ;
end if ;

end process ;

Oder aber

proces my_machine ( clk100 )
..

 if (clk100'event and clk100 = '0' and clk50 = '0' ) then
     WE = '1' ;
 else
     WE = '0' ;
 end if ;

end process;

Könntest Du mir ein Beispiel schreiben ? Bitte !

Ich versteh nicht wie man ein signal synchron zu verschiedenen Flanken 
Ereignissen auswertet bzw. setzt

Gruß vom FPGA-Fragenden

von Falk B. (falk)


Lesenswert?

@ FPGA-Fragender (Gast)

>Dateianhang: quad_clock2.jpg (67,1 KB, 11 Downloads)

Informiere dich bnitte über Bildformate!!!

>Ich hab noch nie mit fallenden Flanken und 2 Takten gearbeitet und
>versteh nicht so ganz wie ich die Abfrage schreiben muss ?

Etwa so.
1
--
2
proces my_machine ( clk100 )
3
begin
4
  if rising_edge(CLK100) then
5
    toggle = not toggle;             -- Hilfssignal für Taktteilung
6
    if toggle='1' then               -- jeden 2. Takt die Addressen 
7
                                        hochzählen und WE generieren
8
      address <= address+1;
9
      WE_int <= '0';
10
    else
11
      WE_int <= '1';
12
    end if;
13
  end if ;
14
end process;
15
16
process (clk100)
17
begin
18
  if falling_edge(CLK100) then
19
    WE <= WE_int;                  -- WE um halben Takt verzögern 
20
  end if;
21
end process;


>Ich versteh nicht wie man ein signal synchron zu verschiedenen Flanken
>Ereignissen auswertet bzw. setzt

Gar nicht. Die einzelnen Signale sind immer nur synchron zur steigenden 
oder fallenden Flanke. Aber es ist vollkommen OK und sicher, ein Signal 
mit steigender Flanke zu generieren und danach mit der fallenden Flanke 
nochmal abzutasten. Siehe oben.

MFG
Falk

von Kralle (Gast)


Lesenswert?

Womit ist denn dieses Bild produziert worden ?

von Stefan (Gast)


Lesenswert?

sieht sehr stark nach Excel aus

von Ernie ohne Bert (Gast)


Lesenswert?

Na die vielen Pfeile der Signale sind sicher automatisch ertzeugt 
worden, oder ?

von FPGA-Anfaenger (Gast)


Lesenswert?

Hallo zusammen,

alles per Hand in Excel gemacht. Die Pfeile auch.

Hab mittlerweile so viele Diagramme damit gemacht, dass es einigermaßen 
von der Hand geht.   :-))

Gruß vom FPGA-Fragenden

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.