阅读:3481回复:15
请问本地fpga读取9054的register如何操作?
请问本地fpga读取9054的register,9054应该工作在哪种模式下?
(inistiator?还是target?)时序是怎么样的?9054哪些控制管脚起作用?谢谢 |
|
沙发#
发布于:2004-06-14 15:22
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2004-06-14 18:31
请问在9054的databook中的Local Bus Read to Configuration Register时序图,怎么有两个地址期?分别访问不同的寄存器吗?
|
|
地板#
发布于:2004-06-21 17:00
我也在做这部分。
不过,我觉得现在的问题是:是不是一次读写一定要使用2个地址期,用一个可不可以? 这样用2个地址期,却用一个ADS#发起,不太明白这算是什么? 留个EMAIL:calf921@sina.com 电话:010-82893150 |
|
地下室#
发布于:2004-06-22 09:11
用户被禁言,该主题自动屏蔽! |
|
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] |
|
|
6楼#
发布于:2004-06-22 18:45
9054里面的寄存器不能单独访问,一定要从00h单元一直遍历到你需要的地址
|
|
|
7楼#
发布于:2004-06-22 18:46
使用一个地址期也是可以的,就是在第一个ready#信号有效的同时,blast#信号也有效,但是这只能修改或读取00h地址单元寄存器的值
|
|
|
8楼#
发布于:2004-06-23 00:24
请问你说的Range for PCI-to-Local Address Space 0这个寄存器,你在local端访问时应该给地址80h吧?
如果照databook上画的两个地址期,我要访问mailbox0,两个地址应该分别写什么? |
|
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] |
|
10楼#
发布于:2004-06-23 11:49
请问你说的Range for PCI-to-Local Address Space 0这个寄存器,你在local端访问时应该给地址80h吧? 我开始也是以为是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] |
|
|
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端),不知对否? 这点我也是这样理解的 |
|
|
12楼#
发布于:2004-06-23 15:50
用户被禁言,该主题自动屏蔽! |
|
13楼#
发布于:2004-06-23 18:07
[quote]请问你说的Range for PCI-to-Local Address Space 0这个寄存器,你在local端访问时应该给地址80h吧? 我开始也是以为是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拉高),同时也获得了中断向量。我今天下午试了一下,不行。 |
|
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] |
|
15楼#
发布于:2004-06-26 20:22
我发现single方式是可以的,但是地址有点问题,可能我的cpld有点问题,还要等下个星期再验证一下
|
|
|