www.mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA Pin zuweisen


Autor: D. E. (eschlair)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: D. E. (eschlair)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
richtig; Xilinx, iMPACT

Dann ist eine ucf-Datei zwingend, damit das Programm läuft? Habe die 
ucf-datei erstellt...gerade etwas überfordert.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: D. E. (eschlair)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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.
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

process(clk)
begin
  if reset ='0' then
    count <= "0000000";
  elsif rising_edge(clk) then
    if ci='1' then
      count <= count +1;
    end if;
  end if;
end process;

countout <= count;

end.

MFG
Falk

Autor: D. E. (eschlair)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier wäre mal der Rest des Programmes (habe ihn extra weggelassen):
begin
   process (CLK, RESET,CI)

  begin
     if RESET ='1' then
        count <= "00000000";
     elsif CI='1' then
           if  CLK'event and CLK='1' then
                   
      if count = "11111111" then
        count <= "00000000";
        else
                   count <= count + 1;                       
               end if;            
           end if;
     end if;
  
  COUNTOUT <= not(count);
  
  end process;

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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

du hast in der entity "clk" definiert.
Im UCF File steht aber "clk_50MHz".

Gruß

Ralf

Autor: D. E. (eschlair)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.