fpga一个按键控制8个流水灯 | 您所在的位置:网站首页 › fpga按键控制流水灯 › fpga一个按键控制8个流水灯 |
苏老师一直追求“小而美”的产品,努力在最小的系统里发挥最大的潜力。半年前在教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做成了一个最小系统(点击“阅读原文”见详情),见下图: 板子上一个时钟输入、一个心跳灯、同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。 那就用一个比较器吧,如何构成呢,看下面的图: 这个框图来自Lattice的官网(有兴趣的朋友可以搜一下),模拟前端的电路逻辑如下: 是不是很简单? 其实RC的输出部分,可以单独接出来,就是一个简易的DDS信号发射器了,在XO2-1200上产生200KHz以内的任意波形毫无压力 - 只需要一个管脚。 两个管脚配合就可以实现Sigma Delta ADC的功能,能够实现的准确度: 这是保守的计算,其实XO2-1200的工作频率高达400MHz,所以性能还能提升。 在Lattice的官网上也提供了FPGA的逻辑源代码,可以直接下载来使用,如果你用其它品牌的FPGA,实现原理是一样的。 两根IO就可以做成一个DAC和一个ADC。 一根线实现MP3音乐的播放 用ICE40实现的ADC功能 因此用这个16管脚的FPGA最小系统来实现DDS任意波形发生器(高达20MHz模拟信号输出)系统的想法也就能轻松实现了。 好,那我们寒假就有得玩了。。。。 |
CopyRight 2018-2019 实验室设备网 版权所有 |