在前面两篇文章的基础上,加大难度,实现了字符的显示,效果如下图所示,需要完整代码的可以关注FPGA之旅,回复 Oled字符,获取下载链接。
一. 字符数据的制作
在进行字符显示的时候,我们需要用到取模软件对字符数据进行提取。这里采用的是PCtoLCD软件用来生成字符数据。(软件打包在项目里面)
二. 字符数据生成Verilog
生成的字符数据如下,这样是不能直接输入到Verilog里面去的。一个个手动赋值是非常繁琐的,这里采用了python,来读取txt文件,生成verilog代码。
(也可以采用ram ip 生成cof或者mif文件)
这里我只生成了always块来对数据进行初始化赋值。
data = open("2.txt") data = data.read().split(" ") file_handle=open('1.txt',mode='w') file_handle.write("always@(posedge clk or negedge rst)\n") file_handle.write("begin\n\tif(rst == 1'b0)\n\tbegin\n") for index,dat in enumerate(data): file_handle.write("\t\tdata10[{}] = {};\n".format(index,dat)) file_handle.write("\tend\n") file_handle.write("end") file_handle.close()
一共生成10个always块,对这些memory进行初始化。
三.字符的显示
先来看看module模块,
输入为起始的位置,和显示字符的选择,非常方便修改为自己想要的字符。
这里字符的大小为16*16,所以需要写两个page,每个page里面写入16个数据。这里的操作和上篇的清屏和全亮的过程一样,只是判断条件变化了。
四. 字符的控制
控制模块主要输出每个字符显示的位置,和显示那个字符。
公众号:FPGA之旅