2015-04-23 46 views
0

當我將引腳設置爲'Z'狀態時,它保持之前的狀態。同時拉低一個引腳輸出設置爲Z狀態VHDL

例如:

if rising_edge(Clock) then 
    counter <= counter + 1; 
    case counter is 
     when 0 => 
     PIN <= '0'; 
     when 1 => 
     PIN <= 'Z'; 
     others => 
    end case; 
end process; 

如果我執行這個代碼,我將有PIN碼 'Z' 狀態設置爲 '0'。

if rising_edge(Clock) then 
    counter <= counter + 1; 
    case counter is 
     when 0 => 
     PIN <= '1'; 
     when 1 => 
     PIN <= 'Z'; 
     others => 
    end case; 
end process; 

如果我執行此代碼,我將在Z狀態下將PIN設置爲'1'。

我需要的是在Z狀態下將PIN設置爲'0',而不管之前的狀態如何。但是我需要在不使用額外時鐘週期的情況下將PIN從'1'設置爲'0',然後設置爲'Z'。那可能嗎?

+0

您是如何驗證它的?模擬?硬件?如果模擬,哪個模擬器?哪個硬件平臺? –

+1

你是否明白,通過'<='賦值給'counter'的信號具有這樣的效果:在下一個循環之前,'case counter is'看不到新值? –

回答

1

如果您需要一個FPGA引腳爲三態,但也有一個下拉菜單,則必須在工具鏈的引腳配置工具中設置下拉菜單。我不知道有任何FPGA工具鏈可以推斷從'L'開始的下拉,這似乎是你想要的(三態下拉看起來相當於「弱下拉」)。如果只運行模擬,請嘗試設置PIN <= 'L'