探究CPCI总线的PMC载板设计

网友投稿 479 2022-11-11

探究CPCI总线的PMC载板设计

在工业和嵌入式领域实际工程应用中,模块化的设计思想已深入人心。针对不同使用场合的具体应用以及为方便后续的维护和升级,将其中具有通用性和可持续利用的部分单独设计成载板,载板配合不同的应用模块就可以组合成具有不同功能的专业I/O模块。

PCI夹层卡PMC(PCI Mezzanine Cards)是IEEE P1386.1的标准,作为一个IEEE标准,PMC确保了任何符合该标准的主板或者模块能够与其他按照该标准设计的主板或者模块兼容[2]。这样就为用户提供了很大的柔性,用户可以任意组合和搭配不同的主卡和模块。PMC是个开放标准,它为Multibus II、VME和Compact PCI带来了前所未有的大量I/O产品和高性能。

本文结合实际的工程项目,设计实现一个基于CPCI总线并符合PICMG 2.0规范的6U(233.35 mm×160 mm)通用型PMC载板FTC-C920并开发其在VxWorks 5.5下的驱动软件。

1 载板总体结构设计

2 PMC接口和CPCI总线接口模块设计

PMC接口的特性为:前两个(“P11”和“P12”)用于32位PCI信号,第3个(“P13”)是64位PCI信号需要。一个额外的总线连接器(“P14”),可用于非指定的I/O信号[2]。本设计中,PMC接口模块采用4个(J11~J14)PMC(PCI Mezzanine Cards)8 mm高标准连接器,支持用户子卡PMC后出线到CPCI总线接口J4和J5。图1给出了板卡的CPCI连接器情况,J1用作32位PCI,J4和J5用作后面板I/O,可自定义[1]。

3 FPGA设计

从图2中可以清楚地看到,FPGA主要被设计集成了PCI接口模块(PCI Slave IP CORE)和DPRAM模块。

3.1 PCI接口模块设计

3.1.1 几种PCI接口设计方案及选择

几种方案各有利弊,本文结合项目的实际应用需求选择了第4种方案,这个方案满足了系统集成的需求,并可自由添加接口逻辑,降低了成本,减小了设计风险。

3.1.2 具体设计

需要注意的是,0x0000~0x3FFF为DPRAM 16 KB空间,对应DPRAM空间大小为8K×16 bit,而0x4000~0x7FFF为DPRAM环回测试空间,不是FPGA另外开辟的RAM空间,只是软件通过这个空间地址在环回测试下读写DPRAM空间(8K×16 bit)。示意图如图3所示。

PCI控制寄存器的分配如表1所示。

3.2 DPRAM模块设计

双口RAM模块是FPGA调用内部的IP核实现的,其为数据处理提供缓存功能,总线宽度为16 bit,容量为8 K×16 bit。在没有用户PMC子卡的情况下,为了验证对数据处理的可用性及准确性,通过FPGA逻辑设计支持双口RAM R端口环回自检,如图3(b)中虚线所示,即模拟用户子卡对双口RAM进行读写数据的操作。

CPCI和用户PMC子卡通信采用双口RAM方式,双口RAM用户PMC子卡侧总线定义如表2所示。

4 VxWorks下设备驱动程序设计

开发此PMC载板Vxworks 5.5下的驱动,硬件选用了Motorola公司的实时主控单板机MCP-750、工控机箱CPX2000 series和此PMC载板FTC-C920,操作系统则选择了美国风河公司的VxWorks嵌入式实时操作系统,使用普通的PC,在Tornado IDE(集成开发环境)下进行驱动的开发。以良好的可靠性和卓越的实时性着称的VxWorks可以满足系统对于高实时性和高可靠性的要求[5]。驱动开发软硬件环境简图如图4所示。

4.1 载板自检测试模块

载板自检测试主要是载板检测自身器件是否正常工作,功能是否可以实现。

4.1.1 查找C920载板

对于Vxworks下PCI设备调试来说,其有专门的函数可供调用,查找FTC-C920载板可以通过调用函数pciFindDevice()来实现,它包含在pciConfigShow库函数中,此库函数专门用来帮助显示一些PCI设备的信息。此函数可以根据PCI设备给定的供应商标识(VENDOR ID)和设备标识(DEVICE ID)找到相应的设备,并以此返回设备的总线号(busNO)、设备号(deviceNO)和功能号(funcNO)。

4.1.2 读取FTC-C920上的配置资源信息

根据获得的设备的总线号(busNO)、设备号(deviceNO)和功能号(funcNO),通过调用操作系统库函数pciConfigLib中的函数pciConfigInLong和pciConfigInByte访问C920的配置空间,获得设备映射的内存基地址(memBase)和I/O基地址(ioBase)以及中断号irq,分辨对基地址空间是I/O操作还是内存操作,获得的基地址要分别与存储器屏蔽位PCI_MEMBASE_MASK和I/O屏蔽位PCI_IOBASE_MASK相“与”,才能得到真正板卡的内存基地址和I/O基地址。

4.2 FTC-C920和系统控制器互通测试模块

互通测试主要是:

(1)系统控制器(MCP-750)读取用户PMC子卡数据:用户PMC子卡向双口RAM中写入数据,系统控制器(MCP0750)从双口RAM中读取数据,并验证数据是否正确。

(2)用户PMC子卡读取系统控制器(MCP-750)数据:系统控制器(MCP-750)向双口RAM中写入数据;用户PMC子卡从双口RAM中读取数据,并验证数据是否正确。

由于FTC-C920是通用型PMC载板,为了在没有用户PMC子卡的情况下验证互通测试,在FPGA的设计上进行了支持DPRAM R端口环回自检的设计,如图2中虚线所示。

正常情况下(配合用户PMC子卡使用时),环回测试空间不可使用,此时FPGA内部环回自检控制寄存器的相应位为默认值0。如进行环回自检(没有用户PMC子卡时),需往环回自检控制寄存器的相应位写1,此时,系统控制器可对环回测试空间进行读写。

4.3 CPCI中断测试模块

CPCI中断测试主要是用户PMC子卡通过写寄存器的方式产生CPCI中断;系统控制器响应中断,读取数据并验证数据是否正确。

在没有用户PMC子卡的情况下,可以通过产生内部中断的方式进行测试,具体的方法是在FPGA中设置中断使能寄存器,中断测试寄存器,中断状态寄存器和清中断寄存器。程序流程图如图5所示。

本文详细描述了某项目中PMC载板FTC-C920的设计方法及其在VxWorks操作系统下驱动程序的开发流程。在没有用户PMC子卡的情况下,通过环回测试空间的设计,解决了互通测试的要求,通过中断测试寄存器的设计,解决了中断测试的要求。调试结果表明,此PMC载板在VxWorks 5.5下可以稳定地运行。本文的设计方法具有一定的通用性,可为相关工程技术人员提供可以参考的设计经验。

参考文献

[1] PICMG.PICMG2.0 Rev.3.0. PICMG2.0 D3.0 Compact PCI Specification[S]。

[3] 郑毅。基于PMC(PCI背卡)接口的实时数据采集卡[D]。成都:电子科技大学,2003.

[4] 李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.

[5] 唐晓平,何峰,梁甸农。基于VxWorks的PCI总线驱动设计[J]。嵌入式操作系统应用,2008,11(2):79-81.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:vcsa修改数据库用户密码
下一篇:LCD转VGA模块技术参数分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~