使用LiteX快速创建FPGA SoC工程(3)-LiteX社区-FPGA CPLD-ChipDebug

使用LiteX快速创建FPGA SoC工程(3)

本节简单介绍如何使用Migen生成对应的Verilog代码

一、Migen的IP库

在Migen的官方API参考文档中,我们可以找到其中所具有的可用IP核,以FIFO模块为例,包含以下类型的FIFO:

  • SyncFIFO:读写操作都是来自同一个时钟域,并且写入的数据在写入的时钟周期就能被读取;

  • SyncFIFOBuffered:与SyncFIFO的区别是,写入的数据需要等待一个时钟周期才能被读取;

  • AsyncFIFO:同SyncFIFO,但是读写操作来自不同的时钟域;

  • AsyncFIFOBuffered:同SyncFIFOBuffered,但是读写操作来自不同的时钟域;

此外,IP库还包含:二进制和独热码之间的转换模块、排序模块、FSM状态机模块;

二、生成SyncFIFO的RTL代码

在安装完成LiteX后,即可使用以下代码生成Verilog代码:

from migen.genlib import fifo
from migen.fhdl.verilog import convert
print(dir(fifo))
my_fifo = fifo.SyncFIFO(8, 128)
convert(my_fifo,ios={my_fifo.din, my_fifo.writable, my_fifo.we, my_fifo.dout,my_fifo.readable, my_fifo.re, my_fifo.level, my_fifo.replace},name="my_fifo").write("SyncFIFO.v")

 

上述代码生成了一个宽度为8bit、深度为128的SyncFIFO,生成的Verilog代码如下图:

图片[1]-使用LiteX快速创建FPGA SoC工程(3)-LiteX社区-FPGA CPLD-ChipDebug

 

请登录后发表评论

    没有回复内容