FPGA Pin zuweisen

Gast #673507
Lesenswert?

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.
#673551
Lesenswert?

@ 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
#673698
Lesenswert?

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
#673759
Lesenswert?

@ 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
#673826
Lesenswert?

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

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