在测控系统中用IP核实现D/A转换
Vout能够产生在0V~Vcco之间可变的电压,具体的值由DACIN的位宽和输入的数值决定。
Delta-Sigma DAC适合需要相对高精度的低频应用。在这种应用中,电压不会很快地变化,因此,RC的时间常数可以很大,以减小噪声。
这种DAC最广泛的应用就是产生通常直流电压。这包括电压控制振荡器、电压控制运算放大器、I/O参数电压、可编程电压源、波形发生器(正弦、三角等)、A/D转换中的参考电压等。
Delta-Sigma DAC是一个例子,说明高速可编程逻辑器件能用于混合信号系统,以减少元件的数量。可编程逻辑器件的速度和密度使它们成为模拟信号产生和处理方面理想的元件。
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 用VHDL语言编写的程序
library ieee;
use ieeestd_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity dac_ds is
port(reset :in std_logic;
clk :in std_logic;
din :in std_logic_vector(7 downto 0);--Signed integer
dout :out std_logic;
);
end dac_ds;
architecture arch_dac_ds of dac_ds is
signal error :std_logic_vector(9 downto 0);--Error accumulator is 2 bits larger
constant zeros:std_logic_vector(7 downto 0):=(others=>'0');
begin
process(reset,clk,din)
variable val :std_logic_vector(9 downto 0);
begin
if reset='1'then
error<=(others=>'0');
dout<='0';
elsif clk'event and clk='1' then
--val:=din+error;din is sign extended to nbits+2
val:=(din(din'high)&din(din'high)&din)+error;
if val(val'high)='0'then
dout<='1';
error<=val+("11"& zeros);
else
dout<='0';
error<=val+("01"&zeros);
end if;
end if;
end process;
end arch_dac_ds;
4 芯片的选择和配置
选择MAX7000S系列可编程逻辑器件,编译后由MAX+PLUS II软件自动配置进EMP7032SLC44芯片,将生成的目标文件通过编程电缆对器件进行编程。
将该IP核实现的D/A转换器用于新型智能电阻炉温度控制仪中,因为调节炉温的信号不要求变化很快,因此DAC的输入二进制信号为缓变信号。对于这种低频应用,可以将RC时间常数取得较大,以减小噪声。这样,可综合的VHDL语言Delta-Sigma DAC模块配置进EMP7032芯片后,达到了预期的效果。