https://youtu.be/xfUx6KRHdO8
用實例學會SoC硬體與軟體協同設計:Hardware & Software Co-design 更深刻理解數位IC與SoC設計,需要考慮的層面 包括應用/圖檔格式定義,輸出入介面規劃,滙流排週邊的設定,及軟硬體如何分割
7-3:增加一個開源的PNG Decoder RTL IP,
- 實現功能:讀取PNG圖檔,解碼成BMP圖檔
- 設定AXI4 DMA (Simple DMA mode)
- 將開源PNGDecoderRTL IP ,對接AXI4 DMA的AXI-Stream 傳送與接收介面;
- 過程中,需額外撰寫RTL 模組,補充PNGDecoderIP如axis_last 久缺的信號等等
- 建立C++測試程式
- 由SD卡讀取PNG圖像並得知資料長度,寫入記憶體緩衝區 (即之後MM2S的來源地址)
- 設定BMP RGB圖元記憶體緩衝區(即之後S2MM的目的地址)
- 呼叫驅動, 設定AXI4 DMA 的S2MM位址及接收資料長度
- 呼叫驅動, 設定AXI4DMA 的MM2S地址及傳送資料長度
- 此動作令硬體經由AXI4-MM由MM2S的來源地址讀取PNG圖像資料
- PNG圖像資料經由AXI DMA的AXI-Stream (MM2S)輸入給硬體PNG Decoder
- 硬體PNGDecoder 輸出解碼RGB圖元到AXI DMA的AXI-Stream (S2MM),
再寫入AXI-MM的S2MM目的地址
- 最後C++由S2MM目的地址讀取RGB圖元,加上BMP檔頭,及"顛倒的"RGB圖元,寫入BMP圖檔
進行人眼檢測或與標準答案自動比較