2014-02-06 1 views
2

Предположим, что у меня есть и ворота с выходом. Проблема в том, что я хочу подключить его выход так, чтобы несколько других компонентов. Поэтому мне нужно сделать много «копий» вывода из этого и затвора, чтобы я мог подключить к этому выводу многие компоненты. Можете ли вы сделать это с помощью сигналов и псевдонимов или как вы это сделаете?VHDL - Как вы подключаете 1 выходный бит к нескольким 1-битным сигналам?

ответ

0

Нет, вам не нужно делать копии - любое количество других вещей может «прослушивать» конкретный сигнал. Например:

.... 
architecture a of entity_name is 
    signal and_out : std_logic; 
begin 
    -- drive the signal we want to use in multiple places, just a normal signal assignment 
    and_out <= in1 and in2; 

    -- one block using the signal 
    some_block_instance: entity work.some_block 
    port map (some_input => and_out,...); 

    -- another block using the signal 
    some_other_block_instance: entity work.some_other_block 
    port map (some_other_input => and_out,...); 

    another_signal <= and_out or in3; -- a signal assignment reading the signal 
.... 
+0

Я попробую это. О, мой бог. Я так много переусердствовал. Я даже сделал компонент «copy»/«splitter», который скопировал вход на несколько выходов. Но я попробую это более очевидное и простое решение, которое вы мне дали. Благодарю. – user2726067

0

Возможно, вам захочется найти вводную ссылку VHDL. Вы можете попробовать googling для VHDL Made Easy, книга Дэвида Пеллерина и Дугласа Тейлора.

Нет, вам не нужно делать копии. Вам нужен только один уникальный сигнал для каждой «сети».

От des.vhdl:

DB1: bidir port map (Z => DATA(7),Y => DIN(1), OE => DOE, A => DOUT(1)); 
DB2: bidir port map (Z => DATA(6),Y => DIN(2), OE => DOE, A => DOUT(2)); 
DB3: bidir port map (Z => DATA(5),Y => DIN(3), OE => DOE, A => DOUT(3)); 
DB4: bidir port map (Z => DATA(4),Y => DIN(4), OE => DOE, A => DOUT(4)); 
DB5: bidir port map (Z => DATA(3),Y => DIN(5), OE => DOE, A => DOUT(5)); 
DB6: bidir port map (Z => DATA(2),Y => DIN(6), OE => DOE, A => DOUT(6)); 
DB7: bidir port map (Z => DATA(1),Y => DIN(7), OE => DOE, A => DOUT(7)); 
DB8: bidir port map (Z => DATA(0),Y => DIN(8), OE => DOE, A => DOUT(8)); 

DO_EN: invbuf port map (A => DOE_N, Z => DOE); 

Компонентные декларации:

package des_pack is 


    component bidir 
     port (
      Z:  inout std_logic; 
      Y:  out std_logic; 
      OE:  in std_logic; 
      A:  in std_logic 
     ); 
    end component; 
... 

    component invbuf 
     port (
      A:  in std_logic; 
      Z:  out std_logic 
     ); 

МЭ сигнал декларации:

architecture behave of des is 
... 
    signal DOE:     std_logic; 
... 
begin 

Это от реализации VHDL СВЛ, что это GPLv3. https://dl.dropboxusercontent.com/u/25980826/vhdl_des.tar.gz

0

Вы говорите, что хотите подключить выход вентилятора И ко многим другим компонентам. Будучи педантичным, вы фактически подключаете его к портам на этих компонентах: можем ли мы считать, что все эти порты являются входными портами? Если это так ...

Создайте простой сигнал и просто подключите его к порту вывода и всем входным портам. Мартин избил меня с подробностями ...

Смежные вопросы