mikrocontroller.net

Forum: FPGA, VHDL & Co. Schon wieder synchron/asynchron.


Autor: Koblenzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An XC2S100 ist ein Z80 andeschlossen.
CPU kriegt Taktsignale (CPUCLK), die synchron mit CLK sind.
Aber Signale von CPU (RD,WR,MREQ) kommen ins FPGA mit verzögerung..
Wie mache ich meine Code (ROM,RAM,VRAM,VRD,VWR) synchron???
begin
  CPUCLK <= CharColumn(0);                   -- CPU Clock 3.5MHz

  CPUWAIT <= '0' when VideoRead1 = '1' and VRAM_ACC = '1' else '1';

  ROM <= '0' when MREQ = '0' and A15 = '0' and A14 = '0' else '1';
  RAM <= '0' when MREQ = '0' and A15 = '1' and VRAM_ACC = '0' else '1';

  VRD <= '0' when (VRAM_ACC = '1' and RD = '0') or VideoRead2 = '1' else '1';
  VWR <= '0' when (VRAM_ACC = '1' and WR = '0') and VideoRead = '0' else '1';
  VRAM_ACC <= '1' when MREQ = '0' and (RAM5 = '1' or RAM7 = '1') else '0';
  VRAM <= '0' when VRAM_ACC = '1' or VideoRead1 = '1' else '1';  

  process( CLK )                       -- Global Clock 14MHz
  begin
    if CLK'event and CLK = '1' then
      Tick <= not Tick;                  -- 7MHz
      .............
    end if;
  end process;

  process( CLK )
  begin
    if CLK'event and CLK = '1' then 
      if Paper = '1' then
        if CharColumn = 5 and Tick = '0' then
          VideoRead <= '1';
          VideoRead1 <= '1';
        elsif CharColumn = 5 and Tick = '1' then
          VideoRead2 <= '1';
          VA <= std_logic_vector( "0110" & VerCounter(4 downto 0) & HorCounter(4 downto 0) );
        elsif CharColumn = 6 and Tick = '0' then
          VA <= std_logic_vector( "0" & VerCounter(4 downto 3) & CharRow & VerCounter(2 downto 0) & HorCounter(4 downto 0) );
        elsif CharColumn = 6 and Tick = '1' then
          VA <= ( others => 'Z' );
          VideoRead1 <= '0';
        elsif CharColumn = 7 and Tick = '0' then
          VideoRead <= '0';
          VideoRead2 <= '0';          
        end if;
      end if;        
    end if;
  end process;
end Behavioral;


Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Koblenzer (Gast)

>An XC2S100 ist ein Z80 andeschlossen.
>CPU kriegt Taktsignale (CPUCLK), die synchron mit CLK sind.
>Aber Signale von CPU (RD,WR,MREQ) kommen ins FPGA mit verzögerung..

Das ist normal. Ist in jeder synchronen Schaltung so.

>Wie mache ich meine Code (ROM,RAM,VRAM,VRD,VWR) synchron???

das sind sie doch schon. Wenn die Daten sehr spät am FPGA anliegen 
sollten müssen sie halt nochmal über ein FlipFlop abgetastet werden 
(Retiming), was aber dann halt einen Takt verzögerung reinbringt.Was du 
da machst ist ein derived Clock, das kann ins Auge gehen.

Taktung FPGA/CPLD

MFG
Falk

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man ISE die Verzögerung der externen Signale ggü. dem Takt im UCF 
mitteilen, damit das bei der Synthese berücksichtigt wird?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@   Andreas Schwarz (andreas)

>Kann man ISE die Verzögerung der externen Signale ggü. dem Takt im UCF
>mitteilen, damit das bei der Synthese berücksichtigt wird?

Ja, mit "input before"  und "output after" im UCF. Genaueres in der 
Doku.

MFg
Falk

Autor: Koblenzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Problem ist dass wenn ich bei steigende Flanke von CLK
z.B. /RW von CPU abfrage ist diese noch nicht da.
Es passiert nur mit nächste Flanke weil /RW mit verzögerung
(wenige ns nach CLK) kommt.

Ich verstehe nicht so ganz wie ich das machen soll...
Eine Beispiel wäre hilfsreich... (sorry, bin Anfänger :) )

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Koblenzer (Gast)

>Mein Problem ist dass wenn ich bei steigende Flanke von CLK
>z.B. /RW von CPU abfrage ist diese noch nicht da.
>Es passiert nur mit nächste Flanke weil /RW mit verzögerung
>(wenige ns nach CLK) kommt.

????

Wie soll den RW\ SOFORT da sein? Auch ein 1GHz IC hat Verzögerungen. 
Weisst du überhaupt wie synchrone Schaltungstechnik funktioniert?

>Ich verstehe nicht so ganz wie ich das machen soll...

WAS willst du KONKRET machen?

>Eine Beispiel wäre hilfsreich... (sorry, bin Anfänger :) )

Und dann mit nem Grafikcontroller und Z80 hantieren? Gewagt, gewagt.

MFG
Falk

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:
> @   Andreas Schwarz (andreas)
>>Kann man ISE die Verzögerung der externen Signale ggü. dem Takt im UCF
>>mitteilen, damit das bei der Synthese berücksichtigt wird?
> Ja, mit "input before"  und "output after" im UCF. Genaueres in der
> Doku.


Du meinst "offset [in|out] [before|after]". Ausfuehrliche Informationen 
gibts im Whitepaper "What are offset constraints?" WP237

Autor: Koblenzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<Weisst du überhaupt wie synchrone Schaltungstechnik funktioniert?

Wenn ich das gewusst hätte........

Also,
soll ich den CPU mit einem Takt versorgen, und alles anderes mit 
verzögertem takt???
Hat jemand Info zu diesem Thema???

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Koblenzer (Gast)

>Wenn ich das gewusst hätte........

>Also,
>soll ich den CPU mit einem Takt versorgen, und alles anderes mit
>verzögertem takt???

Nein!

>Hat jemand Info zu diesem Thema???

Ja, ein Grundlagenbuch lesen.

MfG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.