我有一個關於VHDL代碼,我試圖寫一個ADC逐次逼近寄存器的問題。VHDL - 逐次逼近寄存器
在下面顯示的代碼,將DigitalOutTemp是連續更新整個for循環?或者它只會在流程結束時收到OutTemp的價值?
我想我可能有邏輯錯誤的,但我試圖做的是有DigitalOutTemp經歷一個數字模擬轉換器,然後與我的測量模擬信號的比較。比較器然後將反饋到寄存器中。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY SARegister IS
PORT (
Comparator, Clock : IN std_logic;
DigitalOutFinal, DigitalOutTemp : OUT std_logic_vector (13 downto 0)
);
END;
ARCHITECTURE Behavioural OF SARegister IS
BEGIN
PROCESS (CompIn, Clock)
VARIABLE OutTemp : std_logic_vector (13 downto 0);
BEGIN
IF (rising_edge(Clock)) THEN
OutTemp := "10000000000000";
FOR i IN 13 downto 0 LOOP
IF (Comparator = '0') THEN
OutTemp(i) := '0';
END IF;
IF (i > 0) THEN
OutTemp(i - 1) := '1';
END IF;
DigitalOutTemp <= OutTemp;
END LOOP;
DigitalOutFinal <= OutTemp;
END IF;
END PROCESS;
END;