基于DSP和PCI总线的通用数字信号处理系统
时间:11-13
来源:作者:蒋 彦,王 建,刘亚丽
点击:
(2)端口操作
对于X86处理器I/O空间是一个64 B的寻址空间。当初始化完毕后,可直接调用KIoRange类成员函数对端口进行操作。如从端口读/写一个双字数据可调用成员函数ind(),Outd()实现。
(3)内存操作
对于X86处理器内存地址空间可达到4 GB。对内存操作同样可以通过调用KMemoryRange类成员函数实现。如从内存读、写一个字数据可调用成员函数inw(),outw()实现。
(4)中断操作
在本系统中的PCI中断是由PCI设备发出的要求上位机接收数据的中断请求,中断服务程序要完成的功能是上位机从DSP的片内RAM中读取数据。对硬件的中断处理可通过调用KInterrupt类的相关成员函数实现。
此函数完成了初始化中断类实例操作并实现了与中断服务例程的连接。驱动程序安装好以后,在应用程序中调用Create-File()函数打开设备,通过调用API函数De-viceloControl就可实现应用程序与DSP之间的通信。
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 结语
本文所设计的方案已经成功应用于笔者开发的激光扫描系统中。实践证明,该方案所用硬件简洁,系统工作稳定,数据传输可靠。本系统由于具有高速实时数据运算能力,可广泛应用于语音处理、数字加密、图像处理、多路数据采集处理等领域,可升级能力强,具有很广阔的应用前景。
对于X86处理器I/O空间是一个64 B的寻址空间。当初始化完毕后,可直接调用KIoRange类成员函数对端口进行操作。如从端口读/写一个双字数据可调用成员函数ind(),Outd()实现。
(3)内存操作
对于X86处理器内存地址空间可达到4 GB。对内存操作同样可以通过调用KMemoryRange类成员函数实现。如从内存读、写一个字数据可调用成员函数inw(),outw()实现。
(4)中断操作
在本系统中的PCI中断是由PCI设备发出的要求上位机接收数据的中断请求,中断服务程序要完成的功能是上位机从DSP的片内RAM中读取数据。对硬件的中断处理可通过调用KInterrupt类的相关成员函数实现。
此函数完成了初始化中断类实例操作并实现了与中断服务例程的连接。驱动程序安装好以后,在应用程序中调用Create-File()函数打开设备,通过调用API函数De-viceloControl就可实现应用程序与DSP之间的通信。
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 结语
本文所设计的方案已经成功应用于笔者开发的激光扫描系统中。实践证明,该方案所用硬件简洁,系统工作稳定,数据传输可靠。本系统由于具有高速实时数据运算能力,可广泛应用于语音处理、数字加密、图像处理、多路数据采集处理等领域,可升级能力强,具有很广阔的应用前景。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)