FPGA项目(1)--FPGA驱动16*16点阵动态显示

本次实现的功能就是利用FPGA驱动16*16点阵,在按键的配合下实现文字的滚动显示、数字的倒计时显示,以及按键控制显示等等。先上一幅实物图吧

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第1张图片

 16*16点阵的硬件结构图如下所示:

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第2张图片

可见,只要在C端输入高电平1,在R端输入低电平0,就可以点亮一颗LED。

我选择使用列扫描的方式,也就是按照一定的频率,依次给C0,C1,C2...高电平,然后分别将字模数据输入在R0--R15上,只要列扫描的频率足够大,由于人眼的视觉暂留效应,就可以在点阵屏幕上显示出字符。

        接下来就是提取字符的字模数据了,这个时候就要用到字符转字模的软件了

        软件截图如下:

         FPGA项目(1)--FPGA驱动16*16点阵动态显示_第3张图片

         在R0-R15给低电平,LED就被点亮。所以在设置字模提取方式时,要选择阳码(0点亮)。其余的配置选择如图所示:

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第4张图片

         配置好后,就可以输出字模数据了

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第5张图片

         如果要显示很多字符,那么字模数据量是很庞大的。那么如何存储这些数据就成为了问题。我选择的方案是将字模数据存在ROM里面。要使用的时候直接去ROM里面读取即可。注意ROM的数据宽度要为16位。其他的ROM配置步骤我在这里就不多介绍了。(注意,使用ROM前还需要配置好mif文件。数据主要是存储在mif文件里面的) 

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第6张图片

        一切准备就绪以后,就是代码的编写了。

        首先要例化ROM模块,因为字模数据全部在ROM里面。

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第7张图片

         然后还需要一些不同频率的时钟信号

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第8张图片

         再接着就是根据列扫描信号,提取出对应的字模数据。由于使用了ROM,提取ROM里面的数据时,只需要给出ROM的地址就行。

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第9张图片

         动态显示(滚动显示)的关键在于,传入给ROM的地址,是以人眼可以识别的频率动态变化的。关键代码如下:

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第10张图片

FPGA项目(1)--FPGA驱动16*16点阵动态显示_第11张图片

        完整的工程代码如下:

         https://download.csdn.net/download/guangali/87706608?spm=1001.2014.3001.5501

你可能感兴趣的:(FPGA项目,fpga开发)