2013-10-16 29 views
11

Bardzo często w VHDL zauważam, że pewien komponent ma wiele portów wyjściowych. To znaczy, w jednym z naszych przykładach miały następujące składnik:Jak ignorować porty wyjściowe z mapami portów

COMPONENT eight_bitadder 
    PORT (a, b: in std_logic_vector(7 downto 0); 
     f: in std_logic; 
     C: out std_logic_vector(7 downto 0); 
     o, z: out std_logic); 
END COMPONENT; 

gdzie Z określa, czy wynikiem jest 0 i O wyzwalacze przepełnienia.

Teraz w moim przypadku chcę użyć tego sumatora, jednak rzeczywisty wynik nie ma znaczenia, a ja chcę tylko sprawdzić, czy wynik jest "0". Mógłbym oczywiście dodać fałszywy sygnał i zapisać port do tego sygnału, jednak wydaje się to niepotrzebnie skomplikowane i może dodać dodatkowe składniki podczas syntezy?

Odpowiedz

10

Gdy tworzysz instancję komponentu, możesz pozostawić porty wyjściowe, które nie są otwarte. Jedynym sygnałem, który ci zależy, jest "przepełnienie".

EDYCJA: Należy zauważyć, że narzędzia syntezy zoptymalizują wszelkie wyjścia, które nie są używane.

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    c => open, 
    o => overflow, 
    z => open 
    ); 
+0

Tak otwarte jest specjalne słowo kluczowe - czy można z niego korzystać również w składni, w której nie podaje się jawnie nazw portów i nie używa się tej kolejności? (po prostu prośba o weryfikację/jasność)? – paul23

+0

Tak, "otwarte" jest zarezerwowane w VHDL. Szczerze mówiąc, nigdy tego nie próbowałem, dajcie temu szansę i dajcie znać, jak to działa. Zawsze jawnie deklaruję mapowanie portów. – Russell

+1

dobrze przetestowałem to i tak, mogłem skompilować i zsyntetyzować to, nawet z nie jawnym nazewnictwem. Dzięki jeszcze raz. – paul23

3

też nie mógł zdecydować się związać wyjście do niczego tak:

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    o => overflow 
); 

Zauważ, że ja po prostu nie należą wyjść C i Z w mapie portu. Niektórzy mogą debatować nad jasnością tego (ponieważ może nie być jasne, że wyjścia c i z istnieją), ale także redukują kod tylko do tego, co jest konieczne.

+0

Należy pamiętać, że może być konieczne usunięcie linii z deklaracji komponentu lub przypisanie wartości domyślnych do usuwanych portów. Jeśli nie, możesz napotkać błędy podczas próby kompilacji. – TW80000