Hallo, ich versuche gerade den CPLD-Code (leider noch in Abel geschrieben) eines ehemaligen Kollegen zu verstehen. Dafür müsste ich teils genau wissen, was nach bestimmten Befehlen im Speicher liegt. Gibt es die Möglichkeit, wie z.B. bei C++, sich die genauen Speicherinhalte (zu bestimmten Variablen) anzeigen zu lassen? Ich benutze das Webpack in der Version 10.1 von Xilinx. Thx
Julian Gerhard schrieb: > Hallo, > > ich versuche gerade den CPLD-Code (leider noch in Abel geschrieben) > eines ehemaligen Kollegen zu verstehen. Dafür müsste ich teils genau > wissen, was nach bestimmten Befehlen im Speicher liegt. Gibt es die > Möglichkeit, wie z.B. bei C++, sich die genauen Speicherinhalte (zu > bestimmten Variablen) anzeigen zu lassen? Ich benutze das Webpack in der > Version 10.1 von Xilinx. > > Thx Modelsim mit einer nach VHDL/Verilog backannotierten Netzliste?!
Kann ich denn den Abel-Code in Modelsim testen? Fpga Kuechle schrieb: > Modelsim mit einer nach VHDL/Verilog backannotierten Netzliste?! was meinst du genau damit? geht bitte davon aus, dass ich der totale Anfänger bin :)
Jey Soon schrieb: > Kann ich denn den Abel-Code in Modelsim testen? > > Fpga Kuechle schrieb: >> Modelsim mit einer nach VHDL/Verilog backannotierten Netzliste?! > > was meinst du genau damit? geht bitte davon aus, dass ich der totale > Anfänger bin :) Nein -ja. Modelsim kann kein Abel, aber du kannst dein in Abel modellierte Design mit modelsim simulieren. Aber zuerst, es ist absolut notwendig FPGA entwicklung nicht mit C-programmierung zu verwechseln. Es gibt keinen debug-Mode, es wird simuliert. Und was in C Variablen sind in FPGA Speicherzustände, z.B. FlipFlop. Um den Abel-code mit dem Quasi-Standard Simulator modelsim zu simulieren, synthetisierts du aus dem Abel code eine netzliste (Verdrahtung der CPLD internen Elemente). Diese Netzliste kann wieder nach VHDL umgewandelt werden (backannotiert) und dann mit modelsim (der nur VHDL,Verilog oder systemC(?) kann) simuliert. KlickKlack Anleitung hier: http://www.kxcad.net/electronic_Xilinx_guide/mergedProjects/cpldnew/html/cf_design_flow_tutorials.htm MfG,
Beim edaboard gibt es einen ABEL nach VHDL Compiler. Habe ihn selber noch nicht ausprobiert. http://www.edaboard.com/ftopic55558.html
@ Kuechle OK, vielen Dank für den Link, werde ich mir mal aufmerksam durchlesen. Kurze weiterführende Frage... was macht folgender Abel-Code: MODULE test CLK pin 5; S0 pin 11; ![L0..L3] pin 33, 34, 35, 36; [Q22..Q0] node istype 'reg'; Counter = [Q22..Q0]; //was passiert hier genau EQUATIONS Counter.CLK = CLK; //was passiert hier genau Counter := Counter + 1; [L0..L3] = [Q22..Q19]; //was passiert hier genau END Ausserdem: Kann mir jemand ein Buch oder eine Homepage zur Abel-Sprache empfehlen? Bin über google nicht wirklich fündig geworden. MfG
Hallo Jey Soon, also zu deinem Code: >Counter = [Q22..Q0]; //was passiert hier genau Definiert ein 23Bit langes Signal Q22 (MSB) / Q0 (LSB) >Counter.CLK = CLK; //was passiert hier genau Counter soll ein geclocktes Element sein. Der Clockeingang fuer Counter ist Signal CLK. >Counter := Counter + 1; Counter(.D) ist gleich Counter(.Q) + 1; also ein Upcounter > [L0..L3] = [Q22..Q19]; //was passiert hier genau Die obersten 4 Bits deines Counters werden den Signalen L0 bis L3 zugewiesen (kombinatorisch), die Reihenfolge wird umgedreht: Q22->l0; Q19 -> Q19 Ende der Zauberei Gruss
Einen hab ich noch deine Pins L0 bis L3 sind Low-Aktiv -> ein High auf Q22 wird zu einem Low auf L0...
Jey Soon schrieb: > Ausserdem: Kann mir jemand ein Buch oder eine Homepage zur Abel-Sprache > empfehlen? Bin über google nicht wirklich fündig geworden. Es gibt http://de.wikipedia.org/wiki/Advanced_Boolean_Equation_Language mit Link. Xilinx hat in der ISE-Hilfe eine ABEL-Dokumentation, siehe http://www.xilinx.com/support/answers/10786.htm.
noch sone Frage: [Q22..Q0] node istype 'reg'; => deklariert mir ein 23Bit-langes (nur intern verwendetes) Register, soweit so gut... Q23 node istype 'reg' => deklariert mir ein Register, aber wie "lang" ist dieses Register???
und noch sone Frage: when Command1 == 0 then itime[3..0]:= [DATA3,DATA2,DATA1,DATA0]; else itime[3..0]:=itime[3..0].FB; was bedeutet die extention ".FB"? Konnte nur "Register Feedback" als Erklärung finden und kann damit nichts anfangen... THX
Auch die AVR haben einen PIN und PORT, das eine ist das was ausgegeben wurde und im Ausgaberegister steht, das andere der tatsächliche Zustand des Ausgangs, der könnte ja auch von außen auf GND gezogen sein. Daher .FB wie Feedback des Registerausgangs auf die AND/OR-Matrix und .PIN für den tatsächlichen Pin-Zustand.
Thx Christoph, allerdings verstehe ich deine Aussage nicht^^ Kannst du das nochmal für nen Anfänger erklären. Es dreht sich hier übrigens um einen CPLD der Marke Xilinx und die Programmiersprache Abel nicht um AVR. THX
http://www.latticesemi.com/lit/docs/manuals/abel_ref.pdf auf Seite 79 sind diese .FB und .PIN erklärt. .FB ist der Logikpegel den der Port eigentlich haben sollte und der intern auch so ansteht, .PIN ist der tatsächliche Pegel am Pin, auch wenn er von außen auf low gezogen ist obwohl er intern high sein sollte. Es hängt wie hier auch beschrieben ist, vom CPLD ab, ob diese Möglichkeiten überhaupt gegenben sind.
Ah ok, dann denke verstehe ich's jetzt: when Command1 == 0 then itime[3..0]:= [DATA3,DATA2,DATA1,DATA0]; else itime[3..0]:=itime[3..0].FB; Command1 wird ein paar Zeilen vorher gesetzt, und zwar ist Command1=0 wenn bestimmte Pins den richtigten Pegel haben (Quasi ne Abfrage ob die Daten die anliegen auch wirklich dem gewünschten Register (iTime) zugewiesen werden können). Das bedeutet quasi einfach nur: Liegen nicht die Richtigen Daten/Pegel am CPLD an, fülle das Register mit den internen Defaultwerten für dieses Register, richtig? Allerdings verstehe ich dann nicht so recht, durch was diese Defaulwerte/Pegel definiert sind, kann diese der Programmierer selbst festlegen? ODer sind diese durch den Typ des CPLD festgelegt. Ich habe z.B. folgende Zeilen in dem Code: XILINX property 'INIT=S itime0'; XILINX property 'INIT=S itime1'; XILINX property 'INIT=R itime2'; XILINX property 'INIT=R itime3'; XILINX property 'INIT=R itime4'; XILINX property 'INIT=S itime5'; XILINX property 'INIT=S itime6'; XILINX property 'INIT=R itime7'; Sind das die Defaultpegel, die bei .FB angenommen werden?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.