Te które nie mają Flasha, wymagają zewnętrznej pamięci, z której wczytują program przy uruchomieniu. Zacznij może od prostych układów CPLD, one zapamiętują program i nie wymagają Flasha zewnętrznego. Poza tym, najprostsze serie jak np. 9500 Xilinxa (XC9536XL, XC9572XL itd) lub 3000 Altery (EPM3032, EPM3064 itd) mają wejścia tolerujące 5V. Oczywiście przy zasilaniu 3,3V. Z wysterowaniem CMOS może być problem, ale często rezystor podciągający załatwia sprawę, czasem można zastosować translatory napięć. TTL wysteruje bez problemu. FPGA nie tolerują 5V na wejściu, więc musisz uważać, bo łatwo je zniszczyć. Zresztą nowoczesne FPGA są zasilane z 1,8V lub 2,5V.
A co do tri-state - to są bardzo nowoczesne układy i typ wyjścia zależy od programu... Jak zaprogramujesz jako tri-state, będzie tri-state. W Verilogu na przykład prosty inwerter z wejściem Enable:
module bezrobotny (A, Enable, Y);
input A,Enable ;
output Y;
assign Y = (~A) ? Enable: 1'bZ;
endmodule
'bZ oznacza stan wysokiej impedancji.
W VHDLu trochę dłużej, ale dla niektórych bardziej czytelnie:
library ieee;
use ieee.std_logic_1164.all;
entity bezrobotny is
port(A : in std_logic;
Enable : in std_logic;
Y : out std_logic);
end bezrobotny;
begin
process (A, Enable)
begin
if (Enable='0') then
Y <= A;
else
Y <= 'Z';
end if;
end process;
'Z' - stan wysokiej impedancji.
Arguing with an engineer is a lot like wrestling in the mud with a pig, after a couple of hours you realize the pig likes it...