mikrocontroller.net

Forum: FPGA, VHDL & Co. CPLD Auswahl und Design


Autor: Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

Ich beschäftige mich seit derzeit zum ersten Mal mit dem Programmieren 
eines CPLD/FPGA und bitte deshalb um Verständnis falls meine Fragen 
bisschen "dumm" klingen sollten.

Seit einiger Zeit arbeite ich nun an meinem Quartus-Modell, welches ich 
im Block-Editor erstellt habe und dieses funktioniert auch soweit in der 
"Functional Analysis". Nun wollte ich in dieser Woche einen 
Logikbaustein wählen und diesen bestellen umd mein Design auch am Oszi 
testen zu können.

Dabei sind einige Fragen aufgekommen, welche ich euch auf diesem Wege 
stellen würde und hoffe, dass ihr mir weiterhelfen könnt.

1) Ich habe mich dazu entschieden, dass ich einen CPLD der Sorte MAX II 
bestellen werde, was auch der "Fitter" in Quartus akzeptabel findet.
Nun habe ich im Quartus Handbuch gelesen, dass es sich auf jeden Fall 
empfielt auch eine "Timing Analysis" durchzuführen und dabei auf jedem 
Pfad z.B. Setup & Hold-Zeiten anzugeben um dann entweder die Classic 
Timing Analysis oder Time Quest Analyzer anzuschmeissen.
Ich weiß allerdings bloß, dass ich meinen einzigen Clock in meiner 
Quartus-Schematic File mit einer Frequenz von 40 MHz laufen lassen 
möchte. Dazu weiß ich auch, mit welcher Frequenz sich die Eingabedaten 
von meinen Inputs ändern.

Allerdings hänge ich im Moment dabei festzustellen welche zusätzlichen 
zeitlichen Beschränkungen ich brauche. Ich habe bisher immer gedacht, 
dass ich meine CLockfrequenz eingebe und Quartus dann von alleine 
überprüft ob das mit deinen Setup&Hold-Zeiten meines CPLD's hinhaut.

Könnt ihr mir vielleicht da auf die Sprünge helfen?

2) Meine Frage bezieht sich auf ein Funktionselement, welches ich 
eingebaut habe und ich fragen wollte, ob ihr der Meinung seid, dass das 
vom Design her in Ordnung ist. Und zwar soll es in etwa so wie ein RS-FF 
funktionieren, d.h. solange am Eingang eine Null anliegt wird auch am 
Ausgang eine Null ausgegeben, liegt eine Eins am Eingang dann wird diese 
gespeichert und solange am Ausgang ausgegeben bis, der Speicher manuell 
geresetet wird. In meinem Design habe ich dabei ein DFF bzw. Latch 
benutzt, bei dem sowohl der D- als auch der Clk bzw. Gate-Eingang das 
gleiche Signal kriegen und an den CLRN-Eingang mein Reset-Signal negiert 
angelegt.
Funktioniert auch soweit in der "Functional Analysis", ich weiß 
allerdings nicht, ob das vom Design her so "schön" ist und es deshalb 
vllt. schlauere Möglichkeiten gibt diese Funktionalität zu realisieren.

Vielen Dank für eure Hilfe!

Gruß

P.S.: Ich habe die Fragen auch im Altera-Forum gestellt, bisher 
allerdings noch keine Antworten erhalten. Deshalb probiere ich es auch 
auf diesem Weg.

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

Bewertung
0 lesenswert
nicht lesenswert
Newbie schrieb:
> Nun habe ich im Quartus Handbuch gelesen, dass es sich auf jeden Fall
> empfielt auch eine "Timing Analysis" durchzuführen .....
Das kannst du die ersten paar Tage im Leben als FPGA-Programmierer mal 
aussen vor lassen. Wichtiger ist, dass du konsequent auf ein synchrones 
design setzt und alle externen Signale einsynchronisierst. Allerdings 
geht damit schon dein erster Schaltungstrick in die Hose:
> In meinem Design habe ich dabei ein DFF bzw. Latch benutzt, bei dem
> sowohl der D- als auch der Clk bzw. Gate-Eingang das gleiche Signal
> kriegen
Damit verletzt du garantiert die Setupzeit des FFs. Das wird in der 
Praxis nicht stabil laufen.

> Funktioniert auch soweit in der "Functional Analysis"
Dort werden noch keine Laufzeiten durch Routing usw. und auch keine 
Setup-Zeitanforderungen berücksichtig.

Autor: Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für deine Antwort!

Gut für das Flipflop habe ich mittlerweile eine andere Lösung 
implementiert, die besser funktionieren sollte und auch synchron ist.

Ich wollte die Timing Analysis eigentlich in der Hinsicht durchführen, 
damit ich weiß, welchen Geschwindigkeitsgrad mein CPLD haben sollte, da 
der MAX II in 3 verschiedenen Arten vorliegt und diese unterschiedlich 
schnell sind. Daher habe ich mir gedacht, dass die Timing Analysis mir 
vielleicht darüber Aufschluss bringt, ob der langsamere C4/C5 reicht 
oder ich den schnelleren C3 benötige.

Aber vielleicht ist es schlauer, dass ich mir den schnelleren bestelle 
und ich damit auch im Nachhinein mein Design upgraden/schneller takten 
kann, wenn nötig.

Gruß!

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
40MHz ist gar nichts. Das sollte reichen. Auch fuer 16bit Zaehler. Mit 
der langsamen Ausfuehrung.

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.