嵌入式系統VGA顯示接口的系統實(shí)現,軟硬件解決方案
- 設計摘要
在許多嵌入式系統中,為了實(shí)現良好的人機界面,這就對系統的MCU和顯示設備提出了更高的要求。若能用低速的MCU實(shí)現和PC機類(lèi)似的顯示效果,將會(huì )大幅度提高產(chǎn)品的附加值。目前,帶有VGA接口和類(lèi)VGA的顯示設備隨處可見(jiàn),若能以此類(lèi)設備作為各種嵌入式系統的顯示器,也可提高各種嵌入式設備人機界面的通用性。本項目采用FPGA器件和帶有VGA接口的顯示器,實(shí)現適用于各種嵌入式系統的顯示接口,使得低速的MCU不需要增加過(guò)多開(kāi)銷(xiāo)即可采用VGA接口設備作為顯示器。
- 硬件結構圖
系統硬件結構圖如圖1所示:
圖1系統硬件結構圖
三、軟件介紹
系統軟件分為兩個(gè)部分:MCU軟件模塊和FPGA軟件模塊。MCU軟件模塊主要負責將要顯示數據傳送給FPGA,主要實(shí)現的功能是在VGA顯示器上打點(diǎn)(在指定的行坐標、列坐標出以某一指定的顏色顯示一個(gè)點(diǎn)),在此功能的基礎之上實(shí)現劃線(xiàn)、矩形填充、顯示圖片的功能。FPGA模塊主要負責接收MCU模塊發(fā)送的數據,并將接收到的數據通過(guò)內部的寫(xiě)FIFO單元存入外接的SDRAM存儲器中,然后再通過(guò)內部的讀FIFO單元從SDRAM中將數據取出送到VGA數模轉換模塊,同時(shí)FPGA模塊還要提供VGA顯示所需要的HS、VS、SYNC等掃描信號。
1、FPGA軟件模塊介紹
FPGA模塊的軟件主要有以下幾部分組成。
- FPGA頂層模塊:
FPGA頂層模塊主要定義了FPGA與外圍的MCU、SDRAM、VGA數模轉換的接口。各引腳的具體定義如表1和圖1所示。
表1
方向 | 名稱(chēng) | 描述 |
Input | clk | 輸入時(shí)鐘50M |
Input | rst_n | 異步復位,低有效 |
Input | a0 | 數據地址選擇,低表示地址 |
Input | we | 寫(xiě)信號,上升沿有效 |
Input | re | RE,讀信號,下降沿有效 |
Input | ce | 片選,低有效 |
input | [15:0]data1616 | 時(shí)序接口,數據線(xiàn) |
output | dclk | 輸出時(shí)鐘40M,給VGA |
output | hs_sig | 列同步信號 |
output | vs_sig | 行同步信號 |
output | red_sig[4:0] | 紅信號 |
output | green_sig[5:0] | 綠信號 |
output | blue_sig[4:0] | 藍信號 |
output | sdram_clk | SDRAM時(shí)鐘信號 |
output | sdram_cke | SDRAM時(shí)鐘有效信號 |
output | sdram_cs_n | SDRAM片選信號 |
output | sdram_ras_n | SDRAM行地址選通脈沖 |
output | sdram_cas_n | SDRAM列地址選通脈沖 |
output | sdram_we_n | SDRAM寫(xiě)允許位 |
output | sdram_ba[1:0] | SDRAM的L-Bank地址線(xiàn) |
output | sdram_addr[12:0] | SDRAM地址總線(xiàn) |
inout | sdram_data[15:0] | SDRAM數據總線(xiàn) |
output | sdram_udqm | SDRAM高字節屏蔽 |
output | sdram_ldqm | SDRAM低字節屏蔽 |
圖1 FPGA軟件頂層模塊
- SDRAM讀、寫(xiě)控制模塊
SDRAM讀、寫(xiě)控制模塊主要實(shí)現FPGA對SDRAM存儲器的讀寫(xiě)控制,該模塊主要完成SDRAM的上電初始化以及定時(shí)刷新、讀寫(xiě)控制等狀態(tài)的變遷。該模塊各引腳的具體定義如表2和圖2所示。
表2
方向 | 名稱(chēng) | 描述 |
input | clk | 系統時(shí)鐘,100MHz |
input | rst_n | 復位信號,低電平有效 |
input | sdram_wr_req | 系統寫(xiě)SDRAM請求信號 |
input | sdram_rd_req | 系統讀SDRAM請求信號 |
output | sdram_wr_ack | 系統寫(xiě)SDRAM響應信號 |
output | sdram_rd_ack | 系統讀SDRAM響應信號 |
input | sys_addr[21:0] | 讀寫(xiě)SDRAM時(shí)地址暫存器 |
input | sys_data_in[15:0] | 寫(xiě)SDRAM時(shí)數據暫存器 |
output | sys_data_out[15:0] | 讀SDRAM時(shí)數據暫存器 |
output | writing | SDRAM正寫(xiě)標志 |
output | sdram_clk | SDRAM時(shí)鐘信號 |
output | sdram_cke | SDRAM時(shí)鐘有效信號 |
output | sdram_cs_n | SDRAM片選信號 |
output | sdram_ras_n | SDRAM行地址選通脈沖 |
output | sdram_cas_n | SDRAM列地址選通脈沖 |
output | sdram_we_n | SDRAM寫(xiě)允許位 |
output | sdram_ba[1:0] | SDRAM的L-Bank地址線(xiàn) |
output | sdram_addr[11:0] | SDRAM地址總線(xiàn) |
inout | sdram_data[15:0] | SDRAM數據總線(xiàn) |
圖2 SDRAM頂層模塊
- 讀、寫(xiě)FIFO模塊
讀、寫(xiě)FIFO模塊采用系統的IP核實(shí)現,FIFO的容量為1K字單元(16位)。Wrf FIFO單元在wrreq為1時(shí)將MCU的數據存入wrf
FIFO,數據存入后,立即被寫(xiě)入SDRAM中。Rdf FIFO單元在rdreq為1時(shí)將數據從SDRAM中取出送給VGA控制模塊。
圖3 寫(xiě)FIFO模塊
圖4 讀FIFO模塊
- PLL單元
PLL單元主要負責管理系統所需的各種時(shí)鐘信號,其中主要有:inclk0為系統輸入時(shí)鐘(50MHZ)。c1、c2為SDRAM提供100MHZ的讀、寫(xiě)時(shí)鐘。c0、c3分別是為采樣MCU數據和VGA時(shí)序掃描所提供的40MHZ時(shí)鐘。
圖5?。校蹋棠K
- VGA控制模塊
VGA控制模塊主要負責將從MCU接收到的數據送給wrf FIFO中,然后從rdf FIFO中取出要顯示的數據,并產(chǎn)生VGA所需的行掃描、列掃描信號、同步信號、時(shí)鐘信號,一并送給外圍的VGA數模轉換電路。該模塊的各引腳的具體定義如表3和圖6所示。
表3
方向 | 名稱(chēng) | 描述 |
input | clk_40m | 輸入時(shí)鐘40M |
input | clk_100m | 輸入時(shí)鐘100M |
input | rst_n | 異步復位,低有效 |
input | a0 | 數據地址選擇,低表示地址 |
input | we | 寫(xiě)信號,上升沿有效 |
input | re | 讀信號,下降沿有效 |
input | ce | 片選,低有效 |
input | rdf_q[15:0] | rdf讀數據 |
input | writing | 正寫(xiě)SDRAM |
input | sdram_rd_ack | 讀SDRAM應答 |
input | data1616[15:0] | 數據線(xiàn) |
output | wrf_din[15:0] | wrf寫(xiě)數據 |
output | wrf_wrreq | wrf寫(xiě)使能 |
output | wrf_aclr | wrf異步清零 |
output | [21:0]sys_addr | SDRAM地址 |
output | rdf_rdreq | rdf讀使能 |
output | hs_sig | 列同步信號 |
output | vs_sig | 行同步信號 |
output | de | 時(shí)序控制 |
output | red_sig[4:0] | 紅信號 |
output | green_sig[5:0] | 綠信號 |
output | blue_sig[4:0] | 藍信號 |
圖6?。郑牵聊K
2、系統的RTL圖
評論