1
很難解釋標題中的問題,所以請繼續閱讀。VHDL計算,不同但仍相同
我有一個項目,我們正在實施一個sobel過濾器。起初,圖像沒有工作,因爲它應該做的,與索貝爾計算
Gx <= ("000" & p3-p1)+(("00" & p6 & '0')-("00" & p4 & '0'))+("000" & p9-p7);
Gy <= ("000" & p7-p1)+(("00" & p8 & '0')-("00" & p2 & '0'))+("000" & p9-p3);
,但具有相同calulation以不同的方式
Gx <= ("000" & p3)+("00" & p6 & '0')+("000" & p9)-("000" & p1)-("00" & p4 & '0')-("000"
& p7);
Gy <= ("000" & p7)+("00" & p8 & '0')+("000" & p9)-("000" & p1)-("00" & p2 & '0')-("000"
& p3);
它完美的工作表現。儘管如此,過濾器的模擬完全一樣。 這與我如何在矢量之前填充零有關嗎?
'P1:在STD_LOGIC_VECTOR(7 DOWNTO 0);' '信號GX:STD_LOGIC_VECTOR(10 DOWNTO 0);' '信號G:STD_LOGIC_VECTOR(10 DOWNTO 0); ' – chwi
以上應該是有效的。我建議使用numeric_std庫中的UNSIGNED/SIGNED數據類型,而不是(可能使用std_logic_arith或std_logic_unsigned/signed)。 – sonicwave
這解釋得非常好,謝謝! – chwi