PCI总线实现通用数字信号处理系统
扫描二维码
随时随地手机看文章
本文提出一种方案把数字信号处理部分从PC机软件中分离出来交给DSP处理,DSP处理完毕后再把数据交还PC机进行管理。这样充分利用DSP对数字信号高速处理的优势,提高信号处理系统的实时性和稳定性。本文以TMS320VC5402 DSP为例,给予说明。
1 系统的硬件设计
1.1 PCI接口芯片PCI9052
PCI9052是一款面向低端应用的高性能、工作在目标(从)模式的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之间的通信。[!--empirenews.page--]2.2 下位机软件
下位机软件为运行在DSP内的客户端程序。该软件主要功能是接收上位机发送的数据并按照用户的要求进行处理,并把计算结果返回给上位机或根据计算结果驱动其他外设工作。该软件的核心部分为对数据进行处理的算法,应按照数据处理的具体要求选用相应的算法实现。软件的设计思想是:在系统复位后,首先对DSP进行初始化设置,如设置工作频率为100 MHz,设置状态寄存器ST0,ST1,设置软件等待状态寄存器等,以使DSP工作在最优状态。上位机在向下位机发送完毕数据后对DSP发出中断请求,DSP立刻响应中断,转去执行中断服务程序,进行数据处理。当数据处理完毕后,DSP再将数据的处理结果送还给上位机,结束本次中断服务,程序返回到断点处,直至下一次中断的到来。软件流程图如图3所示。
3 DSP系统的自举加载(BootLoader)
DSP系统的自举加载目的是使系统上电后程序代码能从外部存储介质引导装载到DSP内部或外部程序存储器中脱机运行。自举加载的实现方式常用的有外部并行自举加载和HPI自举加载两种。
由于主机可以通过HPI口访问DSP的片内RAM资源,所以下位机程序可以在系统上电复位的时候通过上位机加载到DSP中。采用自举加载模式,在硬件上需要将DSP的INT2脚与HPI的中断输出HINT脚相连,以保证在系统复位后选择HPI加载模式,通信原理和前面讲述的方法一致。在加载过程中,上位机首先将程序搬移到DSP的片内RAM,然后再将程序的人口地址写到DSP的数据空间007FH内,DSP一旦监测到007FH处的数据不再为0即判断为代码转移完毕,并跳转到007FH里存放的地址去执行,从而完成启动。采用HPI加载方式不仅免去了外接E2PROM或FLASH等掉电非易失性存储器件,而且可以根据数据处理要求不同载入不同的下位机程序,从而简化了硬件结构,增加使用的灵活性,是本系统理想的自举加载模式。
4 结语
实践证明,该方案所用硬件简洁,系统工作稳定,数据传输可靠。本系统由于具有高速实时数据运算能力,可广泛应用于语音处理、数字加密、图像处理、多路数据采集处理等领域,可升级能力强,具有很广阔的应用前景。