我需要採取結果的絕對值,我只對最重要的位感興趣。這是我做了什麼:簽署到std_logic_vector,切片結果
data_ram_h <= std_logic_vector(abs(signed(resize(r4(calc_cnt - 2), data_ram_h'length) + r4(calc_cnt - 1) +
r4(calc_cnt) + r4(calc_cnt + 1) + r4(calc_cnt + 2) -
r2(calc_cnt - 2) - r2(calc_cnt - 1) - r2(calc_cnt) -
r2(calc_cnt + 1) - r2(calc_cnt + 2))))(11 downto 4);
我嘗試檢查語法和我得到這個錯誤:
type conversion std_logic_vector is not allowed as a prefix for an slice name.
data_ram_h是正確尺寸的std_logic_vector,並且ABS功能返回一個簽名,在轉換爲std_logic_vector時不應該有問題。我正在使用的庫是使用ieee.numeric_std.all。
我在哪裏錯了?在此先感謝c:
由於錯誤提示:您無法切分函數的結果。您將需要一箇中間信號,或者您可以嘗試將切片操作移動到您的表達式中,這使得它更難讀。 – Paebbels 2015-02-11 08:32:51
@Paebbels謝謝,我無法得到的是,即使std_logic_vector是一個功能!我張貼我的工作解決方案。 – harrym 2015-02-11 09:23:13
如果我是正確的std_logic_vector(..)不是一個真正的函數,但它確實看起來像一個。 – Paebbels 2015-02-11 09:42:32