Cyclone II FPGA Starter Kit-Konfiguration scheint falsche Ergebnisse zu liefern

Ich habe versucht, mein Cyclone II FPGA (aus dem Starter Kit, EP2C20) zum Laufen zu bringen. Ich habe die Quartus II-Software dazu gebracht, an meinem Ubuntu-Setup zu arbeiten, und sie funktioniert FAST - ich kann Verilog schreiben, kompilieren und über den Programmierer auf mein Gerät übertragen. Ich kann meinen Code jedoch nicht dazu bringen, die FPGA-Ausgänge sinnvoll zu steuern. Hier ist im Wesentlichen der Code, den ich versuche:

module fpga(output LEDG[7:0);

assign LEDG = 1;

endmodule

Ich möchte, dass alle grünen LEDs auf dem FPGA aufleuchten. Was mache ich falsch?

Es tut mir schrecklich leid, wenn ich das hätte googeln können, ich habe gerade die letzte Stunde damit verbracht, es zu versuchen, bin aber nicht zu weit gekommen (es scheint nicht viel Beispiel-Verilog-Code für FPGAs im Internet zu geben, zumindest keinen Code, der sich mit Kleinigkeiten wie dem Aktivieren von LEDs befasst).

Ich kann es kaum erwarten, wirklich mit diesem Ding zu spielen, also würde ich mich über jede Hilfe freuen, diesen kleinen Schritt zum Laufen zu bringen!

Update : Der Quartus II Pin Planner zeigt, dass sich die Fitter Location für die Pins, die mir wichtig sind, von den im Datenblatt angegebenen Pins unterscheidet. Wie kann ich dies beheben, ohne alle Pins manuell an den richtigen Stellen neu zuzuweisen?

Sie müssen die Stifte manuell zuweisen, da die Tools sonst zufällig auswählen
Es sollte eine Pin-Beschränkungsdatei mit dem Starter-Kit geliefert werden, die alle Pin-Zuweisungen enthält (für Pins, die im Kit verwendet werden).

Antworten (1)

Dein Code ist nicht ganz richtig.

Wenn Sie etwas auf einen Wert setzen möchten, müssen Sie ein Register erstellen und es entsprechend einstellen und dann den Wert einem Ausgang zuweisen. Im Allgemeinen können Sie keine Anweisungen für die Synthese verwenden initial(sehen Sie in Ihrer Dokumentation nach), daher sind das Festlegen des Registers auf eine Konstante bei einem Reset-Signal oder die Verwendung eines ROM-Blocks Optionen.
Nehmen wir an, Sie möchten die LEDs blinken lassen, das ist aufregender, als sie nur einzuschalten. Angenommen, wir haben einen 16-MHz-Takt, um den Takt zu verlangsamen, damit die LEDs sichtbar blinken, müssen wir ihn unterteilen. Wenn wir ein 24-Bit-Zählregister auswählen, ist 16e6 / (2 ^ 24) = ~ 1 Hz, sodass die LEDs einmal pro Sekunde aktualisiert werden.

module fpga(
input clk,
output LEDG[7:0);

// output reg to set 
reg rOUT[7:0]
// counter reg to slow clock down
reg rCOUNT[24:0]

// this models the synchronous logic, the block is activated on each positive edge of clk
always(@ posedge clk)
begin

// add one to rCOUNT on each clock positive edge
rCOUNT <= rCOUNT + 1;

    // if rCOUNT equals 0xFFFFFF then increment rOUT by 1
    if(rCOUNT == 24'hFFFFFF)
    begin
        rOUT <= rOUT + 1;
    end

end

assign value of rOUT to LEDG so LEDs will light according to rOUTs current value
assign LEDG = rOUT;

endmodule

Beachten Sie, dass Sie beim Zuweisen eines Werts zu einem Register die Breite angeben müssen, da sonst standardmäßig die Standardbreite des Systems verwendet wird (z. B. 32 Bit).
Wenn Sie also ein 8-Bit-Register erstellen rOUTund es auf 1 setzen möchten, Angenommen, Ihre Synthesesoftware ermöglicht die Zuweisung eines Anfangswerts, den Sie schreiben würden, reg rOUT = 8'b11111111;oder reg rOUT = 8'hFF;
Dies wird alles klar, wenn Sie mehr lesen.

Über den Quartus-Pin-Planer bin ich mir nicht sicher (da ich Xilinx/Actel-FPGAs verwende), aber stellen Sie sicher, dass die Pin-Zuweisungen korrekt sind. Sie sollten in der Lage sein, sie entweder im Pin-Planer zu ändern oder die Beschränkungsdatei nach Bedarf manuell zu bearbeiten. Es wird alles in der (zweifellos sehr langen) Dokumentation enthalten sein.

Ein gutes Buch ist "FPGA Prototyping by Verilog Examples" (Pong P Chu), aber es gibt einige Beispiele, denen Sie folgen können - fpga4fun ist eine gute Seite mit vielen Beispielprojekten. Verbringen Sie etwas Zeit damit, die Konstrukte der Sprache zu lesen und kennenzulernen. Probieren Sie die Dinge zuerst im Simulator aus, um den korrekten Betrieb zu bestätigen, bevor Sie das FPGA programmieren.