mikrocontroller.net

Forum: FPGA, VHDL & Co. IBUF und IOB mit dem selben xps_gpio ansteuern


Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bin nun gerade dabei mich in das EDK 10.1 einzuarbeiten.
Ich würde nun gern mit dem selben xps_gpio Interface (welches eine 
Breite von 2 Bit hat) sowohl einen Ausgang (also eine LED), als auch 
einen Eingang (Schalter auf dem Spartan3E Starter Kit Board) ansteuern.

Mein UCS-File:
############################################################################
## This system.ucf file is generated by Base System Builder based on the
## settings in the selected Xilinx Board Definition file. Please add other
## user constraints to this file based on customer design specifications.
############################################################################

Net sys_clk_pin LOC=c9;
Net sys_clk_pin IOSTANDARD = LVCMOS33;
Net sys_rst_pin LOC=K17;
Net sys_rst_pin IOSTANDARD = LVCMOS33;
Net sys_rst_pin PULLDOWN;
## System level constraints
Net sys_clk_pin TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 20000 ps;
Net sys_rst_pin TIG;

## IO Devices constraints

#### Module RS232_DCE constraints

Net fpga_0_RS232_DCE_RX_pin LOC=R7;
Net fpga_0_RS232_DCE_RX_pin IOSTANDARD = LVCMOS33;
Net fpga_0_RS232_DCE_TX_pin LOC=M14;
Net fpga_0_RS232_DCE_TX_pin IOSTANDARD = LVCMOS33;

Net xps_gpio_0_GPIO_IO<0> LOC=F12;
Net xps_gpio_0_GPIO_IO<0> IOSTANDARD = LVCMOS33;
Net xps_gpio_0_GPIO_IO<1> LOC=H18;
Net xps_gpio_0_GPIO_IO<1> IOSTANDARD = LVCMOS33;
Net xps_gpio_0_GPIO_IO<1> PULLDOWN;

# wenn ich für den Eingang ein eigenes GPIO-Interface nehme - dann geht es...???
Net xps_gpio_1_GPIO_IO_I_pin<0> LOC=N17;
Net xps_gpio_1_GPIO_IO_I_pin<0> IOSTANDARD = LVCMOS33;
Net xps_gpio_1_GPIO_IO_I_pin<0> PULLDOWN;

Die Fehlermeldung von map:
#----------------------------------------------#
# Starting program map
# map -o system_map.ncd -pr b -ol high -timing system.ngd system.pcf 
#----------------------------------------------#
Release 10.1.03 - Map K.39 (nt)
Copyright (c) 1995-2008 Xilinx, Inc.  All rights reserved.
PMSPEC -- Overriding Xilinx file <C:/Xilinx/10.1/EDK/data/Xdh_PrimTypeLib.xda>
with local file <c:/Xilinx/10.1/ISE/data/Xdh_PrimTypeLib.xda>
Using target part "3s500efg320-4".
Writing file system_map.ngm...
Running directed packing...
ERROR:Pack:1107 - Unable to combine the following symbols into a single IOB
   component:
     PAD symbol "xps_gpio_0_GPIO_IO<1>" (Pad Signal = xps_gpio_0_GPIO_IO<1>)
     PULL symbol "xps_gpio_0_GPIO_IO<1>_PULLDOWN" (Output Signal =
   xps_gpio_0_GPIO_IO<1>)
     TBUF symbol "iobuf_1/OBUFT" (Control Signal = xps_gpio_0_GPIO_IO_T<1>)
     BUF symbol "iobuf_1/IBUF" (Output Signal = xps_gpio_0_GPIO_IO_I<1>)
   An IO component of type IOB was chosen because the IO contains symbols and/or
   properties consistent with output or bi-directional usage and contains no
   other symbols or properties that require a more specific IO component type.
   Each of the following constraints specifies an illegal physical site for a
   component of type IOB:
     Symbol "xps_gpio_0_GPIO_IO<1>" (LOC=H18 [Physical Site Type = IBUF])
   The component type is determined by the types of logic and the properties and
   configuration of the logic it contains. Please double check that the types of
   logic elements and all of their relevant properties and configuration options
   are compatible with the physical site type of the constraint.
   Please correct the constraints accordingly.

Mapping completed.
See MAP report file "system_map.mrp" for details.
Problem encountered during the packing phase.

Design Summary
--------------
Number of errors   :   1
Number of warnings :   2
ERROR:Xflow - Program map returned error code 2. Aborting flow execution... 
Done!

Kann mir jemand helfen? Oder ist es tatsächlich so, dass man für so eine 
anwendung ZWEI GPIO-Interfaces braucht?
Mir ist klar, dass ich später so eine Aufgabe sicherlich einer eigenen 
IP geben werde. Ich würde mich nur gern jetzt in die Funktionalität der 
GPIO-IP einarbeiten und diese vollständig verstehen...

Beste Grüße,
Andreas

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

gleiches Problem hier - ist deins gelöst?

Ich versuche einen Pin für beides benutzen zu können hab aber im UCF 
file 4 Kandidaten denen ich das Pad zuweisen kann.

Autor: bko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke im UCF-file darf nur ein Netzname pro FPGA-pin stehen,
d.h. wenn der Pin sowohl als Ausgang wie auch als Eingang verwendet
wird. muss ein Tristate Buffer (OBUFT) fuer den Ausgang, und ein IBUF 
fuer den Eingang verwendet werden.

Etwa so:
              OBUFT
                 /|
           _____/ |----- ausgang
           |    \ |
[PIN] -----|     \|_____ tristate steuerung
           |
           |   |\
           |___| \______ eingang
               | /
               |/
               IBUF

Oder in VHDL so(mal eben geschrieben, deshalb evtl. mit Syntax Fehlern)
 dann Synthtisiert der ISE eine solche Schaltung:
library ieee;
use ieee.std_logic_1164.all;

entity toplevel_three_state_beispiel is
port( 
     -- viele andere IN und OUTS mit std_ulogic
     
     -- toplevel tristate io
     pin_mit_tristate_io : INOUT std_logic);

end toplevel_three_state_beispiel;

architecture archi of toplevel_three_state_beispiel is

  SIGNAL tri     : std_ulogic;
  SIGNAL eingang : std_ulogic;
  SIGNAL ausgang : std_ulogic;

BEGIN

process (pin_mit_tristate_io  , tri)
   begin
   if (tri ='0') then
      pin_mit_tristate_io <= ausgang;
   else
      pin_mit_tristate_io <= 'Z'; -- tristate wenn Eingang
    end if;                       -- gelesen werden soll
   end process;

   eingang <= pin_mit_tristate_io;
END archi;

#und dann im UCF-file so:
NET "pin_mit_tristate_io" LOC =  V12  |  PULLDOWN;
#oder auch  so
NET "pin_mit_tristate_io" LOC =  V12  |  KEEPER;

Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobi wrote:
> Hi
>
> gleiches Problem hier - ist deins gelöst?
>
> Ich versuche einen Pin für beides benutzen zu können hab aber im UCF
> file 4 Kandidaten denen ich das Pad zuweisen kann.

Hi,
ich weiß jetzt nicht, was Du genau machen willst...:
--> Willst Du mit EINER xps_gpio IP sowohl Eingänge, als auch Ausgänge 
ansteuern (Das habe ich nicht hinbekommen - dafür muss man wohl eine 
eigene IP erzeugen)
--> Oder willst Du - wie es bko angenommen hat - reinen VHDL-Code 
schreiben, bei dem ein Pin sowhol Eingang, als auch Ausgang ist - 
gesteuert über einen Tristate-Eingang? Dann siehst Du ja bereits die 
Lösung... ;-)

Gruß,
Andreas

Autor: noone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du kannst doch im edk die breite des XGPIOs angeben und dann die Chanels 
einzelnen Pins per Software einstellen ... jedenfalls in der Theorie

Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noone wrote:
> du kannst doch im edk die breite des XGPIOs angeben und dann die Chanels
> einzelnen Pins per Software einstellen ... jedenfalls in der Theorie

Das ist korrekt.
Das habe ich oben ja auch probiert. Die Breite meines XGPIOs ist 2.
Das eine Bit sollte ein Eingang sein (also z.B. ein Taster) - und das 
andere ein Ausgang (z.B. eine LED).
Und dann kommt obige Fehlermeldung...

Oder kannst Du mir ein Bespiel geben, bei dem bei einem 2 Bit breiten 
XGPIO Bit0 ein Eingang und Bit1 ein Ausgang ist?
Würde mich darüber freuen...

Gruß,
Andreas

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.