积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 接口设计 >> 应用论文
  相关分类: 相关文章 | 应用论文 | 新产品 | 下载 |
用双端口RAM实现与PCI总线接口的数据通讯
 
作者:姚利民,孙逢春,李军求,张承宁   来源:电子技术应用    点击数:111   更新时间:2008-5-14
您可以添加到网摘 让更多人关注此文章:

    摘 要: 采用双端口RAM实现DSP与PCI总线芯片之间的数据交换接口电路。提出了一种使用CPLD解决双端口RAM地址译码和PCI接口芯片局部总线仲裁的的硬件设计方案,并给出了PCI总线接口芯片寄存器配置实例,介绍了软件包WinDriver开发设备驱动程序的具体过程。
关键词: PCI总线 双端口RAM CPLD 设备驱动


  随着计算机技术的不断发展,为满足外设间以及外设与主机间的高速数据传输,Intel公司于1991年提出了PCI总线概念。PCI总线是一种能为主CPU及外设提供高性能数据通讯的总线,其局部总线在33MHz总线时钟、32位数据通路时,数据传输速率最高可达133Mbps。实际应用中,可通过PCI总线实现主机与外部设备的高速数据传输,有效解决数据的实时传输和存储问题,为信号的实时处理打下良好基础。
  本文主要提供一种基于PCI总线的数据传输系统设计方案,其中双口RAM起桥梁作用,完成上位机与外围主控单元之间的数据握手。
1 双端口RAM实现PCI总线接口方案
  本系统主要用于解决上位机与外围控制单元的数据传输问题。上位机运行信息诊断程序,通过PCI总线与外围控制单元以一定速率传输数据,在主机中实时监控并保存数据。由于实现高速实时数据传输,数据量大,所以在PCI局部总线上插入一个高速双端口RAM。双端口RAM一端作为PCI总线接口的本地端存储器,一端作为DSP目标存储器。需要传输保存的数据经DSP处理后借助双端口RAM和PCI总线接口完成了上位机与DSP的数据握手。本文提出的双端口RAM实现PCI总线接口方案如图1。


  考虑到PCI总线接口对局部总线的控制时序比较复杂,需要译码和控制电路来实现局部总线的访问及控制。本系统使用CPLD解决双口RAM的地址访问竞争冲突问题。需解决的主要问题有:①PCI接口电路设计;②CPLD地址译码和总线仲裁;③PCI总线驱动程序开发。
2 PCI接口电路设计
  PCI卡的设计一般采用两种方案。一种是根据PCI协议在FPGA或CPLD中实现PCI总线接口控制器,但是由于PCI协议的复杂性,使得开发难度大、周期长;另一种使用现成的PCI接口芯片,用户开发难度降低,只把重点放在PCI接口芯片局部总线的接口设计和PCI总线配置空间的初始化,而不用速度考虑PCI总线规范上众多的协议规范,加快了开发时间。
  本数据传输系统使用PLX公司的PCI 9030总线接口芯片,以CPLD完成逻辑控制及与外设的连接,整个系统的硬件框图如图 2。其中双端口RAM采用IDT71V321,CPLD选用XILINX公司的XC9536CPLD芯片,EEPROM选用NS公司的93CS56,控制单元DSP选用TMS 320LF2407A。
2.1 PCI 9030内部结构及其数据传输
  PCI 9030是PLX公司开发的PCI总线目标接口芯片。其特点:低功耗,PQFP176针封装,符合PCI V2.2规范;在PCI总线上是从设备,但在局部总线上是主设备;PCI 9030支持突发传输,有5个PCI总线到局部总线地址空间,9个可编程的通用I/O,4个可编程的片选,支持热插拔。PCI 9030主要由PCI总线接口逻辑、局部总线接口逻辑、串行E2PROM接口逻辑和内部逻辑组成,结构框图见图3。

 


  PCI 9030支持PCI主设备直接访问局部总线上的设备,数据传输方式分为内存映射的突发传输和I/O映射的单次传输,并且由PCI基址寄存器设置在PCI内存和I/O空间中的合适位置,另外局部映射寄存器允许PCI地址空间转换到局部地址空间。
2.2 配置实例
  系统访问的双口RAM存储空间为2KB,要求将这个存储器空间映射到局部地址空间0,采用内存方式映射,存储器的数据宽度为 8位,并且不采用突发传输,读写时不可预取。下面介绍这个地址空间各个寄存器的具体配置过程。
  (1)配置地址范围寄存器
  根据PCI配置寄存器与LAS0RR的对应关系以及双口RAM的地址空间800H,取7FFH的补码得到FFFFF800H。又因为按照设计要求,要映射到内存空间的任何位置并且设置为不可预取的,这样LASORR寄存器后3位应该为000H。所以LAS0RR的值应该最终确定为FFFFF800H。
  (2)配置基址寄存器
  该寄存器的基址必须是地址空间范围的整数倍,在本例中必须是2K的整数倍,可将基地址定为 00004000H,又由于基址寄存器位0为空间使能位,所以应将这一位设置1;至于位 2、位3,由于是映射到内存空间,设为00H即可。所以LAS0BA的值最终被确定为00004001H。
  (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设计文档说明。
  PCI9030_RegisterWinDrvr();         //注册WinDrvr
  hWD=W_Open();                //打开Windrv设备,每次使用前要调用
  pciSan.searchId.dwVendoId=0x10b5;      //供货号
  pciSan.searchId.dwDevice.Id=0x9030;     //设备号
  WD_pciScanCards(hWD,&pciScan);       //枚举设备
  pciSlot=pciScan.cardSlot[0];         //得到设备槽号
  pciCardInfo.pciSlot=pciSlot;
  WD_PciGetCardInfo(hWD,&pciCardInfo);     //得到设备槽上的设备信息
  Card=pciCardInfo.Card;            //PCI卡上资源结构
  cardReg.Card=Card;
  WD_CardRegister(hWD,&cardReg)        //锁定卡上资源
  Item=Card.Item[2];              //资源赋给Item
  If(Item.item==ITEM>MEM0RY)
  { regAddr=Item.I.Mem.dwUserDirectAddr;
                          //得到PCI卡上内存映射到用户态地址
  }
  至此获得了本地端映射到用户的内存地址,调用读写函数就可以对本地芯片进行操作。
参考文献
1 邓晓勇,韩 燮,毛 明.利用FPGA实现与PCI总线接口的数据通信[J].华北工学院学报,2002;23(6):436~439
2 陈利学,孙 彪,赵玉连等.微机总线与接口设计[M].成都:电子科技大学出版社,1998
3 PLX公司.PCI 9030 Data Book.Version 1.4.May,2002
4 刘 巍.一种快速开发PCI桥设备驱动程序的方法.现代雷达,2002;(2):39~40
5 黄 殉,孙政顺.利用WinDriver开发PCI设备驱动程序.电子技术应用,2001;27(3):15~16



相关文章
· 基于FPGA的数据无阻塞交换设计[11]
· 采用CPLD来替代微处理器的6种方法[20]
· 基于DSP和CPLD的软开关电源数字控制器[37]
· 基于DSP和CPLD的软开关电源数字控制器[37]
· 基于CPLD的高速数据采集系统的设计与实现[30]
热门评论排行
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·VHDL设计中电路简化问题的
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
HIPROS电梯视听系统----专业
PROLM12KM在光伏行业的应用
世界上最小巧的串口服务器联网,串口转
cheap prada sneake
中国女足!---赢球就是硬道理!
阿娇内地再度亮相 为篮球赛开球
钟欣桐杭州担任宣传大使 遭千名观众起
刘德华抵京充当志愿者 愿为运动员捡球
台湾佳营TWLA500 功
CSA Internati
 
热门下载 [更多]
 
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
[ ] 实用电源电路集锦
 
论坛新帖 [更多]
 
铁电FM24C256读取几千次...
美图欣赏...
请教2410驱动ADS7864...
电子工程师了解最新IC设计及制...
防雷产品大全...
嵌入式系统软件工程师—就业班(...
嵌入式系统驱动工程师-高级班(...
FPGA/CPLD工程师—高级...
Symbian手机应用开发工程...
Symbian手机应用开发工程...

 
赞助商 [更多]
 


ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网