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


von Eddy H. (Firma: student) (eddy_2007)


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 ?

von Artur Funk (Gast)


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.

von Eddy H. (Firma: student) (eddy_2007)


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 ?

von Klaus Falser (Gast)


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.

von Holger (Gast)


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;

von Holger (Gast)


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.

von Holger (Gast)


Angehängte Dateien:

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.

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
Noch kein Account? Hier anmelden.