2014-10-20 60 views
-1

我正在使用std_logic_unsigned將幾個VHDL文件轉換爲numberic_std。有幾條線給我悲傷。例如,我有以下不希望正確轉換的代碼片段:使用numeric_std進行類型轉換

elsif (reg(7) = '0' and reg(2 downto 0) > PKG_VAR) then 

我已經試過各種轉換的嘗試,但沒有這樣的運氣:

elsif (unsigned(reg(7) = '0' and unsigned(reg(2 downto 0)) > unsigned(PKG_VAR) 

elsif (resize(unsigned(reg(7),3) = '0' and unsigned(reg(2 downto 0)) > unsigned(PKG_VAR) 

沒有人有任何想法如何可以按照VHDL LRM進行轉換?我正在使用VHDL 2002.

+0

添加'reg'和'PKG_VAR'的聲明,以便我們可以看到它們是什麼類型! 'reg(7)'可能是一個std_logic,它不需要任何類型轉換 – 2014-10-20 10:39:24

回答

1

對不起沒有提供信號和常數的定義! reg和PKG_VAR都是std_logic類型。

我相信我找到了解決我的困境的辦法。當使用numeric_std,行更改爲如下:

elsif (reg(7) = '0' and unsigned(reg(2 downto 0)) > unsigned(PKG_VAR)) then 

我發現,Cadence公司的Incisive編譯此行沒有錯誤或警告,並模擬代碼如預期。

我還沒有合成這個代碼並通過Formality運行,但我相信這是正確的解決方案。