Schon wieder synchron/asynchron.

Gast #635395
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???
1
begin
2
  CPUCLK <= CharColumn(0);                   -- CPU Clock 3.5MHz
3

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

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

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

14
  process( CLK )                       -- Global Clock 14MHz
15
  begin
16
    if CLK'event and CLK = '1' then
17
      Tick <= not Tick;                  -- 7MHz
18
      .............
19
    end if;
20
  end process;
21

22
  process( CLK )
23
  begin
24
    if CLK'event and CLK = '1' then 
25
      if Paper = '1' then
26
        if CharColumn = 5 and Tick = '0' then
27
          VideoRead <= '1';
28
          VideoRead1 <= '1';
29
        elsif CharColumn = 5 and Tick = '1' then
30
          VideoRead2 <= '1';
31
          VA <= std_logic_vector( "0110" & VerCounter(4 downto 0) & HorCounter(4 downto 0) );
32
        elsif CharColumn = 6 and Tick = '0' then
33
          VA <= std_logic_vector( "0" & VerCounter(4 downto 3) & CharRow & VerCounter(2 downto 0) & HorCounter(4 downto 0) );
34
        elsif CharColumn = 6 and Tick = '1' then
35
          VA <= ( others => 'Z' );
36
          VideoRead1 <= '0';
37
        elsif CharColumn = 7 and Tick = '0' then
38
          VideoRead <= '0';
39
          VideoRead2 <= '0';          
40
        end if;
41
      end if;        
42
    end if;
43
  end process;
44
end Behavioral;
#635419
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
Gast #635456
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 :) )
#635468
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
#635476
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
Gast #635576
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???

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.