【紫光同创国产FPGA教程】【第十三章】字符显示实验

本原创教程由芯驿电子科技(上海)有限公司(alinx)创作,版权归本公司所有,如需转载,需授权并注明出处(http://www.alinx.com)。 1. 实验简介 在hdmi测试实验中讲解了hdmi显示原理和显示方式,本实验介绍如何使用fpga实现字符显示,通过这个实验更加深入的了解hdmi的显示方式。
2. 实验原理 实验通过字符转换工具将字符转换为16进制coe文件存放到单端口的rom ip 核中,再从rom 中把转换后的数据读取出来显示到hdmi上。
3. 程序设计 字符显示例程是在hdmi显示的基础上增加了一个osd_display的模块,“osd_display”模块是用来读取存储在rom ip核里转换后的字符信息,并在指定区域显示。程序框图如下图所示:
osd_display模块包含timing_gen_xy 模块和osd_rom模块。osd_rom里存储的字符数据,如果数据为1,osd的区域显示rom中的前景红色(显示alinx芯驿),如果数据是0,osd的区域显示数据为背景色(彩条)。
在“timing_gen_xy”模块是根据hdmi时序标准定义了“x_cnt”和“y_cnt”两个计数器并由这两个计数器产生了hdmi显示的“x”坐标和“y”坐标。程序中用“vs_edge”和“de_falling”分别表示场同步开始信号和数据有效结束信号。其原理如下图所示:
信号名称 方向 说明
rst_n in 异步复位输入,低复位
clk in 外部时钟输入
i_hs in 行同步信号
i_vs in 场同步信号
i_de in 数据有效信号
i_data in color_bar数据
o_hs out 输出行同步信号
o_vs out 输出场同步信号
o_de out 输出数据有效信号
o_data out 输出数据
x out 生成x坐标
y out 生成y坐标
timing_gen_xy模块端口
下面介绍如何存储文字信息的romip,首先需要生成能够被pango fpga识别的.dat文件。
1)在软件工具及驱动文件夹下找到“fpga字模提取”工具。
2)双击.exe文件打开工具
3)在提取工具的“字符输入”框中输入需要显示的字符,字体和字符高度可以自定义选择。设置完成后点击“转换”按钮,在界面左下角可以看到转换后的字符点阵大小,点阵的宽和高在程序中是需要用到的
点阵的宽和高这里位152x33需要跟osd_display程序中定义的一致:
4)点击“保存”按钮,将文件保存到本例程源文件目录下,需要注意的是在保存类型下应该选择pgl(*.dat),点击“保存”按钮即可。
转换后的字符已经成了8bit的数值文件,一个字节代表8个时钟的像素,所以在从rom ip核中读取dat文件的值,需要判断每一位的值,如果值为1,显示红色前景色,否则显示背景色:
always@(posedge pclk)begin if(region_active_d0 == 1'b1) if(q[osd_x[2:0]] == 1'b1) v_data <= 24'hff0000; else v_data <= pos_data; else v_data <= pos_data;end
5)调用单端口rom ip核的过程和调用其他ip 核一样,打开菜单下的“ip compiler”, 并按如下进行设置:
在弹出的界面中地址位宽、数据位宽、dat文件及类型进行设置,设置完成后按generate即可生成osd_rom ip:
rom ip核在“osd_display”模块中例化如下:
osd_rom osd_rom_m0( .address(osd_ram_addr[15:3]), .clock(pclk), .q(q));
信号名称 方向 说明
rst_n in 异步复位输入,低复位
pclk in 外部时钟输入
i_hs in 行同步信号
i_vs in 场同步信号
i_de in 数据有效信号
i_data in color_bar数据
o_hs out 输出行同步信号
o_vs out 输出场同步信号
o_de out 输出数据有效信号
o_data out 输出数据
osd_display模块端口
4.试验现象 连接好开发板和显示器,连接方式参考《hdmi测试实验》教程,需要注意,开发板的各个连接器不要带电热插拔,下载好试验程序,可以看到显示器显示以彩条为背景的字符。开发板做为hdmi输出设备,只能通过hdmi显示设备来显示,不要试图通过笔记本电脑的hdmi接口来显示,因为笔记本也是输出设备。
默认字符显示的位置在x坐标和y坐标都是9的地方显示,另外用户可以修改下面的pos_y和pos_x的判断条件将字符显示在显示屏的任意位置:

3小时带单1小区20台洗碗机!只因海尔把厨改过程直播了
造车烧钱,贾跃亭穷到卖地? 900英亩报价4000万美元
如何为便携式设备设计高效的DC/DC转换器
LED照明安全标准提高迫在眉睫
中国联通和中国电信宣布合作共建一张5G接入网络
【紫光同创国产FPGA教程】【第十三章】字符显示实验
C语言中的数组空间动态开辟
数据如何助力人工智能的到来
不止手机 如今的骁龙还在驱动什么“大趋势”?
SQL+Excel怎么进行数据统计
基于CPCI总线的智能A/D,D/A模块设计
防止量子计算机被攻击,我们该做些什么
远翔-LED驱动芯片-FP7208XR-G1
人工智能会让人力资本更值钱
计算机通信与网络v2 实验课程(18)
Arduino IoT Cloud开始与ChatGPT联机运作
Ampere Altra系列处理器的锁和内存序
车视野3D 360全景GQ2330解码一体机进行实测
2021蓝莓大赏落幕,YESOUL野小兽荣获“最佳线上直播课”奖
光伏赛道热度高涨 机器人能否在光伏打出一个产业赢局?