- 背景
- 项目来源 - 52Pi
- 市面上还没有基于树莓派的高速ADC采集卡/示波器
- 基于树莓派做一款开源示波器会是一个比较好的平台,DIY示波器是很多硬件工程师都感兴趣的技术点
- 树莓派HAT的大小能够支持双通道高速示波器
- 已经有开源的、运行在浏览器里的示波器软件运行在浏览器里
- 也可以用Python编写示波器的界面
- 大致需求分析:
- 功能 - 通用双通道、高速采集的数字示波器
- 采用2通道、50-100Msps的ADC
- 模拟带宽限定在20MHz,对于一个原型的HAT够用了
- 如果实际的场景要求采集更高模拟带宽的信号,可以使用100Msps的ADC,通过FPGA内部的逻辑变换不同的采样时钟相位采集,来达到更高的等效采样,比如FPGA内部的时钟频率能够工作在400MHz,则可以产生2.5ns间隔的相位时钟,达到400Msps的采样,在这种情况下模拟带宽可以到100MHz
- 但越高的采样率和分辨率,对采样时钟的抖动要求越高,需要非常低抖动的时钟源,并且在布线的时候要高度注意电源的去偶等,否则用了高性能的ADC器件,实现不了高性能。
- 分辨率?8、10、12、14bit?
- 分辨率高 - 前面的模拟链路简单,但成本高
- 分辨率低 - 前面的模拟链路需要处理比较宽的动态范围,ADC的成本低
- 接口方式?
- CMOS vs LVDS ?基于器件的价格、封装进行考虑
- 功耗:
- 电压?
- 3.3V vs 3.3V&1.2V?最好只用3.3V的供电,简化电源的设计,尤其是模拟电压部分
- 可以选用以下厂商的器件
- 折中一下,基于性能、价格等因素考虑,可以选用双通道、12bits、125Msps的ADC - ADS4225 @TI http://www.ti.com/product/ADS4225,使用这个器件有很大的灵活性,用同样的封装可以支持4种不同的选择,分不同档次的产品,根据实际的应用场景使用相应的ADC器件。
- 采样率可以是低速的65Msps,便宜
- 分辨率可以是14bits的ADS4245
- 接口方式 - 40Pin的GPIO接口
- 高速数据传输,只能用其中的SPI接口信号 - 50Mbps?
- 必须采用FPGA进行缓存,将2* 12bits * 100Msps的数据流存入FPGA内部的SRAM,然后树莓派通过SPI总线读取出来。那么对FPGA的要求是什么?
- 存储的需求 - 如果内部的BLOCK RAM够用,可以通过将其配置成FIFO、双口SRAM、环形SRAM等用于采集数据的缓存,如果内部的SRAM不够,可以外接一个SRAM芯片
- RAM的大小取决于需要存储下来的一次采集的采样点的个数,比如16KB的RAM可以存储16K*8/12位/2 ~ 5K个采样点
- 其实12位的精度是为了实现更宽的动态范围,8bit的显示已经足够了,也就是说FPGA通过SPI总线送到树莓派的用8bit的数据就能满足系统的要求了,可以在FPGA内部根据模拟信号的输入幅度进行动态调整,对输入的12位处理成8位,送出来,在FPGA内的数字动态范围达到2^4 ~ 24dB
- 12bit ~ 8bit的选取可以在进入到RAM之前,因此16KB的RAM可以存储8K个采样点
- 接口的要求:
- 考虑到选取的ADC的接口有并行接口(封装大)、串行LVDS接口(封装小),LVDS还有抗干扰能力强的有点,因此最好FPGA芯片能够支持LVDS接口
- 速度:100Msps的时钟,现在的FPGA都能搞定
- 封装 - 4层板要比2层板价贵费用多出很多,且BGA封装的器件加工成本高,调试困难,因此QFP的器件较好
- 供电 - 如果单一路的3.3V能够搞定,就免去1路低压供电了,但如果ADC需要的低压数字供电与FPGA的内核电压一致,也可以选择带低压供电的FPGA器件
- FPGA配置的PROM
- HAT板上上电配置 - 简单,有可能增加EPROM的成本
- 每次上电由树莓派通过GPIO来配置FPGA - 慢,且开发麻烦
- 动态范围
- 最小5mVpp,最大50Vpp - 动态范围为80dB
- 12bits的ADC能够提供的动态范围为70dB(等效)
- 模拟链路需要10dB以上的动态范围调节
- 在探头的输入端需要加一个20dB的衰减,将50Vpp降为5Vpp
- 后续的模拟电路需要提供20dB ~ 30dB的增益
- 在模拟链路中还会有LPF,导致信号的衰减,这些因素都要考虑在内
- 如果采用10bits的ADC,模拟链路需要增加12dB,也就是总体上模拟链路至少要22dB的变化范围
- 如果采用8bits的ADC,模拟链路需要增加24dB,也就是总体上模拟链路至少需要34dB的变化范围
- 供电
- 数字供电 - 3.3V/1.8V或1.2V
- 模拟链路供电 - +5V/-5V或+3.3V/-3.3V,模拟链路的供电电源需要通过开关变换以后再经过LDO得到
- 时钟部分 - FPGA内部的锁相环?ADC部分需要单独给时钟供电?看所选器件的数据手册
- 模拟接口
- 板卡物理要求
- 大小
- 层数
- 2层 - 成本低,但性能未必能够保证
- 4层 - 加工成本较高,性能较好
- 接插件 -
- 定位孔 -
- 方案设计
- 选用PCB工具软件
- Altium Designer:
- Eagle:
- KiCad:
- 选用器件:
- 方案框图
- 指标分配
- 数据接口协议定义
- 详细的设计
- 元器件库
- 原理图设计
- PCB设计
- Gerber文件
- BOM清单
- 参考资料
- 现有的数据采集方案
- Arrow的BeScope:
- NI/Digilent的Analog Discovery II
- MiniDSO DS213: