當前位置:
首頁 > 最新 > 用Python編寫FPGA乙太網MAC

用Python編寫FPGA乙太網MAC

來源:EETOP 作者:ccpp123

略作了解後發現,MyHDL不是高層次綜合, 它實際上是用Python的一些功能實現了一個Verilog模擬器, 能對用Python寫的仿Verilog語言進行模擬, 並把Python代碼翻譯成Verilog. 省事的地方在於Python的簡潔,以及可以很方便的看波形,還有可以和其它Python代碼結合來進行模擬輸入和查看模擬結果. 比如寫圖像處理的模塊就很容易把圖像輸入進行模擬然後查看結果.

在Python MyHDL環境下模擬測試好的代碼,翻譯成Verilog後就可以直接拿去編譯使用了,可以不需要再到ISE或Vivado中去模擬.也就是說MyHDL的模擬和翻譯結果都是沒有問題的.通過做這個項目俺已經能確認這一點. MyHDL的作者Jan Decaluwe是個設計晶元的工程師,用MyHDL設計過晶元, 所以在正確性上是沒有問題的.

使用Python MyHDL有以下幾點需要注意 :

實際上只有@always_seq, @always_comb這兩個語句塊可用, 雖然MyHDL也支持assign, 但在翻譯成Verilog時似乎會出問題, 所以就不要寫assign了,全部用@always_comb.

在用@always_comb時, 如果你在一個@always_comb塊中既賦值了一個信號,又引用了這個信號,MyHDL會報錯. 這個問題不大, 可以再寫一個@always_comb塊,把賦值和引用語句分到不同@always_comb塊里就行了.

對a = 這樣的信號拼接支持的不好,雖然有個連接信號函數支持這個,但只支持模擬,翻譯Verilog會出錯.所以這樣的信號拼接似乎也只能拆開來一個一個的寫在@always_comb塊里. 這也是用MyHDL要比Verilog麻煩的地方.

但總的來說Python MyHDL還是要比寫Verilog省事一些的,我打算以後就用這個了,不再寫Verilog了.

我嘗試用MyHDL寫了一個FPGA乙太網MAC, 可以通過UDP協議向PC機傳原始視頻。

代碼模塊截圖:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python基礎知識——序列對象
Python 爬蟲闖關

TAG:Python |