基于FPGA的ADS1256讲解
模数转换即将模拟信号进行数字化处理,得到与原始信号近似的离散的数字量,用数字信号以bit位单位编码量化表示原始信号,这种量化目前由ADC(模数转换)芯片的硬件实现,对芯片的控制可以根据系统特占通过DSP(数字信号处理器)、ASIC(专用集成电路)和FPGA(现场可编程门阵列)三种不同方式完成。[2]采用FPGA的方式适合与对速率要求较高的可编程环境,本设计使用Xilinx公司Spartan3E的FPGA通过对TI的ADS1256芯片控制并完成模数转换功能。
ADS1256芯片介绍
ADS1256芯片是一种高速低噪声的24位模拟-数字(A/D)转换器,能够提供完整的高分辨率模拟信号测量解决方案。ADS1256内部具有利用滤波器稳定的缓冲区和可编程的增益放大器进一步降低了信号噪声,【系统工作时钟在7.68MHz时,信号采样率高达30Ksps】可以满足卫生和植物检疫标准。在外部接口方面,ADS1256具有SPI兼容的5V串行接口,模拟信号的输入电压为5V,数字信号的输出电压为1.8V~3.6V。标准工作模式下功耗为38mW,待机模式下的功耗为0.4mW。
总体及接口设计
利用FPGA完成的控制系统输入输出接口,其一端可以与ADS1256芯片相连,另一端可以将芯片输出的数字信号组合成24bit精度的数据送出,用以连接设计者需要此数据的其它器件。
控制系统输入输出接口输入端:
(1)CLK:连接外部20MHz系统主时钟,用来驱动主控FPGA工作;
(2)ADC_DRDY_N:A/D数据转换准备好信号,连接ADS1256的/DRDY引脚,用来通知主控FPGA本次模数转换完成;
(3)ADC_SDIN:主控FPGA的SPI串行数据输出信号,连接ADS1256的DIN引脚,配置ADS1256芯片寄存器;
(4)ADC_CHNL_ID(1:0):为A/D转换后的数字信号的输入通道,连接ADS1256的D0、D1。
输出端:
(1)ADC_CS:ADS1256的芯片的使能信号,连接ADS1256的/CS引脚;
(2)ADC_DATA(23:0):为最终数据的并行输出引脚,可连接其它所需器件;
(3)ADC_D_RDY:与ADC_DATA配合使用,指示ADC_DATA有效;
(4)ADC_SCLK:利用系统主时钟CLK分频出的SPI时钟,连接ADS1256的SCLK;
(5)ADC_SDOUT:主控FPGA的SPI串行数据输入信号,与ADS1256的DOUT相连。
功能实现
整体模块的设计应该包含以下子功能模块:
(1)时钟模块“clk_gen”对20MHz的主时钟分频产生供SPI使用的占空比为50%的2MHz时钟和4MHz的时钟;(2)延迟模块“delay_n”在系统上电后延迟一段时间,等待供电稳定后再初始化A/D启动A/D转换,减少系统上电时对模拟信号输入的瞬时影响,保证ADC转换时可输出稳定的数据;
(3)初始化模块“adc_iniTIal”,它的功能是通过SPI接口对ADS1256进行初始化,根据芯片使用说明按步骤设定它进入工作状态;
(4)AD转换控制模块“adc_xchange“,它的功能是产生ADS1256需要的时序,把控制字通过SPI发送到ADS1256,并最终根据芯片指示读出A/D转换后的数字信号。
SRL16E的应用
系统中采用Xilinx原语SRL16E构成的16位移位寄存器进行时钟控制,可以通过以下公式进行计算:
数据输出位数=8*A3+4*A2+2*A1+1*A0+1例如本系统采用20Mhz的系统主时钟,要进行5分频得到4M的SPI接口工作时钟,只需将A3,A2,D1,D0设置为0,1,0,0(8*0+4*1+2*0+1*0+1=5)即可。
本设计中使用SRL16E而没有采用锁存器(PLL)进行时钟的分频,可以进一步节省FPGA的硬件资源。
因为FPGA中每个查找表LUT能够构成一个16位的移位寄存器,它可以通过对Xilinx定义的系统宏SRL16E的调用来实现。由于LUT中能够提供一个16位的同步RAM。利用SRL16E这种存储的能力设计递归的延迟线(RDL),再根据RDL抽样个数倍减而速率倍增的特点与时分复用技术相结合,构成递归折叠结构。最终以提高主工作时钟频率的代价,增大了采样速率以及相关运算单元的吞吐率,并且极大的降低了资源的使用。
采样率计算:clkin=7.68MHz,num_ave=1,data_rate=30Ksps
基于FPGA的ADS1256讲解相关推荐
- 【入门学习四】基于 FPGA 使用 Verilog 实现串口回传通信代码及原理讲解
目录 一.相关知识 二.模块设计 三.代码设计 3.1 串口接收模块 3.2 控制模块 3.3 串口发送模块 四.FIFO 核引用 五.管脚定义及结果展示 上一篇博文:[入门学习三]基于 FPGA 使 ...
- 【入门学习二】基于 FPGA 使用 Verilog 实现蜂鸣器响动的代码及原理讲解
目录 一.知识了解 二.模块设计 三.程序实现 四.管脚配置及结果展示 五.写给小白看的 上一篇博文:[入门学习一]基于 FPGA 使用 Verilog 实现按键点灯代码及原理讲解 功能描述:通过前面 ...
- 基于FPGA的万兆以太网UDP/IP协议栈讲解
基于FPGA的UDP/IP协议栈 1 udp协议分析 1.1 udp介绍 UDP即User Datagram Protocol,用户数据报协议,还有一个耳熟能详的叫做TCP(Transmission ...
- 基于FPGA的UART接口协议设计
一.PC终端概述 PC终端,Personal Computer 智能终端,通俗的讲,就是利用电脑GUI界面控制我们的外部硬件电路. 因此设计到了PC与外部硬件电路的通信接口.对于台式电脑.个人笔记本, ...
- CASE_04 基于FPGA的电梯控制器
该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 简介 2. 电梯控制器简介 2.1 电梯控制器的设计框图 ...
- CASE_02 基于FPGA的数字钟万年历
该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 简介 2 数字钟计数方案 2.1 计数方案一 2.2 计 ...
- CASE_01 基于FPGA的交通灯控制器
该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 案例引导 1.1 硬件设计初窥 1.2 逻辑设计初窥 2 模块级逻 ...
- FIR_01 基于FPGA的FIR滤波器 (FDATOOL ISE ) 第一篇:初步认识和应用
1 简介 对于FIR滤波器的理论部分,在本系列博客中不做论述,或许在后续更新的文章中会对其理论进行讨论. 本文为该系列博客的第一篇文章,将以最简单直观的方式让初学者体会到FIR滤波器的作用,采用最傻瓜 ...
- 基于FPGA 的8b10b编解码电路前端电路设计
基于FPGA 的8b10b编解码电路前端电路设计 摘 要 本设计是采用EDA技术设计的一种8B /10B 编解码电路,实现了在高速的串行数据传输中的直流平衡.该编解码电路设计大体上可以由五个模块构成, ...
- 人工智能在fpga的具体应用_“基于FPGA的人工智能应用技术师资培训”圆满落幕!...
"基于FPGA的人工智能应用技术师资培训"在英特尔® FPGA中国创新中心圆满落幕. 2019年12月15日,"基于FPGA的人工智能应用技术师资培训"在英特尔 ...
最新文章
- 使用DCloud+Framework7制作移动APP应用(一)
- 块代码编程---开始使用块代码
- IIS Server is too busy 解决方法(IIS6)
- cmake 头文件 库文件
- DDos***种类,原理,简单预防
- linux配置文件、日志文件全备份
- C 之父:C 的成功属于意料之外,C 11是转折点
- HTML如何添加锚点,论程序员成长的正确姿势
- Asp.net 调用mysql存储过程参数传中文乱码!
- CenterOS 服务器之MySQL卸载与安装,并远程连接
- cmake 学习笔记(四)
- 就这一次看懂TraceView
- GIS中的矢量数据、栅格数据
- Openlayers 自定义气泡框以及定位到气泡框
- android电量伪装原理,安卓电量伪装神器
- 浪潮服务器键盘自动输空格,键盘空格键的常用技巧分享
- oracle左连接应用场景,Oracle左连接left join 的实际操作与应用
- pycharm更换国内源
- 深度学习笔记~感受野(receptive field)的计算
- 1. 认识kubernetes