新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PCI总线实现通用数字信号处理系统

PCI总线实现通用数字信号处理系统

作者:时间:2011-08-09来源:网络收藏

本文提出一种方案把部分从PC机软件中分离出来交给DSP,DSP完毕后再把数据交还PC机进行管理。这样充分利用DSP对高速处理的优势,提高统的实时性和稳定性。本文以TMS320VC5402 DSP为例,给予说明。

本文引用地址:http://www.eepw.com.cn/article/150388.htm

  1 系统的硬件设计

  1.1 接口芯片9052

  9052是一款面向低端应用的高性能、工作在目标(从)模式的PCI接口芯片,支持PCI 2.1规范。该芯片的局部可以通过编程设置为8/16/32位的(非)复用,且局部总线时钟与PCI总线时钟相互独立运行,便于高、低速设备的兼容,并可支持相对慢的局部总线在PCI总线上的突发传输速率达到132 Mb/s。同时,PCI9052提供5个本地地址空间和4个本地地址片选,基址和地址范围可由串行E2PROM编程设置。选择PCI9052作为PCI-DSP桥可以降低PCI总线开发的难度,增加系统的可靠性和稳定性。

  1.2 DSP的HPI通信协议

  TMS320VC5402 DSP具有8位的增强型HPI接口,其专门用于DSP与其他总线或CPU进行通信。主机是通过HPI控制寄存器(HPIC),地址寄存器(HPIA),数据寄存器(HPID)访问DSP的片内RAM,从而与DSP通信的。DSP只能访问HPIC。HPI寄存器的选择由HCNTL[1:0]脚在PCI总线地址有效期,说明如表1所示:

  在主机访问DSP片内RAM过程中,主机首先根据访问类型对HPIC寄存器进行初始化操作,然后再对HPIA寄存器进行操作,将要访问存储单元的地址写入HPIA,最后对HPID寄存器进行读写操作,此刻HPID寄存器的内容为HPIA指定存储器的内容,这样便主机和DSP的一次通信过程。

  1.3 DSP与PCI的接口设计

  DSP与PCI的接口是实现DSP与主机进行通信的关键。由于TMS320VC5402 DSP的HPI口是8位并口,所以PCI9052局部总线设定为8位非复用总线模式,并将其LAD[7..0]与DSP的HD[7..0]连接,实现数据总线的连接。接口电路如图1所示。在8位总线模式下,LBE[1:0]分别对应于地址的LA[1:0],将LBE0与HBIL相连,用于区分当前传输的是第1字节还是第2字节。LA[3:2]分别与HCNTL[1:0]相连,用于选择HPI寄存器。利用PCI9052芯片的读写控制信号LBE0#,LBE1#,LW/R,LRDY#和部分地址信号LA[3:2]经过CPLD进行时序和逻辑转换便可生成HPI口的控制信号HBIL,HC-NTL0,HCNTL1,HDS1#,HR/W#。HPIENA脚接“1”表示选用HPI模块。这样PCI9052就可在地址有效期决定访问哪个HPI寄存器,实现DSP与PCI的通信。

  1.4 系统的电路设计

  如图2所示系统电路主要由3部分组成:第一部分是PCI9052与PCI插槽间的信号连接电路,包括地址数据复用信号AD[31::0];总线命令信号C/BE[3::0]#;接口控制信号FRAME#,TRDY#,IRDY#,STOP#;IDSEI#,DEVSEL#,错误报告信号PERR#,SERR#;系统信号CLK,RST#。这些信号是局部总线设备保证与PCI总线正确通信的必要信号。第二部分是和串行E-2PROM的信号连接电路,E2PROM内存储的是用于PCI加载的配置信息,这些信息在PCI9052硬件复位时的正确加载是保证PCI局部总线设备正常工作的前提。第三部分是PCI9052与DSP HPI接口的信号连接电路,包括数据线、地址线、读写控制信号线、中断信号线等。此外该系统还可根据DSP的其他功能扩展相应的外设电路。

  2 系统的软件设计

  2.1 PC机与DSP通信驱动程序设计

  PC机上应用软件不能直接对底层硬件进行访问,为实现PC机与DSP的通信还应编写设备驱动程序。WDM(Windows Driver Model)是NT3.51和NT4.0内核模式设备驱动程序模型的扩展形式,是一种PnP驱动程序,能在Windows 98,Windows 2000和Windows XP间实现源代码级兼容。为了便于在多操作系统中均能应用本系统,需编写WDM驱动程序。

  在PCI设备驱动程序中主要是完成PCI设备的内存、端口的读写功能和中断处理功能。若采用DDK开发,需要软件人员对计算机底层知识熟悉、开发难度大、为简化驱动程序的开发,可以使用NuMega推出的DriverStudio设备驱动程序开发工具包。通过DriverStudio开发者很容易生成驱动程序框架,同时,DriverStudio与VC++有很好的接口。生成的驱动框架可以在Microsoft VC++6.0环境下添加驱动代完成驱动编写。驱动程序设计内容如下:

(1)设备初始化

  PCI设备的硬件资源由PCI配置机构动态分配,由PCI设备实现PCI配置寄存器,提出需要配置的硬件资源,驱动程序只有获取这些资源才能对硬件进行操作。设备初始化环节使PCI设备驱动程序实现识别PCI器件,寻址PCI器件的资源。如果m_MemoryRange0,m_IoPortRange1分别为KMemoryRange类、KIoRange类的实例,则初始化操作可通过调用其成员函数实现:

  (2)端口操作

  对于X86处理器I/O空间是一个64 B的寻址空间。当初始化完毕后,可直接调用KIoRange类成员函数对端口进行操作。如从端口读/写一个双字数据可调用成员函数ind(),Outd()实现。

  (4)中断操作

  在本系统中的PCI中断是由PCI设备发出的要求上位机接收数据的中断请求,中断服务程序要完成的功能是上位机从DSP的片内RAM中读取数据。对硬件的中断处理可通过调用KInterrupt类的相关成员函数实现。

  此函数完成了初始化中断类实例操作并实现了与中断服务例程的连接。驱动程序安装好以后,在应用程序中调用Create-File()函数打开设备,通过调用API函数De-viceloControl就可实现应用程序与DSP之间的通信。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭