项目需求:
- 实现一个可定时时钟的功能,用小脚丫FPGA核心模块的4个按键设置当前的时间,OLED显示数字钟的当前时间,精确到分钟即可,到整点的时候比如8:00,蜂鸣器报警,播放音频信号,最长可持续30秒;
- 实现温度计的功能,小脚丫通过板上的温度传感器实时测量环境温度,并同时间一起显示在OLED的屏幕上;
- 定时时钟整点报警的同时,将温度信息通过UART传递到电脑上,电脑上能够显示当前板子上的温度信息(任何显示形式都可以),要与OLED显示的温度值一致;
- PC收到报警的温度信号以后,将一段音频文件(自己制作,持续10秒钟左右)通过UART发送给小脚丫FPGA,蜂鸣器播放收到的这段音频文件,OLED屏幕上显示的时间信息和温度信息都停住不再更新;
- 音频文件播放完毕,OLED开始更新时间信息和当前的温度信息。
实现过程:
由于是第一次接触FPGA,一开始还有些不知所措。所以我首先在网上找了Verilog的教程,学了一部分算是入门,才开始编写代码。
不过在刚开始的时候,我完全是懵的状态,于是初期我在寻找学习资料,方法上就耗费了许多时间。
一开始我先是跟着直播老师一起学习了小脚丫板子的入门,随后我在小脚丫的官网找了一些与Altera MAX10M02 有关的例程,先下载来学习,再挨个理清楚每个里面的逻辑和大概的意思。接着我把每个代码都复制了一番,创建一个新的文档,编译,运行,烧录至开发板上,观察每一部分的效果 。然后在代码中进行小部分的修改,观察有什么变化,就算是对这一部分的初步了解。
使用我们这款开发板可以实现如下功能:
1.任意波形/信号发生器的功能:
通过该功能,能够掌握DDS生成任意波形/信号的原理、使用方法、以及DAC的工作原理、构成方式、信号的频谱构成等
2.ADC数据采集的功能:
通过这个功能,可以掌握ADC的工作原理以及在数据采集中的应用方式、SPI总线的使用、模拟信号带宽、ADC采样率、SPI总线速率等之间的时序关系
3.传感器信息输入
通过这个功能,可以学会单总线的逻辑实现以及传感器数据的处理,对于理解物联网产品比较有帮助
4.OLED图形化信息显示
通过这个功能可以掌握SPI显示屏的使用、SPI总线逻辑以及屏上信息的文本、图形化显示等。越来越多的电子产品、创意设计都采用图形化的OLED显示屏成为信息展示的终端,无论用MCU还是FPGA的系统,在电赛中的很多项目中也会用到信息的图形化显示。
5.蜂鸣器输出
- 板上有一个经三极管驱动的蜂鸣器,可以通过PWM来实现声音的输出。
6.UART通信
板载USB-UART芯片CH340,能够实现FPGA和上位机PC的通信
在我们这个项目中,我们所需要的外设有:
- OLED:OLED是我们能观察到的最明显变化的设备。我们所编写的所有功能都需围绕OLED来编写;
- 串口:在功能中需要向PC端发送温度,随后再由PC端发回音频数据至FPGA;
- DS18B20:需要用该模块来采集实时温度;
- 按键:通过按键可以调整初始化的时间,并且通过拨动拨动开关,可以进入计时的模式。
设计思路:
首先对电子森林所提供的例程,多加了解,进行部分的修改后观察不同的效果,对例程有初步的认识,再多多学习提供的文档以及视频教程加以深入的了解。我打算通过对例程进行一定的修改后,对每个所需要部分的模块分别编写,首先分别实现各自的功能,最后再总合在一起,进行最后的编辑。
温度部分:
DS18B20将数据以16位的形式传递给芯片,高八位的前五位为符号位,低八位均为数据位。这里需要注意的是由于数据位的低四位为小数位,也就是说得到的数据是环境温度左移四位的数据,因此当需要使用温度时要把数据右移四位。
OLED部分:
通过查阅CSDN以及原子哥的视频,对OLED有了初步了解后,以电子森林的例程为基础,修改部分
蜂鸣器部分:
蜂鸣器运用了PWM控制高低电平时间发出不同声音的原理,不同音调对应的PWM占空比,并将每个音频转换成16位数据,当板子传递给上位机报警信号时,上位机将音调数据提供异步通信串口传递给板子。当音频播放完成后,板子退出报警模式。
按键部分:
根据以往对按键的理解进行编写,不过在初期遇见了问题,键值在一段时候后会自动恢复,只有在这段时间内,键值才会变化。
串口部分:
上位机借鉴于万毅豪同学,并征得同意后进行使用。
资源占用情况:
Total logic elements 2046/2304
Total registers 432
Total Pins 16/112
Total virtual pins 0
程序框架:
心得体会:
这次小脚丫举办的寒假一起练,让我首次接触到了Verilog,并且开始了解FPGA。从最初的连工程都不会建立,逐渐学习,查阅资料,开始亮一个灯,再到后来逐步实现所需功能。在学习的过程中,发现了自身存在的一些问题,对于资源的不合理使用从而导致资源不够,并且加强了我对资源的获取能力,不仅如此,我还对接下来的电赛充满信心。最后,由衷的感谢在这段过程中帮助过我的每一位老师,同学!