Frage von einem Anfänger: Habe ein Spartan-3A. Wie weise ich die Portnamen den Pins des FPGA's zu? Welche Files müssen erstellt werden, damit ein Programm auf einem FPGA läuft? egal wenns auch nur ein Blinker ist. Bin um jede Antwort dankbar! mfg
Wenn Du einen Spartan hast nehme ich an Du nutzt das WebPack von Xilinx. Wenn Du dort als erstes dein Top-Level-Design anklickst und dann in dem kleinen Fenster links in der Mitte ("Processes for"-Fenster) das Plus vor "user constraints" anklickst und in dem sich aufklappenden Menü auf "Assign package Pins" gehst bekommst Du ein Tool wo Du die Ports Deinen Pins zuweisen kannst. (Hierbei wird eine UCF Datei erzeugt, die man, wenn man das will, auch manuell erstellen könnte) Um Dein Design dann in den FPGA zu bringen musst Du (wieder im "Processes for"-Fenster) "generate programming file" starten. Dann wird ein BIT-File erzeugt welches du mit impact auf den FPGA laden kannst.
richtig; Xilinx, iMPACT Dann ist eine ucf-Datei zwingend, damit das Programm läuft? Habe die ucf-datei erstellt...gerade etwas überfordert.
@ Dave E. (eschlair) >Habe ein Spartan-3A. Wie weise ich die Portnamen den Pins des FPGA's zu? Entweder "old school" per UCF (eine Datei im Projektverzeichnis) oder über PACE, ein Programm zur Pinzuweisung. >Welche Files müssen erstellt werden, damit ein Programm auf einem FPGA >läuft? egal wenns auch nur ein Blinker ist. VHDL Source UCF mit Pinzuweisungen Daraus macht dann ISE im Synthesedurchlauf ein *.bit File, welches per IMPACT ins FPGA geladen werden kann. MfG Falk
Nun habe ich so ein .ucf erstellt - mithilfe der Spartan-Doku. Es gibt mir nun jedoch 2 Fehler an: ERROR:Parsers:11 - Encountered unrecognized constraint while parsing. ERROR:NgdBuild:19 - Errors found while parsing constraint file "test.ucf". Könnte jemand überprüfen, ob die .ucf-Datei ansatzweise stimmt? wäre sehr nett! code im Anhang, .ucf anschliessend: // Template UCF file created by the Project Navigator #PINLOCK_BEGIN # NET "CLK_50MHZ" LOC = "E12"| IOSTANDARD = LVCMOS33 ; NET "CI" LOC = "V8" | IOSTANDARD = LVTTL | PULLUP ; NET "RESET" LOC = "U10"| IOSTANDARD = LVTTL | PULLUP ; NET COUNTOUT<0> LOC = "W21" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; NET COUNTOUT<1> LOC = "Y22" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; NET COUNTOUT<2> LOC = "V20" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; NET COUNTOUT<3> LOC = "V19" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; NET COUNTOUT<4> LOC = "U19" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; NET COUNTOUT<5> LOC = "U20" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; NET COUNTOUT<6> LOC = "T19" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; NET COUNTOUT<7> LOC = "R20" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ; #PINLOCK_END -> edit: sorry die Datei will es nicht laden... entity test is Port ( CLK : in STD_LOGIC; RESET : in STD_LOGIC; CI : in STD_LOGIC; COUNTOUT : out STD_LOGIC_VECTOR (7 downto 0)); end test; architecture Behavioral of test is signal count: std_logic_vector(7 downto 0); begin
@ Dave E. (eschlair) >Könnte jemand überprüfen, ob die .ucf-Datei ansatzweise stimmt? wäre >sehr nett! Ich sehe erstmal keinen Fehler. Bei deinem VHDL fehlt der Inhalt, dann können auch keine Pins zugewiesen werden. Machs mal eher so.
1 | entity test is |
2 | Port ( CLK : in STD_LOGIC; |
3 | RESET : in STD_LOGIC; |
4 | CI : in STD_LOGIC; |
5 | COUNTOUT : out STD_LOGIC_VECTOR (7 downto 0)); |
6 | end test; |
7 | |
8 | architecture Behavioral of test is |
9 | |
10 | signal count: std_logic_vector(7 downto 0); |
11 | |
12 | begin
|
13 | |
14 | process(clk) |
15 | begin
|
16 | if reset ='0' then |
17 | count <= "0000000"; |
18 | elsif rising_edge(clk) then |
19 | if ci='1' then |
20 | count <= count +1; |
21 | end if; |
22 | end if; |
23 | end process; |
24 | |
25 | countout <= count; |
26 | |
27 | end. |
MFG Falk
hier wäre mal der Rest des Programmes (habe ihn extra weggelassen):
1 | begin |
2 | process (CLK, RESET,CI) |
3 | |
4 | begin |
5 | if RESET ='1' then |
6 | count <= "00000000"; |
7 | elsif CI='1' then |
8 | if CLK'event and CLK='1' then |
9 | |
10 | if count = "11111111" then |
11 | count <= "00000000"; |
12 | else |
13 | count <= count + 1; |
14 | end if; |
15 | end if; |
16 | end if; |
17 | |
18 | COUNTOUT <= not(count); |
19 | |
20 | end process; |
21 | |
22 | end Behavioral; |
deinen Code habe ich mal ausprobiert (end mit ";" und count <= "0000000" 8 nullen). Dennoch sind die 2 Fehler da. ERROR:Parsers:11 - Encountered unrecognized constraint while parsing. ERROR:NgdBuild:19 - Errors found while parsing constraint file "test.ucf". was ist "count", eine Variable?!? mfg
Hallo, du hast in der entity "clk" definiert. Im UCF File steht aber "clk_50MHz". Gruß Ralf
YEEEAAAAAHHHH! Mein erstes Programm auf dem ersten FPGA!! :) Vielen Dank an die, die mir da geholfen haben! Aber jetzt geht das programmieren erst richtig los. Also nochmals vielen Dank! mfg dave
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.