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

1、簡要說明

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

        python有第三方支持的pyverilog庫,目前已經亮相了。使用pycharm的同窗,在Files目錄下面的setting裏,能夠安裝。仍是比較方便的。佈局

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

        固然,萬事萬物都有一個進化的過程,我相信,通過幾回更新,會有更大的提升。spa

2、下面是verilog和pyverilog的代碼,能夠對比下

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

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

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

#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來寫。pycharm

相關文章
相關標籤/搜索