解析度功能
解析了哪種型別的訊號具有相關的解析度函式。它可以由多個 VHDL 程序驅動。每當驅動程式分配新值時,都會呼叫解析度函式來計算結果值。
解析函式是一個純函式,它接受一個引數並返回要解析的型別的值。該引數是要解析的型別的一維無約束元素陣列。例如,對於 bit
型別,引數可以是 bit_vector
型別。在模擬期間,當需要計算結果值以應用於乘法驅動訊號時,呼叫解析度函式。它傳遞一個由所有源驅動的所有值的陣列,並返回結果值。
以下程式碼顯示了 bit
型別的解析函式的宣告,其行為類似於有線 and
。它還說明了如何宣告 bit
型別的已解析子型別以及如何使用它。
-- File md.vhd
entity md is
end entity md;
architecture arc of md is
function and_resolve_bit(d: bit_vector) return bit is
variable r: bit := '1';
begin
for i in d'range loop
if d(i) = '0' then
r := '0';
end if;
end loop;
return r;
end function and_resolve_bit;
subtype res_bit is and_resolve_bit bit;
signal s: res_bit;
begin
p1: process
begin
s <= '0', '1' after 1 ns, '0' after 2 ns, '1' after 3 ns;
wait;
end process p1;
p2: process
begin
s <= '0', '1' after 2 ns;
wait;
end process p2;
p3: process(s)
begin
report bit'image(s); -- show value changes
end process p3;
end architecture arc;
編譯,詳細說明和模擬,例如使用 GHDL,不會引發錯誤:
ghdl -a md.vhd
ghdl -e md
./md
md.vhd:39:5:@0ms:(report note): '0'
md.vhd:39:5:@3ns:(report note): '1'