基于16管脚FPGA最小系统的简易口袋仪器DIY套件
基于16引脚的FPGA核心板,支持双路可调电压输出、DDS任意信号发生器输出、频率计、ADC功能,并可以通过OLED显示输出。
标签
FPGA
测试
口袋仪器
寒假在家一起练
硬禾发布
更新2022-08-16
5605

内容介绍

  • 它的核心是一个基于Lattice的XO2、自带下载器的FPGA最小系统模块,做了一个简单的扩展板,主要支持以下的功能:
    • 输入/输出:
      1. 单色的OLED显示,128*64分辨率,是一块非常流行、常用的显示屏幕,采用了SPI接口方式对其进行控制,掌握SPI控制时序的逻辑编写以及点阵显示屏的字符显示、图形化显示以及波形刷新等方面的技能;
      2. 4个功能按键,使用者可以根据自己的操作来自行定义 - 理解处理器对外界事件的响应、按键的消抖处理等;
    • 与仪器相关的功能:
      1. 设置了2路可调电压输出 - 每一路都可以从-3V 到+3V进行电压调节,负载能力为20mA,用以日常的实验足够,可以给电路提供电压源,也可以为模拟电路提供直流偏置。总计6V的变化范围受限于供电电源的设计,如果要获得更大范围的电压调节,可以重新设计供电电压源,但工作原理是一样的。此功能的主要目的是让大家通过运算放大器的工作了解其具体的应用以及特性,PWM的工作原理及应用;
      2. DDS任意信号发生器输出 - 可以得到100KHz的任意波形输出,信号幅度设定为最大5Vpp,产生的信号的直流偏移可以在数字域来进行设置,此功能的主要目的是为了让大家了解DDS信号产生的原理、PWM用做DAC时的灵活性及局限性以及运算放大器的具体应用;
      3. 电压表的功能 - 可以通过比较器和FPGA的逻辑构建ADC的功能,采集到DC到1KHz/最高3.3V的信号,通过这个功能掌握ADC的工作原理、用最简单的器件实现对模拟信号的量化处理、通过逻辑实现数字滤波器等; 
      4. 频率计 - 可以支持到200MHz的频率,这是一个很简单的逻辑功能,但配合外部的高速比较器、按键操作、OLED显示,构建一个非常实用的功能;

    FqQegVeF40SS00tKHJybEkwio4Ny

    用16Pin的FPGA模块实现的简易口袋仪器(测试测量)的功能框图

    Fpt7geI1onJLmkd3MNorMRI8FRh_

    简易口袋仪器的原理图(其中的J1 - FPGA16为FPGA最小系统核心模块)

     


    FtOaPWn6DLPno-OAsusWO7qoyaHJ

    简易口袋仪器的PCB元器件布局

  •  
  • Fnh8no-KSTDItzDSij7B9rjCYouA

    简易口袋仪器部分的DDS信号发生器功能的模拟链路部分的仿真(使用LTSpice) - 将PWM输出的信号进行低通滤波、增益调整

    图中使用的运算放大器只做参考,我们扩展板上用到的是TL972

    FrYjRCgoej9QUhMzSXZRSNdkISxL

    简易口袋仪器的PCB 3D效果图

    FqLEsXCp2MgQxeaxdW4EqvmPI2Cr

    FtjPGkcN8nfl1Y2_xbFqKjCms8mA

    核心模块同底板的连接使用的是双排8Pin的插座,方便核心模块的灵活使用

     

    我们底板的性能做了很大程度的折衷,主要的限制是要利用14根IO管脚实现尽可能多的功能,因此DAC和ADC都采用了串行的方式,且ADC只使用了2个管脚,所以性能指标方面有了一定的限制,从FPGA模块自身的资源和处理能力,它完全可以达到更高的性能,如果你自己设计核心底板,可以做以下的尝试:

    • 4个按键可以更换为按键 + 旋转编码器的方式,更符合一起的操作习惯,在我们的底板上没有采用旋转编码器的原因是旋转编码器的体积比较大
    • 128*64的OLED显示屏可以更换为240*240的LCD显示屏,价格增加不多,但显示的信息要多很多,菜单也比较容易制作,在我们底板上采用OLED屏是考虑到OLED的使用场景更多,无论是用MCU控制还是FPGA,128*64的OLED屏都更普遍,而充分利用更小的屏幕显示更多的信息也是非常有意义的一个训练;
    • DDS的DAC可以使用高速并行的DAC或R-2R的电阻阶梯来实现,能够实现更高的速度,比如可以生成最高频率达20MHz的任意信号,只是需要占用更多的IO管脚;
    • ADC部分可以采用高速并行的ADC(支持到200Msps,被采集的模拟信号带宽可以到20MHz)或SPI接口的串行ADC(支持到1Msps,被采集的模拟信号的带宽可以到100KHz),只是需要占用更多的IO管脚;

    以上的这些扩展电路的设计也不复杂,有兴趣的同学可以自行画板、打板、调试一下,充分体验FPGA的灵活性和强大的性能。

     

管脚映射表

16Pin 模块管脚 FPGA芯片XO2-1200HC管脚 板上功能 16Pin 模块管脚 FPGA芯片 XO2-1200HC管脚 板上功能
1 - DIO_0 8

OLED_DC

16 - 3.3V   提供板上3.3V电压
2 - DIO_1 9

OLED_RST

15 - GND   接地
3 - DIO_2 10

OLED_SDA

14 - DIO_13/LED 27 未连接/核心板上LED等可用
4 - DIO_3 11

OLED_SCK

13 - DIO_12 20 PWM_DC1
5 - DIO_4 12 KEY_4 12 - DIO_11 21

PWM_DC2

6 - DIO_5 13 KEY_3 11 - DIO1_0 23

PWM_AWG

7 - DIO_6 14 KEY_2 10 - DIO_9 25

Comp_Out

8 - DIO_7 16 KEY_1 9 - DIO_8 17

ADC_PWM

UART - TXD 4   UART - RXD 5

板上功能

Clock (12MHz) 28      

板上功能

 

参考工具及资料:

参考案例和代码:

  1. 一个简单的频率计实现
  2. 一个开源的频率计和时钟发生器
  3. 基于FPGA的等精度频率计论文PDF
  4. 采用FPGA、STM32和蓝牙APP制作的精准频率计项目介绍
  5. 用FPGA可以计数很快的方法 - 高达500MHz
  6. 一个400MHz的频率计数器 - PDF文章
  7. 32位无符号的除法器Verilog代码
  8. 数字比较器Verilog代码
  9. 简易电压表的设计
  10. 10MHz DDS信号发生器/双路可编程直流电压源开源学习平台
  11. 按键消抖的Verilog代码
  12. 生成PWM信号的Verilog代码
  13. 时钟分频的Verilog代码
  14. 串行接口RS-232通信的Verilog代码
  15. OLED驱动说明及Verilog代码实例
  16. 串口打印程序 - 图形化的调试助手

通过Delta-Sigma ADC实现对模拟电压的量化(示波器的功能):

  1. Delta-Sigma ADC的工作原理
  2. 与ADC相关的问题思考

FkJ_JvEQBpdKdMkQmNiiU_51TprF

快速傅立叶变换实现时域(t)到频域(f)的分析

 

物料清单

附件下载

SimpleSigmaDeltaADCSourceCode.zip
Lattice提供的Sigma Delta ADC的源代码
DDS_16.pdf
基于XO2-1200HC FPGA核心模块的简易示波器原理图 PDF
01-规格书与控制芯片手册.zip
OLED显示屏的数据手册及驱动说明 - ZIP

团队介绍

苏州硬禾信息科技有限公司 - 硬禾工程师团队专注于基于FPGA和嵌入式系统学习平台的开发和生态系统的建设,在过去5年里成功推出的小脚丫FPGA学习平台被全国上百所高校采用于数字电路教学实践中,并一直积极推动开源、免费PCB设计工具KiCad在高校学生及硬件工程师中的应用。
团队成员
苏公雨
与非网/硬禾学堂创始人,电子创客爱好者,15年硬件研发、设计背景。
王安然
资深硬件设计工程师、FPGA教学导师,12年硬件研发经验,主持开发了基于小脚丫FPGA的系列学习平台。
吴志军
苏州思得普科技有限公司创始人/总经理,负责小脚丫FPGA平台的研发及生态建设,20年硬件系统研发经验。
陈强
控制工程硕士,资深硬件研发工程师,丰富的嵌入式产品研发与技术支持经验,熟悉嵌入式系统编程、FPGA和数字系统设计。

评论

0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号