Hallo allerseits.
Es handelt sich hierbei um meine erste Erfahrung mit einem CPLD.
In einem XC95144XL sollen vier DDS Generatoren Platz finden. Die
Inkrementwerte sollen Byteweise aufgenommen werden und die aktuellen
Werte der Phasenregisters sollen Mit einer Wortbreite von 24 Bit
parallel nacheinander Ausgegeben werden um in einem nachgeschaltetem
CPLD mit ext. ROM eine Lookuptable durchlaufen.
Das ganze soll der Grundstock für einen Oscillator eines Synthesizers
werden.
Nun zum eigendlichem Problem. Das ganze ist an sich recht
speicherintensiv.
Und Register bzw. Speicherzellen verbrauchen Makrozellen, wenn ich es
recht verstanden habe. 144 MC sind also zu wenig. Ich arbeite mit dem
Schematic Editor. Um die Makrozellen zu umgehen bin ich den Umweg
gegangen und habe mir aus NAND Gattern ein D-Fliplop aufgebaut, und das
ganze 24mal für ein Phasenregister. Vier davon gehen nun mit ihren
Ausgängen au ein 24faches vierfach ODER.
Bei der synthetisierung (Ist zwar noch nicht fertig, aber lerning by
doing) wird angemeckert, dass Die Schaltung Glitch gefärdet ist.
Mit den Laufzeiten ansich läutet mir schon ein. Nur wenn der
"Systemtakt" verhältnismäßig langsam ist, haben doch die Signale der
einzelnen Arbeitsschritte ausreichend Zeit ihr Zustände zu erreichen,
oder?
Desweiteren, bin ich auf dem Holzweg mit der Lösung von Registern aus
"NAND Flip Flops"? Sicherlich könnte man ein externes SRAM nutzen, aber
bei 3200 Logic-Cells die da drin sind wäre das ja Perlen vor die Säue.
Vielen dank schonmal und euch allen einen guten Start ins Wochenende.
Christian
> Nur wenn der "Systemtakt" verhältnismäßig langsam ist, haben doch die> Signale der einzelnen Arbeitsschritte ausreichend Zeit ihr Zustände zu> erreichen, oder?
Ja, aber was, wenn deine Schaltung allergisch auf diesen Glitch
reagiert, weil daraus z.B. ein asynchrones Reset-Signal generiert wird?
Sobald du irgendwelche asynchrone Schweinereien machst (und dieses
NAND-FF ist sowas) kann dir fast alles passieren...
Deshalb ist man heutzutage sehr erpicht, ein Design komplett synchron zu
halten. Nur dann ist es wirklich berechenbar.
> XC95144XL
Der hat eben nur 144 Flipflops, das ist recht wenig...
> Desweiteren, bin ich auf dem Holzweg mit der Lösung von Registern aus> "NAND Flip Flops"?
Ja, so geht das nicht auf Dauer gut.
Nimm leichter ein kleines FPGA (Lattice MachXO oder Spartan 3AN).
> Sicherlich könnte man ein externes SRAM nutzen, aber> bei 3200 Logic-Cells die da drin sind wäre das ja Perlen vor die Säue.
Wo drin sind die 3200 LC?
Du machst gerade erste Erfahrungen in der Welt der programmierbaren
Logik? Na dann zunächst mal "Herzlich Willkommen". Die Tatsache, dass Du
ein Forum besuchst, zeigt, dass Du dir auch gern mal die Meinung von
langjährigen Entwicklern anhören möchtest. Du musst ja nicht tun, was
die sagen, aber interessant kann es trotzden sein. Nundenn, mein Beitrag
dazu:
-----(snip)-----
Ich arbeite mit dem Schematic Editor.
-----(snap)-----
Lass das lieber bleiben. Lerne eine Hardwarebeschreibungssprache
(Verilog oder VHDL), beschreibe die Logik als Modell und, um Himmels
willen, schreibe immer auch ein Testprogramm dafür.
-----(snip)-----
Um die Makrozellen zu umgehen bin ich den Umweg gegangen und habe mir
aus NAND Gattern ein D-Fliplop aufgebaut....
-----(snap)-----
Also mal abgesehen davon, dass Du mit NANDs wahrscheinlich RS-Flipflops
gebaut hast: No. Never. Never ever. Wenn Du etwas speichern musst, nimm
ein D-Flipflop. Und betreibe alle D-Flipflops deines Designs mit dem
gleichen Takt. Das nennt man dann ein synchrones Design, und so soll es
sein. Im übrigen könnte, je nach Baustein ein mit zwei NANDs aufgebautes
Flipflop mehr Ressourcen belegen als ein D-Flipflop.
-----(snip)-----
wird angemeckert, dass Die Schaltung Glitch gefärdet ist.
-----(snap)-----
Asynchrone Logik ist nunmal gefährdet, ganz egal, mit welcher Frequenz
man arbeitet.
-----(snip)-----
Desweiteren, bin ich auf dem Holzweg mit der Lösung von Registern aus
"NAND Flip Flops"?
-----(snip)-----
Auf jeden Fall, ganz egal wie die Aufgabe aussieht. Ich muss zugeben,
dass ich die Aufgabe nicht verstanden habe, weil mir einige Abkürzungen
nichts sagen. Wenn Du erklären würdest, was das Ganze tun soll am Ende
der Tage, können die vielleicht auch noch andere Teilnehmer Ratschläge
geben.
Ach ja, und Lothar, hast Du schonal etwas von der Firma Altera gehört?
Ich finde, Du berätst die Novizen immer ertwas einseitig.
Harald Flügel schrieb:> Ach ja, und Lothar, hast Du schonal etwas von der Firma Altera gehört?> Ich finde, Du berätst die Novizen immer ertwas einseitig.
Ich zitiere mich (ungern) selbst:
>> (Lattice MachXO oder Spartan 3AN)
Was kommt da zuerst? Wie auch immer: wenn Altera auch Bausteine mit
integriertem Config-Flash hat: ich habe auf jeden Fall nicht davon
abgeraten. Nur kann ich nicht zu etwas raten, von dem ich nicht
ausreichend viel weiß.
BTW: warum hast du die Firmen Actel, QuickLogic, SiliconBlue... nicht
erwähnt?
> Ich finde, Du berätst die Novizen immer ertwas einseitig.
Kommend von einem Xilinx CPLD XC95144XL ist doch immer noch der kürzeste
Weg der zu Xilinx... ;-)
Und wenn schon das CPLD keinen Config-PROM braucht, dann ist der nächste
Weg zu einem FPGA ohne Config-PROM.
Nur zu meiner Weiterbildung: wie heißt die entsprechende
Non-Volatile-FPGA Serie von Altera?
Hallo Lothar,
wie brauchen uns jetzt hier keinen Flammenkrieg zu liefern. Ich stimme
dir ja zu, dass die Aufgabe vermutlich mit einem FPGA am besten zu lösen
ist. Und ich ziehe meinen Hut vor dir, wenn Du anhand des ersten Posts
herausgefunden hast, dass der Mann keinen Platz für ein Config-Prom auf
der Platine hat. Und keinen Microcontroller, der das FPGA konfigurieren
könnte. Reife Leistung!
Die Non-Volatile-FPGA von Altera nennen sich übrigens Max II. Schreib
jetzt bitte nicht zurück, dass das keine echten FPGA wären weil sie
keine PLLs und keine RAM-Module haben. Oder kannst Du den Bedarf hierfür
auch anhand des ersten Posts erkennen. Dann knie ich wirklich nieder!
> Und ich ziehe meinen Hut vor dir, wenn Du anhand des ersten Posts> herausgefunden hast, dass der Mann keinen Platz für ein Config-Prom auf> der Platine hat. Und keinen Microcontroller, der das FPGA konfigurieren> könnte.
@ Christian
Das soll heißen: SRAM basierte FPGAs müssen beim Einschalten kofiguriert
werden. Sie brauchen daher einen Konfigurationsspeicher, wie z.B. ein
serielles SPI-Flash.
Diese Konfigurationsdaten könnten aber auch von einen uC z.B. aus einer
SD-Karte ins FPGA geschrieben werden. Damit wäre ein Firmware-Upgrade
ziemlich einfach: Karte tauschen --> andere Hardware...
@ Harald
Nein, ich habe das nicht herausgefunden, sondern "nur" den logischen
Schritt der Fa. Lattice nachvollzogen. Dort ist der Migrationspfad vom
CPLD zum FPGA der MachXO. Und das ist ein FPGA mit eingebautem
Config-PROM.