PCI9052使用理解及与DSP6713的接口

近期使用PLX公司的9052芯片通过DSP6713的HPI接口相连,参考了很多资料,有了自己的一点理解,和大家交流一下,理解有问题的还希望大家多多指正。

一、PCI空间地址到本地空间地址的地址映射
     Example:一个1MB的可预取的本地地址空间0120 0000h~012F FFFFh被配置为本地地址空间0。假设上位机操作系统可以分配1MB的PCI空间,地址范围从3450 0000h到345F FFFFh。
     具体配置如下:
     1. 配置LAS0RR寄存器为——FFF0 0008h。
  • 27:4:实际上是指定哪些地址位要进行PCI地址到本地地址的转换,即哪位要转换就把哪位置1。就是简单的指定了一下把哪些PCI空间的高位地址在映射时转换为本地空间的高位地址。
  • 31:28位必须设为1,即这几位必须进行转换。
  • LAS0RR[0]为0表示映射到PCI的存储器空间。
  • LAS0RR[1:2]为00表示映射为32位的PCI地址空间。
  • LAS0RR[3]为1表示映射为存储空间时是可预取的,映射为IO空间时加入到LAS0RR[27:4]中。
     2.  配置LAS0BA寄存器为——0120 0001h。
  • LAS0BA[31:28]是保留位。
  • LAS0BA[27:4]LAS0RR指定了哪些PCI位进行转换,这里给出本地空间地址要转换为什么。
  • LAS0BA[3:2]如果映射为内存地址,这两位就没用。映射为IO地址,就加入到LAS0BA[27:4]中。
  • LAS0BA[1]是保留位。
  • LAS0BA[0]为1是使能PCI空间到本地空间的映射。
     3. PCI初始化软件写全1到PCI基地址寄存器,然后将它读回。PCI软件写基地址到PCI基地址寄存器后PCI9052会返回FFF00008h。
     4. 配置PCIBAR2寄存器——34500008h。
  • PCIBAR2[31:4]到本地地址空间0的基地址
  • PCIBAR2[3]如果是存储器空间相关的总线描述寄存器LAS0BRD控制地址空间的预取功能。如果是IO空间加入上面
  • PCIBAR2[2:1]为00表示32位存储空间
  • PCIBAR2[0]为0表示寄存器映射到存储空间,为1表示寄存器映射到IO空间,在LAS0RR中有指定。


二、如何写本地空间地址的片选基地址寄存器
     Example:一个16K的SRAM设备连到本地地址空间,一个片选需要被提供。基地址指定为24000h。
     1.  16 进制的地址空间范围转换成  2 的指数形式             例: 16K=4000h   214 
   2. 设置片选 X 基寄存器的范围值, 设置第 14 位为 1
     
        
3.  基地址的设置方法:
  • 确定基地址(如24000h);
  • 算出基地址为范围的倍数,用16进制进行计算;例:  24000h/4000h=9h
  • 将倍值转换成2进制(例1001b);
  •  倍值填在范围的设置位之后, 如范围的设置位为第14位,倍值为9h (1001b),则实际基寄存器设置如下:

4.加上第一位的使能位, 那么片选范围为 4000h ,基地址为 24000h 的完全结果为如下:
          

三、EEPROM的配置
1. Device ID设为5201h比较好。

四、9052驱动编程
1. 同样名字的驱动,在卸载时一定要选择删除原程序,否则即便改了程序,但如果加载的话,还是加载原来保存的驱动!!


五、官方SDK应用
1.添加库目录,Include和Shared。方法:
依次点击“项目——配置属性——C/C++——常规”, Project->Property->C/C++->General->Additional Include Directories 在“附加包含目录”中加入H文件所在的文件夹
2.添加lib库,PlxApi.lib。方法:
依次点击“项目——配置属性——链接器——常规”,在“附加库目录”中加入LIB所在目录
 Project->ProPerty->Link->General->Additional Include Directories
还没完,在“链接器”中找到“输入”,在“附加依赖项”中加入lua51.lib
Input->Additional Dependencies 或用 #pragma comment(lib,"lua51.lib")
3.Debug和Release两个方式都要这样添加

六、上电RESET时LAD数据总线电平随机分配导致DSP配置引脚电平不对无法启动问题
调整DSP复位电路的电容,缩短DSP的复位时间,使DSP先于PCI9052完成复位即可。


七、PCI9052与DSP6713握手信号的研究
  • HAS#——地址锁存信号。在主机的地址数据是复用的时,HAS#接主机的ALE地址锁存引脚或其他类似功能的引脚。主机的地址数据是独立的时,HAS#上拉到高电平。NC板:拉高即可。
  • HCS、HDS1和HDS2信号。
          
HCS#和HDS1#、HDS2#共同组成了HSTROBE#信号,其关系是:当HCS#为低电平,同时HDS1#和HDS2#有且仅有一个低电平时,HSTROBE#才是低电平。
在与DSP6713相连中,HDS1#——LRD#,HDS2#——LWR#,HCS#——LCS1#。即片选脚选中,且读和写有一个选中,HSTROBE#才选通。
HSTROBE#下降沿时可以锁存HHWIL、HR/W#、HCNTL[1:0]。上升沿时可以锁存数据。
  • LRDY#——本地总线准备好信号。该信号需要在LASxBRD寄存器中使能。
如果LRDYi#为低,表示写的数据被接收了,或者读的数据已经被从机送上来了可以读取。从机可以通过该信号线在规定的等待时间结束后再插入等待周期。
LRDYi#信号由两路信号相或得到,即两路必须同时为低LRDYi#信号才有效
一路为LRD#和LWR#相与得到,即读操作和写操作有一个在执行时,为低电平。
另一路由D触发器传来,D触发器输入由三路信号相或得来,即这三路必须为低才能使LRDYi#有效。
1)一路为LCS1#,低有效。
2)一路为HRDY#,为DSP的读或写准备好信号,低有效,当HCS#为低时使能HRDY#的功能,否则一直为低。
3) 一路为ADS#,低有效,指示一个读或写访问的开始。
  • LW/R#——指示数据传输的方向,因为PCI9052与DSP6713的极性正好相反,要接一个反向器。
     
原理图可以参考:http://download.csdn.net/detail/sundonga/8269655,注意图中的逻辑芯片不要用CD系列,可以用速度高一些的74HC系列。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值