Forum: FPGA, VHDL & Co. Einsteigerfrage zu MAX II pin togle mit Aussetztern ?


von D.J. P. (djlinux)


Angehängte Dateien:

Lesenswert?

Ich togle einfach einen Pin (das dachte ich zu mindestens)
und möchte das 3.3V Rechtecksignal als Takt für einen (retro) MC6803 
benutzen.

Ist mein erster Verilog Kode falsch oder was macht der MAXII Chip
in der Zeit wo der pin nicht getogelt wird ?

Als Eisteiger bin ich dankbar für jeden leicht verständlichen Hinweis.

DJ
1
module blink_led(clk, led_out);
2
 
3
input clk;
4
output led_out;
5
6
reg [7:0] counter;
7
reg led_out;
8
9
always @(posedge clk) 
10
  if(counter == 255)
11
    begin
12
    counter <= 0; 
13
    led_out <= ~led_out;
14
    end
15
  else
16
    begin
17
    counter <= counter + 1'b1; 
18
    end 
19
 
20
endmodule

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Ich vermute mal dass die Messung nicht die Realität zeigt. Guck Dir das 
mal mit einem Oszi an. Oder mit einem besseren Oszi, hier scheint das 
MSB zufällig zu kippen.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

wieviele Takte sind denn das im Taktblock?
Und wieviele im Bereich, wo nichts passiert?
Und passiert da auch dann nichts, wenn Du es feiner auflöst? (DSO)

von Gustl B. (-gb-)


Lesenswert?

Oder das sind Artefakte durch zu seltene Abtastung. Unten links steht 
0,1MS/s was für 80kHz (das steht im Bildnamen) zu wenig ist. Mach mal 
1MS/s oder mehr.

: Bearbeitet durch User
von D.J. P. (djlinux)



Lesenswert?

Ich bedanke mich recht herztlichst für Eure Hilfestellung am DSO lag es 
nicht!

Auf der Rückseite des MAXII boards ist ein 50MHz Quarts
ich habe nun im Pinplaner pin 62 auf 64 umgestellt
und alle Frequenzen die ich durch das "togeln" erzeuge
sehen jetzt richtig also ohne irgend welche Lücken aus.

Ich muss mal im Datenblatt schauen was das mit den clk pins auf sich hat
bzw. warum Pin 62 ging (wenn auch mit Lücken im erzeugtem Signal)
wenn es doch eigentlich Pin 64 sein muss.

Danke und gute Nacht :-)

DJ

: Bearbeitet durch User
von D.J. P. (djlinux)


Lesenswert?

Mein FPGA Cyclone II Chip hat extern auch einen 50 Mhz Quartz
kann aber mit externen Tackt x 6 theoretisch intern mit 300 Mhz
(optimalste kürzesten Laufzeit) arbeiten.
Sorry wenn ich mich da irre bzw. etwas falsch interpretiert habe.

Mein CPLD MAX II hat auch extern 50 MHz aber keinen Tacktmultiplikator.

Was ist aber wenn ich "allways" bei steigender clk Flanke und
"allways" bei fallender clk Flanke den gleichen Ausgangspin "togle".

Habe ich dann wirklich eine doppelt so schnelle Frequenz
an dem Ausgangspin oder sind die (maximal kürzesten)
internen Laufzeiten an die 50 MHz gebunden?

Würde es ja einfach probieren und nicht hier Fragen
aber ich kann z.Z. "nur" maximal 25 MHz messen
was für mein Retrocomputing, mehr als 4 MHz gibt es da nicht,
auch vollkommen ausreicht.
(Mit Ausnahme der 25 MHz VGA pixelclock)

Danke daher wenn mir das einmal Jemand erklären könnte
also ob "allways" auch bei steigender und fallender clk Flanke geht.

Das oder so ähnlich hat man glaube ich ja auch bei den ersten
DDR2 RAM's so gemacht also steigende und fallende Flanke
als zwei Arbeitstakte für den Speicher genutzt.

DJ

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

D.j. P. schrieb:
> Was ist aber wenn ich "allways" bei steigender clk Flanke und
> "allways" bei fallender clk Flanke den gleichen Ausgangspin "togle".

Was passiert wenn Du ihn nur zur steigenden Flanke toggelst? Dann ist 
das die halbe Frequenz. Also eine Periode ist zweimal toggen. Mit beiden 
Flanken bekommst Du dann die gleiche Frequenz aber nicht die Doppelte.

Ja, DDR verwendet beiden Flanken, dadurch wird aber nicht der Takt 
höher, sondern die Information die je Takt übertragen wird.

: Bearbeitet durch User
von D.J. P. (djlinux)


Lesenswert?

Gustl B. schrieb:
> Mit beiden Flanken bekommst Du dann die gleiche Frequenz
> aber nicht die Doppelte.

Das ist mir Klar wenn ich aber vorher nur bei steigender Flanke "toggle" 
bei 50 MHz externen Quartz dann habe ich ja 25 MHz am Ausgangspin
und wenn ich nun auch noch bei fallender Flanke togle dann 50MHz also 
"doppelt" so schnell als vorher.

Deiner Antwort kann ich also entnehmen "es geht man kann" allways bei 
VHDL für beide Flanken nutzen.

Hätte ja auch sein können das man sich für steigende
oder fallende Flanke entscheiden hätte müssen.
(Was für ein krummer Satzt)

Ist halt alles neu für mich und da stellt man manchmal so merkwürdige 
Fragen.

Vor lauter Datenblatt lesen komme ich noch nicht so richtig zu Verilog & 
CO.

Dankeschön für Deine Antwort jetzt bin ich etwas schlauer als vorher.

DJ

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Naja man braucht dafür glaube ich ein DDR FlipFlop.

Man kann natürlich den Takt auch direkt auf einen Augang geben.

Wenn Du noch nicht sehr tief in Verilog drin bist würde ich mir nochmal 
überlegen ob Verilog oder VHDL. Hier in Europa ist VHDL verbreiteter.

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


Lesenswert?

D.j. P. schrieb:
> Deiner Antwort kann ich also entnehmen "es geht man kann" allways bei
> VHDL für beide Flanken nutzen.
Nur in der Simulation... ?

> Hätte ja auch sein können das man sich für steigende oder fallende
> Flanke entscheiden hätte müssen.
Natürlich kann man im Inneren eines FPGAs nur die Komponenten verwenden, 
die da drin sind. Und die Flipflops hinter den LUTs können nur 
entweder auf die steigende oder die fallende Flanke konfiguriert 
werden.

: Bearbeitet durch Moderator
von S. R. (svenska)


Lesenswert?

D.j. P. schrieb:
> Tackt
> allways

Das schreibt man "Takt" (ohne c) und "always" (nur ein l).

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.