AC6102開發(fā)板的SD卡圖片VGA顯示實(shí)驗(yàn),基于SOPC技術(shù),實(shí)現(xiàn)了在AC6102開發(fā)板上,使用NIOS II 運(yùn)行FAT32文件系統(tǒng),并讀取SD卡中存儲(chǔ)的圖片數(shù)據(jù)到DDR2存儲(chǔ)器中,然后使用SGDMA實(shí)時(shí)讀取圖片數(shù)據(jù)送往VGA顯示器上進(jìn)行顯示的功能。
4位數(shù)據(jù)線SD卡驅(qū)動(dòng)
SGDMA高性能DMA IP核應(yīng)用
img2lcd軟件生成圖片bin文件
1024*768@60FPS的32位色圖像實(shí)時(shí)顯示
FAT32文件系統(tǒng)
AC6102開發(fā)板能夠支持4bit SD卡讀寫,32bit DDR2高速存儲(chǔ),24位色VGA輸出等功能。
在AC6102開發(fā)板上,設(shè)計(jì)了一個(gè)4bit數(shù)據(jù)線的SD卡接槽,能夠讀取常見的Micro SD卡。
在AC6102開發(fā)板上,有一個(gè)通用顯示擴(kuò)展接口,可以用來(lái)插接開發(fā)板適配的顯示輸出模塊,如RGB TFT顯示屏,VGA輸出模塊
AC6102開發(fā)板上使用2片16位數(shù)據(jù)位寬,1Gbit存儲(chǔ)容量的DDR2存儲(chǔ)器,組成了硬件32bit的DDR2模組,合理設(shè)計(jì)系統(tǒng),最高可運(yùn)行在166.7Mhz時(shí)鐘頻率。
本實(shí)驗(yàn)基于AC6102開發(fā)板,搭建了一個(gè)輪流顯示圖片的數(shù)碼相框應(yīng)用工程。在系統(tǒng)中,DDR2既作為NIOS II CPU的運(yùn)行內(nèi)存,同時(shí)共享為VGA顯示器的顯存。系統(tǒng)運(yùn)行時(shí),NIOS II CPU會(huì)運(yùn)行FAT32文件系統(tǒng),并將FAT32格式的SD卡掛載到文件系統(tǒng)中,然后從SD卡中讀取出存儲(chǔ)好的bin格式的圖像文件到DDR2內(nèi)存中。另外使用SGDMA實(shí)時(shí)從指定區(qū)域讀取數(shù)據(jù),送給VGA控制器,顯示在VGA顯示器上。下圖為系統(tǒng)結(jié)構(gòu)圖:
具體在顯示某一幅圖片內(nèi)容時(shí),圖像數(shù)據(jù)從SD卡最終到VGA顯示器上的數(shù)據(jù)流路徑如下圖所示:
NIOS II CPU將某一幅圖像” n.bin”數(shù)據(jù)從SD卡中讀取出來(lái),存入DDR2中動(dòng)態(tài)分配的一塊內(nèi)存區(qū)域block A。
NIOS II CPU從block A中將圖像數(shù)據(jù)讀取并寫入DDR2的另一塊指定內(nèi)存區(qū)域block B,block B就是VGA控制器實(shí)時(shí)讀取圖像數(shù)據(jù)的位置。
SGDMA直接從DDR2存儲(chǔ)器的block B中實(shí)時(shí)讀取數(shù)據(jù)并送往VGA控制器,由VGA控制器產(chǎn)生1024*768@60Hz的時(shí)序,驅(qū)動(dòng)VGA顯示器顯示” n.bin”圖像數(shù)據(jù)。
為了提高圖片在刷新時(shí)的切換速度,在系統(tǒng)運(yùn)行時(shí),軟件會(huì)首先將所有需要顯示的圖片全部讀取到內(nèi)存中,為每幅圖片分配一片內(nèi)存,然后即為每幅圖片在DDR2中分配一個(gè)block,并將所有圖片的數(shù)據(jù)先分別讀取到各自的block中,然后再根據(jù)顯示需求,從指定的某block中讀取該幅圖像的數(shù)據(jù),寫入block B中。
本實(shí)例在提供時(shí)已經(jīng)生成好了燒寫文件,可以直接燒寫入AC6102開發(fā)板的EPCS中運(yùn)行。下面簡(jiǎn)要介紹Demo的演示步驟。
準(zhǔn)備一張Micro SD卡,128M~16G都可以,格式化為FAT32文件系統(tǒng)。注意,本實(shí)例中NIOS II運(yùn)行的文件系統(tǒng)僅支持FAT32格式的文件系統(tǒng),因此需要SD卡的格式也為FAT32格式。
打開資料盤中”03_配套軟件-->Image2Lcd 2.9 “,如下圖所示。輸出數(shù)據(jù)類型選擇“二進(jìn)制”,掃描模式選擇“水平掃描”,輸出灰度選擇“32位真彩色”,最大寬度和高度選擇“1024*768”,并勾選“包含圖像頭數(shù)據(jù)”選項(xiàng)。
點(diǎn)擊“打開”按鈕打開一張圖片,這里可以任意選擇圖片。例如我們的實(shí)例工程目錄下有一個(gè)名為素材的文件夾,里面提供了若干張圖片。選擇一張圖片打開。
點(diǎn)擊保存圖標(biāo),軟件會(huì)自動(dòng)將該圖片解析并生成bin格式文件,選擇一個(gè)臨時(shí)路徑例如桌面,將文件命名為1.bin并保存。
使用同樣的方法生成另外6個(gè)bin文件,共生成7個(gè)bin文件,分別以n.bin命名。需要注意的是,生成圖像文件時(shí)候,原始圖像文件的長(zhǎng)寬可以任意,輸出時(shí)候。最大寬度和高度也可以任意設(shè)置,軟件會(huì)自動(dòng)對(duì)圖片進(jìn)行縮放。即不一定需要圖片的尺寸剛好為1024*768。
將生成好的7個(gè)bin文件拷貝到SD卡根目錄。如下圖所示:
從電腦上卸載SD卡,然后插入到AC6102開發(fā)的SD卡槽中,如下圖所示:
注意,開發(fā)板上的卡槽為自鎖式卡槽,當(dāng)需要卸載SD卡時(shí),只需將SD卡再次向內(nèi)推,卡槽就會(huì)自動(dòng)將SD卡彈出。
將套件中的VGA輸出模塊插接到開發(fā)板右側(cè)的通用顯示擴(kuò)展接口上,使用VGA線連接VGA顯示器。
補(bǔ)充說明:由于現(xiàn)在越來(lái)越多的人選擇了使用筆記本來(lái)進(jìn)行工作學(xué)習(xí),臺(tái)式機(jī)已經(jīng)越來(lái)越少見了,因此這里有必要說明一下,本實(shí)驗(yàn)中,VGA線的一側(cè)連接到開發(fā)板的VGA模塊接口上,另一端是連接到常見的臺(tái)式機(jī)使用的VGA顯示器的接口上的,不是連接到筆記本電腦的VGA輸出接口。筆記本電腦雖然有VGA接口,但那也是輸出,和開發(fā)板的VGA接口角色是一樣的,也是輸出圖像到VGA顯示器或者投影儀用的,開發(fā)板是無(wú)法通過VGA的方式將圖像顯示到筆記本電腦上的。
連接電源,下載器,并使用Micro USB 數(shù)據(jù)線連接開發(fā)板上的USB轉(zhuǎn)串口電路到電腦上,以支持使用串口打印啟動(dòng)信息。
打開開發(fā)板電源開關(guān),然后燒寫提供的實(shí)例工程目錄下myoutput_files目錄下的hs_combined.jic文件。
在設(shè)備管理器中查看開發(fā)板的串口號(hào),如下圖1所示,然后打開串口調(diào)試工具,選擇對(duì)應(yīng)的端口號(hào),設(shè)置波特率為115200波特率,ASCII接收,然后打開對(duì)應(yīng)串口,如下圖2所示。
給開發(fā)板重新上電,然后可以看到,在串口助手中開始打印啟動(dòng)信息,啟動(dòng)信息包括檢測(cè)sd卡、掛載sd卡到fat文件系統(tǒng),列出sd卡中的所有文件名,依次讀取7個(gè)圖像文件的數(shù)據(jù)到ram中并報(bào)告圖像文件的分辨率,開始顯示圖像等。在打印開始顯示圖像信息之前,VGA顯示器會(huì)處于白屏狀態(tài),當(dāng)打印開始顯示圖像的信息后,VGA顯示器上開始以1秒的間隔輪訓(xùn)的播放這7幅圖片。
關(guān)于本工程詳細(xì)的創(chuàng)建和軟件編程思路,由于涉及知識(shí)點(diǎn)較多,內(nèi)容量較大,暫時(shí)僅以視頻講解的方式提供。講解視頻文件名為“AC6102開發(fā)板上基于SOPC的數(shù)碼相框.mp4”。
下面附上幾張圖片輪播時(shí)的實(shí)拍照片,由于是32位真彩色顯示,因此圖像看起來(lái)視覺效果非常好。