FPGA驱动AD9240实现AD转换

这篇具有很好参考价值的文章主要介绍了FPGA驱动AD9240实现AD转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

在做项目中,经常会用到AD转换模块。前段时间做毕业设计的时候需要用到FPGA驱动AD9240模块实现模拟数据的采集和转换,尽管相对来说AD9240算比较简单的驱动模块,但是也想记录下分析和设计过程。

二、时序原理

首先通过芯片手册可以看到AD9240是14位,最高速率可达10Mbps的模数转换器件。然后就是重要的时序转换图:

FPGA驱动AD9240实现AD转换,FPGA设计开发,fpga开发

可以看出:

在采样时钟第一个周期的上升沿芯片对当前模拟输入进行采样,然后在采样时钟第四个周期的下降沿完成模拟数值的转换和输出,这意味着整个输出的转换采样值滞后采样时钟4个周期。如果需要将模拟值与转换值相对应,这个延迟是需要注意的。

FPGA驱动AD9240实现AD转换,FPGA设计开发,fpga开发

根据时序参数要求,可以知道:

1、最小的Clock Period为100ns,符合最大的10M转换速率

2、由于高速分辨率的A/D对输入采样时钟的质量很敏感,AD9240的输入时钟占空比应该满足45%~55%,对于时钟低于10M的情况,可以偏离这个范围,但必须满足t C H _{CH} CH和t C L _{CL} CL的要求。

FPGA驱动AD9240实现AD转换,FPGA设计开发,fpga开发

一般对于AD9240的电路设计如上,通过模拟信号单独输入到VINA中,然后CLK由FPGA提供,BIT1~BIT14为转换输出的14为数值。OTR为溢出标志位,代表输入数据是否低于或超过转换范围,一般不需要这个接口信号。

三、代码设计

由此可以设计FPGA驱动代码如下:

module AD9240
(
    input clk,
    input n_rst,
    input adc_otr,//if(数据超过范围):1 else:0
    input adc_clk,
    input [13:0] AD_data_in,
    
    output reg [15:0] AD_data_out
    
);

reg [1:0] adc_clk_delayed;

always @(posedge clk or negedge n_rst ) //将采样时钟进行打拍
begin
       if(n_rst==1'b0)
            adc_clk_delayed <=2'b00;
       else
            adc_clk_delayed <={adc_clk_delayed[0],adc_clk};
end

wire fallingedge_adc_clk=(adc_clk_delayed==2'b10);

always @(posedge clk or negedge n_rst) 
begin
    if(n_rst==1'b0)
        AD_data_out <=16'd0;
    else if(fallingedge_adc_clk==1'b1)
        AD_data_out <={2'b00,AD_data_in};//补齐为16bit,以便ram的存储及usb通信
    else
        AD_data_out <=AD_data_out;
end

endmodule

值得注意的是:

1、输入adc_clk要满足时序参数要求

2、由于一般存储单位不为14bit,所以再得到转换数据后将其不全为16bit得到AD_data_out

四、结果验证

根据芯片手册的数据格式输出可知:

FPGA驱动AD9240实现AD转换,FPGA设计开发,fpga开发

由于这里的参考电压为2.5V,则其输入范围为-2.5V~2.5V,实际电压V的转换式子为:
V = ( A D D A T A − 8192 ) / 8192 ∗ 2.5 V=(ADDATA-8192)/8192*2.5 V=(ADDATA8192)/81922.5
最后通过输入不同幅值频率的正弦波,方波等进行验证可判断采样正确与否。文章来源地址https://www.toymoban.com/news/detail-736061.html

到了这里,关于FPGA驱动AD9240实现AD转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用EGO1的FPGA开发板的基于蓝牙的点阵显示系统设计与实现

    目录 一、项目目标 1.设计目标 2.技术指标 二、项目分析 1.需求分析 2.实验原理 三、项目设计 1.系统结构设计 1.1技术方案 1.2设计要点 1.3系统结构图 1.4硬件连接图 1.5系统硬件配置设计(硬件模块介绍) 1.5.1 8×8点阵块LG7088BH 1.5.2 四块点阵级联电路 1.6系统软件配置设计(软件模块

    2024年01月16日
    浏览(50)
  • 驱动开发-windows驱动设计目标

    驱动程序和应用程序不一样的,由于其直接运行于windows r0级,故对于开发有更多和更严格的标准,一般会有以下一些常见的设计目标: 安全性、可移植性、可配置性、 可被中断、多处理器安全、可重用 IRP、 支持异步 I/O 这些是基本目标。 1. 安全性: 驱动程序是足够安全的

    2024年04月23日
    浏览(32)
  • FPGA设计开发(基础课题):分频器设计

    一、设计目的 1、掌握分频器的设计原理; 2、用HDL语言设计分频器。 二、设计原理 分频器与计数器类似,也是要对时钟脉冲进行计数,但其输出的不是对时钟脉冲个数的计数值,而是其频率与时钟的频率成固定比例关系的脉冲信号。整数分频是所有分频器中最简单,最容易

    2024年02月13日
    浏览(54)
  • FPGA设计开发(基础课题):七人表决器设计

    一、设计目的 1、熟悉MAX+PLUSⅡ、QUARTUSⅡ软件的使用; 2、熟悉EDA/SOPC、FPGA基本结构; 3、熟悉EDA开发的基本流程。 二、设计原理 所谓表决器就是对于一件事,由多个人投票,如果同意的票数过半,就认为此事可行;否则如果否决的票数过半,则认为此事不行。 七人表决器顾

    2024年02月08日
    浏览(82)
  • FPGA开发设计

    FPGA是可编程逻辑器件的一种,本质上是一种高密度可编程逻辑器件。 FPGA的灵活性高、开发周期短、并行性高、具备可重构特性,是一种广泛应用的半定制电路。 采用基于SRAM工艺的查位表结构(LUT),LUT用于实现实际逻辑电路的功能,LUT本质上是一个RAM,事先将相应的结果

    2024年01月17日
    浏览(36)
  • AD9910模块高速DDS模块、功能性能讲解、开发调试注意事项、代码详解、电子设计大赛DDS

    AD9910是一款内置14 bit DAC的直接数字频率合成器(DDS),支持高达1GSPS的采样速率。AD9910采用高级DDS技术,在不牺牲性能的前提下可极大降低功耗。DDS/DAC组合构成数字可编程的高频模拟输出频率合成器,能够在高达400MHz的频率下生成频率捷变正弦波形。 用户可以访同三个用于控制

    2024年02月16日
    浏览(53)
  • FPGA设计开发(基础课题):七段数码管设计

    一、设计目的 FPGA驱动七段数码管实现十六进制计数显示。 二、设计原理 七段数码管分共阳极与共阴极两种。共阳极数码管其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极数码管则与之相反,它是将发光二极管的阴极短接后作为公共阴

    2024年02月07日
    浏览(54)
  • FPGA 开发必备:从零开始学习 FPGA 设计

    FPGA 开发必备:从零开始学习 FPGA 设计 FPGA 是一种可编程逻辑器件,可以在不用重新设计硬件电路的情况下修改其功能。它是数字电路设计中最重要的组成部分之一。FPGA 的广泛应用领域包括通信、计算机、图像处理、音频处理等。 要想成为一名合格的 FPGA 工程师,你需要了

    2024年02月07日
    浏览(60)
  • 领域驱动设计&事件驱动框架&命令查询责任分离&测试驱动开发

    领域驱动设计: DDD 事件驱动框架: Event Driven Architecture 命令查询责任分离: CQRS(Command Query Responsibility Segregation) 测试驱动开发: TDD 入口是系统外部客户访问系统内部的端口。常见的入口如http, rpc, 命令行,外部消息(消费kafka,rocketmq或者zk, etcd的通知消息)。 入口的职责:解析外部

    2024年02月04日
    浏览(44)
  • FPGA设计开发(基础课题):74LS160计数器芯片设计

    一、设计目的 1、学会用HDL语言设计时序电路; 2、用HDL语言设计74LS160计数器芯片的数字功能。 二、设计原理 计数器是最常用的寄存器逻辑电路,从微处理器的地址发生器到频率计都需要用到计数器。一般计数器可以分为两类:加法计数器和减法计数器。加法计数器每来一个

    2024年02月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包