本原創教程由芯驛電子科技(上海)有限公司(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核里轉換后的字符信息,并在指定區域顯示。程序框圖如下圖所示:
![o4YBAGAvT_yAGQiGAAA0HZw7GNc535.jpg](https://file.elecfans.com//web1/M00/DE/C2/o4YBAGAvT_yAGQiGAAA0HZw7GNc535.jpg)
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”分別表示場同步開始信號和數據有效結束信號。其原理如下圖所示:
![pIYBAGAvT_2AFtmEAABmJ64Do0c073.jpg](https://file.elecfans.com//web1/M00/DF/3A/pIYBAGAvT_2AFtmEAABmJ64Do0c073.jpg)
信號名稱 | 方向 | 說明 |
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文件打開工具
![pIYBAGAvT_2AD7r_AABAAhLlCps955.jpg](https://file.elecfans.com//web1/M00/DF/3A/pIYBAGAvT_2AD7r_AABAAhLlCps955.jpg)
3)在提取工具的“字符輸入”框中輸入需要顯示的字符,字體和字符高度可以自定義選擇。設置完成后點擊“轉換”按鈕,在界面左下角可以看到轉換后的字符點陣大小,點陣的寬和高在程序中是需要用到的
![o4YBAGAvT_6ABNhqAAChU9xGe7Y686.jpg](https://file.elecfans.com//web1/M00/DE/C2/o4YBAGAvT_6ABNhqAAChU9xGe7Y686.jpg)
點陣的寬和高這里位152x33需要跟osd_display程序中定義的一致:
![pIYBAGAvT_-Ab0ppAAAMb5PVhDQ360.jpg](https://file.elecfans.com//web1/M00/DF/3A/pIYBAGAvT_-Ab0ppAAAMb5PVhDQ360.jpg)
4)點擊“保存”按鈕,將文件保存到本例程源文件目錄下,需要注意的是在保存類型下應該選擇PGL(*.dat),點擊“保存”按鈕即可。
![o4YBAGAvT_-AOkFVAABu3a_ckAE202.jpg](https://file.elecfans.com//web1/M00/DE/C2/o4YBAGAvT_-AOkFVAABu3a_ckAE202.jpg)
轉換后的字符已經成了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”, "并按如下進行設置:
![pIYBAGAvUACAAHAFAABI3TbOOl0333.jpg](https://file.elecfans.com//web1/M00/DF/3A/pIYBAGAvUACAAHAFAABI3TbOOl0333.jpg)
在彈出的界面中地址位寬、數據位寬、dat文件及類型進行設置,設置完成后按Generate即可生成osd_rom IP:
![o4YBAGAvUAGAEJyRAAAsl5SpD1I978.jpg](https://file.elecfans.com//web1/M00/DE/C2/o4YBAGAvUAGAEJyRAAAsl5SpD1I978.jpg)
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的判斷條件將字符顯示在顯示屏的任意位置:
![o4YBAGAvUAKAGkvZAAAKcj8OzpM678.jpg](https://file.elecfans.com//web1/M00/DE/C2/o4YBAGAvUAKAGkvZAAAKcj8OzpM678.jpg)
-
FPGA
+關注
關注
1630文章
21803瀏覽量
606434 -
HDMI
+關注
關注
32文章
1746瀏覽量
152495 -
ROM
+關注
關注
4文章
575瀏覽量
86041 -
字符
+關注
關注
0文章
234瀏覽量
25268 -
紫光同創
+關注
關注
5文章
89瀏覽量
27579
發布評論請先 登錄
相關推薦
【米爾-紫光MYB-J7A100T國產FPGA開發板試用】米爾-紫光PG2L100H國產FPGA開發板開箱評測
紫光同創聯合舉辦全國高校國產FPGA產學研融合研討會
大連理工和南信大-紫光同創FPGA創新實踐基地揭牌
紫光同創助力國產FPGA高校生態建設
《DNK210使用指南 -CanMV版 V1.0》第十三章 蜂鳴器實驗
ALINX亮相2024紫光同創FPGA技術研討會
華穗科技出席第十三屆飛機航空電子國際論壇
種草一塊國產FPGA開發板,PGL22G開發板,高性價比,輕松掌握國產FPGA
盤古200K開發板,紫光同創PG2L200H,Logos2系列,資源豐富,功能強大
國產FPGA核心板!米爾紫光同創Logos-2和Xilinx Artix-7核心板
FPGA核心板上市!紫光同創Logos-2和Xilinx Artix-7系列
![<b class='flag-5'>FPGA</b>核心板上市!<b class='flag-5'>紫光</b><b class='flag-5'>同創</b>Logos-2和Xilinx Artix-7系列](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
評論