阅读:1333回复:5
9054请教
我的板子是fpga + 9054 C 模式 pci target模式
现想在fpga中构造一个寄存器,主机可以通过读写io端口来读写这个寄存器。在本地端只有一个lwr信号,怎样区分是memory读写还是io读写呢? 另外请问系统给我分配的长度为256字节的memory 和io资源是不是都是用来读写9054 的pci 寄存器的? |
|
沙发#
发布于:2003-06-08 16:29
1,PCI9054的PCI配置寄存器中所分配的BAR2,BAR3,对应Local Space0、Local space1。也就是说你按什么方式映射这两个地址,在PCI总线上就会出现Memory/IO访问命令。但是对于Local端来说只认地址,所以你只要在你的FPGA中作一个寄存器,并作好相应的地址译码就可以了。这样在你主机中访问你所映射的那个地址就可以对你FPGA中所设的寄存器作访问了。
2,访问PCI寄存器有专门的方法的,你找一本PCI相关知识的看看吧。 |
|
板凳#
发布于:2003-06-08 22:01
将你的外部寄存器的地址用驱动程序做个映射,用IO或者MEMORY都可以。然后直接读写就可以了。
|
|
地板#
发布于:2003-06-09 11:28
谢谢flying
分已给出, 还不是很明白。 我昨天发现bar1映射的是9054 local registers 我用一个io读写端口工具可以对他读写 |
|
地下室#
发布于:2003-06-12 18:48
PCI9054的PCI配置寄存器中的
BAR0 对应的是 PCI9054的内部寄存器(以Memory方式映射) BAR1 对应的是 PCI9054的内部寄存器(以IO方式映射) BAR2 对应的是 PCI9054的Local Space 0 BAR3 对应的是 PCI9054的Local Space 1 如果将你自己构造的寄存器映射在PCI9054的内部寄存器的Local space 0地址中,那么以后访问时就应用BAR2的地址,否则如果是Local Space 1,则用BAR3 |
|
5楼#
发布于:2003-06-24 13:48
我的接口设计方法和他的差不多,
也是在CPLD中作了一个可读写的寄存器, 但为什么我读可以,写操作就不行呢? |
|
|