【原創】閆悅川FPGA 之 python 編寫FPGA代碼,pyverilog寫verilog的代碼


一、簡要說明

        python是很好用的一門語言,功能也越來越強大。慢慢的,它的觸角也伸到了FPGA上,最近有傳言PYNQ,我先呵呵一下,畢竟新東西,想打破之前的思維另立門戶,還有很長一段路要走的。

        python有第三方支持的pyverilog庫,目前已經亮相了。使用pycharm的同學,在Files目錄下面的setting里,可以安裝。還是比較方便的。

        前段時間,pyverilog的那個大會,給了一些測試例程,感覺這東西寫verilog還是有些繁瑣,沒有verilog簡單。

        當然,萬事萬物都有一個進化的過程,我相信,經過幾次更新,會有更大的提高。

二、下面是verilog和pyverilog的代碼,可以對比下

        verilog實現的功能還是非常簡單的,就是給8bit的led一個常數,assign一下。

module top ( input CLK , input RST , output [7:0] led ); assign led = 8; endmodule

pyverilog就比較麻煩了,寫起來各種調用

#pyverilog庫
import pyverilog.vparser.ast as vast from pyverilog.ast_code_generator.codegen import ASTCodeGenerator params = vast.Paramlist(()) #輸入接口CLK
clk = vast.Ioport(vast.Input('CLK')) #輸入接口RST
rst = vast.Ioport(vast.Input('RST')) #定義一個長度為7的width信號量
width = vast.Width(vast.IntConst('7'),vast.IntConst('0')) #定義輸出接口led
led = vast.Ioport(vast.Output('led',width=width)) #將CLK、RST、led放入接口列表
ports = vast.Portlist((clk,rst,led )) #給led賦值為8
items = (vast.Assign(vast.Identifier('led'),vast.IntConst('8')),) #model的名稱為top
ast = vast.ModuleDef("top",params,ports,items) #生成代碼
codegen = ASTCodeGenerator() rslt = codegen.visit(ast) print(rslt)

本來只有6行的代碼,用pyverilog寫出來,就好長了。

這確實是一種方法,給編譯提供了接口。python的運算能力超強,估計以后FPGA的綜合布局布線都會用python來寫。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM