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;