时间交替采样实验.docx

上传人:b****8 文档编号:10105118 上传时间:2023-02-08 格式:DOCX 页数:15 大小:746.92KB
下载 相关 举报
时间交替采样实验.docx_第1页
第1页 / 共15页
时间交替采样实验.docx_第2页
第2页 / 共15页
时间交替采样实验.docx_第3页
第3页 / 共15页
时间交替采样实验.docx_第4页
第4页 / 共15页
时间交替采样实验.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

时间交替采样实验.docx

《时间交替采样实验.docx》由会员分享,可在线阅读,更多相关《时间交替采样实验.docx(15页珍藏版)》请在冰豆网上搜索。

时间交替采样实验.docx

时间交替采样实验

时间交替采样实验

一、实验目的

1.掌握时间交替采样原理。

2.掌握AD9481的管脚功能和工作原理。

3.掌握IP核的例化,生成DCM和FIFO模块。

二、实验内容

1.使用IP核例化生成DCM模块,产生所需两路采样时钟。

2.使用IP核例化生成FIFO模块。

3.编程实现单路ADC两个通道数据的整合并存储在FIFO。

4.编程实现两路ADC采样数据的整合并存储在FIFO。

三、实验器材

1.PG1000嵌入式开发平台

2.ISE软件

四、实验原理

1.时间交替采样原理

时间交替采样技术,也叫做并行多通道采样技术,它的目标是通过时域上M个ADC的交替工作来达到单块ADC采样的效果,速度也达到原来单块ADC的M倍。

我们以双通道系统为例,介绍时间交替采样技术的原理。

如下图所示,双通道时间交替采样系统是在采样系统中应用了2套采样电路(包括采样保持器、ADC、存储器等)同时工作。

首先,输入信号同时到达两个ADC输入端,接着一路ADC在正时钟的上升沿采样,采得样本1、3、5、7、9点等;另一路ADC在正时钟的下降沿,即负时钟的上升沿采样,二者相位相差180°,采得样本2、4、6、8、10等点。

当时钟脉冲的占空比为50%时,整个采样系统的工作频率就是所用时钟频率的2倍,即采样率比单个ADC芯片所能提供的速率提高了一倍,而成本却大大降低了,在超过1GHz工作频率的情况下,要想提高单个ADC的工作频率,要付出很大的成本,而且实现难度很大。

时间交替采样系统可以在提高采样率的同时节约成本,除此之外,这种双通道时间交替采样系统中对采样保持电路及存储器的速度要求也比单通道时要低一倍。

类似地,把并行采样路数提高到M路,就构成了M通道并行采样系统,可以把采样速率提高到单块ADC的M倍。

此时要求输入信号同时到达M个ADC,并且ADC的采样时钟相位差为准确的360°/M,每个ADC具有相同的工作频率,最后将各路ADC的采样数据正确地整合起来,这样时间交替采样系统的采样率就提升为原来单个ADC的M倍。

2.AD9481

AD9481是ADI公司推出的双8位单片模数转换器,它高速、低功耗、小尺寸、容易用于250MSPS编码速率。

它有内部基准和跟踪保持电路,用户只需提供3.3V电源和差分时钟,许多应用不需外基准或驱动元件。

数字输出为TTL/MOS兼容,可选用偏移二进制码或二进制补码。

它具有良好的线性和动态性能,被广泛地应用于数字滤波器、仪器与测量、点对点无线电通信和数字预测回路中。

AD9481的主要特点如下:

(1)高速低功耗:

250MSPS的转换速率,在250MSPS时,每通道功耗439mw;

(2)良好的线性:

DNL(微分非线性)=0.35LSB,INL(积分非线性)=0.26LSB;

(3)单电源3.3V(3.0-3.6V),内部参考电压1V;

(4)可输入单极性或差分模拟信号,输入电压范围1V_(p-p);

(5)设有低功耗模式;

(6)采用44引脚TQFP封装。

AD9481由一个跟踪/保持放大器,一个AD变换器,一个逻辑控制器,一个时钟模块,一个内部参考电压模块和两个数据输出模块组成。

内部结构如上图所示。

基于高速应用场合的要求,AD9481的模拟输入、数字时钟输入、数字输出、数据同步时钟输出都采用差分方式,故VIN,CLK,DCO,DS均由一对信号组成。

SENSE用于设定参考电压,当接地时内部参考电压输出为1V。

S1选择输出数据格式:

“1”二进制偏移码;“0”二进制补码。

输入输出具体引脚含义如下:

(1)VIN模拟信号输入;

(2)DS数据输出使能;

(3)CLK采样时钟输入;

(4)PDWN休眠方式(高电平有效);

(5)S1数据格式选择,“1”二进制偏移码,“0”二进制补码;

(6)VREF参考电压输入/输出;

(7)SENSE参考电压模式选择,接AGND为内部参考电压,接AVDD为外部参考电压;

(8)AGND模拟地;

(9)AVDD模拟电源;

(10)DRGND数字地;

(11)DRVDD数字电源;

(12)D7A-D0AA通道数据输出;

(13)D7B-D0BB通道数据输出;

(14)DCO数据输出同步时钟。

如上图所示,在数据输出使能(DS)为低电平有效后,采样时钟(CLK)的第一个上升沿到来,采集第一个数据N。

但是AD9481当前输出的数据为8个采样周期前的采样值。

所以,在数据输出端口A输出第一个采样值N时,采样时钟对应的采样点为N+8。

下一个采样周期,采样点为N+9,数据输出端口B输出采样值为N+1。

两个数据输出端口依次输出数据。

所以,数据输出时钟(DCO)频率为工作时钟频率的一半。

可以利用同步时钟(DCO)的上升沿和下降沿来分别锁存A,B两个通道的数据。

3.数字时钟管理器

数字时钟管理模块(DCM)是Xilinx的FPGA芯片及其它器件中经常采用的数字延迟锁相环(DLL)模块。

在时钟的管理与控制方面,DCM与DLL相比,功能更加强大,使用更为灵活。

DCM的功能包括消除时钟的延时、频率的合成、时钟相位的调整等系统方面的需求。

对于DCM模块来说,其关键参数为输入时钟频率范围、输出时钟频率范围、输入/输出时钟允许抖动范围等等。

DCM的主要优点在于:

(1)实现零时钟偏移(Skew),消除时钟分配延迟,并实现时钟闭环控制;

(2)时钟可以映射到PCB上用于同步外部芯片,可以减少对外部芯片的要求,将芯片内外的时钟控制一体化,以利于系统设计。

DCM共由四部分组成,其中最底层仍采用成熟的DLL模块,其次分别为数字频率合成器(DFS)、数字移相器(DPS)和数字频谱扩展器(DSS)。

DCM的功能块和相应的信号示意图如下图所示:

数字延迟锁相环(DLL)主要由一个延时线和控制逻辑组成。

延时线对时钟输入端CLKIN产生一个延时,时钟分布网线将该时钟分配到器件内的各个寄存器和时钟反馈端CLKFB;控制逻辑在反馈时钟到达时采样输入时钟以调整二者之间的偏差,实现输入和输出的零延时,如下图所示:

在Xilinx芯片中,典型的DLL标准原型如下图所示:

其管脚分别说明如下:

(1)CLKIN(源时钟输入):

DLL输入时钟信号,通常来自IBUFG或者BUFG;

(2)CLKFB(反馈时钟输入):

DLL时钟反馈信号,该反馈信号必须源自CLKO或者CLK2X,并通过IBUFG或者BUFG相连;

(3)RST(复位):

控制DLL的初始化,通常接地;

(4)CLKO(同频信号输出):

与CLKIN无相位偏移;CLK90与CLKIN有90°相位偏移;CLK180与CLKIN有180°相位偏移;CLK270与CLKIN有270°相位偏移;

(5)CLKDV(分频输出):

DLL输出时钟信号,是CLKIN的分频时钟信号。

DLL支持的分频系数为1.5、2、2.5、3、4、5、8和16;

(6)CLK2X(两倍信号输出):

CLKIN的2倍频时钟输出信号;

(7)LOCKED(输出锁存):

为了完成锁存,DLL可能要检测上千个时钟周期。

当DLL完成锁存之后,LOCKED有效(输出高电平)。

数字频率合成器(DFS)可以为系统产生丰宙的频率合成时钟信号,输出信号为CLKFX和CLKFX180,可提供输入时钟频率分数倍或整数倍的时钟输出频率方案,输出频率范围为1.5-320MHz(不同芯片的输出频率范围是不同的)。

这些频率基于用户自定义的两个整数比值,一个是乘因子(CLKFX_MULTIPLY),另外一个是除因子(CLKFX_DIVIDE),输入频率和输出频率的关系为:

4.FIFO

FIFO是英文FirstInFirstOut的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。

FIFO的一些重要参数:

FIFO的宽度:

也就是英文资料里常看到的THEWIDTH,它指的是FIFO一次读写操作的数据位。

FIFO的深度:

英文THEDEEPTH,它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。

如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12,就可以存储12个8位的数据。

满标志:

FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow)。

空标志:

FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow)。

读指针:

指向下一个读出地址。

读完后自动加1。

写指针:

指向下一个要写入的地址的,写完自动加1。

FIFO的工作原理:

对于FIFO,读写指针都指向一个内存的初始位置,每进行一次读写操作,相应的指针就递增一次,指向下一个内存位置。

当指针移动到了内存的最后一个位置时,它又重新跳回初始位置。

在FIFO非满或非空的情况下,这个过程将随着读写控制信号的变化一直进行下去。

如果FIFO处于空的状态,下一个读操作将会导致向下溢(underflow),一个无效的数据被读人;同样,对于一个满了的FIFO,进行写操作将会导致向上溢出(overflow),一个有用的数据被新写入的数据覆盖。

这两种情况都属于误动作,因此需要设置满和空两个信号,对满信号置位表示FIFO处于满状态,对满信号复位表示FIFO非满,还有空间可以写入数据;对空信号置位表示FIFO处于空状态,对空信号复位表示FIFO非空,还有有效的数据可以读出。

5.系统框图

如上图所示,该双通道时间交替采样系统主要分为以下几个模块:

采样时钟生成模块、输入信号调理模块、双ADC采样模块、单个ADCA、B通道采样数据整合模块、两路ADC采样数据整合模块。

下面介绍一下各个模块的主要功能:

采样时钟生成模块主要是利用FPGA内部50MHz晶振,通过数字时钟管理模块,应用锁相环的原理倍频产生两路250MHz的采样时钟供两路ADC使用。

其中,这两路采样时钟相位相差180°。

输入信号调理模块主要对输入信号进行幅度、偏置方面的调节。

首先调节信号幅度,满足高速ADC的输入要求,AD9481要求输入信号电压峰峰值不超过1V。

其次,调节输入信号的偏置,实现对信号的最佳观察。

最后,还有产生同步信号(触发脉冲)等等功能。

双ADC采样模块主要是让输入信号尽量同时到达两路ADC的输入端,还有要求两路采样时钟以准确的180°相差输入,然后两路ADC同时工作,进行时间交替采样,最终每路ADC输出A、B两路采样数据还有一个125MHz的同步时钟,准备下一步的数据整合处理。

单个ADCA、B通道采样数据整合模块主要是将每个ADC的A、B两个通道的数据,利用对应的125MHz同步时钟整合成一路8位的数据,然后存入同步FIFO中,准备下一步双ADC采样数据的整合工作。

两路ADC采样数据整合模块主要将已经整合好的两路ADC各8位的数据(存储在FIFO1和FIFO2中)继续整合为一路数据,存在FIFO3中,其中FIFO3的位数为16位,供下一步对采样数据的处理、显示等做准备。

五、实验步骤

1.采样时钟的产生

(一)例化DCM模块,输入为50MHz,输出为两路250MHz,相位相差180度。

(二)编写adcclk模块,调用例化的DCM模块。

(三)书写adcclk模块的测试代码,进行软件仿真,参考的仿真图如下。

2.FIFO的读写

(一)例化一个同步FIFO模块,宽度为8位,深度为16位。

(二)编写fifotest模块,调用例化好的FIFO模块。

(三)编写测试代码,实现对FIFO写入、读出和复位功能的测试,要求先写满再读空。

参考的仿真结果如下图所示。

3.单个ADC两通道数据的整合存储

(一)例化一个宽度8位、深度16的同步FIFO。

(二)编写adc1tofifo1模块,实现对FIFO模块的调用,并且利用同步时钟将ADC的两个通道的数据先进行选择,使用250MHz的FIFO工作时钟将选择的数据写入FIFO。

要求输入有两通道数据、ADC同步时钟、FIFO时钟、读写控制、复位信号,输出为整理好的数据。

部分参考代码如下:

always@(posedgeadc1_dcoornegedgeadc1_dco)

begin

case(adc1_dco)

1:

adc1_dpre<=adc1_da;

0:

adc1_dpre<=adc1_db;

endcase

end

(三)编写测试代码进行对adc1tofifo1模块的测试,要求先进行FIFO的写入,写满以后再读出,观测写入数据和读出数据是否一致,总共是否为16个。

参考仿真结果图片以及参考的部分测试代码如下:

for(count=0;count<100;count=count+1)

begin

#4

if(count%4==1)

begin

adc1_clk<=1;adc1_dco<=1;adc1_da<=adc1_db+1;

end

elseif(count%4==2)

begin

adc1_clk<=0;

end

elseif(count%4==3)

begin

adc1_clk<=1;adc1_dco<=0;adc1_db<=adc1_da+1;

end

elseif(count%4==0)

begin

adc1_clk<=0;

end

if(count==50)

begin

wren<=0;//之前为1

rden<=1;//之前为0

end

end

4.两个FIFO数据整合存储

(一)例化一个同步FIFO,宽度为16位,深度为16.

(二)编写fifo12tofifo3模块,调用例化的FIFO模块,要求输入为两个FIFO的8位数据、FIFO3的时钟、复位信号、读写使能,输出为16位数据。

其中要有将两路8位数据选择一路准备给FIFO3的功能。

(三)编写测试代码,进行对fifo12tofifo3模块的测试,同样要求FIFO3先进行写入操作,写满了再进行读出,观察写入数据和输出数据是否一致。

参考的仿真结果图片如下:

5.从ADC输出到FIFO3的系统组合

(一)根据编写的adc1tofifo1模块,编写adc2tofifo2模块。

(二)将上述两个模块组合成一个模块adctofifo,提高系统的层次性,并且进行测试仿真,看是否工作正常。

(三)将adctofifo模块和fifo12tofifo3模块组合起来,成为总的模块twoadc,实现两路ADC采样后数据的整合与存储。

(四)编写twoadc模块的测试代码,要求根据AD9481的输出时序来定义模块的输入数据、同步时钟。

要求先进行FIFO1和FIFO2的写操作,写满以后进行FIFO3的写入,前两个FIFO的读出。

参考仿真结果图片如下所示:

六、思考题

1.画出系统工作时序图,图中包括输入信号、两路采样时钟、两路采样数据、两路同步时钟、FIFO3的工作时钟、FIFO存储的数据。

2.本文的FIFO先进行写入后进行读出,要是同时写入和读出,结果会是怎样?

3.最后的系统仿真,为什么FIFO3的写使能要之后与FIFO1和FIFO2的读使能,滞后多少工作正常?

4.本文采用250MHz时钟的上升沿同时读取两路ADC的8位数据存入FIFO3,为什么具有可行性,请根据对AD9481数据输出有效时间的分析解释这个问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1