2014-12-23 1 views
0

Я хотел реализовать 3xor ворота, выход из первых два XOR ворота должен быть входом для последнего исключающего воротаVHDL 3xor ворот в одном используя-структуру

xor1---> 
      xor3----> final output 
xor2---> 

Вот мой код, я не уверен, если то, что я сделал до сих пор, хорошо, и я думаю, что я должен объявить арку. когда я делаю мод. thingys? Приветствия за помощь!

library IEEE; 
    use IEEE.STD_LOGIC_1164.ALL; 

    architecture struct of triplexor is 
    component unit10 
    port (a0, a1: in bit; o1: out bit); --xor1 
    end component; 
    architecture func of unit10 is 
    begin 
     o1 <= a0 xor a1; 
    end func; 
    component unit11 
    port (a2, a3: in bit; o2: out bit); --xor2 
    end component; 
    architecture func of unit11 is 
    begin 
     o2 <= a2 xor a3; 
    end func; 
    component unit2 
    port (i1, i2: in bit; yi: out bit); --xor3 
    end component; 
    architecture func of unit2 is 
    begin 
     yi <= i1 xor i2; 
    end func; 
    signal ya, yb, yout: bit; 

    begin 
    mod_unit10: unit10 port map (a, b, ya); 
    mod_unit11: unit11 port map (a, b, yb); 
    mod_unit2 : unit2 port map (ya, yb, yout); 
    output: y<=yout; 
    end architecture struct; 
+1

Есть причина, почему вы скрываете операцию XOR в компонентах? Почему у вас есть 3 компонента, заполненных одним xor? Вы можете просто использовать один компонент и создать 3 экземпляра. Ваш пример всегда будет оцениваться как '0' (y: = x xor x -> y: = 0). Где ваша структура? – Paebbels

+3

Является ли использование компонента обязательным? Не можете ли вы просто использовать: Y <= (a xor b) xor (c xor d); – grorel

+0

Если вы ДОЛЖНЫ использовать компоненты, вы можете удалить две декларации компонентов и трижды создать экземпляр оставшегося компонента. –

ответ

0

Вот ваш код с помощью всего 3 экземпляров одного и того же компонента:

library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 

entity triplexor ... 
end entity; 

architecture struct of triplexor is 
    component myXor 
    port (
     i0, i0: in bit; 
     o:  out bit 
    ); 
    end component; 

    architecture rtl of myXor is 
    begin 
    o <= i0 xor i1; 
    end rtl; 

    signal ya, yb, yout: bit; 

begin 
    -- using port mapping by position 
    inst_xor1: myXor 
    port map (
     a, b, 
     ya 
    ); 

    inst_xor2: myXor 
    port map (
     a, b, 
     yb 
    ); 

    -- using port mapping by name (I prefer this style - it's safer if someone changes a port list) 
    inst_xor3: myXor 
    port map (
     i0 => ya, 
     i1 => yb, 
     o => yout 
    ); 

    y <= yout; 
end architecture struct; 
+0

Спасибо, я думаю, что понимаю сейчас! – pablo

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