mikrocontroller.net

Forum: FPGA, VHDL & Co. CPLD Glitch und Makrozellen


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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?

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
für jemanden der mit Schematic arbeitet und grosseres CPLD sucht ist 
Altera und Max II mit z.b EPM1270 doch perfekt, die 1270 LEs sollten 
reichen.

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

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.