0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用FPGA实现字符显示

电子设计 来源:电子设计 作者:电子设计 2022-02-09 10:29 次阅读

作者:ALINX

* 本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

实验Vivado工程为“hdmi_char”。

在HDMI输出实验中讲解了HDMI显示原理和显示方式,本实验介绍如何使用FPGA实现字符显示,通过这个实验更加深入的了解HDMI的显示方式。

1. 实验原理

实验通过字符转换工具将字符转换为16进制coe文件存放到单端口的ROM IP 核中,再从ROM 中把转换后的数据读取出来显示到HDMI上。

2.程序设计

字符显示例程是在HDMI显示的基础上增加了一个osd_display的模块,“osd_display”模块是用来读取存储在Rom ip核里转换后的字符信息,并在指定区域显示。程序框图如下图所示:

pIYBAGAJbwiABA5_AACDMYqn5qM256.png

2.1 在“timing_gen_xy”模块是根据HDMI时序标准定义了“x_cnt”和“y_cnt”两个计数器并由这两个计数器产生了HDMI显示的“x”坐标和“y”坐标。程序中用“vs_edge”和“de_falling”分别表示场同步开始信号和数据有效结束信号。其原理如下图所示:

o4YBAGAJb4WAPkl1AAA_z3eNx_A049.png

timing_gen_xy模块端口

2.2 下面介绍如何存储文字信息的ROMIP,首先需要生成能够被XILINX FPGA识别的.coe文件。

首先在工程文件夹下找到“FPGA字模提取”工具。

pIYBAGAJb82AGcrLAAACb-XdSDs808.png

双击.exe文件打开工具

在提取工具的“字符输入”框中输入需要显示的字符,字体和字符高度可以自定义选择。设置完成后点击“转换”按钮,在界面左下角可以看到转换后的字符点阵大小,点阵的宽和高在程序中是需要用到

点阵的宽和高这里位144x32,需要跟osd_display程序中定义的一致:

pIYBAGAJcJGALjJZAAACd2FyqGw689.png

点击“保存”按钮,将文件保存到本例程源文件目录下,需要注意的是在保存类型下应该选择Xilinx(*.coe),点击“保存”按钮。

找到生成的.coe文件打开后可以看到如下:

o4YBAGAJcQ6AAHDyAAARYbJQeyc512.png

调用单端口Rom IP核的过程在前面ROM的使用中已经介绍过,设置为Single Port ROM

在PortA Options栏中设置如下:

按如下图添加osd.coe文件(找到前面生成的coe文件),完成后点击“OK”按钮:

2.3 osd_display模块包含timing_gen_xy 模块和osd_rom模块。osd_rom里存储的字符数据,如果数据为1,OSD的区域显示ROM中的前景红色(显示ALINX芯驿),如果数据是0,OSD的区域显示数据为背景色(彩条)。

o4YBAGAJchGAOBWMAAAUSFeMZK4808.png

设置区域有效信号,也就是字符显示在此区域中,起始坐标设置成(9,9),区域大小可以根据字符生成工具设置的区域设置。

pIYBAGAJck-AHimWAAAaMQ9ftS8526.png

在ROM的读地址部分可能很多人不理解,为什么是[15:3],也就是八个时钟周期才读出一个数据,这是因为字符的一个点只表示1bit,而ROM的存储数据宽度是8位,因此需要八个周期取出一个数据,并比较每个bit位的值,将字符一个点转换成图像上的一个像素。

pIYBAGAJco-Aa47nAAAMJLGS_rE191.png

pIYBAGAJcs2AYy0WAAA3dOkFW5Y690.png

osd_display模块端口

3.实验现象

连接好开发板和显示器,连接方式参考《HDMI输出实验》教程,需要注意,开发板的各个连接器不要带电热插拔,下载好实验程序,可以看到显示器显示以彩条为背景的字符。开发板作为HDMI输出设备,只能通过HDMI显示设备来显示,不要试图通过笔记本电脑的HDMI接口来显示,因为笔记本也是输出设备。

默认字符显示的位置在坐标为(9,9),另外用户可以修改下面的pos_y和pos_x的判断条件将字符显示在显示屏的任意位置:

o4YBAGAJc0qAbiR9AAAKp6OGA3E495.png

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1628

    文章

    21722

    浏览量

    602883
  • HDMI
    +关注

    关注

    32

    文章

    1691

    浏览量

    151837
收藏 人收藏

    评论

    相关推荐

    FPGA驱动AD芯片之实现与芯片通信

    概述: 利用FPGA实现AD芯片的时序,进一步实现与AD芯片数据的交互,主要熟悉FPGA对时序图的实现,掌握时序图转换Verilog硬件描述
    的头像 发表于 12-17 15:27 76次阅读
    <b class='flag-5'>FPGA</b>驱动AD芯片之<b class='flag-5'>实现</b>与芯片通信

    基于FPGA实现数码管显示

    本文介绍数码管显示译码基本工作原理及Verilog HDL驱动代码编写,进一步熟练掌握FPGA入门基础知识。
    的头像 发表于 10-24 14:44 788次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>数码管<b class='flag-5'>显示</b>

    基于FPGA的LCD1602液晶显示模块驱动设计

    本文通过以LCD1602液晶显示模块为基础,介绍FPGA驱动LCD1602原理,详细介绍硬件原理图设计及FPGA驱动LCD1602软件设计,通过万年历功能综合实现时钟功能、LCD160
    的头像 发表于 10-24 14:42 1033次阅读
    基于<b class='flag-5'>FPGA</b>的LCD1602液晶<b class='flag-5'>显示</b>模块驱动设计

    Labview 字符串 不常用功能:快捷才当将字符串设置为反斜杠(\'\\\')代码显示,用于仪器通信

    右键单击字符串常量、显示控件或输入控件,从快捷菜单中选择 **\'\'代码显示** ,则LabVIEW将反斜杠()后紧接的字符视作不可显示
    发表于 09-06 14:01

    labview字符串如何转换为16进制字符

    在LabVIEW中,将字符串转换为16进制字符串是一个常见的需求,尤其是在处理数据通信和硬件接口时。LabVIEW提供了多种方法来实现这一转换,包括使用内置函数、编写VI(Virtual
    的头像 发表于 09-04 15:54 2231次阅读

    labview中如何实现字符串换行

    1. 字符串换行的基本概念 在LabVIEW中,字符串换行通常指的是在字符串中插入换行符,使得字符串在显示或输出时能够自动换行。这在创建用户
    的头像 发表于 09-04 15:47 1573次阅读

    labview中如何实现字符串选择输出

    在LabVIEW中实现字符串选择输出是一项常见的任务,它涉及到字符串处理、条件判断和用户界面设计等多个方面。由于LabVIEW是一种图形化编程语言,其编程方式与传统的文本编程语言有所不同,因此
    的头像 发表于 09-04 15:44 876次阅读

    labview字符串的四种表示各有什么特点

    字符串控件(String Control) 字符串控件是LabVIEW中用于显示和编辑字符串的图形界面元素。它允许用户在前面板(Front Panel)上输入
    的头像 发表于 09-04 15:40 526次阅读

    基于FPGA的图像采集与显示系统设计

    源和固有的并行处理能力,在数字信号处理、硬件加速、汽车电子等领域得到了广泛应用。在图像采集与显示系统中,FPGA能够实现高速、并行的数据处理,显著提高系统的实时性和性能。本文设计了一个基于FP
    的头像 发表于 07-17 10:58 1822次阅读

    执行menuconfig后显示的全是字符页面,怎么解决?

    请问一下,为什么我执行完idf.py menuconfig后,显示的页面上全都是字符呢? 我的Windows11操作系统,在ESP-IDF 5.2 PowerShell页面下。
    发表于 06-11 08:47

    FPGA实现的“俄罗斯方块”游戏系统设计

    本项目主要在FPGA实现了一个经典小游戏“俄罗斯方块”。本项目基本解决方案是,使用Xilinx Zynq系列开发板 ZedBoard 作为平台,实现主控模块,通过VGA接口来控制屏幕进行显示
    发表于 03-28 10:41 1967次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>的“俄罗斯方块”游戏系统设计

    在3伏电压下使用字符LCD模块

    LCD模块与七段LED显示屏相比,LCD模块比LED显示屏可以显示更多的字符。大多数 LCD 模块的功耗小于 1 mA,因此也适用于电池供电的设备。
    发表于 02-02 16:56 496次阅读
    在3伏电压下使用<b class='flag-5'>字符</b>LCD模块

    FPGA实现原理

    FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种特殊的集成电路,其内部结构由大量的可配置逻辑块和互连线组成。FPGA可以通过编程来实现各种数字系统功能
    发表于 01-26 10:03

    IIC总线的FPGA实现说明

    DE2_TV中,有关于寄存器的配置的部分,采用的方法是通过IIC的功能,这里对IIC总线的FPGA实现做个说明。
    的头像 发表于 01-05 10:16 1049次阅读
    IIC总线的<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>说明

    如何能够实现通用FPGA问题?

    FPGA 是一种伪通用计算加速器,与 GPGPU(通用 GPU)类似,FPGA 可以很好地卸载特定类型的计算。从编程角度上讲,FPGA 比 CPU 更难,但从工作负载角度上讲 FPGA
    发表于 12-29 10:29 459次阅读