• 用Python写Verilog(非HLS)


    https://blog.csdn.net/qq_32010099/article/details/81197171

    前段时间玩Python的时候好奇, 既然Python这么强大, 那么能不能用Python来写Verilog呢?然后就上Bing搜了一下, 发现了MyHDL这个Python的扩展包, 似乎真的可以用Python来写Verilog, 已经有牛人把这个轮子造出来了.

    略作了解后发现, 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 = {b,c,d}这样的信号拼接支持的不好,虽然有个连接信号函数支持这个,但只支持仿真,翻译Verilog会出错.所以这样的信号拼接似乎也只能拆开来一个一个的写在@always_comb块里. 这也是用MyHDL要比Verilog麻烦的地方.

    但总的来说Python MyHDL还是要比写Verilog省事一些的, 俺打算以后就用这个了,不再写Verilog了.

    俺尝试用MyHDL写了一个FPGA以太网MAC, 可以通过UDP协议向PC机传原始视频, 代码在:

    https://github.com/becomequantum/Kryon
    ————————————————
    版权声明:本文为CSDN博主「qq_32010099」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_32010099/article/details/81197171

  • 相关阅读:
    PHP 中 parent、self、static、$this 的区别 & 后期静态绑定详解
    PHP中for和foreach背后发生了什么和关于迭代器的理解
    PHP中this,self,parent三个关键字
    PHP文件指针操作
    php中Session使用方法详解
    关于PHP日期时间的主要函数
    php获取checkbox复选框的多个选项的内容
    PHP中的11个魔术方法总结:__construct,、__destruct、__call等
    PHP类的自动加载机制实现方法分析
    C#学习笔记(二)
  • 原文地址:https://www.cnblogs.com/dhcn/p/12058897.html
Copyright © 2020-2023  润新知