VHDL generate vagy valami mas

Radó Zoltán zrado at leasingtechnology.com
Thu Mar 20 18:53:38 CET 2003


Haliho!

Hogy lehet az alábbi  VHDL kódot "dinamikussá" tenni, hogy egy globalis
constant-nak megfeleloen mukodjon?

----------------------------------------------------------------------------
constant port_no:    integer:=    6;

signal tx:    std_logic_vector(port_no-1 downto 0);
signal tx_en: std_logic_vector(port_no-1 downto 0);

Sout <= tx(0) when tx_en(0) = '1' else
 tx(1) when tx_en(1) = '1' else
 tx(2) when tx_en(2) = '1' else
 tx(3) when tx_en(3) = '1' else
 tx(4) when tx_en(4) = '1' else
 tx(5) when tx_en(5) = '1' else
 '1';
----------------------------------------------------------------------------

Ilyesmire gondolok, hogy:


---------------------------------------------------------------------------
proba: for i in 0 to port_no-1 generate
    Sout <= tx(i) when tx_en(i) = '1' else '1';
end generate;
----------------------------------------------------------------------------

Ezzel ugye az a baj, hogy multi source lesz az Sout...

Egy megoldast tudtam kitalálni: (de általánosabb megoldást keresek)

----------------------------------------------------------------------------
--------------------
constant zeros: std_logic_vector(port_no-1 downto 0):= (others => '0');
signal sout_masked: std_logic_vector(port_no-1 downto 0);

sout_masked <= tx and tx_en;
Sout <= '0' when sout_masked = zeros and tx_en /= zeros else '1';
----------------------------------------------------------------------------
--------------------


Köszi...

Zoli




More information about the Elektro mailing list