閱讀187 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【OpenHW參賽手記】System Generator 與XPS連接的方法

由於項目需要用到DSP算法實現,考慮用System Generator輔助設計算法,但在參賽贈送的書裏沒有相關知識,需要自己動手摸索。

還好在Matlab Simulink 內包含庫XilinxBlocksets裏右鍵發現了幫助文檔,進入之後了解了怎麼用Xilinx器件來完成算法設計,並生成網表。最重要的器件應該是Gatewayin和gatewayout,將matlab內的模塊與Xilinx模塊隔離,實現數位精度變換。這兩個元件相當於input和output,在生成實例的時候可以看到。

 

看了幫助文檔後,做個實驗,隻用PL部分,不用PS部分,用ProjectNavigator新建一個工程,添加一個SysGen模塊,裏麵什麼都不用做,直接將Gatewayin連接到Gatewayout,位數設為8bit,無小數部分。然後新建頂層verilog模塊,生成一個SysGen的實例(有模板可用),將輸入通過UCF約束到電路板的SW,輸出約束到LED,生成.bit,下載到PL上,很容易就成功實現了。

在此基礎上,再次進入matlab,在Gatewayin和Gatewayout之間加入一個移位器模塊,設為左移,重新生成.bit下載,也成功了。

 

單獨的DSP模塊顯然功能很有限,必須要和雙核ARM9連接起來才有價值。

新建planahead工程,參考懶兔子的自定義IP部分,生成mygpio模塊,然後連接到AXI總線,這時不要連接到外部引腳,而是連接到頂層模塊的內部信號線。

在planahead裏麵,新建SysGen模塊,搭建自己的算法,生成模塊,回到planahead。

之前的內部信號線連接到SysGen模塊的輸入。

還是像懶兔子一樣導出軟件工程,開發方法沒有差別。下載.bit文件配置PL部分,然後運行程序。

這時就可以發現,你通過串口寫到slave寄存器裏的值,通過SysGen模塊的處理,就能迅速反饋給你。這就說明,通過planahead頂層模塊可以實現SysGen和XPS的互聯,屬於係統互聯,這裏涉及到兩個係統,一個是DSP子係統,一個是PS子係統,二者都在planahead頂層模塊被實例化,然後用信號線互聯。

這是最近兩天的摸索,算法實現總算有了點眉目。

另外看到在SysGen裏麵支持AXI4總線,而且可以導出為XPS工程,還有待進一步研究,找到更緊密的連接方式,這樣可以進一步提高數據在DSP模塊和XPS之間的傳輸效率。如果大家有什麼好的建議,請不要吝嗇及時告訴我一聲~~~~

 

時間真是快,還有很多值得去研究的內容,包括GAL均衡算法優化,多種算法(LMS,RLS,基於小波的。。。)性能對比,盲均衡技術實現(CMA,DF)等。。。除了算法實現外還有信號類型分析(DRM,DTV,GSM,4G),時不我與,不再多說,回去繼續埋頭學習。。。

最後更新:2017-04-03 16:48:32

  上一篇:go Android 離線用戶的灰色頭像處理
  下一篇:go Java實現遞歸經典案例——三角數字的多種實現方式