2015-08-19 76 views
2

我想這個箴言報變量的狀態:有沒有辦法在ISim中顯示變量?

shared variable Div16 : integer := 0; 

但我在ISIM recieving此錯誤:

ISIM尚不支持VHDL變量的跟蹤。

您可以將變量轉換爲testbench文件中的信號嗎?或者還有什麼其他的方式來顯示這個值作爲波形變化?

完整代碼:

entity MAIN_UART is 
    generic (
    DIVISOR: natural := 120 -- DIVISOR = 50,000,000/(16 x BAUD_RATE) 
    -- 9600 -> 120 
    -- 19200 -> 60 
); 
    port (
    CLK: in std_logic;  -- clock 
    RST: in std_logic   -- reset 
); 
end MAIN_UART; 

architecture Behavioral of MAIN_UART is 

    signal Top16: std_logic; -- 1 clk spike at 16x baud rate  
    shared variable Div16 : integer := 0; 

-- constant COUNTER_BITS : natural := integer(ceil(log2(real(DIVISOR)))); 

begin 

-- -------------------------- 
-- Clk16 Clock Generation 
-- -------------------------- 
    process (RST, CLK) 
    begin 
     if RST='1' then 
      Top16 <= '0'; --good 
      Div16 := 0; 
     elsif rising_edge(CLK) then 
      Top16 <= '0'; 
       if Div16 = Divisor then 
        Div16 := 0; 
        Top16 <= '1'; --good 
       else 
        Div16 := Div16 + 1; 
       end if; 
     end if; 
    end process; 

end Behavioral; 
+0

您應該在流程中聲明該變量,因此無需將其聲明爲共享。 – Paebbels

回答

2

您可以添加:

signal Div16_signal : integer := 0; 

然後在隨後結束的過程中添加:

Div16_signal <= Div16; 
+0

這解決了它,謝謝! – VKkaps

+1

如果您希望iSim提供比默認值更高的其他基音,則需要聲明div16信號,例如SIGNED,並向該變量添加一個轉換以指示信號分配:)。 – Paebbels

+0

@Paebbels所以信號聲明看起來像這樣:「signal Div16_signal:unsignedinteger:= 0;」而且我不完全確定轉換語句的變量是什麼樣子 – VKkaps

0

除的答案@ 0xMB 。

如果您希望iSim提供比默認值更高的其他基數,您需要聲明div16信號,例如SIGNED,並向該變量添加一個轉換以分配信號。

architecture rtl of myEntity is 
    signal DBG_div16 : SIGNED(31 downto 0); 
begin 

    process(clk) 
    variable div16 : integer := 0; 
    begin 
    -- some code 

    -- assign the variable to a signal, so iSim can display it's value 
    DBG_div16 <= signed(div16, DBG_div16'length); 
    end process; 

end architecture; 
相關問題