FPGA 之 python 编写FPGA代码,pyverilog写verilog的代码

http://www.cnblogs.com/YanRuoChuanFPGA/p/9336823.html

一、简要说明

        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来写。

猜你喜欢

转载自blog.csdn.net/wxh0000mm/article/details/83783114
今日推荐