fpga一个按键控制8个流水灯 您所在的位置:网站首页 fpga按键控制流水灯 fpga一个按键控制8个流水灯

fpga一个按键控制8个流水灯

2023-09-18 07:35| 来源: 网络整理| 查看: 265

苏老师一直追求“小而美”的产品,努力在最小的系统里发挥最大的潜力。半年前在教DIY DDS的课程上选用了Lattice的XO2-1200HC-QFN32这颗FPGA,它除去电源、地、下载需要的管脚,真正能用的只有17根了,再必须留一个给时钟,只剩下16根GPIO能用了。

在DDS的项目中用了12bit的R-2R DAC,用去12根IO,再一根直流偏移调节用,一个状态指示用的心跳灯,只有2根管脚,只好将DDS波形、参数的控制通过UART送到PC上用PC上的LabView、Matlab来控制。

前一阵苏老师又将这个FPGA做成了一个最小系统(点击“阅读原文”见详情),见下图:

8ff12439811a0332a0cc8411f3c9e8db.png

板子上一个时钟输入、一个心跳灯、同PC通过UART通信的TXD/RDX两根线,只有14根GPIO都留在了最小系统板的管脚上了,可谓榨取得干干净净。

今天在上班的路上还在想,如果用这个最小系统外接一个10位精度的DAC可以产生模拟输出信号至20MHz的任意波形(实测内部时钟能跑到400MHz),剩下的4根IO能否不通过PC的连接就能做本地的波形、参数的控制呢?

那就要加一个I2C的OLED/LCD屏,I2C占用2个管脚,如果只是接2个按键,这不是问题,如果需要多个按键呢?两种方案:

加一个PCF8574之类的I2C接口的键盘扫描器件,其实可以跟OLED屏共享I2C的那两个管脚;

加一个单片机做各种灵活的扩展,现在的单片机也便宜的很,1-2元RMB就可以实现简单的按键输入、显示控制了;

当然还有一种更低成本的方式,只需要2毛钱就能搞定按键的扩展,并且功能更灵活 - 用FPGA内部的逻辑 + 一个电阻、一个电容 + 一个模拟比较器(LMV331也就2毛钱)构成一个Sigma Delta的ADC,有了ADC的功能就可以连接很多个。。。。。按键了以及各种模拟量输出的传感器等等。

其实XO2-1200这种FPGA的管脚都支持LVDS的,如果配置成LVDS模式,外部的比较器也省了,只是我做的这个最小系统模块统一成了3.3V供电,没有配置成LVDS。

那就用一个比较器吧,如何构成呢,看下面的图:

f6a0fae900e5b511386eadca8c316532.png

这个框图来自Lattice的官网(有兴趣的朋友可以搜一下),模拟前端的电路逻辑如下:

7fb26029b3f359f36498981e70b0091b.png

是不是很简单?

其实RC的输出部分,可以单独接出来,就是一个简易的DDS信号发射器了,在XO2-1200上产生200KHz以内的任意波形毫无压力 - 只需要一个管脚。

两个管脚配合就可以实现Sigma Delta ADC的功能,能够实现的准确度:

71fa681b9bc3bddee7364d96a3d79aa1.png

这是保守的计算,其实XO2-1200的工作频率高达400MHz,所以性能还能提升。

在Lattice的官网上也提供了FPGA的逻辑源代码,可以直接下载来使用,如果你用其它品牌的FPGA,实现原理是一样的。

两根IO就可以做成一个DAC和一个ADC。

2b1a71fe811e8c5b63ef4d42f6443a9f.png

一根线实现MP3音乐的播放

7db17e7273c3b1c77de6195f09609a62.png

用ICE40实现的ADC功能

因此用这个16管脚的FPGA最小系统来实现DDS任意波形发生器(高达20MHz模拟信号输出)系统的想法也就能轻松实现了。

好,那我们寒假就有得玩了。。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有