Forum: FPGA, VHDL & Co. wie groß muß das CPLD ungefähr sein ?


von Stephan H. (stephan-)


Lesenswert?

Hallo Leute,

die Schaltung des LA vom Micha könnte gut einen CPLD vertragen, um die 
Logik etwas zu reduzieren.

Beitrag "8 Kanal 50Ms/s AVR Logic-Analyzer"

Wie groß müßte das CPLD sein ? 9572, 9536 oder 144 ?
Kann man das so pauschal schätzen ?

Danke

von Christian R. (supachris)


Lesenswert?

Naja, dazu nimmt man das Design in die ISE rein, stellt beim Typ auf 
95xx Auto und lässt es durchrechnen. Am Ende spuckt ISE aus, wieviele 
Makrozellen das Ding benötigt, folglich welcher Chip genommen werden 
muss. Das geht auch mit der kostenlosen WebPack Version. Dann simuliert 
man das ganze, bis die Logik korrekt läuft. Dazu braucht´s erst keine 
Hardware. Die kauft man dann, wenn man das Design grob fertig hat

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


Lesenswert?

> Wie groß müßte das CPLD sein ? 9572, 9536 oder 144 ?
Erster Schritt: Ein- und Ausgänge abzählen
Zweiter Schritt: Flip-Flops und andere Speicherglieder zählen

> 9572, 9536 oder 144 ?
Es gibt nicht nur Xilinx CPLDs...

BTW:
Man könnte sich einen Oszillator sparen, wenn auch ein unsymmetrischer 
20MHz Takt ausreichen würde (und so wie die Schaltung aussieht würde er 
das). Das kostet dann in der einfachsten Version (Schieberegister) 
allerdings 6 FFs ;-)

von Stephan H. (stephan-)


Lesenswert?

na mal schauen was ISE Webpack so her gibt. Macht ja nur Sinn, wenn die 
Erfassung per Schaltplan möglich wäre und entsprechende Symbole 
verfügbar sind. Lattice läßt sich ja auch symbolisch erfassen ( Gatter, 
Zähler etc.)
Das Design per VHDL zu erfassen bin ich nicht in der Lage. Würde mit 
Zeichnen aber auch nur Sinn machen, wenn der CPLD bezahlbar zB.5€ wäre.
Wenn dafür einer für 10 oder 15€ gebraucht würde, ist der Aufwand 
daneben. Deswegen die Frage.

Danke

von Christian R. (supachris)


Lesenswert?

Stephan Henning schrieb:
> na mal schauen was ISE Webpack so her gibt. Macht ja nur Sinn, wenn die
> Erfassung per Schaltplan möglich wäre und entsprechende Symbole
> verfügbar sind. Lattice läßt sich ja auch symbolisch erfassen ( Gatter,
> Zähler etc.)

Das geht auf jeden Fall. Wenn man will, kann man das ganze Design als 
Schematic erstellen.

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


Lesenswert?

> wenn der CPLD bezahlbar zB.5€ wäre.
Auf jeden Fall fliegen dann die 5V CPLDs aus dem Rennen:
1
XC 9572-15 TQ100  Xilinx CPLDs  12,75 €

Mehr Chancen hast du bei den 3,3V-Typen:
1
XC 95144XL TQ100   High-Performance CPLDs  6,60 €  
2
XC 9572XL  TQ100   High-Performance CPLDs  3,65 €
Quelle: Angelika

von Stephan H. (stephan-)


Lesenswert?

tja es ist wie immer.... der Bedarf regelt den Preis.

von Christian R. (supachris)


Lesenswert?

Naja, die einzigen getakteten Elemente da drin sind die Adresszähler, 
also 12 Bit gerade mal. Dazu brauchts 12 Makrozellen. Der Rest ist 
Kombinatorik...der billige 9572XL im PLCC84 Gehäuse reicht zumindest von 
den Makrozellen her locker. Anschlüsse müsste man mal durchzählen.

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


Lesenswert?

Stephan Henning schrieb:
> tja es ist wie immer.... der Bedarf regelt den Preis.
Hier regelt offenbar eher der Preis den Bedarf:
>> ... wenn der CPLD bezahlbar zB.5€ wäre. Wenn dafür einer
>> für 10 oder 15€ gebraucht würde, ist der Aufwand daneben.
 ;-)

von Christian R. (supachris)


Lesenswert?

Die 95XL sind übrigens 5V IO-tolerant, muss man also nur einen 3,3V 
Regler für die Betriebsspannung anbauen.

von Stephan H. (stephan-)


Lesenswert?

Lothar Miller schrieb:
> Stephan Henning schrieb:
>> tja es ist wie immer.... der Bedarf regelt den Preis.
> Hier regelt offenbar eher der Preis den Bedarf:
>>> ... wenn der CPLD bezahlbar zB.5€ wäre. Wenn dafür einer
>>> für 10 oder 15€ gebraucht würde, ist der Aufwand daneben.
>  ;-)

Jein, Arbeitszeit im Privaten Bereich.... ist ja eh Hobby.
Dafür würde sich beim Layouten so einiges sparen lassen, hoffe ich.
Bei 15€ für den CPLD und noch etwas Kleingeld für den JTAG würde ich 
dann aber schon überlegen.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Ich möchte mich erstmal in VHDL und das CPLD-Design einarbeiten (kenne 
mich damit überhaupt noch nicht aus). Dazu habe ich mir jetzt erstmal 
das Pollin-CPLD-Board bestellt.

Mein erstes größeres Projekt soll dabei ein LA sein, da mir der 
Logicport einfach zu teuer ist (nicht im Sinn von unverschämt, sondern 
eher im Sinne meines Geldbeutels).

Daher besteht auch Interesse an dieser Projektidee. Auf dem Polin-Board 
wird ein XC95144 (keine Ahnung, welche Geschwindigkeit - werde ich erst 
in den nächsten Tagen erfahren) verwendet.

MiniLA verwendet einen XC95288 (also doppelt so groß) und ich weiß 
(noch) nicht, ob das Design da hinein passt. Ich werde aber mal die Tips 
dieses Threads als Trockenübug ausprobieren. Ich gehe aber davon aus, 
dass ich auf die Nase falle (wegen zu wenig Platz).

von Stephan H. (stephan-)


Lesenswert?

@Christian,
lesen bildet. (nicht böse gemeint ) Aber,..
Der Mini LA ist nicht der von unserem Micha.
Der Mini La ist ein 32 Kanal 100 MS aus dem Netz, open Sorce und wurde 
hier gepimt. Der Wigbert hat mit dem andern Micha (oder der selbe ? ) 
einen Bausatz draus geacht. Es gibt noch einen Thraed hier wo es um den 
144 von Pollin geht. Die versuchen damit in richtung LA was zu machen.
Dort wärst Du richtig.
Der vom Micha ist ein 8 Kanal mit max. 50MS und hat weder mit dem einen 
noch mit dem anderen was zu tun. Mich stört nur die ganze diskrete 
Logik.
Ist nicht Soooooo viel, macht aber das Layout unnötig aufwendig. 
Deswegen will ich mal schauen os es Sinn macht die zu verpacken

von Stephan H. (stephan-)


Lesenswert?

wow, 5 Gb Software zur Installation... das ist 4 Mal Win XP ohne alles.
Ich bin beeindruckt und enttäuscht.
Ich hatte gehofft dem Micha etwas Arbeit abnehmen und Erleichterung 
anbieten zu können. Ich wurde doch arg enttäuscht.
Eine Schemaitische Erfassung der Funktion war ja damals ( vor 2000) mit 
"gallileo" schon möglich. Was mich "Heute" empfängt ist ja eigentlich 
nichts anderes. Nur das damals die Software auf eine CD passte. Heute 
passt sie gerade so auf eine DVD und kann auch nicht viel mehr. ( meine 
eigene Meinung, als nicht VHDL Experte der kleine Logikschaltungen 
vereinfachen möchte.
Ich will ein Schieberegister nehmen und bekomme 16 Stück angeboten. Doch 
nirgends ein Bezug auf "reale" Hadrware ala 74165 oder 74161. Nichts. Es 
sei denn, was ein SR8LE ist, gehört Heute zur Allgemeinbildung.
Ich hatte gehofft die Schaltung vom Michael mit etwas Aufwand in ISE zu 
zeichnen und heraus zu bekommen, ob es sich lohnt. Ich stellte fest:
Nach mehreren Wochen bis Monaten, möglicher Weise.
Schade eigentlich.
Dabei hat VHDL ja eigentlich viel gemeinsam mit ASM,C und Basic.

Da passe ich, ist für mich den Aufwand nicht wert.
Ich denke der Micha ist da doch wesentlich konsequenter als andere.
Er nimmt Lochratser.

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


Lesenswert?

> Dabei hat VHDL ja eigentlich viel gemeinsam mit ASM,C und Basic.
Da muß ich jetzt aber doch einschreiten... ;-)

VHDL ist eine System- bzw. Hardwarebeschreibungssprache. Die 
Schnittmenge mit irgendwelchen Software-Programmiersprachen liegt hier 
bestenfalls in der Verwendung des ACSII-Zeichensatzes.

> Es sei denn, was ein SR8LE ist, gehört Heute zur Allgemeinbildung.
Nein, aber es gibt Datenblätter, in denen das beschrieben ist. Genauso 
wie es Datenblätter gibt, in denen das Verhalten von 74xx Bausteinen 
beschrieben ist. Aber es wäre ausgekochter Stumpfsinn, in einem 
CPLD/FPGA Gatter der 74xx Reihe nachzubilden.

> Da passe ich, ist für mich den Aufwand nicht wert.
Schade (für dich)  :-(
Du sperrst dich da selber aus einer hochinteressanten Technik aus.

von pfft.. (Gast)


Lesenswert?

>Wenn dafür einer für 10 oder 15€ gebraucht würde, ist der Aufwand
daneben. Deswegen die Frage.


Bei einem Stueck ist diese frage eh irrelevant. Kauf dir ein Eis und 
vergiss das Ganze.

von Falk B. (falk)


Lesenswert?

@  Stephan Henning (stephan-)

>wow, 5 Gb Software zur Installation... das ist 4 Mal Win XP ohne alles.
>Ich bin beeindruckt und enttäuscht.

Nimm die alte 4.2 oder 6.3, die reichen DICKE!

>Ich will ein Schieberegister nehmen und bekomme 16 Stück angeboten. Doch
>nirgends ein Bezug auf "reale" Hadrware ala 74165 oder 74161. Nichts. Es

Vergiss bei CPLDs die alten TTL ICs. Du bekommst REINE Gatter und 
Schieberegister, viel besser.

>Dabei hat VHDL ja eigentlich viel gemeinsam mit ASM,C und Basic.

Kaum, das sieht nur so aus.

MfG
Falk

von Christian R. (supachris)


Lesenswert?

Naja, über den Button Symbol Info bekommst du direkt zum Schematic 
Symbol das PDF Datenblatt aufgerufen. Sooo schwer ist das nicht. Und bau 
ja kein asynchrones Design ;)

von TheMason (Gast)


Lesenswert?

auch wenn ich mich nu was weit ausm fenster lehne ...

ich hab ein fpga board gebaut mit welchem sich ebenfalls ein la 
realisieren ließe, und ich denke der aufwand dürfte auch nicht allzu 
groß sein (bis auf die beschaffung der teile, die bekommt man nicht ganz 
so einfach, außer man bestellt bei digikey, da gibts alles benötigte).
eckdaten des boards :

 - spartan 3-400
 - 1mb sram (66/100mhz)
 - avr (mega644p)
 - 2 uarts

eigentlich ist das board als audio-board konzipiert, und von daher gibt 
es noch :

 - audio-codec
 - midi-schnittstelle

das board ließe sich ohne weiteres zweckentfremden. aber bevor es soweit 
wäre präsentier ich ohnehin erstmal das (fertige) audio-board. da gibt 
es dann noch die schmankerl :

 - 128x64 grafik display mit touch
 - i2c eeprom
 - dataflash (2mbyte)

in einer nächsten verion (schon in grober planung) kommt dann noch usb 
und ne sd karte mit drauf (evtl auch ein größerer prozessor, richtung 
arm7 oder xmega und evtl sdram)

aber werde mich zu gegebener zeit in einem gesonderten thread nochmal zu 
wort melden.

von Stephan H. (stephan-)


Lesenswert?

nun, das mit den Datenblättern klingt ja interesant. Das schaue ich mir 
doch glatt mal an. Wenigstens Versuchsweise.

@Lothar und Falk,

warum seht ihr so wenig Gemeinsamkeiten mit C, ASM und Basic ??
Was ist das denn das hier: ( aus dem Forum hier )

  GREEN <= "000010";
        RED <= "000000";
        BLUE <= "000000";
        IF RowCounter=100 THEN
          RED <= "111111";
          GREEN <= "000010";
          BLUE <= "000000";
        END IF;
        IF LineCounter=100 THEN
          GREEN <= "000010";
          RED <= "000000";
          BLUE <= "111111";
        END IF;

Wenn nicht C ?
Sind doch nur Zustandsbeschreibungen von Ports die von einem Zähler ( 
Rowcounter und Linecounter) abhängig sind. Ließt sich wie C. Dabei kann 
ich nur ASM und Basic. Sicher gibt es wesentlich komplexere Geschichten.
Ich habe auch keinen "Windows Assi" erwartet der mich fragt was ich 
machen will und an die Hand nimmt. Ich schau mir das mit den 
Datenblättern mal an. Villeicht wird ja doch noch was draus. Wäre ja eh 
nur Ergeiz. Verdiene meine Brötchen mit anderen Sachen. Und zu Hause 
fällt mir nichts ein wozu man ein FPGA brauchen könnte.

@pfft,
nein ich kaufe kein Eis, gehe nicht über Los und ziehe auch keine 1000€ 
ein. Wenn Du gelesen hättest, wäre Dir aufgefallen das es hier um den LA 
Entwurf vom Micha geht und nicht um EIN Stück. Das könnte für die 
Forumuser die kleine Version des MiniLa werden. Nicht jeder braucht 32 
Kanäle bei 100MS.  Ich wollte versuchen meinen Beitrag dazu zu leisten 
obwohl ich nicht so fit bin wie Du offensichtlich zu sein scheinst.
Meine letzte programmierbare Logik habe ich 1995 für einen 22V10 auf dem 
Amiga mit einer Software von Maxon gemacht. Nobody is perfect.
Ich hoffe du verzeihst meinen Bildungsrückstand.

von Falk B. (falk)


Lesenswert?

@  Stephan Henning (stephan-)

>warum seht ihr so wenig Gemeinsamkeiten mit C, ASM und Basic ??

Weil sie nicht da sind, wenn man VHDL versteht.

>Was ist das denn das hier: ( aus dem Forum hier )

Zuweisungen sind trivial. Die SCHEINBAR sequentielle Abarbeitung von If 
Then wird am Ende in Hardware aber PARALLEL ausgeführt, mit einigen 
Konseqeunzen, über die ein "mal fix" auf VHDL umgeschulter Softwerker 
gern stolpert. ;-)

>Wenn nicht C ?

VHDL sieht eher nach Pascal aus.

MFG
Falk

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Stephan Henning schrieb:
> @Christian,
> lesen bildet. (nicht böse gemeint ) Aber,..
> Der Mini LA ist nicht der von unserem Micha.
Habe ich auch nie behauptet. Es ging mir hier vor allem um den 
Vorschlag, für den 50MS-LA einen XC95144 zespektive das Pollin-Board zu 
verwenden.

> Der Mini La ist ein 32 Kanal 100 MS aus dem Netz, open Sorce und wurde
Das ist mir klar.

> hier gepimt. Der Wigbert hat mit dem andern Micha (oder der selbe ? )
> einen Bausatz draus geacht. Es gibt noch einen Thraed hier wo es um den
> 144 von Pollin geht. Die versuchen damit in richtung LA was zu machen.
> Dort wärst Du richtig.
Kenne ich, muß aber nicht die einzige Quelle für gute Ideen sein.
Ich möchte lernen (ja, das tue ich auch durch lesen). Daher sehe ich mir 
gerne mehrere Ideenansätze an.

> Der vom Micha ist ein 8 Kanal mit max. 50MS und hat weder mit dem einen
> noch mit dem anderen was zu tun. Mich stört nur die ganze diskrete
> Logik.
> Ist nicht Soooooo viel, macht aber das Layout unnötig aufwendig.
> Deswegen will ich mal schauen os es Sinn macht die zu verpacken
Und genaus aus diesem Grund schreibe (und lese) ich hier mit - da die 
notwendige Logik nicht so "kompliziert" ist, wie die von miniLA. Ist für 
den Anfang besser, als gleich den miniLA zu verstehen und dann auf 8 bit 
zu kastrieren.

Den letzten Satz schrieb ich auch nur als Zukunftsvision. Als Erklärun, 
wieso ich hier gerne den XC95144 sehen würde.

Ich hoffe, jetzt sind alle Klarheiten bedeitigt und die Gemüter wieder 
beruhigt.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Stephan Henning schrieb:
> Da passe ich, ist für mich den Aufwand nicht wert.
Schade, wäre ein schönes Anschauungobjekt für mich gewesen.

Mache ich vielleicht doch selber (mit teilweisem Händchenhalten der hier 
Anwesenden). Daraus könnte sich aber auch was anderes entwickeln; muss 
also nicht Michas LA sein.
Da ich noch nie etwas mit VHDL zu tun hatte, kann sich das aber
hinziehen. Ich werde erstmal das Buch "VHDL-Synthese" von 
Reichard/Schwarz durcharbeiten. Eventuell fällt da ja das bischen Logik 
für diese LA ab.

Dazu dann aber einen eigenen Thread (bzw den über den Pollin LA).

> Ich denke der Micha ist da doch wesentlich konsequenter als andere.
Wieso? Er hat das gemacht, was er kann. Handfeste Logik, wie ich sie 
auch kenne.

> Er nimmt Lochratser.
Ich möchte hier gerne virtuelle Lochraster verwenden. Die Kosten und der 
Aufwand ist dabei eher zweitrangig. Ich will daraus lernen und das kann 
durchaus mehr Wert sein.

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


Lesenswert?

@  Stephan Henning (stephan-)
> warum seht ihr so wenig Gemeinsamkeiten mit C, ASM und Basic ??
Weil die Denkweise eine komplett andere sein muß, um zu einem 
lauffähigen, sinnvollen und schönen Design zu kommen.
Um nur mal dein kopiertes Beispiel kurz aufzugreifen:
1
        GREEN <= 1;
2
        :
3
        IF RowCounter=100 THEN
4
          GREEN <= 2;
5
          :
6
        END IF;
7
        IF LineCounter=100 THEN
8
          GREEN <= 3;
9
          :
10
        END IF;
Wenn der RowCounter und LineCounter gerade mal gleichzeitig 100 erreicht 
haben, dann ist z.B. das Signal  GREEN sofort 3. Die Zwischenstände 1 
und 2 werden in diesem Fall nicht auftauchen bzw. zugewiesen.
Auf einem uC wäre ja GREEN erst 1, dann ein paar Prozessortakte später 
2, um später zum Schluss erst 3 zu werden.

EDIT:
> Ließt sich wie C.
Eher wie ein BASIC-Derivat...
In C sähe das so aus:
[l]
        GREEN = 1;
        :
        IF (RowCounter==100) {
          GREEN = 2;
          :
        }
        IF (LineCounter==100) {
          GREEN = 3;
          :
        }
[/c]

von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

so ich habe mich mal versucht.
Wie sagte Falk:
> über die ein "mal fix" auf VHDL umgeschulter Softwerker..

Könnte das so was werden ??
Frequenzeilerkette geht auf den Mux
dann 1 FF mit CE ( Artikel Takterzeugung ) der den Takt für den Zähler 
macht.

Oder liege ich völlig daneben ??

Danke

von Christian R. (supachris)


Lesenswert?

So macht man das nicht. Man verwendet immer den gleichen Takt und gibt 
nur die CE entsprechend in Abständen frei. Die CE-Signale kann man mit 
einem Zähler erzeugen.

von Stephan H. (stephan-)


Lesenswert?

so stehts hier geschrieben :
http://www.mikrocontroller.net/articles/Taktung_FPGA/CPLD
> "Clock Enable"
der org. Takt wird nicht weiter benötigt. Er wird nur geteilt
und entspr. des Mux auf den Zähler gelegt. Sozusagen ein 
"programmierbarer Teiler" und ein Zähler.

von Thomas R. (tinman) Benutzerseite


Angehängte Dateien:

Lesenswert?

Stephan Henning schrieb:
> Hallo Leute,
>
> die Schaltung des LA vom Micha könnte gut einen CPLD vertragen, um die
> Logik etwas zu reduzieren.
>
> Beitrag "8 Kanal 50Ms/s AVR Logic-Analyzer"
>
> Wie groß müßte das CPLD sein ? 9572, 9536 oder 144 ?
> Kann man das so pauschal schätzen ?
>
> Danke

Da ich faul bin habe es im Quartus gemacht - für den MAX II 240 den ich 
hier habe es gemacht.

54 pins werden benötigt und bei dem MAX II 31 LEs. Es passt auch in den 
alten EPM7064 PLCC84 ( 5V device ), dann aber 43 LEs.

Auf Xilinx umgerechnet wird also der 9572 reichen, vq100 gehäuse.

von Christian R. (supachris)


Lesenswert?

Ist ja gruselig...beim Quartus gibts auch diese TTL Grab-Geschichte? Oh 
weh oh weh. Sollte man vielleicht mal eher in VHDL 
schreiben....erleichtert auch die Simulation. Ich mach ja auch einiges 
in Schematic bei Xilinx, aber sowas haarsträubendes dann auch nicht :)

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Christian R. schrieb:
> Ist ja gruselig...beim Quartus gibts auch diese TTL Grab-Geschichte? Oh
> weh oh weh. Sollte man vielleicht mal eher in VHDL
> schreiben....erleichtert auch die Simulation. Ich mach ja auch einiges
> in Schematic bei Xilinx, aber sowas haarsträubendes dann auch nicht :)

hehe, ja es gibt beides - wie schmeatic und die max plus2 librarys ( TTL 
like ).

Hier gings jetzt um 'design' der 1:1 den ttl original entspricht - für 
jeden der VHDL nicht kennt.

Damit ist sowas in 10 min fertig - ohne simulation :)

von Christian R. (supachris)


Lesenswert?

Thomas R. schrieb:

> Hier gings jetzt um 'design' der 1:1 den ttl original entspricht - für
> jeden der VHDL nicht kennt.
>
> Damit ist sowas in 10 min fertig - ohne simulation :)

Och, wie uncool ;)

von Stephan H. (stephan-)


Lesenswert?

toll, und was ist jetzt mit meiner Idee ??
"Clock Enable" oder was oder wie ??

@Thoams, du bist gemein, ich quäle mich hier mir generischen Symbolen..
Und Quartus kann das mit "echten" TTL.  .... gut zu wissen. :-)

und Ihr coolen Jungs, wie schauts aus ??
Passt es ?? Oder nicht ?

Falk?? Andreas ??

der Comparator ist auch fertig kommt dann auch hier her.

Danke

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Stephan Henning schrieb:
>
> Jein, Arbeitszeit im Privaten Bereich.... ist ja eh Hobby.
> Dafür würde sich beim Layouten so einiges sparen lassen, hoffe ich.
> Bei 15€ für den CPLD und noch etwas Kleingeld für den JTAG würde ich
> dann aber schon überlegen.

http://shop.ebay.com/merchant/scottjoh

ich habe schon mehrmals Xilinx sachen bei den gekauft, er hat gerade 6 
xc9572XL-7C für 7 $ + 7$ versand. Dann hast du für 10 eur gleich 6 stk.

von Falk B. (falk)


Lesenswert?

@  Stephan Henning (stephan-)

>toll, und was ist jetzt mit meiner Idee ??
>"Clock Enable" oder was oder wie ??

Passt so nicht.

>und Ihr coolen Jungs, wie schauts aus ??

Schlecht ;-)

>Passt es ?? Oder nicht ?

Nein.

Auf deine MUX müssen folgende Signale

Für geteilte Takte, musst du per Logik ein CE mit der Länger eines 
Systemtaktes erzeugen. Wie? Ganz einfach. Am Ausgang deiner Mux kommt 
ein FF, aber mit dem Dateneingang an die Mux, gataktet vom Systemtakt. 
Über ein logische Verknüpfung von Musausgang(=FF-Eingang) und FF-Ausgang 
kann man die Flanke des Taktes erkennen, sprich

CE = FF_E & !FF_A

Für vollen Takt muss eine Dauer 1 erzeugt werden, die musst du dann noch 
in diese Logik reinfummeln

CE = (FF_E & !FF_A) | (!MUX_A & !MUX_B & !MUX_C)

Um das ganze noch ein wenig in Richtung Max. Takt zu trimmen packt man 
hinter dieses CE noch ein FlipFlip zu Timingauffrischung (Pipelining). 
Dieses gepufferte CE geht dann an deinen Zähler. Der Eingang D0 der MUX 
ist dann ungenutzt.

MFG
Falk

von J.H. (Gast)


Lesenswert?

"Nimm doch die alte ISE"

Das habe ich schon so oft gelesen, daß Version 4 (?) alles hat was man 
für cpld und Spartan3 braucht und die eben NICHT Gigabyte groß ist. Die 
neuen Ise stürzen bei mir zudem häufig mal ab beim installieren (bzw 
fressen sich fest) - und letztens sogar beim deinstallieren.

Und so oft hab ich schon gesucht und gesucht.

Wenn mir einer sagen könnte, wo ich eine brauchbare alte Version, die 
nciht so riesig ist noch bekomme, wäre ich wirklich dankbar. Und ich 
denke das geht wohl mehreren so die sie nciht mehr auf der Platte haben 
aus früheren Tagen. :-)

von Falk B. (falk)


Lesenswert?

@  J.H. (Gast)

>"Nimm doch die alte ISE"

Nehm's nen Alten . . . ;-)

>Das habe ich schon so oft gelesen, daß Version 4 (?) alles hat was man
>für cpld und Spartan3 braucht und die eben NICHT Gigabyte groß ist. Die

Nein, die 4.2 kann kein Spartan3, das kann erst die 6.3. Die ist aber 
auch noch human.

>Und so oft hab ich schon gesucht und gesucht.

Gabs bis vor einiger Zeit bei Xilinx.

http://ece.wpi.edu/courses/ee3801/main.html

Hier hab ich es mal runtergeladen, aber mein Vista meine, das wäre keine 
gültige 32 Bit Anwendung. Downloadfehler oder Vista-Gezicke?

>nciht so riesig ist noch bekomme, wäre ich wirklich dankbar. Und ich

Suche nach Webpack und 6.3. Denk dran, du braucht leider auch den 
Spervice Pack 3 dafür, welcher grösser ist als das Original :-0
Aber mit ~200MB immer noch human.

MFG
Falk

von J.H. (Gast)


Lesenswert?

Danke dir!

Werde den download probieren und dann auch etwas zu Vista Gezicke sagen 
können. Ich hoffe ja doch noch, daß das (inzwischen?) klappen wird.

Was da jetzt genau Gigabyte Weise Platz verschlingt weiß wahrscheinlich 
nicht mal Xilinx selber oder?

Aber soll wieder on topic gehen :-)

von Christian R. (supachris)


Lesenswert?

Naja, ich muss zugeben, die 11.2 (System Edition) läuft super. Paar 
kleinere Bugs, aber da gibts immer einen WorkAround. Absturz hatte ich 
keinen. XP und Vista, je 32 Bit klappt jedenfalls sehr gut. Erstaunlich 
bei einer so frischen Version,...

von Stephan H. (stephan-)


Lesenswert?

jo ich habe jetzt die 6.3. Deutlich schlanker !! Und reicht.
Die 4.x hatte ich kurz drauf, da habe ich aber die Shematic nicht 
gefunden, es sei denn sie war da noch nicht erfunden.
Na dann, es geht weiter.

von Falk B. (falk)


Lesenswert?

@  Stephan Henning (stephan-)

>jo ich habe jetzt die 6.3. Deutlich schlanker !! Und reicht.

Wo hast du die runtergeladen? Bei Xilinx ist die nicht mehr zu finden 
:-(

MFG
Falk

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> @  Stephan Henning (stephan-)
>
>>jo ich habe jetzt die 6.3. Deutlich schlanker !! Und reicht.
>
> Wo hast du die runtergeladen? Bei Xilinx ist die nicht mehr zu finden
> :-(
>
> MFG
> Falk

ehm, wie wärs mit :

http://www.xilinx.com/webpack/classics/wpclassic/index.htm

und dann noch für Spartan XL / Classics gibts :

http://www.xilinx.com/tools/classics.htm

von J.H. (Gast)


Lesenswert?

Empfiehlt es sich, auf 8.2 oder 9.1 zu setzen? Das wäre ja für Spartan 
3Es Vorraussetzung.

Im Blick auf Größe und zuletzt natürlich auch Bugs/Stabilität?

von Thomas R. (tinman) Benutzerseite


Lesenswert?

J.H. schrieb:
> Empfiehlt es sich, auf 8.2 oder 9.1 zu setzen? Das wäre ja für Spartan
> 3Es Vorraussetzung.
>
> Im Blick auf Größe und zuletzt natürlich auch Bugs/Stabilität?

siehe

http://www.mikrocontroller.net/articles/Xilinx_ISE:_Hinweise_zu_Versionen

und

http://www.xilinx.com/ise/products/classics/parts_list.htm

von Christian R. (supachris)


Lesenswert?

J.H. schrieb:
> Empfiehlt es sich, auf 8.2 oder 9.1 zu setzen? Das wäre ja für Spartan
> 3Es Vorraussetzung.
>
> Im Blick auf Größe und zuletzt natürlich auch Bugs/Stabilität?

Wenn, dann die 9.2.0.4 die lief sehr stabil. Ich hab trotzdem jetzt die 
11.2 hab dazu auch mal was in den Artikel geschrieben.

von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

so, der Micha hat das Design geändert, von daher wird es für mich hoffe 
ich doch etwas "einfacher"...

http://www.avr.roehres-home.de/logikanalyzer/pic/minilog80_s.png

anbei die "neue" Idee

Links sind die beiden FF welche die 80 MHz teilen.
Die und die 80 Mhz gehen auf den Mux.
Vom Mux dann auf das FF "refresh"..hoffe ich...
Rechts der Zähler für die RAM´s und der Inverter für den "W" vom 74151.
Ich hoffe ich habe es...
Wenn das jetzt so geht, versuche ich den Komparator..
Es fehlt noch einiges, aber wenn das hier schon nicht geht,...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Lothar Miller schrieb:
> In C sähe das so aus:
>
1
>         GREEN = 1;
2
>         :
3
>         IF (RowCounter==100) {
4
>           GREEN = 2;
5
>           :
6
>         }
7
>         IF (LineCounter==100) {
8
>           GREEN = 3;
9
>           :
10
>         }
11
>
Müßte es nicht (angenommen getakteter Prozess) so ausssehn in C:
1
TEMP_GREEN = 1;
2
:
3
IF (RowCounter==100) {
4
    TEMP_GREEN = 2;
5
:
6
}
7
IF (LineCounter==100) {
8
   TEMP_GREEN = 3;
9
:
10
}
11
GREEN = TEMP_GREEN;

Dann gäbe es (im Ergebnis) auch keine Zwischenstufen und die lezte 
Zuweisung gewinnt ;)

Ansosnten würde ich das Design einfach in VHDL versuchen umzusetzen, das 
ist am Anfang etwas gewöhnungsbedürftig dürfte aber gerade zur 
Beschreibung einfacher Logik leichter umzusetzen sein als irgenwelche 
Primitiven per Hand zu verdrahten.

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


Lesenswert?

Jaja, schon.
Die Frage war aber, ob sich C und VHDL nicht zum Verwechseln ähnlich 
sähen?
Und ich habe da nur die anderen Syntaxelemente der if-Abfrage 
aufgeführt.
>> C:     if (a==b) {...};
>> VHDL:  if (a=b) then ... end if;
Und da kann ich, abgesehen vom if, kaum Gemeinsamkeiten im 
verwendenten ASCII-Raum erkennen ;-)


BTW:
> Müßte es nicht (angenommen getakteter Prozess) so ausssehn in C:
Solange ich nicht weiß, woher diese beiden Counter kommen, bringt auch 
die temporäre Variable nichts. Wenn die Counter nämlich von ausserhalb 
(ISR) geändert werden (können), dann hat auch dein Beispiel eine 
Definitionslücke.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Du hast recht :-\ Naja bin noch nicht so fit leider in VHDL :)
Zumal bei VHDL ja auch die runde Klammer noch weggelassen werden kann 
...

von Läubi .. (laeubi) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich hab mal versucht das ganze in VHDL zu beschreiben. Das einzige was 
fehlt ist noch das der Takt vom AVR vorgegeben wird, da weiß ich nicht 
wie man da am besten die Flankenerkennung macht.
Ansonsten ist das VHDL, das ISE Projekt und die Summary HTML Dateien im 
ZIP enthalten.
Bitte nicht hauen wenn es noch nicht ganz optimal ist, simmulieren müßte 
man das ganze wenn der AVR Clock drinne ist auch noch mal.
1
Summary
2
 Design Name   minilog 
3
 Fitting Status   Successful 
4
 Software Version   J.33 
5
 Device Used   XC9572-7-TQ100  
6
 Date    7- 8-2009, 10:39AM 
7
8
RESOURCES SUMMARY
9
Macrocells Used  39/72  (55%)
10
Pterms Used    102/360  (29%)
11
Registers Used   29/72  (41%)
12
Pins Used        53/72  (74%)
13
Function Block 
14
Inputs Used     79/144  (55%)
Passt also noch ganz gut rein, ggf. könnte man sogar ein SPI Interface 
noch vorsehen um das RAM auszulesen.

von Stephan H. (stephan-)


Lesenswert?

Läubi,
welche Version hast Du genommen ?? Meine 6.3i will das nicht laden.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

ISE 9.1 mach einfach ein neues Projekt und stell den  XC9572-7-TQ100 
als Target ein. dann Add existing Source und die VHDL Datei dazu.

von Stephan H. (stephan-)


Lesenswert?

Läubi,
jo, hatte es inzwischen schon selbst heraus gefunden.
Da muß man sich nur noch Gedanken mit der Pinzuweisung machen.
Die 84 Pin Version reicht ja auch aus.
Hast Du das über die Shematic erfasst oder nur in HDL ??
Wenn der CPLD den Adresszähler bis A14 haben soll (32kx8 RAM )
dann müßte doch nur die Zeile geändert werden, oder?

> generic(addresswidth : integer := 12; datawidth : integer := 8);
Aus der 12 einfach ne 14 und gut ?

Danke

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Das hab ich in VHDL geschrieben.
> Aus der 12 einfach ne 14 und gut?
jupp dann hast du von A0...A14, aber wie gesagt ist noch nicht getestet 
und das externe Clocking durch den AVR fehlt noch. (und irgenwie hab ich 
noch nicht rausgefunden wo er einem die Maximale Taktrate angibt)

von Stephan H. (stephan-)


Lesenswert?

Läubi .. schrieb:
> und das externe Clocking durch den AVR fehlt noch. (und irgenwie hab ich
> noch nicht rausgefunden wo er einem die Maximale Taktrate angibt)

ich denke, was Du suchst findest Du unten bei "Optional Implementation 
Tools"

von Läubi .. (laeubi) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hab mal versucht die Flankenerkennung dazuzupacken, und ein UCF erzeugt 
was einen minimalen Takt von 83,33... MHz fordert, das scheint er noch 
ganz gut zu packen.
Vieleicht mag ja trozdem mal einer von der versierteren Leuten 
drüberschauen.
1
*************************  Mapped Resource Summary  **************************
2
3
Macrocells     Product Terms    Function Block   Registers      Pins           
4
Used/Tot       Used/Tot         Inps Used/Tot    Used/Tot       Used/Tot       
5
42 /72  ( 58%) 112 /360  ( 31%) 93 /144 ( 65%)   32 /72  ( 44%) 54 /72  ( 75%)

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


Lesenswert?

Das wird so nicht gehen:
1
  wait until rising_edge(clk_80);
2
  countUP <= '0';
3
  :
4
    sample <= clk_int & sample (2 downto 1);
5
    case clk_div is
6
    -- AVR gibt den Takt vor!
7
    when "00" => 
8
        -- Flanken Erkennung wenn 3x hinteinander
9
        -- eine logische 1 und vorher ein Low Pegel
10
        if clk_int = '1' and sample = "110" then
11
           countUP <= '1';
12
        else
13
        -- Reset bei logisch 0 am 
14
        -- manuellem Clock Eingang
15
           sample  <= (others => '0');
16
        end if;
Denn die meiste Zeit ist hier die else erfüllt. Das Schieberegister 
sample wird also immer zurückgesetzt. Und weil es dann wieder ungleich 
"110" ist, wird es beim nächsten Takt wieder zurückgesetzt....
Machs einfach so:
1
  wait until rising_edge(clk_80);
2
  countUP <= '0';
3
  :
4
    sample <= clk_int & sample (2 downto 1);
5
    case clk_div is
6
    when "00" =>  -- AVR gibt den Takt vor!
7
        -- Flanken Erkennung steigende Flanke am clk_int
8
        if sample = "110" then
9
           countUP <= '1';
10
        end if;


Das solltest du auch nochmal ansehen:
1
      -- Takt ungeteilt
2
      when "11" =>
3
         divider <= 0;
4
         countUP <= '1';
In diesem Fall ist countUP immer '1', das bringt dich dann dort in 
Schwierigkeiten:
1
      if countUP = '1' then
2
         RAM_WE <= '0';
3
      end if;
Denn WE wird zwischen dem Umschalten der Adressen nicht mehr inaktiv, es 
werden also eigentlich keine Daten geschrieben, weil es keine steigende 
Flanke am RAM WE-Pin mehr gibt.
Ein böser (aber evtl. wirksamer) Trick wäre, in diesem Fall das 
original-Taktsignal mit zum WE dazu zu ver-UND-en. Dann bekommst du 
wieder einen Pegelwechsel.
1
  Port (...
2
      RAM_WE     : out STD_LOGIC;
3
   :
4
signal  RAM_WEint  : STD_LOGIC;
5
   :
6
      if countUP = '1' then
7
         RAM_WEint <= '0';
8
      end if;
9
   end process;
10
11
   RAM_WE <= RAM_WEint and clk80;

Aber das wird eine Simulation ans Tageslicht befördern ;-)

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.