adc.txt

来自「一个8位AD转换程序」· 文本 代码 · 共 30 行

TXT
30
字号
--8-bit analogue to digital converter
--demonstrates use of LOOP and WAIT statements
ENTITY adc8 IS
GENERIC(tconv : TIME := 10 us); --conversion time
PORT(vin : IN REAL RANGE 0.0 TO +5.0; --unipolar input
digout : OUT NATURAL RANGE 0 TO 255; --output
sc : IN BIT; busy : OUT BIT); --control
END adc8;
ARCHITECTURE behaviour OF adc8 IS
BEGIN
PROCESS
VARIABLE digtemp : NATURAL;
CONSTANT vlsb : REAL := 5.0/256; --least significant bit value
BEGIN
digtemp := 0;
WAIT UNTIL (sc'EVENT AND sc = '0'); --falling edge on sc starts conv
busy <= '1'; --flag converter busy
WAIT FOR tconv; --conversion time
FOR i IN 0 TO 255 LOOP --do ramp-up conversion
IF vin >= REAL(i)*vlsb
THEN IF digtemp = 255 THEN EXIT;
ELSE digtemp := digtemp + 1;
END IF;
ELSE EXIT;
END IF;
END LOOP;
digout <= digtemp; --output result
busy <= '0'; --flag end of conversion
END PROCESS;
END behaviour;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?