朱 磊,李维维,韩天琪,赵晓田
(西安工程大学 电子信息学院,陕西 西安 710048)
带自举功能的DSP外设扩展模块设计
朱 磊,李维维,韩天琪,赵晓田
(西安工程大学 电子信息学院,陕西 西安 710048)
TMS320VC54x系列DSP(Digital Signal processor)没有AD、DA等常用外设且缺少程序存储器,故其应用系统通常需进行外设扩展模块与自举模块设计,针对传统解决方案将两个模块分别实现存在扩展器件多、系统集成度不高等问题,本文提出了一种带自举功能的DSP外设扩展模块。该模块通过将C8051F330单片机作为唯一的外扩芯片,利用其片内FLASH存储DSP自举程序代码,并采用其片上AD、DA实现DSP的外设扩展。实验表明本文提出的DSP外设扩展模块合理可行。
TMS320VC54x;DSP;外设扩展;自举
TMS320VC54x系列DSP由于具有快速运算能力,其指令执行速度最高可达160 MIPS,因此在消费电子、通信等领域应用广泛[1]。但此系列DSP片上没有AD、DA等工业常用外设,常需要对其进行外设扩展模块设计,另外,此系列DSP也没有FLASH、EEPROM等便于改写的片内程序存储器,掉电后不能保存用户程序代码,因此还需要对其扩展自举模块。文献[2-4]给出了不同的DSP外设扩展模块设计方案,而文献[5-6]则给出了不同的DSP自举模块设计方案,上述将外设扩展模块与自举模块分别实现的设计方案,存在外扩器件较多、集成度不高、成本较高等问题。为此,文中提出了一种带自举功能的DSP外设扩展模块,该模块仅用外扩一个芯片,就能一体实现DSP的外设扩展与自举,具有扩展器件少、系统集成度高、稳定性好、成本较低等特点。
文中提出的DSP外设扩展模块,借助C8051F330丰富的片上外设资源对DSP实现10位AD、DA扩展,同时利用
C8051F330片内FLASH存储DSP用户程序代码,并用标准串行总线实现自举,模块原理框图如图1所示。图1中虚线框部分为本文设计的DSP外设扩展模块,其中C8051F330是本模块的唯一外扩芯片。一方面,目标板中的DSP通过将其片上McBSP0配置为SPI工作模式,实现控制C8051F330片上的AD采样数据或DA形成模拟波形,从而完成对DSP的AD、DA外设扩展。上述SPI通信中,TMS320VC5416为主设备,C8051F330为从设备。另外,考虑到只有SPI主设备才能启动数据传输,为了将SPI从设备的AD采样数据第一时间传输给SPI主设备,SPI从设备通过I/O引脚触发SPI主设备的外部中断,从而使SPI主设备启动SPI通信。另一方面,利用C8051F330片内FLASH的剩余空间(从0x0BB7到0x1FF)存储DSP程序代码,同时,利用5个I/O引脚模拟DSP的标准串行自举接口,从而实现DSP的标准串行自举模块设计。DSP有多种自举模式[7],标准串行自举模式占用的DSP硬件资源最少,故本文模块选用了标准串行自举模式。但在此模式下,自举模块必须与DSP的McBSP0接口相连,为了进一步减少对DSP硬件资源的占用,本文将C8051F330的SPI接口与5个I/O引脚模拟的标准串行自举接口复用DSP的McBSP0接口。
图1 带自举功能的DSP外设扩展模块原理框图Fig. 1 Principle block diagram of DSP peripheral extension module with bootloader function
文中提出的DSP外设扩展模块硬件主要包括如下几部分:自举模块,SPI通信模块,外设扩展模块以及C8051F330最小系统模块,考虑到介绍C8051F330最小系统的文献较多,此处不再赘述, 这里主要给出其他模块的硬件连接关系,如图2所示。
图2 DSP外设扩展模块主要硬件连接关系图Fig. 2 Main hardware connection diagram of DSP peripheral extension module
图2虚线框1为自举模块(标准串行自举方式)引脚连接关系,其中与标准串行自举直接相关的DSP引脚为接收时钟信号(BCLKR0),多通道缓冲接收引脚(BDR0),帧同步接收信号(BFSR0),因为DSP与单片机启动不同步,因此需要设置RS引脚在单片机上电后对DSP进行复位,设置XF引脚在DSP准备好后触发单片机的INT0启动自举操作。另外,DSP的自举方式有多种,且标准串行自举模式比较靠后,所以必须在硬件上对DSP的INT2、INT3和BIO引脚进行上拉保护,从而确保DSP上电后,其片上Bootloader进入标准串行自举方式。图2虚线框2给出了SPI通信模块中DSP与单片机对应引脚连接关系,本文采用4线主从方式实现SPI通信,DSP的BCKLX0为时钟控制引脚,BFSX0为片选引脚,为了最大限度节省DSP硬件资源,自举模块和SPI通信模块中的BDR0引脚进行了复用。为使主从设备更好地进行通信,SPI通信过程中设置了主从握手函数,P16为握手中断控制引脚。图2虚线框3说明了外设扩展模块引脚连接关系,外设扩展模块介绍了AD、DA及参考电压硬件设置,P17引脚为AD波形输入端,实验时配置为模拟输入,开漏输出。P01引脚为DA的波形输出端,P00引脚为参考电压接入引脚,配置为模拟输入,开漏输出,AD采样必须设置电压基准,C8051F330的电压基准可以被配置为外部电压基准、内部电压基准或电源电压VDD,为了使硬件设计更加简单,本文选用内部电压基准。
DSP外设扩展模块软件设计分为两部分:代码转换程序设计和C8051F330单片机程序设计。代码转换程序是为了将用户在DSP开发软件CCS下编译生成的.out文件(一种公共目标文件格式,包含了许多冗余信息)去除冗余信息,变为全部有用的DSP自举文件格式,具体过程参见文献[8]。下面详细介绍单片机程序的具体内容。
图3 C8051F330程序主流程图Fig. 3 Main flowchart of C8051F330 program
C8051F330单片机程序包括四部分:DSP与单片机之间的通信协议、两次初始化程序、自举程序及片上外设驱动程序。C8051F330单片机程序主流程图如图3所示,图3中,单片机系统上电后,程序便开始运行,首先要禁止看门狗,防止程序跑飞,因DSP启动速度比C8051F330快,故自举前,先要初始化单片机端口并复位DSP,等待DSP的XF引脚触发P07中断后启动自举操作。自举完成后,就要利用C8051F330单片机的片上AD、DA对DSP进行外设扩展,DSP的外设扩展是建立在SPI通信基础上的,通信前,需要对单片机进行第二次初始化,避免引脚冲突。通信过程中,单片机与DSP需要通过SPI_handshaking()函数进行握手,握手成功后,单片机便可通过SPI通道读取DSP发送的AD命令或DA命令进行AD、DA扩展。
为了使DSP和单片机进行良好的通信,本文设置了SPI通信协议,具体如图4所示,下面对此协议的制定作简要介绍。协议中一帧数据包括4个字节:第一字节为起始标志字节,值为0xC5,对应的二进制数为11000011,起始标志字节在数据传输中发挥着巨大作用,它标志着传输数据是否有意义;第二字节为命令字节,DSP在数据传输过程中处于两种命令状态,如果第二字节的6-7位值为01,则DSP处于AD命令状态,6-7位为10则DSP处于DA命令状态;第三、四字节分别装载的是10位AD、DA高、低8位数据。
图4 DSP与单片机之间的通信协议Fig. 4 Communication protocols between DSP and MCU
单片机需要进行两次初始化,第一次初始化是在自举之前,包括端口初始化、时钟初始化和中断初始化,第二次初始化是在自举之后,在第一次初始化的基础上还需进行SPI初始化、AD初始化、DA初始化,两次初始化期间,时钟只能初始化一次,否则单片机初始化不会成功。时钟初始化时被配置为24.5 MHz。之所以要对单片机进行两次初始化是因为自举和SPI通信过程中,DSP的McBSP0接口进行了复用,而且这样设计可以节省更多的硬件资源,降低设计成本。下面主要介绍下AD、DA和SPI初始化过程。AD初始化如下所示:
标准串行自举逻辑时序图如图5所示,图5指出模拟标准串行自举只需3个I/O引脚,但本文却用5个I/O口,其中另设了XF和RS引脚。因为DSP启动速度与单片机不同步,因此需设置RS引脚让单片机上电后对DSP进行复位,设置XF引脚让DSP触发单片机的外部中断INT0,启动自举模块。图5中的逻辑时序图说明为保证DSP正常运行,以下条件必须满足:传输每个字节数据需至少保证40个DSP时钟周期的延时时间,单片机时钟(BCLKR0) 不可超过DSP时钟频率的1/2。发送帧同步信号之前应先发送2个时钟信号,帧同步信号置高期间发送1.5个时钟,帧同步信号置底后开始按位发送数据, 一字节数据发送完成后再发送两个时钟信号。
图5 DSP标准串行自举逻辑时序图Fig. 5 Timing conditions for DSP serial port boot operation
片上外设驱动程序包括SPI通信驱动程序、AD与DA驱动程序。SPI通信是DSP外设扩展模块的软件基础,通信前,单片机先拉低DPS_INT0触发DSP的外部中断INT0,再读取一个无意义的SPI数据和DSP进行握手,握手成功后,主从设备便可通过SPI通道互相写数据或读取对方发送dat[]中的数据。SPI通信读函数驱动程序如下所示,程序中SPI0DAT为SPI0数据寄存器,C8051F330在SPI通信中通过读SPI0DAT来读取接收缓冲器中的数据。
SPI通信读函数驱动程序:
C8051F330内部AD有6种转换启动方式,本文采用写‘1’到ADC0CN的AD0BUSY位,向AD0BUSY写‘1’方式提供了用软件控制ADC0转换的能力。AD0BUSY位在转换期间被置‘1’,转换结束后赋‘0’。单片机初始化完成,给C8051F330的P17端口输入正弦波(由于实验设备仍需完善,正弦波频率限制在0~20 Hz,幅值限制在0~3.3 V)进行AD采样,本文采用查询方式进行AD采样,使用AD中断标志(AD0INT)来不断查询AD转换是否完成。当AD0INT位为逻辑‘1’时,AD数据寄存器(ADC0H:ADC0L)中的转换结果有效。采样完后,单片机通过SPI通道将采样值传送给DSP,DSP通过SPI_READ()函数从SPI读取采样数据。C8051F330片内DA为电流模式数/模转换器(IDAC)。IDAC的最大输出电流可以有3种不同的设置:0.5 mA、1 mA和2 mA,此程序中设置为2 mA。DA转换时,DSP通过SPI_WRITE()函数将需要进行DA的数据写给单片机,最终单片机再将DSP发来的数据进行DA处理,AD采样驱动程序如下所示:
为验证本文设计模块的可行性,下面以TMS320VC5416目标板为例,设计了如下两个实验:一、16位标准串行自举实验;二、片上AD与DA扩展实验。
实验一:16位标准串行自举实验
实验一是为了验证C8051F330单片机可否成功实现TMS320VC5416处理器的16位标准串行自举。为了使实验结果便于观察,本文用CCS编写了液晶显示程序,显示内容为“基于C8051F330的DSP自举模块 液晶显示自举测试等”。由上文可知,须将编写程序代码在CCS软件下编译生成.out文件,再将.out文件去除冗余信息,变为全部有用的DSP程序代码,移植到C8051F330单片机中才能使用,结合所编写的自举程序上电运行后可得到如图6所示结果,从图6中可以观察到DSP完全可以脱离仿真器,从C8051F330单片机读取DSP用户程序,以上结果说明自举模块设计合理可行。
实验二:AD与DA扩展实验
实验二是为了验证在完全脱离DSP仿真器的情况下,利用C8051F330片上AD、DA对TMS320VC5416进行片上外设扩展的可行性。实验中由 TMS320VC5416 控制 C8051F330片上的AD、DA采样数据或形成模拟波形,为了使实验结果便于观察,用示波器对AD采样前的波行与DA重构波形进行双通道跟踪,实验时,通过DSP试验箱给单片机的P17口接入频率为20 Hz、最大幅值为1.31 V的正弦波,如图7中黄色波形所示。单片机的P01端口为DA输出端,C8051F330的DA输出为电流输出,因为要用示波器显示DA输出波形,所以需在P01端口接入电阻,将电流输出转换为电压输出,DA输出波形如图7中蓝色波形所示。观察示波器波形,可看到DA重构波形与AD采样前的波形吻合。以上结果说明,该模块设计的利用C8051F330片上外设资源对TMS320VC5416处理器进行AD与DA扩展是合理可行的。
图6 自举实验结果图Fig. 6 Experimental result of bootloader
图7 AD与DA实验结果图Fig. 7 Experimental result of AD and DA
文中提出了一种带自举功能的DSP[9]外设扩展模块,该模块利用C8051F330的片内FLASH存储DSP用户程序,并利用5个I/O引脚模拟的标准串行总线实现DSP自举,从而以一种占用DSP硬件资源最少的方式解决了DSP掉电后不能保存用户程序的问题;利用C8051F330的片上外设资源对DSP进行10位AD、DA外设扩展,同时C8051F330的SPI接口同标准串行自举接口复用DSP的McBSP0接口,从而在实现DSP外设扩展的同时,最大限度地节省了DSP的硬件资源。该模块用一块单片机一体实现DSP外设扩展及自举,具有扩展器件少、集成度高、系统稳定性好、成本低廉等优点。另外,C8051F330的FLASH内存为8K字节,除去单片机程序,可存储5K字节左右的DSP程序,因此该模块可广泛用于程序代码不超过5K字节的DSP系统中。
[1] 宋晓梅.现代电子系统设计教程[M].北京:北京大学出版社,2011.
[2] 苑玮琦,汤永华.TMS320VC5416在点钞机人民币号码识别记录系统中的应用[J].电子技术应用,2006,32(7):58-60.
YUAN Wei-qi,TANG Yong-hua.Application of TMS320VC5416 in paper currency number recognition system of record[J].Application of Electronic Technique,2006,32(7):58-60.
[3] 冯涵,何培宇,高勇.一种基于TMS320VC5416 DSK 的有源噪声控制系统设计与实现[J].四川大学学报:自然科学版,2008,45(4):842-846.
FENG Han,HE Pei-yu,GAO Yong.A design and implementation of active noise control system with TMS320VC5416 DSK[J].Journal of Sichuan University:Natural Science Edition,2008,45(4): 842-846.
[4] 周杰,陈贤详,杨集.基于CPLD和DSP的不同采样速率多路数据采集系统的设计[J].科学技术与工程,2009,9(8):2080-2084.
ZHOU Jie,CHEN Xian-xiang,YANG Ji.New method of designing a multichannel data acquisition system with different sampling rate based on CPLD and DSP[J].Science Technology and Engineering,2009,9(8):2080-2084.
[5] 徐菲,刘同怀,黄鲁.基于Flash的TMS320VC5416 DSP系统自举实现[J].计算机工程与科学,2006;28(4): 68-70.
XU Fei,LIU Tong-huai,HUANG Lu.Flash-based implementation of the TMS320VC5416 DSP booting system[J].Computer Engineering & Science,2006,28(4):68-70.
[6] 李莉.用软件编程实现TMS320VC5416的并行自举加载[J].舰船电子工程,2006,26(2):104-107.
LI Li.Implementation of TMS320VC5416 parallel bootloader with software programming[J].Ship Electronic Engineering,2006,26(2):104-107.
[7] 李志豪,蒲泽新.TMS320VC5416 DSP自举引导方法的分析与研究[J].信息技术,2003,27(10):58-61.
LI Zhi-hao,PU Ze-xin.A study of DSP TMS320VC5416 bootloader mode[J].Information Technology,2003,27(10):58-61.
[8] 朱磊.CCS环境两次编程实现DSP串行EEPROM自举的方法[J].微计算机应用,2010,31(2):72-75.
ZHU Lei.The method realizing DSP serial EEPROM bootload by twice programming in CCS environment[J].Microcomputer Applications,2010,31(2):72-75.
[9] 张攀,舒健.基于DSP和FPGA的MCI控制系统设计[J].电子科技,2014(1):90-94,99.
ZHANG Pan,SHU Jian.Design of MCI control system based on DSP and FPGA [J].Electronic Science and Technology,2014(1):90-94,99.
TMS320VC54x series Digital Signal Processors (DSP) have no common peripherals, such as analog to digital convert (AD), digital to analog convert (DA) and lack of program memories. Therefore, peripheral expansion modules and bootloader module should be considered and designed in application system of this serie DSP. The traditional solution which has completed the modules respectively has the disadvantages of more expansion devices, lower degree of system integration. To overcome the problems mentioned in traditional solution, this paper proposed peripheral expansion module for DSP with the bootloader function. C8051F330 is the only outside chip which will be used in this module. Its internal FLASH is used to store bootloader program code of DSP and its on-chip AD and DA are used to realize DSP peripheral extension. Experiments show that the proposed DSP peripheral extension module is reasonable.
TMS320VC54x; DSP; Peripheral expansion; bootloader
TN91
A
1674-6236(2014)11-0177-04
2014–02–21 稿件编号:201402126
陕西省教育厅自然科学项目(12JK0547);西安工程大学博士科研启动基金项目(BS1205);西安市科技局技术转移促进工程项目(CXY1349(2))
朱 磊(1979—),男,四川绵阳人,硕士,副教授。研究方向:通信与信息系统。
DSP peripheral extension module with bootloader function
ZHU Lei, LI Wei-wei, HAN Tian-qi, ZHAO Xiao-tian
(Electronic and Information College, Xi’an Polytechnic University, Xi’an 710048, China)