2013-04-24 49 views
0

當我有一個這樣的實體:是否可以將inout信號轉換爲VHDL中的兩個信號(輸入和輸出)?

entity outer_inout is 
    Port(
    clk  : in std_logic; 
    rst  : in std_logic; 
    s   : in std_logic; 
    d   : inout std_logic; 
    ...  -- some ports 
); 
end entity; 

是否有可能改變整個設計,使不使用INOUT端口?

entity outer_inout2 is 
    Port(
    clk  : in std_logic; 
    rst  : in std_logic; 
    s   : in std_logic; 
    d_in  : in std_logic; 
    d_out  : out std_logic; 
    ... -- some ports 
); 
end entity; 

我想在一些特殊情況下,可以將inout端口轉換爲輸入和輸出端口。但問題是:這總是可能的嗎?輸入端口是否可以在設計中被替換,以便兩種設計在語義上相同?

+0

'if d ='1''代碼是做什麼的?當's'爲1時,它只是一個振盪器。你有沒有發佈正確的代碼?你當前的inout代碼需要一個方向控制和一些方法來禁用'd'的驅動。 – EML 2013-04-24 17:46:49

+0

整個代碼是否寫入'd'信號?如果是這樣,你就沒有機會從外面發送任何不同的'in'信號,因爲你從未駕駛'Z'或其他「弱」信號被覆蓋。你能說更多關於你的代碼,你爲什麼要刪除inout? – 2013-04-26 08:14:23

回答

0

我不太確定你的'信號是什麼。但是,這是你想要的,假設ds = 1三態輸出,使

d_in <= d; 
d <= d_out when s = '1' else 'Z'; 

如果你有一個集電極開路輸出 - 你就會有一個上拉在你的測試平臺的某處驅動d信號與'H',然後你可以這樣做:

d_in <= to_X01(d); 
d <= '0' when d_out = '0' else 'Z'; 
+0

他想從'inout',而不是'inout'。 – EML 2013-04-24 17:49:02