主要内容

生成FIFO DPI组件接口UART接收器

这个例子展示了如何生成SystemVerilog DPI的全部工作流组件一个FIFO缓冲界面集成了UART接收器。接口是用MATLAB编写的,和出口到一个高密度脂蛋白模拟器。UART SystemVerilog文件接收方及其试验台。

出于演示的目的,这个示例使用Modelsim 10.3摄氏度在64位Windows 7。然而,这个过程可以很容易地复制其他系统和模拟器。

需求和先决条件

s manbetx 845产品需要这个例子:

  • MATLAB编码器®

  • 模拟器:导师图形®ModelSim®/ QuestaSim®或节奏®Xcelium™

  • 一个支持的C编译器:M万博1manbetxicrosoft®Visual c++或GNU GCC

背景

通用异步接收机和发射机(UART)是一个电路,通过串行线发送和接收数据。UART的通常使用rs - 232标准和包含一个接收机和发射机。然而在本例中只使用一个接收器。

串行传输从一个起始位的0,其次是数据位,以校验位和一个停止位。传送一个字节是显示在下图中:

转移是异步的,这意味着没有时钟信息,因此接收机和发射机必须同意波特率,停止位,校验位。在这个例子中,一个字节将波特率为19200,1停止位和奇偶校验位。

过采样方案将被用来估计数据的中间点速度16倍的波特率,如下图所示。

下面的示意图显示了UART接收机的设计。

步骤1:MATLAB设计

第一步是编写MATLAB代码满足设计的要求,你应该试着抓住testbench需求。在这个例子中我们的设计由一个先进先出(FIFO)缓冲8字。

  1. 设计:FIFO_Buffer

  2. 试验台:FIFO_Buffer_tb

步骤2:确保MATLAB testbench捕获需求

运行testbench以确保没有运行时错误,应绘制如下图。

FIFO_Buffer_tb

注意,testbench锻炼设计以下列方式:

  • 时钟周期< 15:写6个字节(启用写信号,读取信号禁用),然后读6字节(读信号激活,写信号禁用)。

  • 时钟周期> 15:同时读和写。(例如:读取的字节写在下一个时钟周期)。

第三步:生成DPI组件和高密度脂蛋白模拟器验证行为

生成组件执行以下命令:

dpigen-testbenchFIFO_Buffer_tbFIFO_Bufferarg游戏{0,int8 (0), 0}

下图显示了这个示例的相关文件。

一旦DPIGEN生成DPI组件及其testbench您可以运行SystemVerilog testbench遵循以下步骤:

  • 开始ModelSim / QuestaSim GUI模式。

  • 改变你的当前目录codegen / dll FIFO_Buffer / dpi_tb在你的模拟器HDL代码生成目录下。

  • 输入以下命令,以启动您的模拟

run_tb_mq.do

将生成下面的波形:

注意,这个比赛MATLAB testbench我们写6个字节,然后读他们,其次是同时读写8个字节。

  • 仿真结束时,您应该看到下面的文本打印你的控制台:

* * * * * * * * * * * * * *测试完成(通过)* * * * * * * * * * * * * *

步骤4:将生成的DPI组件集成到UART接收机的设计

DPI组件行为已得到验证后,是时候将它集成到UART接收器。下面的图显示了不同组件所需的文件。

锻炼DPI的UART接收机组件集成,testbench命名的uart_rx_FIFO_tb。sv”提供了。的UART组件实例化testbench如下所示:

/ /实例化使用基于MATLAB生成DUT SystemVerilog DPI FIFO_Buffer_dpi u_FIFO_Buffer_dpi (.clk(时钟),.clk_enable (clk_enable) .reset(重置),.wr (rx_done_tick) .w_data (dout) .rd (rd),空虚(空),.r_data (r_data) .Full(全部));

第五步:模拟UART接收机

成功地模拟设计,确保以下文件在同一个文件夹:

类似于第三步,打开Modelsim并运行,文件使用:

run_tb.do

如下所示的波形:

testbench 6 ASCII字母(MATLAB)通过串行传输的“处方”信号,并写进FIFO缓冲区。第六封信转让完成后的rd信号断言的信件(MATLAB)在“r_data”。

引用

Pong p .朱(2008),Verilog FPGA原型的例子。新泽西州霍博肯:约翰·威利& Sons . n:行情)。