科研训练论文数据基带延迟线设计_第1页
科研训练论文数据基带延迟线设计_第2页
科研训练论文数据基带延迟线设计_第3页
科研训练论文数据基带延迟线设计_第4页
科研训练论文数据基带延迟线设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本科生科研训练结题报告本科生科研训练结题报告 数据基带延迟线的设计数据基带延迟线的设计 项目类型:项目类型: 校级普通项目校级普通项目 负责人:负责人: 10078101201007810120 魏明君魏明君 小组成员:小组成员: 10031101081003110108 严蕾严蕾 10161201151016120115 朱梅虹朱梅虹 指导教师:指导教师: 芮义斌芮义斌 副教授副教授 20132013年年9 9月月4 4日日摘要 延迟线在电子工程系统中有着非常广泛的应用。传统的方法是采用模拟延迟线,用专用的脉冲延迟器件实现延迟控制,其缺点是动态范围小。随着数字技术的发展,数字延迟技术由于其

2、卓越的抗干扰性能和灵活的控制方法,在许多方面优于模拟延迟。数字延迟线的基本原理为: 将前端输入信号进行采样变成数字信号以便存储,经存储后恢复输出。其存储时间的长短即为数字延迟线的延迟时间,改变存储时间也就能改变延迟时间。本文主要是基于 verilog 语言和FPGA 设计延迟线,用于将接收到的目标信号进行采样、延时、回放。首先,我们查阅资料,了解延迟线国内外研究现状,学习常见的几种设计方案。通过对这些方法进行比较,论述它们的优缺点,最后综合比较得出,本文所用的利用 FIFO 存储器的方法是最优的。然后,我们将设计延迟线电路分为 ADC,DAC,FIFO 三个模块来分别实现。结合单个模块的功能要

3、求,我们分别选择了芯片 AD9461,AD9777 和 IDT72V36110并完成了它们的硬件电路连接。最后,我们在理解原理的基础上,对三个模块分别进行软件编程,其中核心模块 FIFO 的设计比较复杂,我们通过 verilog 语言编程实现对内部工作状态转换,我们设计了 7 种工作状态,来完成“存储部分”的设计。 我们通过 quartus 软件对程序进行编译仿真,得到相应的仿真时序图,利用仿真结果验证了延迟线设计的准确性。 关键词关键词: :数字延迟线,数字延迟线,FPGA,Quartus,VerilogFPGA,Quartus,Verilog,FIFOFIFO 目录目录一、延迟线原理.11

4、.1 课题研究背景 .11.2 延迟线实现方式 .11.3 国内外研究现状 .11.4 常见的延迟线设计方法 .2二、 总体电路设计 .62.1 总体原理 .62.2 ADC 模块 .72.3 FIFO 模块 .82.4 DAC 模块 .12三、软件设计.183.1 ADC 模块 .183.2 DAC 模块 .193.3 FIFO 模块 .25四、总体电路设计.31五、结论.32六、参考文献.320一、延迟线原理1.1 课题研究背景延迟线在电子工程系统中有着非常广泛的应用。在许多电子对抗干扰机中,需要对接收到的目标信号进行存储,然后经干扰调制后再发射回目标信号。其中,延迟线的作用是将电信号延迟

5、一段时间。在雷达系统中诸如 MTI 延迟对消、干扰机距离欺骗信号产生以及相控阵中相位偏移控制等都有应用。但传统的方法是采用模拟延迟线,例如固定长度传输线,铁酸盐加载电缆、超声波和磁波延迟线等,最早使用的射频波形存储技术是模拟射频存储,由取样开关、放大器和延迟线构成环路。但是,随着数字技术的发展,越来越多的系统要求能与之匹配的数字延迟线。数字延迟技术亦称为数字存储技术,由于其卓越的抗干扰性能和灵活的控制方法,在许多方面优于模拟设备。本文主要是基于 verilog 语言和 FPGA设计延迟线,用于将接收到的目标信号进行采样、延时、回放。1.2 延迟线实现方式 延迟线是指用于将电信号延迟一段时间的元

6、件或者器件。 延迟线应在通带内有平坦的幅频特性和一定的相移特性(或延时频率特性) ,要有适当的匹配阻抗,衰减要小。 延迟线一般有数字和模拟两种实现方式。 模拟延迟线采用专用的脉冲延迟器件实现延迟控制,由于微波器件对频率的选择性,其缺点是动态范围小。数字延迟线的基本原理为: 将前端输入信号进行采样变成数字信号以便存储,经存储后恢复输出。其存储时间的长短即为数字延迟线的延迟时间,改变存储时间也就能改变延迟时间。由于量化误差等因素,其缺点是无法满足高分辨率的要求。 数字延迟技术亦称为数字存储技术,由于其卓越的抗干扰性能和灵活的控制方法,在许多方面优于模拟设备。本文研究的是数字延迟线的设计,它的输入信

7、号是经过正交调制的基带信号。1.3 国内外研究现状 目前三种常见的数字延迟单元分别为:基于复杂可编程逻辑器件1(CPLD)及数控延迟器(AD9501)的精密延迟电路,采用51单片机的延迟系统,利用CL602六位多功能计数组合电路。 基于复杂可编程逻辑器件( CPLD)及数控延迟器( AD9501)的精密延迟电路。作为 一种用户根据各自需要而自行构造逻辑功能的数字集成电路,CPLD基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆( “在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。 CPLD可以用梯形图来编辑逻辑功能,也可以用硬件描述语

8、言来编写,常用的语言有Verilog HDL和VHDL。采用51单片机设计的延时系统。一般的单片机上都集成有 CPU、程序存储器、数据存储器、输入 /输出接口电路、定时 /计数器、中断控制器、模/数转换器、数 /模转化器、调制解调器等部件。对于利用单片机设计的延时系统,可以使用汇编语言或是 C语言设计程序进行延时。采用CL602六位多功能计数组合电路,设计成一种新的可预置延时电路,并研制成“数字化脉冲延时器 ” 。简单的“CL602”是由大规模集成电路和发光数码管等组成的六位数字显示组合电路。它可完成脉冲计数,频率测量,定时和计时等功能。具有使用方便,读数直观、体积小、可靠性高等优点。1.4

9、常见的延迟线设计方法模拟方法利用专用的脉冲延迟器件来实现延迟控制,而数字方法采用计数器法或存储器法实现延迟控制。1.4.1 模拟延迟线的常见设计方法 模拟延迟线的设计原理:采用数控延迟线,可以精确的实现脉冲延迟。以Analog Device公司的AD9501为例,其内部结构示意图如图1.4.1所示:DAC+- 图1.4.1 AD9501内部结构示意图2 该模块主要由触发模块、斜波发生器、数模转换器(DAC)和比较器组成。正常情况下,比较器输出低电平。当输入脉冲上升沿到达时,触发斜波发生器开始工作,当其输出电压低于DAC的输出电压时,比较器输出翻转为高电平,直到斜波发生器被复位,比较器输出才恢复

10、低电平。 由此可见,通过数控输入,改变DAC的输出电压,就可以控制输出脉冲和输入脉冲的相位关系,从而达到精确延迟的目的。通过复位信号,则可以控制输出脉冲的宽度。 优缺点:数控延迟线法的优点是可以达到很高分辨率,缺点是分辨率和动态范围无法兼顾。如果要求很高的分辨率,就无法达到很大的动态范围,且需要用专有芯片,不利于集成化。1.4.2 数字延迟线的常见设计方法方法一:利用计数法的思想,以目标信号是的上升沿和下降沿为触发,输出一个窄脉冲信号,以此控制延迟信号的高低电平。工作时序图如下:图1.4.2a 方法一的工作原理时序图如图所示,当目标信号上升沿到来时,上升沿触发脉冲使计数器1开始计时,当计数器计

11、数值counter1等于预置的延迟时间时,延迟输出为高电平,计数器清零。当目标信号下降沿到来时,下降沿触发信号使计数器1再次开始计时,当计数器值counter1等于预置的延迟时间时,延迟输出为低电平,计数器清零,并等待目标上升沿。优缺点:方法一的优点是设计简单,占用资源少,只需要几个触发器和一个计数器,缺点是方法一只适用于延迟时间小于脉冲宽度,若延迟时间大于脉3冲宽度,会出现逻辑错误。所以方法一实现的延迟时间比较小,不能有很大的延迟,具有一定的局限性。方法二:同样利用计数器的方法,在方法一的基础,除了计数器1对延迟时间计数外,还增加了2个计数器。计数器2对目标信号的高电平进行计数,当目标信号的

12、低电平到达时,停止计数并锁存计数器2的值。计数器3从延迟信号的上升沿开始计数,与计数器2比较,相等时输出低电平17。工作原理时序图如下:图1.4.2b 方法二的工作原理时序图(1)图1.4.2c 方法二的工作原理时序图(2)目标数字信号上升沿到来时,输出一个触发信号,使计数器1 和计数器2 同时开始计数。其中,计时器1的功能不变,对预置的延迟时间计数,而计数器24对目标信号的高电平计数, 当目标信号下降沿到来时,停止计数并存储当前计数值, 等待下一个目标数字信号的上升沿到来。当计数器1计数结束时,计数器3开始计数,并比较计数器3和计数器2的计数值。如果计数器3的计数值小于计数器2 的计数值,

13、输出置高, 且计数器3计数值加一,不断比较, 直到计数器3的计数值和计数器2 的计数值相等时, 输出置低, 给出异步清零信号,将所有计数器清零, 回到初始状态, 等待下一个上升沿信号的到来。当目标信号的下一个上升沿到来时, 重复上面逻辑就可以实现目标信号延时。优缺点:方法二的优点是设计也比较简单,在方法一的基础上,只加了两个计数器,而且解决了方法一的所说当延迟时间大于脉冲宽度时会出现的逻辑错误。缺点是,此方法只适用于延迟时间小于目标信号周期,若延迟时间大于目标信号周期,会丢失数据,会产生错误的延迟输出。方法三:利用存储器法,FIFO 是一种先进先出的数据存储器,他与普通存储器的区别是没有外部读

14、写地址线,这样使用起来非常简单,但只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加 1完成,不像普通存储器那样可以由地址线决定读取或写入某个指定的地址。FIFO除异步清零信号外,所有的操作都是在时钟信号的上升沿有效,可以进行读数据、写数据、读写数据这些操作。设计的一大问题是能判断FIFO堆栈的空、满状态。在读操作时,不能为空;在写操作时,不能为满。判断FIFO的空/满就成了FIFO设计的核心问题。具体实现过程:当接收到预置的延迟值时,模块给出一个触发信号,使得FIFO进行写数据操作,同时计数器开始计数,当计数器值等于预置的值时,FIFO同时进行读写数据操作。这样就能完成目标的延

15、迟输出。使用FIFO 进行延迟设计时, 为了确保数据的正确延时, 必须保证延迟时间必须小于FIFO 的存储深度。可以利用FIFO 的full 信号作为反馈信号。当full 信号为高时,模块清零, 并向上级模块反馈出错信号。优缺点:由于FIFO对目标信号没有特别需求,只是通过读写控制线来控制FIFO输出,因此它解决了方法一、二所遇到的问题,适用于任何一种情况。相较之前,方法三为最优的方法。5 二、总体电路设计2.12.1 总体原理 由以上分析,方法三为最优的方法。我们选择FIFO存储器来实现数据基带延迟线。 整个电路主要分为三个部分:(1) AD模块对输入的模拟信号进行采样,变成数字信号,由设计

16、要求,要分别完成I/Q路90M采样。(2) FIFO模块将I/Q路数字信号送入FIFO,存储并延迟一定时间送出。(3) DA模块将延迟的数字信号恢复为模拟信号。 图 2.1 数字延迟线设计基本框图 整个电路是在FPGA的控制下运行。数据延迟线的总体工作原理如下。两片ADC芯片AD9461对信号进行奈奎斯特采样,采样频率为90M,其中一路输出I路基带信号,一路输出Q路基带信号。I/Q路信号时序送到FPGA中,FPGA将其送至FIFO中存储,当达到延时时间时,FPGA再控制数据由FIFO中读出。读出的数字信号送入DAC器件AD9777恢复成原来的模拟信号。而且我们要设计的数据延迟线是可编程的。可选

17、择四种延迟时间,分别为10s, 75s, 150s, 300s(FIFO的最大延迟时间为300s)。FPGA必须不停对FIFO进行检测,如果有延时时间更新,必须对FIFO进行复位,清空,重复6存储。2.2 ADC模块2.2.1 芯片选择ADC模块对输入的模拟信号进行采样,将其转换为数字信号,要求完成基带I/Q数据的90M采样。所以根据要求,我们选择的芯片必须适合工作在基带,且能完成90M的采样。 AD9461是一款16-bit单芯片模数转换器,内置跟踪保持电路,常用于数据采集、仪器仪表、核磁共振成像以及雷达接收机。 AD9461的采样速率高达130MSPS ,适合工作在基带(100 MHz)与

18、中频,且具有出众的基带中频信噪比(SNR)性能。本设要求90M基带采样,故AD9461可以保证满足采样率的情况下好的性噪比。此外,由于其出众的线性度,提供输出时钟和易于使用等显著特点,AD9461是我们首选的芯片。AD9461采用3.3 V或5.0 V电源供电,根据性能运行的需求,要求低压差分输入时钟信号。对于大多数应用来说,无需外部基准电压源或驱动器件。数据输出符合CMOS或LVDS标准(符合ANSI-644标准)且包括均值,能降低短跟踪距离所需的全部电流。 2.2.2 硬件电路接口连接硬件电路设计中,需要两片 AD9461,完成对I、Q两路基带信号的采样,两片AD9461的硬件电路连接基本

19、相同 ,如下图所示。特殊的引脚说明如下:芯片由40(CLK+),41(CLK)引脚输入90M差分时钟, 由系统分频得到。模拟信号由22(VIN+),23(VIN-)输入。采样得到的数字 16bit数字信号,由 70-74(D0-D4),77-86(D5-D14),89(D15)引脚输出, 采用了CMOS输出。7图2.2.2 AD9461硬件电路设计图 2.3 FIFO模块2.3.1 FIFO模块芯片选择我们的系统要求 FIFO 能对双路 16 位数据进行输入,存储,延时输出。并且最大延时能达到 300us。而且延时要是可编程的。最终采用的 FIFO 器件是 IDT72V36110 。它有如下几

20、个特点: 有 36 In36 Out, 36 In 18Out, 36 In9 Out, 18 In36 Out, 9 In36Out 几种输入输出模式,每一字节带有一位校验位。可以通过8BM,IM,OM 三个引脚设定模式。这样就可以选择 36 In36 Out 总线模式来实现双路 16bit 即 32bit 的延时输出。 表 2.3.1a 总线配置模式匹配BMIWOW写端口宽度读端口宽度LLL3636HLL3618HLH369HHL1836HHH936 具有满(FF),半满(HF)和空(EF)三种状态指示,并且具有可编程的信号指示(PAE,PAF)可用来控制特定的延时输出。我们的延迟线主要就

21、是利用 PAE 信号。 可达 100MHZ 操作频率,数据读写周期仅为 10ns。固定的首字传输时延,重传数据零字节时延。具有两种复位功能,满足用户不同需求。具有电源管理功能,自动减少电源消耗。 相互独立的写时钟和读时钟。下表为 IDT72V36110 的工作状态: 9表 2.3.1b FIFO 工作状态WCLKRCLKIDT72V361000011上升沿并行向 FIFO 写数据0101上升沿并行写寄存器并行写入“空”或“满”的偏移量,从而实现延时时间 (参考门限nPAE)的设置0110上升沿并行读出写入寄存器当中的延时时间(参考门限 nPAE)111无操作10上升沿将数据写入FIFO10上升

22、沿同时读写数据10111无操作2.3.2 硬件电路接口连接 图 2.3.2 IDT72V36110 连接电路特殊的引脚说明如下:D0-D35,36 路输入数据,Q0-Q35,36 路输出数据。输入引脚。引脚 6-IW,引脚 112-BW,引脚 119-OW,全部接地,即将总线设置为 36 In36 Out 模式。11输入引脚。引脚 1-,引脚 2-,引脚 104-,引脚 125-。按 FIFO 工作状态图,软件编程设置这些引脚,完成 FIFO 工作状态切换,从而完成延迟。输出引脚,引脚 110-。如果 FIFO 存储器中字数低于设定偏移量 n, (可编程几乎空)为 0,如果 FIFO 存储器中

23、字数多于或等于偏移量 n, 为 1。在软件实现部分,通过对偏移量 n 的设定,再利用特性,来实现固定延时输出。2.4 DAC 模块2.4.1 DAC 模块芯片选择DAC芯片将延迟的数字信号恢复为模拟信号。由于ADC中的芯片是16bit,所以DAC中也选择16bit。我们选择的AD9777是双路16bit数模转换器,所以只要一片AD9777就能实现将I/Q路信号恢复为模拟信号。 AD9777属于全新的引脚兼容、高速、双通道插值转换器系列,提供16位分辨率,最大输入数据速率为160 MSPS(无插值) ,最大DAC更新速率为400 MSPS(8x插值) 。该系列器件具有可选插值率(2x/4x/8x

24、)以及能够以Fs/2、Fs/4或Fs/8混频的复合调制器。AD9777 与 FPGA 通信使用串行接口(SPI)。它可以支持四根信号线,时钟信号线 SCLK,使能信号线 CS,串行数据输入/输出端口 SDIO,串行数据输出端口 SDO。如下图所示:12 图 2.4.1a AD9777 串行接口AD9777 的一个通信周期由两个阶段组成。第 1 阶段是指令周期,用来在通信周期的前 8 个 SCLK 的上升沿,把指令字节写入到 AD9777。指令字节定义即将到达的数据传输是读还是写,数据传输的位数,以及数据传输的第一个字节存入寄存器的起始地址。 通信周期的第 2 阶段,是数据传输周期,在通信周期除

25、了指令周期的全部SCLK 上升沿写入。可以以 1-4 字节的方式传输,一般选用多字节传输。其他关于数据传输的方式由指令周期的数据定义,具体见下表。8 位指令字节含义如下:MSB LSBI7I6I5I4I3I2I1I0读/写N1N0A4A3A2A1A0I7:1 表示读操作;0 表示写操作;N1,N0 设定在数据传输周期确定要传送的字节数;A4,A3,A2,A1,A0 设定数据首字节访问寄存器地址;13AD9777 的 SPI 端口,可支持最高有效位(MSB)或最低有效位(LSB)数据格式。此功能由寄存器 00h 的第六位控制(见下文)。默认是 MSB 优先。下面是两种模式的串行寄存器接口时序图。

26、图 2.4.1b MSB 优先串行接口时序图 2.4.1c LSB 优先串行接口时序通过完整的通信周期,从 SPI 接口向各寄存器写入控制字数据,能提高芯片的可编程性能,从而增强系统级选项。下表为 SPI 接口的模式控制图: 表 2.4.1 模式控制(通过 SPI 接口)地址第 7位第 6位第 5 位第 4 位第3 位第 2 位第 1 位第 0 位00hSDIO 双向0=0=输输入入1=I/OLSB,MSB0=MSB0=MSB1=LSB置 1 时软件重置置 1 时关闭DAC 输出电流置1 时关闭所有数模功能1R/2R 模式 DAC 输出电流由一个或两个外部电阻设置0=2R0=2R,1=1RPL

27、L_LOCK 指标01滤波滤波调制模调制模0=0=1=1=实混合实混合0 = 0=PLL_LO0=PLL_LO14h器插值率(1, 2, 4, 8)器插值率(1, 2, 4, 8)式(NoneNone, fS/2, fS/4, fS/8)式(NoneNone, fS/2, fS/4, fS/8)无无零零插插值值滤滤波波置1 时允许零插值模式模式0=复杂混合模式ejt 1 = e+jtCKCK1=DATACLK02h0=0=有有符号符号输入输入数据数据1=无符号0=0=两两端口端口输出输出模式模式1=一端口输入模式DATACLK 驱动加强DATACLK 反转0=0=无反无反转转1=反转ONEPO

28、RTCLK 反转0=0=无反转无反转1=反转IQSEL反转0=0=无反无反转转1=反转Q First0=I0=I FirstFirst1=Q First03h数据速率2时钟输出PLL 分频器(预分频器)PLL 分频器(预分频器)04h0 0 = = PLLPLL OFFOFF2 1 = PLL ON0=0=自自动电动电荷泵荷泵控制控制1=可编程PLL 充电泵控制PLL 充电泵控制PLL 充电泵控制05hIDAC精细的增益调整IDAC精细的增益调整IDAC 精细的增益调整IDAC 精细的增益调整IDAC 精细的增益调IDAC 精细的增益调整IDAC 精细的增益调整IDAC 精细的增益调整15整0

29、6hIDAC 粗增益调整IDAC 粗增益调整IDAC 粗增益调整IDAC 粗增益调整07hIDAC偏移调整第 9位IDAC偏移调整第 8位IDAC 偏移调整第 7 位IDAC 偏移调整第 6 位IDAC 偏移调整第5 位IDAC 偏移调整第 4位IDAC 偏移调整第 3 位IDAC 偏移调整第 2位08h0 0 = = I IOFFSEOFFSET T onon I IOUTAOUTA 1 = IOFFSET on IOUTBIDAC 偏移调整第 1 位IDAC 偏移调整第 0位09hQDAC精细增益调整QDAC精细增益调整QDAC 精细增益调整QDAC 精细增益调整QDAC 精细增益调整QD

30、AC 精细增益调整QDAC 精细增益调整QDAC 精细增益调整0AhQDAC 粗增益调整QDAC 粗增益调整QDAC 粗增益调整QDAC 粗增益调整0BhQDAC偏移调整第 9位QDAC偏移调整第 8位QDAC 偏移调整第 7 位QDAC 偏移调整第 6 位QDAC 偏移调整第5 位QDAC 偏移调整第 4位QDAC 偏移调整第 3 位QDAC 偏移调整第 2位0C0 0 = = QDAC 偏QDAC 偏移16hI IOFFSEOFFSET T onon I IOUTAOUTA 1 = IOFFSET on IOUTB移调整第 1 位调整第 0位ODh寄存器类型寄存器类型寄存器类型寄存器类型注

31、:默认值以粗体显示。2.4.2 硬件接口电路连接 17图2.4.2 AD9777硬件电路设计图 几个特殊的管脚: 输入引脚。5-CLK+,6-CLK-,输入90M差分时钟。 输入引脚。PIB0-P1B15,P2B0-P2B15,输入I/Q路数字信号。 输出引脚。两路模拟输出分别是(73、72)和(69、68) 。 8- DATACLK/PLL_LOCK。该引脚指示PLL的状态。1表示PLL处于锁定状态。0表示PLL没有锁定。此引脚也可被编程作为输入或输出(地址01h,第0位)DATACLK信号。在软件设计中,我们把管脚8作为DATACLK信号。18 54-SPI_SDIO 。串行数据输入/输出

32、。 双向数据引脚,寄存器地址 00h 的第 7 位控制数据方向。可以只作为输入,也可以作为双向输入输出。默认值设置是 0,即只作为输入。 53 -SPI_SDO 。串行数据输出。当SDIO作为输入时,SDO作为输出;当SDIO作为双向输入输出时,SDO作为高阻状态。此引脚也可以被用来作为数据速率时钟输出。 输入引脚。57-RESET,复位。管脚值为1时复位所有的SPI端口寄存器为其默认值,包括地址00h。软件复位也可以通过写寄存器00h第五位为逻辑1。不同的是软件复位对地址00h没有作用。 三、软件设计3.1 ADC 模块AD9461 使用简单,芯片初始化后,接上时钟信号后,会自动开始模数转换

33、。软件编程只需要将 AD9461 采样以后的信号赋给程序即可,为后面的 FIFO 操作做准备。AD1_clk_90mAD2_clk_90mAD1_ovrAD2_ovrAD1out15.0AD2out15.0ADI_out15.0ADQ_out15.0AD_cfiginst图 3.1a ADC 模块图主要信号如下:AD1_clk_90m,AD2_clk_90m:两片 ADC 的输出同步时钟。 AD1out,AD2out:两片 ADC 的输出同步采样信号。AD1_or,AD2_or:两片 ADC 的溢出指示信号,高电平说明采样溢出。模块时序通过逻辑分析仪测试得到所示。19 图 3.1b ADC 模

34、块时序图(1) 输入的信号频率为 1Mhz,它经过 AD9461 90M 采样后的信号为AD1out;我们把 ADI_out=AD1out;所以这两个信号是一样的。 图 3.1c ADC 模块时序图(2)由放大的图像看出,采样的后信号已经不是平滑连续的正弦信号,它由一个一个采样点组成,由于采样率高,我们可看出采样前的波形。3.2 DAC 模块AD9777 的软件设计主要是通过 SPI 接口对寄存器进行配置。表 3.2 模式控制(通过 SPI 接口)地址第 7位第 6位第 5 位第 4 位第3 位第 2 位第 1 位第 0 位00hSDIO 双向0=0=输输入入LSB,MSB置 1 时软件重置置

35、 1 时关闭DAC 输出电流置1 时关闭1R/2R 模式 DAC 输出电流由一个或两PLL_LOCK 指标201=I/O0=MSB0=MSB1=LSB所有数模功能个外部电阻设置0=2R0=2R,1=1R01h滤波器插值率(1, 2, 4, 8)滤波器插值率(1, 2, 4, 8)调制模式(NoneNone, fS/2, fS/4, fS/8)调制模式(NoneNone, fS/2, fS/4, fS/8)0=0=无无零零插插值值滤滤波波置1 时允许零插值1=1=实混合实混合模式模式0=复杂混合模式0 = ejt 1 = e+jt0=PLL_LO0=PLL_LOCKCK1=DATACLK02h0

36、=0=有有符号符号输入输入数据数据1=无符号0=0=两两端口端口模式模式1=一端口模式DATACLK 驱动加强DATACLK 反转0=0=无反无反转转1=反转ONEPORTCLK 反转0=0=无反转无反转1=反转IQSEL反转0=0=无反无反转转1=反转Q First0=I0=I FirstFirst1=Q First03h数据速率2时钟输出PLL 分频器(预分频器)PLL 分频器(预分频器)04h0 0 = = PLLPLL OFFOFF2 1 = PLL ON0=0=自自动电动电荷泵荷泵控制控制1=可编程PLL 充电泵控制PLL 充电泵控制PLL 充电泵控制05IDACIDACIDAC 精

37、IDAC 精IDAIDAC 精细IDAC 精IDAC 精细21h精细的增益调整精细的增益调整细的增益调整细的增益调整C 精细的增益调整的增益调整细的增益调整的增益调整06hIDAC 粗增益调整IDAC 粗增益调整IDAC 粗增益调整IDAC 粗增益调整07hIDAC偏移调整第 9位IDAC偏移调整第 8位IDAC 偏移调整第 7 位IDAC 偏移调整第 6 位IDAC 偏移调整第5 位IDAC 偏移调整第 4位IDAC 偏移调整第 3 位IDAC 偏移调整第 2位08h0 0 = = I IOFFSEOFFSET T onon I IOUTAOUTA 1 = IOFFSET on IOUTBI

38、DAC 偏移调整第 1 位IDAC 偏移调整第 0位09hQDAC精细增益调整QDAC精细增益调整QDAC 精细增益调整QDAC 精细增益调整QDAC 精细增益调整QDAC 精细增益调整QDAC 精细增益调整QDAC 精细增益调整0AhQDAC 粗增益调整QDAC 粗增益调整QDAC 粗增益调整QDAC 粗增益调整0BhQDAC偏移QDAC偏移QDAC 偏移调整QDAC 偏移调整QDAC 偏QDAC 偏移调整第 4QDAC 偏移调整QDAC 偏移调整第 222调整第 9位调整第 8位第 7 位第 6 位移调整第5 位位第 3 位位0Ch0 0 = = I IOFFSEOFFSET T onon

39、 I IOUTAOUTA 1 = IOFFSET on IOUTBQDAC 偏移调整第 1 位QDAC 偏移调整第 0位ODh寄存器类型寄存器类型寄存器类型寄存器类型注:默认值以粗体显示。 对照上表,我们设置寄存器如下: 地址:00H ,数据 00000000B,都设为默认值。 地址: 01H ,数据 00000101。“第 0 位”设为 “1”表示 AD9777 的第8 管脚 DATACLK/PLL_LOCK,被编程作为 DATACLK 信号(输入数据的同步时钟)。其余位设为默认值。 地址 02h,00100000B。 “第 5 位”设为 “1”表示增强 DATACLK 的驱动能力,其余位设

40、为默认值。 地址 03h-0Dh,无需特殊设置,都为默认值。 具体设置寄存器的值是在一个通信周期内通过 SPI 写入。完整的设置一个寄存器的值的过程如下(以 01H 为例):需要在传送时给 cs 信号 16 个 SCLK 的低电平,即一个完整的通信周期。前 8 个时钟 SCLK 的上升沿,是指令周期。因为是写 I7=0,因为输入的寄存器的值是 8bit,所以 I6I5=00,故指令周期串行输入的 8bit 与要写的寄存器的地址相同即 01H。23I7I6I5I4I3I2I1I0读/写N1N0A4A3A2A1A0I7:1 表示读操作;0 表示写操作;N1,N0 设定在数据传输周期确定要传送的字节

41、数;后 8 个时钟 SCLK 的上升沿,是指令传输周期。将要写入寄存器的值00000101 串行由高向低输入 SPI。即完成对 01H 寄存器的初始化。读寄存器的值与上类似,只不过将指令周期的 bit1 都变为 1 即可。程序生成模块如图所示: 图 3.2.1a DAC 模块图 clk_6m:用于寄存器进行配置的同步时钟 SCLK,由于通过 SPI 口进行寄存器配置时的最高时钟为 10M,我们在此处选择的同步时钟速率为 6M。该时钟是由分频器件送给 FPGA 的 90M 时钟再分频得到的。reset_n:复位信号,低电平有效。resetCS:片选信号,低电平有效。SDIO:通过 SPI 口的寄

42、存器值输入信号。SDO: 通过 SPI 口的寄存器值输出信号。DAI_in,DAQ_in:I/Q 路同步输入数字信号(16bit)。模块时序通过逻辑分析仪测试得到24图 3.2.1b DAC 模块时序图(1) 如图是通过 SPI 口对寄存器进行读操作,图中的 SDIO 为1000_0000_0000_0000,它表示从地址 00H 中读取寄存器的实际值,此时,根据SDO 图像可以看出,读出的实际值为 0。 ,说明 00H 寄存器配置正确。图 3.2.1c DAC 模块时序图(2) 此时,图中的 SDIO 为 1000_0110_0000_0000,它表示 SDO 从地址 06H 中读取寄存器的

43、实际值,读出的数据为 0000_1101。图 3.2.1d DAC 模块时序图(3)从上图可以看出,DAI_in 是 FIFO 传送给 DAC 模块的数字信号,它完成了FIFO 的存储部分,在输出前,它需要通过 AD9777 对信号进行数模转换。253.3 FIFO 模块3.3.1 基本原理FIFO 是整个延迟线的核心。FIFO 的意思是先入先出,是一种存储缓冲器。FIFO 具有满(FF),半满(HF)和空(EF)三种状态指示,并且具有可编程的信号指示(PAE,PAF)。我们的延迟线主要就是利用 PAE(可编程几乎空)信号。当数据存储达到设定的偏移量 n 时,就控制读出,从而通过编程 n 来得

44、到特定的延时输出。另外由于有四个延迟时间,会存在延迟时间切换问题,所以,我们要及时检查到延迟时间的更新并作相应改变。为了描述 FIFO 的工作流程,我们定义其 7 种工作状态。分别是 0、检测延时更新状态,1、更新延时状态,2、等待状态,3、写延时状态,4、读延时状态,5、写数据状态,6、同时读写数据状态图 3.3.1 FIFO 控制流程图260 状态:检测延时更新状态。检查延时是否更新,若更新,立即清空 FIFO并转入 1 状态;若没有更新,进入 2 状态。1 状态:更新延时状态。把新的延迟时间赋值,等待特定的时间,保证工作稳定后,进入 2 状态。2 状态:等待状态。如果延时改变,立即清空

45、FIFO 并转入 1 状态。3 状态:写延时状态。如果延时改变,立即清空 FIFO 并转入 1 状态。如果延时没有改变,设置=0,=1,=0,即并行写寄存器状态。1SEN此时,我们把 FIFO_in=delay,设置参考门限 n,等待特定时间后进入 4 状态。 4 状态:读延时状态。如果延时改变,立即清空 FIFO 并转入 1 状态;如果没有改变,设置=0,=1,=1,即并行读寄存器状态。此时,0SEN我们读寄存器来判断 PAE 是否正确,等待特定时间后进入 5 状态。5 状态:写数据状态。如果延时改变,立即清空 FIFO 并转入 1 状态;如果没有改变,把数据写入到 FIFO 中,在此处我们

46、设置=1,=0,=1,FIFO 处于写数据状态。当 FIFO 中的数据写入到 n 值时(由 delay 决定),nPAE=1,进入 6 状态;若 nPAE=0,继续写数据到 FIFO 内。6 状态:同时读写数据状态。如果延时改变,立即清空 FIFO 并转入 1 状态;如果没有改变,当 nPAE=1 时,设置=1,=0,=0,即 FIFO 同时读写数据;当 nPAE=0 时,回到 5 状态。在 1 状态,3 状态和 4 状态中,都要等待特定的时间才能进入下一状态,这些等待时间的作用是:为了让工作稳定,进而再进行下一部分的工作,可以避免引起毛刺,出现冒险。273.3.2 与 AD,DA 模块的信号

47、传递AD 采样两路各 16bit,为了将其都存储并延时输出,根据 FIFO 的几种总线模式,我们选择 36Inx36out 模式。具体可通过 BW,IW,OW 三个引脚设置。采样信号是两片 ADC 组成,每片都为 16bit,一共 32bit;DAC 芯片是双路,16 位信号数模转换,一共也为 32 位。所以在向 FIFO 传送数据的时候,我们要对剩余四 bit 引脚进行置零。在这里,我们将 FIFO 的 5,16,33,34bit 置零。其余 32bit 传递信号。 当 ADC 部分向 FIFO 传输数据时 FIFO_in=ADI_out15,2b00,ADI_out14:0,ADQ_out

48、15,2b00,ADQ_out14:0 当 FIFO 传输数据到 DAC 部分时DAI=FIFO_data35,FIFO_data32:18;DAQ= FIFO_data17,FIFO_data14:03.3.3 与 ADC,DAC 的时钟同步 由于 ADC、FPGA 与 DAC 都有自己的同步数据时钟,而且两片 ADC 的同步时钟也存在一定的相位差。所以,需要将这些异步信号转为同步信号以方便后续的处理。因为整个系统是在 FPGA 的控制下运作,所以由 FPGA 实现在内部的时钟同步转换。 ADC 与 FPGA 的同步:在 FPGA 内部开辟一个 fifo(IP 核),将 ADC 的两路采样信

49、号输入 fifo 再输出,其写时钟分别为 AD1_clk_90m 与 AD2_clk_90m(ADC模块的输出时钟) ,而读时钟为 FPGA_clk_90m(FPGA 内部时钟) 。使 ADC 的采样数据与 FPGA 内部的时钟信号同步。 FPGA 与 DAC 的同步:同样利用 FPGA 内部的 fifo,FPGA 将延时数据通过fifo,其写时钟为 FPGA_clk_90m,而读时钟为 DATACLK(DAC 数据输入时钟) 。使 DAC 的输入数据与 FPGA 内部的时钟信号同步。283.3.4 延时与 PAE 的转换 我们的延迟线要求实现 10s,75s,150s,300s 四种延迟时间

50、。对于使用的 90M 时钟,在十六进制下,计数器应该分别计数到:384, 1A5E,34BC,6978。但由于系统自身的延时,所以我们对延迟时间的计数值要进行修改。通过延迟测试,对计数器值进行修改调整,模拟仿真,得到正确的延迟时间;3.3.5 模型封装 用 verilog 语言表述得到模块。输入信号: FPGA_clk_90m:给 FPGA 的 90M 内部时钟,由分频器提供。 WCLK,RCLK:FIFO 的写时钟与读时钟,本程序令 WCLK= FPGA_clk_90m ,RCLK= - FPGA_clk_90m。SYS_RESET:系统复位信号,高电平有效。在系统复位完成以后再对 DAC

51、器件进行相应的配置。nPRS:部分复位信号,低电平有效。当有延时时间更新时,就会清空供 FIFO及 PAE 值,但系统设定不变。delay_sel:由外部输入的延时选择信号,2bit。其中,00,01,10,11 分别对应延时为 10us,75us,150us,300us。 FIFO_in: FIFO 的数据输入引脚,该管脚是复用管脚,在向 FIFO 的寄存器当中写值时也是通过该管脚实现的。nMRST、nMRST2:前者是送给 FIFO 器件的复位信号,后者为同步状态机当中用到的复位信号。FIFO 的有些管脚需要固定为高低电平,而有些管脚则需要根据情况进行实时更新。关于 nLD、nWEN、nREN、nSEN、WCLK 与 RCLK 的配合使用根据 FIFO 流程图编程。 29输出信号:ADI_out,ADQ_out:经过 FPGA 内部 fifo 同步后的两路 ADC 采样信号。delay:写入到 FIFO 寄存器当中的 n 值。FIFO_out:用于 FIFO 的并行输出数据,是复用管脚,在从 FIFO 的寄存器当中并行读取数值时也是通过该管脚实现的。FIFO_rgt_value:从 FIFO 的寄存器当中读取的写入寄存器值。FIFO_data:从 FIFO 当中读取的写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论