No_16_0328 Virtex6 PCIe2.5 仿真学习

3 篇文章 0 订阅
文档版本开发工具测试平台工程名字日期作者备注
V1.0ise14.7DBF板PCIETest22016.03.28lutianfeinone
  • 参考资料:
    • Spartan 6 PCIE_V2.4 真教程(一)
    • 菜鸟5小时速成FPGA_PCIE设计高手教程.pdf
    • ug671_V6_IntBlock_PCIe.pdf

一、Virtex6-250T的PCIe IP核设置

  • 首先选择2.5版IP核


  • 第1页:参数设置

    • 注意 Lane Width 选择 X4
    • 注意 Link Speed 选择 2.5GT/s
    • 注意 Frenquency(Mhz) 125Mhz,此时钟为给用户使用的trn_clk用户事务时钟。


  • 第2页:BAR空间设置


  • 第3页: ID号设置
    • 注:DeviceID可修改,但需上位机配合


  • 第4页:默认不变


  • 第5页:默认不变


  • 第6页:默认不变


  • 第7页:默认不变


  • 第8页:默认不变


  • 第9页:默认不变


  • 第10页:默认不变


  • 第11页:选择GTX参考时钟
    • Reference Clock Frequency: 选择250Mhz(根据AD9516设置)
    • Frequency可选项如下:


二、 简单仿真测试

(一)一些小问题的解决
报错一:找不到XILINX路径

  • 解决方案:配置系统环境变量


报错二:找不到tests.v文件路径(也可能不报错)


* 解决方案:修改pcie_exp_usrapp_tx.v文件中tests.v的路径如下:

  • 成功后如下图:


(二)波形分析
包格式说明
  • 包头格式说明

  • Fmt与Type格式说明

  • Posted 与 Non_Posted包

    • Non_Posted:设备发起端发出一个 Non-Posted 请求,在一定时间后,接收端需要回复一个完成包给发起端,如果不回复可能会遇到特别的情况,例如蓝屏。
    • Posted:不需要回复完成包给发起端。


PIO方式 接收 时序图
  • 信号说明:
    • m_axis_rx_tlast : 包结束标志,与m_axis_rx_tvalid一起生效。
    • m_axis_rx_tdata : 接收数据,当m_axis_rx_tvalid为高时,数据有效。
    • m_axis_rx_tkeep[7:0]:决定64bit数据中哪些bit为有效。某位为高时,表示对应的8位数据有效。
    • m_axis_rx_tvalid:表示PCIe核提供了有效数据在m_axis_rx_tdata
    • m_axis_rx_tready:表示用户准备好接收来自m_axis_rx_tdata的数据,此信号必须与m_axis_rx_tvalid同时作用才有效。
    • trn_rerr_fwd:为高正常,为低表示传输出错。


第一包数据:

  • 由上图可知:当 m_axis_rx_tvalid拉高的同时数据到来。
    • 数据包为MWr(存储器写请求),Posted
    • 包头3DW,
    • 数据长度为1(4字节),
    • 写地址为0x00000004(Byte)
    • 写入数据为0x04030201
    • 写入空间为:BAR0
    • trn_rerr_fwd始终为高,没有出错。


* 第一包数据的结尾:
* 观察可知当m_axis_rx_tready再次拉高后的下一个时钟m_axis_rx_tvalidm_axis_rx_tlast 同时拉低。


第二包数据


* 由上图可知:当 m_axis_rx_tvalid拉高的同时数据到来。
* 数据包为MRd(存储器读请求),Non-Posted包需要返回一个完成包
* 包头3DW,
* 读取长度为1(4字节),
* 读地址为0x00000004(Byte)
* 读取空间为:BAR0
* trn_rerr_fwd始终为高,没有出错。

PIO方式 发送 时序图


* 由上图可知:当 m_axis_tx_tvalid拉高的同时数据到来。
* 数据包为Cpld(完成包)。
* 包头3DW,
* 读回长度为1(4字节),
* 读地址为0x00000004(Byte)
* 读取空间为:BAR0
* 读出的数据:0x04030201,即我们把刚才写入0x00000010地址的数据读出,发现确实是刚才写入的0x04030201,所以脚本判断程序才会出现test_passed的结论。

问题: 如何判断出读的地址是0x000000010 ?
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值