作者:ALINX
* 本原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處。
適用于板卡型號(hào):
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG
實(shí)驗(yàn)Vivado工程為“hdmi_char”。
在HDMI輸出實(shí)驗(yàn)中講解了HDMI顯示原理和顯示方式,本實(shí)驗(yàn)介紹如何使用FPGA實(shí)現(xiàn)字符顯示,通過(guò)這個(gè)實(shí)驗(yàn)更加深入的了解HDMI的顯示方式。
1. 實(shí)驗(yàn)原理
實(shí)驗(yàn)通過(guò)字符轉(zhuǎn)換工具將字符轉(zhuǎn)換為16進(jìn)制coe文件存放到單端口的ROM IP 核中,再?gòu)腞OM 中把轉(zhuǎn)換后的數(shù)據(jù)讀取出來(lái)顯示到HDMI上。
2.程序設(shè)計(jì)
字符顯示例程是在HDMI顯示的基礎(chǔ)上增加了一個(gè)osd_display的模塊,“osd_display”模塊是用來(lái)讀取存儲(chǔ)在Rom ip核里轉(zhuǎn)換后的字符信息,并在指定區(qū)域顯示。程序框圖如下圖所示:
2.1 在“timing_gen_xy”模塊是根據(jù)HDMI時(shí)序標(biāo)準(zhǔn)定義了“x_cnt”和“y_cnt”兩個(gè)計(jì)數(shù)器并由這兩個(gè)計(jì)數(shù)器產(chǎn)生了HDMI顯示的“x”坐標(biāo)和“y”坐標(biāo)。程序中用“vs_edge”和“de_falling”分別表示場(chǎng)同步開(kāi)始信號(hào)和數(shù)據(jù)有效結(jié)束信號(hào)。其原理如下圖所示:
timing_gen_xy模塊端口
2.2 下面介紹如何存儲(chǔ)文字信息的ROMIP,首先需要生成能夠被XILINX FPGA識(shí)別的.coe文件。
首先在工程文件夾下找到“FPGA字模提取”工具。
雙擊.exe文件打開(kāi)工具
在提取工具的“字符輸入”框中輸入需要顯示的字符,字體和字符高度可以自定義選擇。設(shè)置完成后點(diǎn)擊“轉(zhuǎn)換”按鈕,在界面左下角可以看到轉(zhuǎn)換后的字符點(diǎn)陣大小,點(diǎn)陣的寬和高在程序中是需要用到
點(diǎn)陣的寬和高這里位144x32,需要跟osd_display程序中定義的一致:
點(diǎn)擊“保存”按鈕,將文件保存到本例程源文件目錄下,需要注意的是在保存類(lèi)型下應(yīng)該選擇Xilinx(*.coe),點(diǎn)擊“保存”按鈕。
找到生成的.coe文件打開(kāi)后可以看到如下:
調(diào)用單端口Rom IP核的過(guò)程在前面ROM的使用中已經(jīng)介紹過(guò),設(shè)置為Single Port ROM
在PortA Options欄中設(shè)置如下:
按如下圖添加osd.coe文件(找到前面生成的coe文件),完成后點(diǎn)擊“OK”按鈕:
2.3 osd_display模塊包含timing_gen_xy 模塊和osd_rom模塊。osd_rom里存儲(chǔ)的字符數(shù)據(jù),如果數(shù)據(jù)為1,OSD的區(qū)域顯示ROM中的前景紅色(顯示ALINX芯驛),如果數(shù)據(jù)是0,OSD的區(qū)域顯示數(shù)據(jù)為背景色(彩條)。
設(shè)置區(qū)域有效信號(hào),也就是字符顯示在此區(qū)域中,起始坐標(biāo)設(shè)置成(9,9),區(qū)域大小可以根據(jù)字符生成工具設(shè)置的區(qū)域設(shè)置。
在ROM的讀地址部分可能很多人不理解,為什么是[15:3],也就是八個(gè)時(shí)鐘周期才讀出一個(gè)數(shù)據(jù),這是因?yàn)樽址囊粋€(gè)點(diǎn)只表示1bit,而ROM的存儲(chǔ)數(shù)據(jù)寬度是8位,因此需要八個(gè)周期取出一個(gè)數(shù)據(jù),并比較每個(gè)bit位的值,將字符一個(gè)點(diǎn)轉(zhuǎn)換成圖像上的一個(gè)像素。
osd_display模塊端口
3.實(shí)驗(yàn)現(xiàn)象
連接好開(kāi)發(fā)板和顯示器,連接方式參考《HDMI輸出實(shí)驗(yàn)》教程,需要注意,開(kāi)發(fā)板的各個(gè)連接器不要帶電熱插拔,下載好實(shí)驗(yàn)程序,可以看到顯示器顯示以彩條為背景的字符。開(kāi)發(fā)板作為HDMI輸出設(shè)備,只能通過(guò)HDMI顯示設(shè)備來(lái)顯示,不要試圖通過(guò)筆記本電腦的HDMI接口來(lái)顯示,因?yàn)楣P記本也是輸出設(shè)備。
默認(rèn)字符顯示的位置在坐標(biāo)為(9,9),另外用戶可以修改下面的pos_y和pos_x的判斷條件將字符顯示在顯示屏的任意位置:
審核編輯:何安
-
FPGA
+關(guān)注
關(guān)注
1630文章
21800瀏覽量
606272 -
HDMI
+關(guān)注
關(guān)注
32文章
1742瀏覽量
152452
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
字符串在編程中的應(yīng)用實(shí)例
字符串與字符數(shù)組的區(qū)別
字符串反轉(zhuǎn)的實(shí)現(xiàn)方式
字符串處理方法 字符串轉(zhuǎn)數(shù)字的實(shí)現(xiàn)
基于FPGA實(shí)現(xiàn)圖像直方圖設(shè)計(jì)
![基于<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>圖像直方圖設(shè)計(jì)](https://file1.elecfans.com/web3/M00/03/90/wKgZO2dqHAGARj8XAAAkNh_VJCs585.png)
基于FPGA實(shí)現(xiàn)數(shù)碼管顯示
![基于<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>數(shù)碼管<b class='flag-5'>顯示</b>](https://file1.elecfans.com/web2/M00/0B/08/wKgaomcZ7OWAJsiDAAKXGrq-7Io046.png)
基于FPGA的LCD1602液晶顯示模塊驅(qū)動(dòng)設(shè)計(jì)
![基于<b class='flag-5'>FPGA</b>的LCD1602液晶<b class='flag-5'>顯示</b>模塊驅(qū)動(dòng)設(shè)計(jì)](https://file1.elecfans.com/web1/M00/F3/9D/wKgZoWcZ7F-ASazfAAEGXwnTv5k101.png)
Labview 字符串 不常用功能:快捷才當(dāng)將字符串設(shè)置為反斜杠(\'\\\')代碼顯示,用于儀器通信
labview字符串如何轉(zhuǎn)換為16進(jìn)制字符串
labview中如何實(shí)現(xiàn)字符串換行
labview中如何實(shí)現(xiàn)字符串選擇輸出
labview字符串的四種表示各有什么特點(diǎn)
基于FPGA的圖像采集與顯示系統(tǒng)設(shè)計(jì)
執(zhí)行menuconfig后顯示的全是字符頁(yè)面,怎么解決?
FPGA實(shí)現(xiàn)的“俄羅斯方塊”游戲系統(tǒng)設(shè)計(jì)
![<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>的“俄羅斯方塊”游戲系統(tǒng)設(shè)計(jì)](https://file1.elecfans.com/web2/M00/C6/0B/wKgZomYE2VqAWiycAAAct71JDAg794.png)
評(píng)論