生成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字。
设计:FIFO_Buffer
试验台: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:行情)。