新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA的∑-Δ D/A转换器的设计与实现

基于FPGA的∑-Δ D/A转换器的设计与实现

作者:时间:2010-04-21来源:网络收藏


图3虚线框内的电路都在里面实现,其中的DAC模块的原理图见图2,在本文中是用可以综合的VerilogHDL语句来描述的。VerilogHDL描述的可综合性是指其可被综合工具所识别,将其寄存器传输级(RTL)描述综合成门级网表,最终能通过的布局布线工具映射到当中成为能完成指定功能的硬件电路。VerilogHDL语言最初是面向建模和仿真的,只有10%可以被综合称为可综合子集。对于不同的综合工具,可综合子集的内容并不相同。IEEE的一个工作组目前正在撰写一个名为IEEE Std 1364.1RTL的综合子集的规范,定义了一个最小的可综合的Verilog语言要素的子集,以便得到各综合工具提供商的支持。
图3中缓冲器的输出端DACoutDrvr连接到FPGA的输出引脚上,驱动外部的模拟RC低通滤波器。图中R=3.3kΩ,C=0.0047μF,VOUT即为最终转换所得的模拟信号。下面给出了DAC模块的可综合的VerilogHDL描述:
‘timescale 100 ps / 10 ps
//This is a Delta-Sigma Digital to Analog Converter
module dac(DACout, DACin, Clk, Reset);
output DACout; // This is the average output that feeds low pass filter
reg DACout;
input [7:0] DACin; // DAC input
input Clk;
input Reset;
reg [9:0] DeltaAdder; // Output of Delta adder
reg [9:0] SigmaAdder; // Output of Sigma adder
reg [9:0] SigmaLatch; // Latches output of Sigma adder
reg [9:0] DeltaB; // B input of Delta adder
always @(SigmaLatch) DeltaB = {SigmaLatch[9],SigmaLatch[9]} (8);
always @(DACin or DeltaB) DeltaAdder = DACin + DeltaB;
always @(DeltaAdder or SigmaLatch) SigmaAdder = DeltaAdder + SigmaLatch;
always @(posedge Clk or posedge Reset)
begin
if(Reset)
begin
SigmaLatch = #1 1’bl (8);
DACout = #1 1’b0;
end
else
begin
SigmaLatch = #1 SigmaAdder;
DACout = #1 SigmaLatch[9];
end
end
endmodule该程序经过Xilinx的FPGA集成开发工具ISE6.2编译(含综合过程)、仿真后,再选择Virtex系列FPGA芯片进行配置。设置CLK=100MHz(最高可达219MHz)。

本文引用地址:http://www.eepw.com.cn/article/191733.htm

4 结论

∑-Δ DAC是高速FPGA芯片用于数字模拟混合信号系统设计的尝试,可应用于可编程电压源、波形发生器、声音发生器、RGB颜色发生器和ADC的参考电压发生器等,极大的减少了系统的元件数目,降低了系统的成本,有很好的实用价值。


上一页 1 2 3 下一页

关键词: FPGA 转换器

评论


相关推荐

技术专区

关闭