mikrocontroller.net

Forum: FPGA, VHDL & Co. automatisches wechsel von Input und Output


Autor: Eddy Hoffmann (Firma: student) (eddy_2007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

habe folgendes Problem,
ich habe ein externes HW denn ich mit FPGA steuern will.
ich habe ein kleines Multiplexer mit VHDL erstellt und simuliert.

der Multiplexer hat 6 Inputs und 6 Outputs!

der externes HW hat auch 12 pins wobei 6 als Outputs und 6 als 
Inputs,aber die sind nicht fest!!!!!
dh sie werden intern vom Prozessor dieses HW gepolt mal die ersten pins 
als Inputs und die anderen als Output,und nach besteimmte Teit anders 
rum,die ersten 6 Pins als Output und die anderen als Input usw....

kann mir jemanden sagen wie ich das lösen kann ?
ich habe ein spartan3 XC3S1000 !!!!

ist das mit VHDL auch zu lösen ?

Autor: Artur Funk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein FPGA muss schon wissen, wann welche Pins welche Stromflußrichtung 
haben. Sonst hast du da kaum Chancen zu reagieren und das Ganze kann 
teuer werden. Wenn du jedoch die Oberhand über die Richtung hast, schaue 
die inout und tristate an.

Autor: Eddy Hoffmann (Firma: student) (eddy_2007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wäre möglich meine die Ports alle als inout zu deklarieren! letztendlich 
es ist ein Multiplexer!!

und der Ziel mit dieser Multiplexer ist: die Inputs mit den Outputs zu 
verbinden ??????????

ich weiss aber nicht genau ob der FPGA die Signale auch wirklich 
verbindet oder dass er an seinem Outputs sein eigene Signale generiert ?

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> der externes HW hat auch 12 pins wobei 6 als Outputs und 6 als
> Inputs,aber die sind nicht fest!!!!!
> dh sie werden intern vom Prozessor dieses HW gepolt mal die ersten pins
> als Inputs und die anderen als Output,und nach besteimmte Teit anders
> rum,die ersten 6 Pins als Output und die anderen als Input usw....

So wie Du das beschreibst, nennt man dies nicht Multiplexer, sondern 
bidirektionaler Busdriver.

Suche nach "bus driver", bidirectional und tri-state, dann wirst Du die 
Lösung finden.

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-- 8-bit PC ISA Parallel I/O Port Design (VHDL Based)
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ioport IS

  PORT
-- ISA Bus Signals
  (  AEN,IOR,IOW    : IN  STD_LOGIC;
    ADDRESS      : IN  STD_LOGIC_VECTOR(9 DOWNTO 0);
    DATA      : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
-- Output Address Decoder output signal for use in simulations
    PORT_IO_DECODE_OUT : OUT STD_LOGIC;
-- 8-bit Parallel Input port data from external device
    PORT_DATA_IN  : IN   STD_LOGIC_VECTOR(7 DOWNTO 0);
-- 8-bit Parallel Output port data to external device
    PORT_DATA_OUT  : OUT   STD_LOGIC_VECTOR(7 DOWNTO 0));

END ioport;
ARCHITECTURE a OF ioport IS
SIGNAL PORT_IO_DECODE : STD_LOGIC;
BEGIN
-- Address Decoder for 0x3E0
-- PC uses 10 low bits of ISA address bus for an I/O address)
-- AEN='0' needed to make sure it does not respond to a DMA bus cycle
  PORT_IO_DECODE <= '1' WHEN ADDRESS = B"1111100000" AND AEN='0' ELSE 
'0';
  PORT_IO_DECODE_OUT <= PORT_IO_DECODE;
-- I/O Input Port - must use tri state buffers
    DATA <= PORT_DATA_IN WHEN (PORT_IO_DECODE = '1') AND (IOR ='0')
    ELSE "ZZZZZZZZ";
-- I/O Output Port - save data in register (DFFs)
  PROCESS
  BEGIN
-- clock on positive edge of ISA IOW
    WAIT UNTIL IOW'EVENT AND IOW='1';
-- use address decoder output for clock enable
    IF PORT_IO_DECODE = '1' THEN
-- save data on ISA data bus in register
      PORT_DATA_OUT <= DATA;
    END IF;
  END PROCESS;
END a;

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde das Beispiel sehr anschaulich fur PC-Bus-Decoder.
Dieses Beispiel ist für ein 245 Bi-Dir-Bus-Treiber an einer PC-ISA 
Karte.
Mit 2 getrennten 8 Bit  I,0 Ports.
Das Data-Port ist Bi-Directional. und auch Tri-State.
Gruss Holger.

Autor: Holger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein Beispiel für Bi-Ports, die VHDL Gleichung ist ein Ersatz für
die ganze I/O und Addr-Decoding und Schaltung.

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.