我有一个关于我试图为 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;