本文共 1254 字,大约阅读时间需要 4 分钟。
Verilog用得非常少,这里对MyHDL做个简单介绍。
这个工具的作用就是使用Python写verilog代码。当然首先你要安装 Python,然后要安装其扩展MYHDL(pip install myhdl),还有一个工具叫gtkWave也是必须的。
官网上有很多例子,随便选一个来介绍,地址在:
做一个简单快速的入门介绍,其他的都是类似的操作,源码(文件名称为flip-flop_tb.py)
from myhdl import *from random import randrangedef dff(q, d, clk): @always(clk.posedge) def logic(): q.next = d return logicdef 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, stimulusdef 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/10psmodule dff ( q, d, clk);output q;reg q;input d;input clk;always @(posedge clk) begin: DFF_LOGIC q <= d;endendmodule
转载地址:http://dtwoi.baihongyu.com/