3 建立Zynq硬件系統(tǒng)和OLEDIP核
Zynq的開(kāi)發(fā)板ZedBoard上使用Inteltronic/Wisechip公司的OLED顯示模組UG-2832HSWEG04,分辨率為128×32,是一款單色被動(dòng)式顯示屏,驅(qū)動(dòng)電路采用所羅門(mén)科技的SSD1306芯片。具體電路如圖3所示。根據(jù)原理圖可知,ZedBoard開(kāi)發(fā)板使用的OLED采用SPI方式控制,SPI模式使用的信號(hào)線(xiàn)和電源線(xiàn)有如下幾條:
RST(RES):硬復(fù)位OLED;
DC:命令/數(shù)據(jù)標(biāo)志(0,讀寫(xiě)命令;1,讀寫(xiě)數(shù)據(jù));
SCLK:串行時(shí)鐘線(xiàn);
SDIN:串行數(shù)據(jù)線(xiàn);
VDD:邏輯電路電源;
VBAT:DC/DC轉(zhuǎn)換電路電源。
在SPI模式下,每個(gè)數(shù)據(jù)長(zhǎng)度均為8位,在SCLK的上升沿,數(shù)據(jù)從SDIN移入到SSD1306,并且是高位在前的。

圖3 OLED原理圖
Zynq的硬件系統(tǒng)是指在PL中配置相關(guān)外設(shè),掛載到PS中,作為PS部分的外設(shè)使用。OLED驅(qū)動(dòng)主要用到6個(gè)IO口,在生成硬件系統(tǒng)時(shí),只需要利用Xilinx的嵌入式工具XPS生成最小硬件系統(tǒng),然后把OLED的相關(guān)引腳添加到最小硬件系統(tǒng)中。主要過(guò)程如下:
?。?)根據(jù)芯片型號(hào),根據(jù)XPS工具設(shè)計(jì)流程,生成Zynq的最小硬件系統(tǒng)。
?。?)在最小硬件系統(tǒng)中,添加外設(shè)IPmy_oled,把OLED的SPI引腳添加到工程中。添加一個(gè)6位寄存器,每位和SPI引腳對(duì)應(yīng)。
?。?)my_oledIP核邏輯設(shè)計(jì)主要完成IP核引腳添加、端口映射和用戶(hù)邏輯功能。首先要對(duì)設(shè)計(jì)的IP核添加引腳,在系統(tǒng)生成的MPD文件中,添加OLED的相關(guān)引腳端口和方向信息。
在MPD文件中,在PORT下添加OLED的相關(guān)引腳和方向信息,具體代碼如下:
PORTDC=“”,DIR=O
PORTRES=“”,DIR=O
PORTSCLK=“”,DIR=O
PORTSDIN=“”,DIR=O
PORTVBAT=“”,DIR=O
PORTVDD=“”,DIR=O
?。?)在系統(tǒng)生成的my_oled.vhd文件中,用VHDL語(yǔ)言進(jìn)行端口設(shè)計(jì),主要進(jìn)行以下兩個(gè)設(shè)計(jì)。
聲明IP和用戶(hù)6個(gè)信號(hào)和電源的端口。代碼如下:
DC∶outstd_logic;
RES∶outstd_logic;
SCLK∶outstd_logic;
SDIN∶outstd_logic;
VBAT∶outstd_logic;
VDD∶outstd_logic;
將用戶(hù)端口和IP核端口進(jìn)行映射,代碼如下:
DC=>DC,
RES=>RES,
SCLK=>SCLK,
SDIN=>SDIN,
VBAT=>VBAT,
VDD=>VDD,
?。?)在系統(tǒng)生成的user_logic.v文件中,用Verilog語(yǔ)言進(jìn)行邏輯設(shè)計(jì),實(shí)現(xiàn)寄存器和SPI對(duì)應(yīng)端口連接并實(shí)時(shí)讀取,主要代碼如下。其中slv_reg0為IP核寄存器,tmp為用戶(hù)定義臨時(shí)寄存器,tmp的每一位和IP端口一一對(duì)應(yīng)。實(shí)現(xiàn)把slv_reg0寄存器低6位實(shí)時(shí)傳給tmp寄存器,通過(guò)對(duì)寄存器slv_reg0的寫(xiě)操作達(dá)到控制6個(gè)引腳的時(shí)序。
always@(posedgeBus2IP_Clk)
begin
tmp<=slv_reg0[5:0];
end
電子發(fā)燒友App















評(píng)論