Frequenzverdoppler in VHDL?

Moderator (Firma: Titel) Persönliche Seite #1125478
Lesenswert?

Ja, und nein.
Allein durch eine HDL-Beschreibung wird dir das kaum gelingen. Du mußt 
die Komponenten selber instantiieren und verdrahten.


Du kannst auf einem FPGA z.B. entsprechende Hardwarekomponenten nutzen 
(DLL, DCM, PLL und wie sie immer heißen). Diese Bauelemente haben u.U. 
Einschränkungen bezüglich der Eingangstaktfrequenz (min-max) und des 
Tastverhältnisses. Das wäre der korrekte und reproduzierbare Weg.

Du kannst aber auch die traditionellen 
XOR-Gatterlaufzeit-Frequenzverdoppler einbauen. Das ist aber ein recht 
übler und kaum nachvollziehbarer Weg, denn schon bei der nächsten 
Maskenrevision verdoppelt das Ding dann u.U. nicht mehr.
Gast #1125484
Lesenswert?

>Du kannst aber auch die traditionellen XOR-Gatterlaufzeit-
>Frequenzverdoppler einbauen.

War bei mir mal aus der Not geboren und in einem XC95xxx umgesetzt.
Funktioniert aber schon lange ganz prächtig in der Serie.
Moderator (Firma: Titel) Persönliche Seite #1125503
Lesenswert?

ARM-Fan wrote:
>>Du kannst aber auch die traditionellen XOR-Gatterlaufzeit-
>>Frequenzverdoppler einbauen.
> War bei mir mal aus der Not geboren und in einem XC95xxx umgesetzt.
> Funktioniert aber schon lange ganz prächtig in der Serie.
Hatte ich mal in einem kleinen Test-Design in einem Spartan II drin. 
Beim Wechsel auf den Spartan3 gings dann erst mal nicht mehr. Ich musste 
da nochmal Hand anlegen.   :-/
Fazit: ja, die XOR-Geschichte geht.
Aber nicht einfach so mit einer HDL-Beschreibung.
Gast #1125635
Lesenswert?

du könntest auch ne Kette von Invertern verwenden, druch die du den 
Quelltakt schiebst. und dann verknüpfst du den Eingang der Kette mit 
z.B. dem Ausgang des 6. Inverters XOR. dann erhältst du bei jedem 
Flankenwechsel des ursprünglichen Signals einen Puls, der so lange ist, 
wie die Laufzeit durch z.B. 6 Inverter.
Nachteil: Pulsbreite ist natürlich abhängig von der Technologie, aber 
durch die Anzahl der Inverter kannst dir ja die Impulsbreite ein wenig 
"anpassen"

Okay, schön ist das nicht, aber es funktioniert.
Musst nur bei der Synthese drauf achten, dass die die nicht die 
Inverterkette wegoptimiert
Moderator (Firma: Titel) Persönliche Seite #1125714
Lesenswert?

Schrotty wrote:
> du könntest auch ne Kette von Invertern verwenden, druch die du den
> Quelltakt schiebst. ...
> Musst nur bei der Synthese drauf achten, dass die die nicht die
> Inverterkette wegoptimiert
Das wird nicht sooo einfach sein, da ist Handarbeit gefragt (manuelle 
Instantiierung der Inverten). Und gerade bei CPLDs geht dann für einen 
simplen Inverter gleich ein ganzer Produktterm flöten   :-/
Gast #1125732
Lesenswert?

ich hatte mal in irgend nem alten xilinx dokument die schaltung wie im 
anhang gefunden. die funktioniert auch ganz gut, macht aber auch ein 
sehr asymmetrischen takt hat aber den vorteil dass sie nicht 
wegoptimiert wird. hatte im S3A aber das problem, dass ich es noch 
negieren musste um negative spikes zu erzeugen, damit ich auch die 
rising_edge nutzen konnte. ansonsten wollten die verwendeten FFs nicht 
immer reagieren.
Angehängte Dateien:
Gast #1125750
Lesenswert?

@Lothar:
Na ja, schwer ist es nicht gerade. muss halt nen Sack voller Inverter 
spendieren und in einem PCLD sind die natürlich rar ;-)
Das würde in etwa so aussehen:
1
signal delay  : std_logic_vector(6 downto 0);
2
attribute syn_keep : boolean;
3
attribute syn_keep of delay : signal is true;
4
attribute NOMERGE : string;
5
attribute NOMERGE of delay : signal is "TRUE";
6
...
7
fOut <= delay(6) XOR fIn;
8
delay(0) <= fIn;
9
delay(1) <= not delay(0);
10
delay(2) <= not delay(1);
11
delay(3) <= not delay(2);
12
delay(4) <= not delay(3);
13
delay(5) <= not delay(4);
14
delay(6) <= not delay(5);
15
...

Unter der Annahme, dass pro Inverter ca 500ps draufgehen, bekommst hier 
schon nen Impuls von 3ns. Damit kann man zumindest im FPGA intern schon 
was anfangen.
Gast #1125866
Lesenswert?

@Schrotty:

Im Prinzip funktioniert soetwas, das Problem hierbei ist jedoch, dass
man dafür sorgen muss, dass der Placer die LUTs immer an den gleichen 
Stellen
platziert. Hierzu benögtigt man weitergehende "LOCATE"-Constraints 
(heißen
bei A und X wahrscheinlich anders).

Gruß,
SuperWilly
Moderator (Firma: Titel) Persönliche Seite #1125879
Lesenswert?

> dass man dafür sorgen muss, dass der Placer die LUTs immer an den
> gleichen Stellen platziert.
Nein, man muß seine Anforderungen einfach so stellen, dass einem 
irgendein wie auch immer gearteter Puls ausreicht   ;-)

Und auch mit Plazierungsrichtlinien wird das Design nicht wesentlich 
portabler. Nicht von X nach A und genausowenig von S2 nach V4.
Gast #1125890
Lesenswert?

Ja klar, über die delays des Routings kann man nix sagen. Aber 
genausowenig kann man das bei der Schaltung mit dem FF. Die funktioiert 
ja auch nur über Laufzeiten und Routings. Also etwa gleich bescheiden. 
Nur mit dem Unterschied, dass die Synthese sowas nicht wegoptimiert. Der 
Unterschied bei dem Vorschlag mit der Inverterkette ist halt der, dass 
ich ein wenig an der Impulsbreite "drehen" kann. Was jetzt nicht heisst, 
dass das ordentlich reproduzierbar ist. Oder hab ich da was falsch 
erkannt?
Ich denke, der einzige "saubere" Weg geht über eine PLL. Alles andere 
ist Krampf ;-)

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