Hallo,
ich bin Anfänger in Verilog. Ich habe einen folgendes Problem.
Ich habe eine VGA-Verbindung vom FPGA zum Monitor aufgebaut und eine
LED, die ich per Taster ein- und ausschalten kann. Jetzt muss ich aber
nicht nur eine LED ein- und ausschalten können, sondern ein "Spielfeld"
in Form eines 7x6 großen Gitters programmieren. Kann jmd helfen? Das,
was ich bisher hab:
module LED(input [24:0] VGA_Ctrl, input data, input [15:0] PixColor,
output [15:0] VGA_Color);
parameter PosX = 10, PosY = 10;
wire [10:0] X;
wire [9:0] Y;
assign {Y,X} = VGA_Ctrl[21:1];
wire AtPosition = ((X[10:3] == PosX) && (Y[9:3] == PosY));
wire [15:0] BoxColor = (data == 1'b1) ? PixColor : 16'h0000;
assign VGA_Color = (AtPosition == 1'b1) ? BoxColor : 16'd0;
endmodule
Zaher schrieb:> und eine LED, die ich per Taster ein- und ausschalten kann.
Du meinst ein Feld, das mit einer bestimmten anderen Farbe als der
Hintergrund dargestellt wird? Denn eine LED ist üblicherweise ein
elektronisches Halbleiterbauteil...
> sondern ein "Spielfeld" in Form eines 7x6 großen Gitters programmieren.
Eher so wie ein Schachbrett mit durchgefärbten Bereichen? Oder eher ein
Gitternetz wie bei einem Oszilloskop?
> Das, was ich bisher hab:
Und damit steuerst du einen VGA-Monitor an?
Zu deiner ersten Frage: Ja!
Zweite: Eher ein Gitternetz, sodass ich mit der "LED" wählen kann,
welche Reihe ich wählen möchte.
Dritte: Nein, der Monitor wird anders abgesteuert. Hiermit pragrammiere
ich die Psoition und die Größe der "LED".
Ich habe es nun geschafft ein "Gitter" mit 7x6 Feldern zu "zeichnen"..
siehe im ANhang HLine für Horizontale Line und in der VGA -Datei die
Zuordnung der HLine.
Das Gitter geht von Anfang bis zum Ende des Bildschirms, ich möchte
dieses aber begrenzen. Hat jmd ne Idee, wie ich das machen kann,
sodassdie Linie an einer anderen Position beginnt und nicht von 0.
Raba Zaher schrieb:
> Das Gitter geht von Anfang bis zum Ende des Bildschirms, ich möchte> dieses aber begrenzen. Hat jmd ne Idee, wie ich das machen kann,> sodassdie Linie an einer anderen Position beginnt und nicht von 0.
Du musst nur in HLine für die X-Achse so ähnlich machen, wie du es schon
für die Y-Achse gemacht hast. z.B. wenn du im Bereich von 100 bis 500
Pixel deine horizontale Line haben willst, musst du X entsprechend
auswerten (100 <= X <= 500) oder abhängig von der X-Position eine fixe
Länge zeichnen.
Das gleiche nochmal für die Y-Achse in VertLinie.
> Außerdem würde ich gerne meine "LED" per Taster nach links und rechts> verschieben können.
Wenn du jeweils für die Parameter von LED zwei Variablen verwendest,
kannst du diese entsprechend der Tasterbetätigung hoch bzw. runter
zählen.
Die anderen LEDs müssen dann relativ von dieser Position gezeichnet
werden.