ChipSkywalker數位IC設計實戰課程 / 文章

打造你的ARM SoC圖像處理器(下)

發表日期:09/17/2023

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圖檔

進行人眼檢測或與標準答案自動比較