Verilog用得非常少,这里对MyHDL做个简单介绍。
这个工具的作用就是使用Python写verilog代码。当然首先你要安装 Python,然后要安装其扩展MYHDL(pip install myhdl),还有一个工具叫gtkWave也是必须的。
官网上有很多例子,随便选一个来介绍,地址在:http://www.myhdl.org/docs/examples/flipflops.html
做一个简单快速的入门介绍,其他的都是类似的操作,源码(文件名称为flip-flop_tb.py)
from myhdl import *
from random import randrange
def dff(q, d, clk):
@always(clk.posedge)
def logic():
q.next = d
return logic
def test_dff():
q, d, clk = [Signal(bool(0)) for i in range(3)]
dff_inst = dff(q, d, clk)
@always(delay(10))
def clkgen():
clk.next = not clk
@always(clk.negedge)
def stimulus():
d.next = randrange(2)
return dff_inst, clkgen, stimulus
def simulate(timesteps):
tb = traceSignals(test_dff)
sim = Simulation(tb)
sim.run(timesteps)
def convert():
q, d, clk = [Signal(bool(0)) for i in range(3)]
toVerilog(dff, q, d, clk)
simulate(2000)
convert()
简单来说,simulate就是做一个模拟,看看波形是否正确,运行时会在目录下生成一个名称叫 test_dff.vcd 的波形文件。
查看波形很简单,你用命令模式也好,用图形界面也好,结果都一样,我用的命令模式:
gtkwave test_dff.vcd,
这时会打开波形,缩小放大调整后,可以看到如下结果,
convert则是把dff的定义转换成verilog代码,运行完后会生成一个叫dff.v的文件,其内容如下
// File: dff.v
// Generated by MyHDL 0.11
// Date: Tue Oct 13 14:52:37 2020
`timescale 1ns/10ps
module dff (
q,
d,
clk
);
output q;
reg q;
input d;
input clk;
always @(posedge clk) begin: DFF_LOGIC
q
关注
打赏
热门博文
- 对CSDN网站关于抄袭的投诉的处理建议
- Tesseract OCR训练时碰到的问题和解决方案
- VSCODE在Jetson Nano上打不上断点,无法调试python源码
- ROS2进阶:在windows10上用vs2019编译rviz2
- ROS2 ERROR: OpenGL 1.5 is not supported in GLRenderSystem::initialiseContext at C:\ci\ws\build...
- ROS2 error: can‘t find examples_rclcpp_minimal_subscriber/Release/wait_set_subscriber_library.lib
- 在windows上安装 chocolatey.1.1.0.nupkg
- Qt开发高级进阶:如何在显示时适合视窗宽度和高度(fitWidth+fitHeight)
- PySpark ERROR: Python in worker has different version 3.9 than that in driver 3.8
- cv2.imshow error: The function is not implemented. Rebuild the library with Windows...