wie groß muß das CPLD ungefähr sein ?

#1309476
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
Moderator (Firma: Titel) Persönliche Seite #1310269
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 ;-)
OP #1310393
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
#1310417
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.
OP #1310729
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.
Persönliche Seite #1310972
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).
OP #1311180
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
OP #1311254
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.
Moderator (Firma: Titel) Persönliche Seite #1311267
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.
#1311271
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
Gast #1311333
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.
OP #1311417
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.
#1311477
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
Persönliche Seite #1311640
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.
Persönliche Seite #1311643
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.
Moderator (Firma: Titel) Persönliche Seite #1311644
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]
Persönliche Seite #1318000
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.
Angehängte Dateien:
Persönliche Seite #1318056
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 :)
OP #1318281
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
Persönliche Seite #1318456
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.
#1318736
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
Gast #1318748
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. :-)
#1318775
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
Gast #1318778
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 :-)
Persönliche Seite #1319406
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
#1324647
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.
OP #1325968
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,...
Angehängte Dateien:
Persönliche Seite #1326190
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.
Moderator (Firma: Titel) Persönliche Seite #1326213
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.
Persönliche Seite #1326338
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.
Angehängte Dateien:
OP #1326737
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
Persönliche Seite #1327097
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%)
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #1329084
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 ;-)

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