VHDL - Mappa in & out mot inout

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
hygren
Inlägg: 130
Blev medlem: 9 november 2007, 15:52:37
Ort: Göteborg
Kontakt:

VHDL - Mappa in & out mot inout

Inlägg av hygren »

Har en minneskontroller och ett minne som jag försöker få att prata med varann. Just nu håller jag på med dataportarna.

På kontrollern finns:

Kod: Markera allt

DataIn : in  std_ulogic_vector
DataUt : out std_ulogic_vector
På minnet finns:

Kod: Markera allt

Data : inout std_logic_vector
Såhär har jag skrivit nu:

Kod: Markera allt

DataIn <= Data when WE_N = '1' else (others => '0');
Data <= DataUt when WE_N = '0';
Men blir inte det en latch på Data i andra fallet? Har hört tusen gånger att man ska undvika det...

Tacksam för svar!
arte
Inlägg: 317
Blev medlem: 13 januari 2006, 01:18:50

Inlägg av arte »

Hej,

Jo det är riktigt det borde bli en latch.
I andra fallet så tror jag att du borde sätta Data till 'Z'

DataIn <= Data when WE_N = '1' else (others => '0');
Data <= DataUt when WE_N = '0' else (others =>'Z'); -- Vet inte om man kan blanda others och Z

Men ifall detta är något som du skall syntha så kan det nog bli svårt med tristate signalen 'Z'.
I fall det är så att det är en FPGA du har och minneskontrollen i FPGAn och minnet extern så tror jag att man får ta till en sorts mellan komponent som är FPGA/tillverkar specefik.

Exempelvis på mitt FPGA kort (Starterkit 3) där jag har ett externt SRAM med en inout data port har jag gjort följande.


ext_hw_ram_we <= ram_we;

mem1 : for i in ext_hw_ram_io'range generate
iod0 : IOBUF_LVCMOS33 port map
(I => ext_hw_ram_data_out(i),
IO => ext_hw_ram_io(i),
O => ext_hw_ram_data_in(i),
T => ram_we);
end generate mem1;
AAVE
Inlägg: 67
Blev medlem: 1 april 2008, 11:57:24
Ort: Skåeuone

Inlägg av AAVE »

Ingen mening med att latcha DataIn.

Kod: Markera allt

DataIn <= Data; 
Data <= DataUt when WE_N = '0' else (others =>'Z'); 

Vill du behålla värdet får du väl sampla det med en klocka, men det behöver man sällan.
Skriv svar