Board logo

标题: 用双端口RAM实现与PCI总线接口的数据通讯(2) [打印本页]

作者: yuyang911220    时间: 2016-11-21 11:27     标题: 用双端口RAM实现与PCI总线接口的数据通讯(2)

(3)配置片选信号控制寄存器

  该寄存器的地址范围和基地址必须与LAS0RR或LAS0BA所定义 的范围和空间相对应。可根据PCI 9030提供的配置寄存器的方法确定CS0BASE的数值:板卡的2KB空间可以用十六进制表示为800H,将800H右移一位得到400H,然后将基地址加到400H左边的任何一位中。因为所采用的基地址为00004000H,所以得到的值为00004400H;又因为第1位为片选使能位,应该设置为1。所以最终确定的数值为00004401H。

  由于局部总线采用8位的宽度,将工作方式定义在不使能突发,不预取,配置总线区域描述寄存器的数值确定为400140A2H。另外,还要根据要求设置CNTRL寄存器控制PCI 9030的工作状态,确定为18784500H。当所有这些数据都配置完成后,便可将这些数据按照加载顺序写入串行E2PROM中,从而完成整个系统的配置。

  通过这几个寄存器的配置,一个局部地址空间便可以确定下来。在系统上电后,系统BIOS根据这几个寄存器的内容将板卡上2KB的RAM空间重映射到PCI空间中,使主机可以像访问自己的地址空间一样访问板卡上的RAM。

  2.3 CPLD控制逻辑

  对于双口RAM同一个地址单元,不能同时进行读或写操作,但两边连接的主控芯片,都可以对其进行读、写操作,因此必须解决地址竞争问题。本系统中,使用XILINX公司的XC9536CPLD芯片完成PCI局部总线的译码和控制电路。由于系统控制计算主要在DSP中完成,上位机只起监控和数据保存作用,因此规定对双口RAM的操作DSP优先于PCI 9030;同时CPLD也参与了DSP片外程序存储器Flash和数据存储器RAM的地址译码,控制逻辑用公式表示为:

  3 设备驱动程序设计

  设备驱动程序开发工具通常有DDK、VtoolsD、WinDrvr等。为加快开发速度,采用JUNDO公司的WinDrvr开发设备驱动程序。其使用简单,支持多种操作系统。

  采用Windrvr开发PCI桥接设备的驱动程序有两种方法。一种Wizard开发向导是自动生成驱动程序框架代码,然后根据实际需要,加入定制功能。这种方法生成的代码较多,程序较复杂。另一种是在Vc++创建工程中直接利用Windrvr的API函数生成驱动程序,比在Wizard生成的框架代码上修改更为灵活。本文采用后一种方法。以下是用Windrvr开发PCI9030桥芯片的驱动代码,只要稍加改动就可以作为其他PCI芯片驱动程序的一部分,例如PCI9050、PCI9052等。程序中出现的变量名都由其名称反映含义,具体可以参见Windrvr设计文档说明。

  至此获得了本地端映射到用户的内存地址,调用读写函数就可以对本地芯片进行操作。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0