关于调试PLX9054的一些总结和经验

42 篇文章 1 订阅
9 篇文章 2 订阅

语言:Verilog HDL & C

软件环境:Win7 & ISE 14.7

硬件:工控机 & PC & Xilinx FPGA & PLX9054


调试目的:PLX9054的Local端有3个工作模式:C, J , M。在本次项目中,我们选择了C模式(pin157与pin156接地)。在C模式下有两种数据传输方式,DMA和直接数据传输。我们要往FPGA里先写入一组数据(1024个 16bit宽),然后读出来。直接数据模式有两种,一种是PCI Target,一种是PCI Initial。我们选择的是PCI Target(Direct Slave)数据传输模式。这样,PLX9054是PCI的Slave,是FPGA的Master。

          

调试过程:选好工作模式和数据传输模式之后,就去研究PLX的一些寄存器,以及PCI端内存地址到LOCAL端本地地址的地址映射规则。PLX9054有五个寄存器,如下图所示。


 PCI Register 中存放的是一些比如设备号和别的寄存器的一些基地址,详情请参考PLX9054的文档。LOCAL Register存放的是我们要配置的一些寄存器。分别是:


这里要注意的是,PCIBAR2和LAS0BA。这两个寄存器,分别存储了SPACE 0 在PCI端的基地址,和LOCAL端的基地址。一定要注意这中间的区别。我们要配置的是LAS0BA,因为根据文档,LAS0BA的第0位可以决定是否要使用地址编码,在C模式下,其默认是0,即不采用地址编码。我们要将其设置成1。LBRD0的作用:Memory Space 0 Local Bus Width. Writing a 00 indicates an 8-bit bus width. Writing a 01 indicates a 16-bit bus width. Writing a 10 or 11 indicates a 32-bit bus width.翻译过来就是,内存空间SPACE 0 的本地总线位宽。写入 00 即用8 -bit。下面自己看 ,我们要写入01。而根据文档,在C模式下其默认是11,所以需要设置好。

关于PLX9054和FPGA引脚之间时序图的配置,的确花了我很多时间。首先,我们要找到哪些信号线和控制线是干嘛的,我们要理清楚他们之间的关系。这之后,就好用ISE写Verilog代码来配置了。配置好后,再配置UCF文件,我调用了一个RAM的IP Core。所以,IP Core的文档需要读一读,重点注意文档中的一个时序图。



最后我用C代码,调用了PLX驱动给的一些API函数,对寄存器进行了配置,然后进行了读写操作。


总结:博客写的是有点简陋。主要是为了下次如果再调试9054的时候,好提醒自己一些。通过这次项目,我学习到了很多技术之外的东西,包括该如何读文档,如何开始一项新的工作。

关于读文档,这是每一个技术人员或者研究生必须掌握的技能。那么怎么读才好呢。

1.拿到一个项目后,先去从宏观上掌握这些东西,比如PLX9054,首先,我们要知道它是干什么的,他有哪些工作模式,在这些工作模式下有哪些工作方式。其次,去了解具体工作模式下的一些细节问题。文档是大而全的,你不明白你的目的,往往不知道在看什么,以及看了根本没用。

2.遇见问题的了,千万不要慌张,要上网找资料。你遇见的问题,别人早就遇见了。一定能找到答案的。但是,在找答案之前,一定要明确自己的目的,我要找什么,一些不相关的东西快速略过,免得被一些无用信息包围了。解决不问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值