寒假在家一起练项目4
总结第一次接触并逐步实现FPGA项目的经验以及中间遇到的挫折和困难
标签
FPGA
番茄红薯
更新2021-02-26
1249

本次项目的描述:

  1. 实现一个可定时时钟的功能,用小脚丫FPGA核心模块的4个按键设置当前的时间,OLED显示数字钟的当前时间,精确到分钟即可,到整点的时候比如8:00,蜂鸣器报警,播放音频信号,最长可持续30秒;
  2. 实现温度计的功能,小脚丫通过板上的温度传感器实时测量环境温度,并同时间一起显示在OLED的屏幕上;
  3. 定时时钟整点报警的同时,将温度信息通过UART传递到电脑上,电脑上能够显示当前板子上的温度信息(任何显示形式都可以),要与OLED显示的温度值一致;
  4. PC收到报警的温度信号以后,将一段音频文件(自己制作,持续10秒钟左右)通过UART发送给小脚丫FPGA,蜂鸣器播放收到的这段音频文件,OLED屏幕上显示的时间信息和温度信息都停住不再更新;
  5. 音频文件播放完毕,OLED开始更新时间信息和当前的温度信息

首先将本次项目进行分析,我发现本次项目起始可以分成3个小项目,首先第1个项目是实现一个可定时可设定的时钟,当这个时钟到达我们设定的时间之后,会播放音乐并且把温度信息传给电脑;第二个就是实时检测环境温度,之后显示在OLED上;第3个是,FPGA内部检测温度,如果温度超过上限,就由PC发送报警信号,之后由PC发送音频数据给FPGA,在蜂鸣器收到音频的时候不在更新时间信息和温度,当音频文件播放完之后才会更新OLED屏幕上的信息。

之后就是一步一步的编写程序,在刚入手FPGA的时候,我还是处于并没有接触过的阶段,仅仅是看过一些verilog的语法,在网上做过一些加法器,选择器的小模块编程题。当然就是因为不了解FPGA所以才更锻炼我们编写程序和搜集资料的能力。

因为OLED显示在本项目中发挥的作用比较大,所以决定先调试OLED,之后发现电子森林有驱动彩色液晶屏TFT-LCD的程序,就直接拿过来修改,中间因为没玩过OLED还对操作指令有些迷茫,甚至在使用OLED的页地址模式的时候,忘记起始地址的高四位和低四位是分开写的,导致OLED显示一直不正常。

而我遇到的最大的问题还是在编写OLED显示字库的时候,我打算把字体大小调成12*32,在需要显示变化的数据的时候,资源开始倾向于100%。在这个过程中,我也想过是不是应该重新调整字体的大小,但是我还是没有这样做。直到有一天,资源真的占用超过了,搞得很苦恼啊!最终还是决定用电子森林新的0.91寸OLED驱动程序,毕竟时间已经有些紧张了。

FoNJMmWbQdQ1EtkdPcsMgF5Mink3

图 1 资源占用过多

然后就是思维逻辑上,我也是和本科编写单片机的逻辑类似,是一条直线,总是很不适应verilog程序的编写,同时还不适应在不是同一个always块中,变量只能判断,可以作为右值,但是却不能改变得事实。

随着编写程序的增多,期间也看过很多优秀的程序,让我逐渐适应了verilog程序的编写,逐步实现了全部的功能。

FneXuixSihJ5ByocFS_KlLSDcv35

图 2 最终成果

FpD8d1L9h8GpIWzucLADow9rMLtB

图 3 串口助手

FhV3k-sMVD-bQgER7fvmMTEQd43X

图4 最终的完成项目后的资源占用情况

图2和图3不是同一时间拍的

总之,这次硬禾学堂组织的寒假在家一起练的项目,让我收获颇多,提升技能的同时在假期也不至于闲着。

 

 

 

附件下载
top_impl1.jed
LCMXO2-4000HC-4MG132,SW2拨到NO(控制音频开关)
团队介绍
团队成员
田鹏飞
哈尔滨工程大学 水声工程学院
宋志硕
杭州涂鸦科技有限公司 嵌入式网络工程师
徐加乐
黑龙江大学 电子工程学院
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号