easyhawk
驱动牛犊
驱动牛犊
  • 注册日期2004-02-12
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3340回复:15

请问本地fpga读取9054的register如何操作?

楼主#
更多 发布于:2004-06-13 10:50
请问本地fpga读取9054的register,9054应该工作在哪种模式下?
(inistiator?还是target?)时序是怎么样的?9054哪些控制管脚起作用?谢谢
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-06-14 15:22
用户被禁言,该主题自动屏蔽!
easyhawk
驱动牛犊
驱动牛犊
  • 注册日期2004-02-12
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-14 18:31
请问在9054的databook中的Local Bus Read to Configuration Register时序图,怎么有两个地址期?分别访问不同的寄存器吗?
calf
驱动牛犊
驱动牛犊
  • 注册日期2001-10-30
  • 最后登录2006-07-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-21 17:00
我也在做这部分。
不过,我觉得现在的问题是:是不是一次读写一定要使用2个地址期,用一个可不可以?
这样用2个地址期,却用一个ADS#发起,不太明白这算是什么?

留个EMAIL:calf921@sina.com
电话:010-82893150
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-06-22 09:11
用户被禁言,该主题自动屏蔽!
tindy@keisun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2005-10-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-22 18:45
实验已做完,证实local to configuration操作里,9054是处于burst状态,也就是说假如你不给blast#信号终止9054的话,9054会发出不止两个的ready#信号,即有多个地址期,而且burst的操作的首地址是pci:00h,Range for PCI-to-Local Address Space 0(9054不管你设置任何首地址)。


[编辑 -  6/22/04 by  tindy@keisun]
Tindy
tindy@keisun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2005-10-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-22 18:45
9054里面的寄存器不能单独访问,一定要从00h单元一直遍历到你需要的地址
Tindy
tindy@keisun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2005-10-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-22 18:46
使用一个地址期也是可以的,就是在第一个ready#信号有效的同时,blast#信号也有效,但是这只能修改或读取00h地址单元寄存器的值
Tindy
easyhawk
驱动牛犊
驱动牛犊
  • 注册日期2004-02-12
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-23 00:24
请问你说的Range for PCI-to-Local Address Space 0这个寄存器,你在local端访问时应该给地址80h吧?
如果照databook上画的两个地址期,我要访问mailbox0,两个地址应该分别写什么?
easyhawk
驱动牛犊
驱动牛犊
  • 注册日期2004-02-12
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-23 00:41
说到这里,还有一个问题。(PCIIDR; PCI:00h, LOC:00h) PCI Configuration ID 和(LAS0RR; PCI:00h, LOC:80h) Local Address Space 0 Range Register for PCI-to-Local Bus 这四个基地址分别在哪些register中设置?我的理解是9054支持3个地址空间,一个是configure,另两个是space0,space1,这样就对应6个基地址(pci端和 local端),不知对否?

[编辑 -  6/23/04 by  easyhawk]
tindy@keisun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2005-10-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-23 11:49
请问你说的Range for PCI-to-Local Address Space 0这个寄存器,你在local端访问时应该给地址80h吧?
如果照databook上画的两个地址期,我要访问mailbox0,两个地址应该分别写什么?



我开始也是以为是80,但是你在plxmon上打reg 80,它倒是查不出来的,你用reg 00就可以查出来,我也不太清楚到底9054里面对于这个解释是怎么回事。

我的试验结果是不能在随意地址修改寄存器内容(一定要从00h遍历到你需要的寄存器地址),而且9054内部是以32位计数的,所以你要访问mailbox0(pci:40h),那么就要10h=16个地址期了,你就在第16个地址期时让LBE[3:0]有效,那么你的数据就可以写进去寄存器的了



[编辑 -  6/23/04 by  tindy@keisun]
Tindy
tindy@keisun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2005-10-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-23 13:28
说到这里,还有一个问题。(PCIIDR; PCI:00h, LOC:00h) PCI Configuration ID 和(LAS0RR; PCI:00h, LOC:80h) Local Address Space 0 Range Register for PCI-to-Local Bus 这四个基地址分别在哪些register中设置?我的理解是9054支持3个地址空间,一个是configure,另两个是space0,space1,这样就对应6个基地址(pci端和 local端),不知对否?

[编辑 -  6/23/04 by  easyhawk]


这点我也是这样理解的
Tindy
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2004-06-23 15:50
用户被禁言,该主题自动屏蔽!
easyhawk
驱动牛犊
驱动牛犊
  • 注册日期2004-02-12
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-06-23 18:07
[quote]请问你说的Range for PCI-to-Local Address Space 0这个寄存器,你在local端访问时应该给地址80h吧?
如果照databook上画的两个地址期,我要访问mailbox0,两个地址应该分别写什么?



我开始也是以为是80,但是你在plxmon上打reg 80,它倒是查不出来的,你用reg 00就可以查出来,我也不太清楚到底9054里面对于这个解释是怎么回事。

我的试验结果是不能在随意地址修改寄存器内容(一定要从00h遍历到你需要的寄存器地址),而且9054内部是以32位计数的,所以你要访问mailbox0(pci:40h),那么就要10h=16个地址期了,你就在第16个地址期时让LBE[3:0]有效,那么你的数据就可以写进去寄存器的了

[编辑 -  6/23/04 by  tindy@keisun] [/quote]

我是要在local端访问mailbox0(LOC:C0h),当然应该给地址C0h,你在plxmon上打reg 80,是在PCI端访问register当然是应该是reg 00。如果照你说的只能顺序访问,那么我local访问mailbox0,就要用C0h/4=48个地址期,那岂不是效率太低?
我用FPGA读mailbox0的目的是为了清中断(驱动程序在mailbox0中写数据配合使能位可以产生local中断),要等48个地址期,我的缓冲区早满了。
另:请问TOM,如上所说在PCI端写mailbox0可以引发local int,databook上没有讲local如何清中断?我按字面意思理解就是local读一下mailbox0就可以清中断(9054自动将LINT拉高),同时也获得了中断向量。我今天下午试了一下,不行。
easyhawk
驱动牛犊
驱动牛犊
  • 注册日期2004-02-12
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-06-24 23:03
今天下午做试验,发现可以用single模式访问9054的寄存器。我的卡本地总线是32位的,所以我把LBE都固定使能了。而local要访问mailbox0(LOC:C0h),LA上地址应该是30h(110000b)。因为9054的LA只是从LA2开始,本来是应该和LBE配合给出LA1和LA0的。我在LA上输出C0h(11000000b),9054认为访问的是300h,当然不对。
但是我访问成功mailbox0为何没能成功清除中断?

[编辑 -  6/24/04 by  easyhawk]
tindy@keisun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2005-10-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-06-26 20:22
我发现single方式是可以的,但是地址有点问题,可能我的cpld有点问题,还要等下个星期再验证一下
Tindy
游客

返回顶部