domin
驱动牛犊
驱动牛犊
  • 注册日期2001-05-01
  • 最后登录2009-01-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望13点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1333回复:5

9054请教

楼主#
更多 发布于:2003-06-08 11:18
我的板子是fpga + 9054 C 模式  pci target模式
现想在fpga中构造一个寄存器,主机可以通过读写io端口来读写这个寄存器。在本地端只有一个lwr信号,怎样区分是memory读写还是io读写呢?
另外请问系统给我分配的长度为256字节的memory 和io资源是不是都是用来读写9054 的pci 寄存器的?

flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-06-08 16:29
1,PCI9054的PCI配置寄存器中所分配的BAR2,BAR3,对应Local Space0、Local space1。也就是说你按什么方式映射这两个地址,在PCI总线上就会出现Memory/IO访问命令。但是对于Local端来说只认地址,所以你只要在你的FPGA中作一个寄存器,并作好相应的地址译码就可以了。这样在你主机中访问你所映射的那个地址就可以对你FPGA中所设的寄存器作访问了。
2,访问PCI寄存器有专门的方法的,你找一本PCI相关知识的看看吧。
power_lei
驱动小牛
驱动小牛
  • 注册日期2002-05-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-08 22:01
将你的外部寄存器的地址用驱动程序做个映射,用IO或者MEMORY都可以。然后直接读写就可以了。
domin
驱动牛犊
驱动牛犊
  • 注册日期2001-05-01
  • 最后登录2009-01-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望13点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-09 11:28
谢谢flying
分已给出,
还不是很明白。
我昨天发现bar1映射的是9054 local registers
我用一个io读写端口工具可以对他读写

 
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于: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
linjing
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2008-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-24 13:48
我的接口设计方法和他的差不多,
也是在CPLD中作了一个可读写的寄存器,
但为什么我读可以,写操作就不行呢?
粼粼
游客

返回顶部