spartan 3a beispielprojekt

Gast #1229753
Lesenswert?

Hallo,
ich habe mir das Spartan-3A angeschafft, um mich in die programmierbare 
Logik einzuarbeiten, leider fehlt mir jegliches Grundwissen. Könnte mir 
wohl jemand ein einfaches Projekt, welches nur die LED's auf dem Board 
steuert, zur Verfügung stellen, damit ich einen Einstieg habe.

Grüsse der Anfänger
Gast #1229775
Lesenswert?

Das Board ist das Xilinx® Spartan®-3A Evaluation Kit.
Auf dem FPGA steht XC3S400A und es hat ein BGA Gehaüse.
Er hat ein 12Mhz Takt an PIN N9 IO_L11P_2/GCLK0.
Die Version von ISE ist 10.1 und es hat 4 LED's an B15 IO_L02P_0/VREF_0, 
C16 IO_L24P_1/A24, C15 IO_L24N_1/A25 und an D14 IO_L23N_1/A23, ich hoffe 
die PINs sind aussagekräfitg, so stehen sie zumindest im Schaltplan.
Moderator (Firma: Titel) Persönliche Seite #1229896
Lesenswert?

Es geht offenbar um das AVNET Board, das Xilinx-Board hat andere 
Takte...
Das FPGA auf dem Board ist ein XC3S400A-4FTG256C, also das "kleine" 
BGA-Gehäuse.

Im Anhang ein Projekt, schnell mal aufgesetzt (ISE9.1).
Für dich interessant sind die Dateien BlinkerS3A.vhd (der Code) und 
BlinkerS3A.ucf (die Pinzuordnung).


Für den besseren Wiedererkennungswert habe ich den OLD SCHOOL-Style für 
einen getakteten Prozess noch mit implementiert (und auskommentiert), 
ich verwende den nur noch ungern.
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #1230043
Lesenswert?

Thomas Stoll wrote:
> Hallo Lothar, weshalb verwendest du den OLD SCHOOL Style nur noch
> ungern? Gibts da gewisse Gründe?
Ja. Gründe siehe dort:
http://www.lothar-miller.de/s9y/archives/16-Takt-im-Prozess.html

Und so ein böses Latch wie hier:
1
   process (reset,clk) begin -- Sesitivity-List unvollständig, weil "and clk'event" fehlt
2
      if (reset='1') then
3
         out <= '0';
4
      elsif (clk='1') then   -- hier fehlt  "and clk'event" 
5
         out <= inp;
6
      end if;
7
   end process;
wird dir niemals mehr passieren.
Übrigens: diesen echt üblen Fehler wirst du wegen der unvollständigen 
Sensitivity-List in der Simulation nicht sehen, dort sieht alles gut 
aus: out ändert sich nur, wenn sich clk oder reset ändern :-o

Und weil
1
   process begin
2
      wait until rising_edge(clk);
3
      :
4
   end process;
keine solche Liste enthält, wird zwangsläufig korrekt simuliert. Zudem 
gibt es keinen asynchronen Reset mehr.
>>> Reset Costs More Than You Think! <<<
sagt Xilinx dazu. Und im 
Beitrag "Re: Fläche des Designs optimieren" bewahrheitet sich 
das.

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