AC6102開發板的SD卡圖片VGA顯示實驗,基于SOPC技術,實現了在AC6102開發板上,使用NIOS II 運行FAT32文件系統,并讀取SD卡中存儲的圖片數據到DDR2存儲器中,然后使用SGDMA實時讀取圖片數據送往VGA顯示器上進行顯示的功能。
4位數據線SD卡驅動
SGDMA高性能DMA IP核應用
img2lcd軟件生成圖片bin文件
1024*768@60FPS的32位色圖像實時顯示
FAT32文件系統
AC6102開發板能夠支持4bit SD卡讀寫,32bit DDR2高速存儲,24位色VGA輸出等功能。
在AC6102開發板上,設計了一個4bit數據線的SD卡接槽,能夠讀取常見的Micro SD卡。
在AC6102開發板上,有一個通用顯示擴展接口,可以用來插接開發板適配的顯示輸出模塊,如RGB TFT顯示屏,VGA輸出模塊

AC6102開發板上使用2片16位數據位寬,1Gbit存儲容量的DDR2存儲器,組成了硬件32bit的DDR2模組,合理設計系統,最高可運行在166.7Mhz時鐘頻率。

本實驗基于AC6102開發板,搭建了一個輪流顯示圖片的數碼相框應用工程。在系統中,DDR2既作為NIOS II CPU的運行內存,同時共享為VGA顯示器的顯存。系統運行時,NIOS II CPU會運行FAT32文件系統,并將FAT32格式的SD卡掛載到文件系統中,然后從SD卡中讀取出存儲好的bin格式的圖像文件到DDR2內存中。另外使用SGDMA實時從指定區域讀取數據,送給VGA控制器,顯示在VGA顯示器上。下圖為系統結構圖:

具體在顯示某一幅圖片內容時,圖像數據從SD卡最終到VGA顯示器上的數據流路徑如下圖所示:

NIOS II CPU將某一幅圖像” n.bin”數據從SD卡中讀取出來,存入DDR2中動態分配的一塊內存區域block A。
NIOS II CPU從block A中將圖像數據讀取并寫入DDR2的另一塊指定內存區域block B,block B就是VGA控制器實時讀取圖像數據的位置。
SGDMA直接從DDR2存儲器的block B中實時讀取數據并送往VGA控制器,由VGA控制器產生1024*768@60Hz的時序,驅動VGA顯示器顯示” n.bin”圖像數據。
為了提高圖片在刷新時的切換速度,在系統運行時,軟件會首先將所有需要顯示的圖片全部讀取到內存中,為每幅圖片分配一片內存,然后即為每幅圖片在DDR2中分配一個block,并將所有圖片的數據先分別讀取到各自的block中,然后再根據顯示需求,從指定的某block中讀取該幅圖像的數據,寫入block B中。
本實例在提供時已經生成好了燒寫文件,可以直接燒寫入AC6102開發板的EPCS中運行。下面簡要介紹Demo的演示步驟。
準備一張Micro SD卡,128M~16G都可以,格式化為FAT32文件系統。注意,本實例中NIOS II運行的文件系統僅支持FAT32格式的文件系統,因此需要SD卡的格式也為FAT32格式。
打開資料盤中”03_配套軟件-->Image2Lcd 2.9 “,如下圖所示。輸出數據類型選擇“二進制”,掃描模式選擇“水平掃描”,輸出灰度選擇“32位真彩色”,最大寬度和高度選擇“1024*768”,并勾選“包含圖像頭數據”選項。

點擊“打開”按鈕打開一張圖片,這里可以任意選擇圖片。例如我們的實例工程目錄下有一個名為素材的文件夾,里面提供了若干張圖片。選擇一張圖片打開。

點擊保存圖標,軟件會自動將該圖片解析并生成bin格式文件,選擇一個臨時路徑例如桌面,將文件命名為1.bin并保存。


使用同樣的方法生成另外6個bin文件,共生成7個bin文件,分別以n.bin命名。需要注意的是,生成圖像文件時候,原始圖像文件的長寬可以任意,輸出時候。最大寬度和高度也可以任意設置,軟件會自動對圖片進行縮放。即不一定需要圖片的尺寸剛好為1024*768。
將生成好的7個bin文件拷貝到SD卡根目錄。如下圖所示:

從電腦上卸載SD卡,然后插入到AC6102開發的SD卡槽中,如下圖所示:

注意,開發板上的卡槽為自鎖式卡槽,當需要卸載SD卡時,只需將SD卡再次向內推,卡槽就會自動將SD卡彈出。
將套件中的VGA輸出模塊插接到開發板右側的通用顯示擴展接口上,使用VGA線連接VGA顯示器。
補充說明:由于現在越來越多的人選擇了使用筆記本來進行工作學習,臺式機已經越來越少見了,因此這里有必要說明一下,本實驗中,VGA線的一側連接到開發板的VGA模塊接口上,另一端是連接到常見的臺式機使用的VGA顯示器的接口上的,不是連接到筆記本電腦的VGA輸出接口。筆記本電腦雖然有VGA接口,但那也是輸出,和開發板的VGA接口角色是一樣的,也是輸出圖像到VGA顯示器或者投影儀用的,開發板是無法通過VGA的方式將圖像顯示到筆記本電腦上的。
連接電源,下載器,并使用Micro USB 數據線連接開發板上的USB轉串口電路到電腦上,以支持使用串口打印啟動信息。

打開開發板電源開關,然后燒寫提供的實例工程目錄下myoutput_files目錄下的hs_combined.jic文件。

在設備管理器中查看開發板的串口號,如下圖1所示,然后打開串口調試工具,選擇對應的端口號,設置波特率為115200波特率,ASCII接收,然后打開對應串口,如下圖2所示。


給開發板重新上電,然后可以看到,在串口助手中開始打印啟動信息,啟動信息包括檢測sd卡、掛載sd卡到fat文件系統,列出sd卡中的所有文件名,依次讀取7個圖像文件的數據到ram中并報告圖像文件的分辨率,開始顯示圖像等。在打印開始顯示圖像信息之前,VGA顯示器會處于白屏狀態,當打印開始顯示圖像的信息后,VGA顯示器上開始以1秒的間隔輪訓的播放這7幅圖片。

關于本工程詳細的創建和軟件編程思路,由于涉及知識點較多,內容量較大,暫時僅以視頻講解的方式提供。講解視頻文件名為“AC6102開發板上基于SOPC的數碼相框.mp4”。
下面附上幾張圖片輪播時的實拍照片,由于是32位真彩色顯示,因此圖像看起來視覺效果非常好。

