python和verilog对接_用这个库居然可以使用Python进行FPGA逻辑开发

本文介绍了如何使用MyHDL库通过Python进行FPGA硬件设计,包括编写流水灯功能代码,使用分频器产生慢速时钟,以及将Python设计转换为Verilog代码并在FPGA上实现的过程。
摘要由CSDN通过智能技术生成

未经私信同意禁止转载!

不好意思,又标题党了,为了骗阅读量没办法。。。

前言

今天为大家介绍一下python的MyHDL 库。MyHDL项目的目标是通过python语言的优雅和简洁性来增强硬件设计者的能力。

MyHDL是一种免费、开源的软件包,用于使用python作为硬件描述和验证语言。python是一种非常高级的语言,硬件设计者可以利用它的全部力量来建模和仿真他们的设计。此外,可以将设计转换为verilog或vhdl语言。这提供了一个融入传统设计流程的切入口。

这个库有完整的文档,网上还有翻译成中文的《MyHDL中文手册》,自行搜索。今天我为大家演示一个完整的使用MyDHL进行FPGA逻辑开发的流程。程序员都喜欢搞hello world, 我们硬件工程师都是弄个流水灯。

一、编写开发功能代码

流水灯的代码用硬件描述语言来写,可以写出花,今天我们就用最朴实的移位寄存器来实现。对0b00000001循环向左移位就可以实现流水灯的功能。由于我们使用的LED电路是低电平点亮,所以在输出的时候需要将输出按位取反。Python代码如下:

from myhdl import *

@block

def shifting_register(clock, reset,led_driver):

""" Incrementer with enable.clock -- clock inputreset -- asynchronous reset inputreg -- output port to drive leds"""

reg = Signal(modbv(1)[8:])

@always(clock.posedge, reset.negedge)

def shift():

if not reset:

reg.next = 1

else:

if reg[7] == 1:

reg.next = 1

else:

reg.next = reg<<1

led_driver.next = ~ reg

return shift

FPGA 开发板使用的12M晶振,所以我们还需要一个分频器,产生一个0.5Hz的时钟来驱动移位寄存器。代码也很简单:

from myhdl import *

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值