版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章DSP系统的硬件设计电源设计、JTAG仿真接口设计、混合逻辑电路设计、系统存储器扩展设计及其他外围接口电路的设计。5.1DSP系统基本硬件电路的设计5.1.1电源电路由TMS320C54x系列DSP构成的系统一般包括3种电源:5V、3.3V和1.8V(或2.5V)。例如,由C5402DSP构成的C5402DSK板就包括三种电源:5V、3.3V和1.8V。其中5V电源为DSK板的输入电压,3.3V和1.8V电源分别为DSP的I/O电源和内核电源。DSP采用多电源而且内核和I/O分别供电的方式,目的是为了降低芯片的功耗,提高电源的利用率。I/O电压采用3.3V供电,使得DSP可以直接与外部3.3V的逻辑器件相接口,不需要增加附加的逻辑电平变换电路,从而简化硬件电路的设计。通常使用稳压器从5V电源生成3.3V和1.8V电源。如,TPS73HD318低压差稳压器就是5402DSP系统中常用的电源芯片,它的输入电压是5V,输出电压一路是3.3V,一路是1.8V。每路电源的最大输出电流是1A。芯片还提供了两个宽度为200ms的低电平复位脉冲,允许内核和I/O分别复位。电路如P112图5-1电源的种类1、AC/DC和DC/DC电源2、线性稳压器和开关稳压器3、降压稳压器、升压稳压器、升压-降压稳压器、反向稳压器和隔离式稳压器。
电源电路的好坏决定着应用系统是否抗干扰,是系统的保障。5.1.2时钟电路晶振电路:内部振荡器和外部振荡器。
在DSP系统中,需要时钟信号的器件一般有DSP、EMIF(外部存储器接口电路,仅C55x和C6000系列DSP有)、UART和USB串行通信器件、音频编译码器件、视频解码和编码器件等。
当DSP系统中需要多个时钟信号时,推荐使用可编程的时钟电路芯片。
可编程时钟芯片有1个或多个PLL锁相环,能够提供多个可配置的时钟输出CLKA、CLKB和CLKC。配置系数存储在EEPROM中,输出时钟可从PLL或从选择的分频器产生。时钟信号电平一般为5V或3.3V。例如CY2071A和CY22381在实际应用中选择原则:◆系统中要求多个不同频率的时钟信号时,首选可编程时钟芯片;◆单一时钟信号时,选择晶体时钟电路;◆多个同频时钟信号时,选择晶振;◆尽量使用DSP片内的PLL,降低片外时钟频率,提高系统的稳定性;◆C5510、C5409A、C5416、C5420、C5421和C5441等DSP片内无振荡电路,不能用品体时钟电路;◆VC5401、VC5402、VC5409和F281x等DSP时钟信号的电平为1.8V,建议采用晶体时钟电路。5.1.3复位电路有3种复位方式:上电复位、手动复位和软件复位。软件复位可通过软件指令来实现,上电复位和手动复位可使用复位电路实现。在实际的DSP应用系统中,系统的可靠性是一个非常重要的问题。由于DSP系统的时钟频率很高,使得系统很容易对外产生干扰或被干扰,导致程序运行跑飞。除了在系统软件上采取一定的保护措施之外,在硬件上常用的方法是使用具有看门狗(Watchdog)监视功能的微处理器监控电路。看门狗在微机系统中,由于CPU的工作常常会受到来自的各种干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由CPU控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对微机系统运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)其工作原理是:看门狗芯片和CPU的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在整个程序的其他控制语句中间的,一旦CPU由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到CPU送来的信号,就给CPU一个复位信号,让程序从程序存储器的起始位置开始执行,这样便实现了微机系统的自动复位。分硬件看门狗和软件看门狗两种。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使CPU复位。常用的WDT芯片如MAX813,5045,IMP813等,价格4~10元不等.
软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,用定时器来对主程序的运行进行监控。5.1.4JTAG仿真接口
JTAG接口是用仿真器调试DSP系统时所连接的调试接口,仿真器通过JTAG接口实现与DSP之间的数据交换。
需要注意的是,设计JTAG接口时EMUO和EMU1引脚需要连接4.7kΩ上拉电阻,如图5-7所示。
各个引脚的功能见p4325.1.53.3V和5V混合逻辑电路设计
3.3V与5V的逻辑电平转换芯片。可以选择74LVTH16245。
74LVTH16245是从74LS245发展而来。单电源3.3V,16位双向总线缓冲器。还有74LVC4245。5.2DSP系统的存储器接口设计
存储器扩展时应主要考虑以下几个方面的问题:存储器的电源、存储器的I/O接口电平、数据总线的接口、地址总线的接口及控制总线的接口。5.2.1程序存储器的扩展程序存储器一般都采用Flash存储器,俗称闪存。它的体积小,功耗低,电可擦写,数据保存时间长。实际中常用的Flash存储器型号有:SST39VF系列flash、AT29LV1024、28F400B3等。下面以SST39VF系列flash为例说明flash存储器的使用方法。
SST39VF系列flash包括SST39VF200A/SST39VF400A/SST39VF800A,是CMOS多用途Flash存储器,它们的容量分别为128Kx16位/256Kx16位/512Kx16位,电源电压为3.3V单电源。可以读操作、字编程操作、扇区/块擦除操作、片擦除操作等,写操作(编程或擦写)时使用2.7~3.6V单电源,典型写编程时间为14μs,可反复擦写100000次,数据可保持100年,数据访问时间为70~90ns。很适合作为DSP的程序存储器使用。5.2.2静态数据存储器的扩展
54xx系列DSP都有片上RAM存储器,例如C5402有16K字的片上RAM。使用内部RAM可以全速运行程序,不需要插入任何等待周期,此时DSP的运行速度最快。所以在一般的应用设计中,应尽可能地选用内部RAM足够大的DSP芯片,尽量避免扩充外部RAM存储器。如果在某些应用中需要用到大容量的RAM存储器而内部RAM不能满足要求时,只能通过扩展外部RAM的方式满足设计要求。常见的外部RAM分为静态存储器SRAM和动态存储器DRAM。常规的静态RAM存储器,例如62256、62512等,由于其工作电源一般为5V,接口为CMOS电平,数据总线的接口为8位,访问速度也不能适应DSP的运行速度,所以不推荐使用。54xx系列DSP扩展外部RAM存储器时同样要考虑几个方面的问题:存储器的电源、存储器的I/O接口电平、DSP与存储器之间的数据总线的接口、地址总线的接口及控制总线的接口。
CY7C1021BV33是一种高速的RAM存储器芯片。它的容量为64Kx16位,有16条地址总线和16条数据总线。控制线有片选信号-CE、读使能信号-OE、写使能信号-WR、高字节选择信号-BHE、低字节选择信号-BLE。其电源电压为3.3V,能够直接与C54xxDSP相接口。2011年6月21日星期二5.2.3DSP与慢速器件的接口设计为了适应较慢的外部存储器和输入/输出设备,DSP配备了软件可编程的等待状态发生器,可以将外部总线周期扩展至数个机器周期。这种扩展通常也是有限的,如C54xx系列的C5402DSP最多只能扩展到14个机器周期。这就对外部接口设备的定时时序提出了一定的要求。所以外部扩展存储器的存取时间(速度)是一个很重要的指标。
C54xx所有内部存储器的读/写操作都是单周期指令。如果对于外部存储器的读/写操作也在单周期内完成,要求外部存储器的存取时间小于60%的机器周期。如当C5402的工作频率为100MHz时,它的机器周期为10ns,此时要求外部存储器的存取时间小于6ns。如果C54xx与慢速的器件相接口,就需要通过软件或硬件的方法插入等待周期。对于C5402,插入的等待状态与外部器件的存取时间的对应关系如表5-8所示(p123)。有关软硬件等待状态的问题可以概括如下:①如果所有的外部器件均不需要插入等待状态,或只需要插入1个软件等待状态,READY引脚固定接高电平。②当需要插入2~14个等待状态时,将-MSC引脚与READY引脚相连。③当需要插入14个以上的等待状态,即在14个软件等待状态的基础上再插入等待状态时,硬件等待状态电路是由-MSC和READY信号及外部电路来构成的。5.3DSP系统模数接口电路的设计在以DSP为核心的数字信号处理系统中,模数(A/D)、数模(D/A)转换是系统重要的组成部分。因为往往需要进行信号分析、处理的对象是模拟量,例如语音信号、各种传感器输出的模拟信号。这些信号经过放大、滤波及A/D转换后,从模拟信号转换为数字信号,由DSP芯片对这些数字信号按照某种算法进行处理,例如FIR滤波器算法。处理后的数字信号再送往D/A转换器进行数模转换,变为模拟信号,再经过平滑滤波之后便可得到处理后的模拟输出信号。实际应用中有多种A/D或D/A转换器可供选择。基于不同的应用,可以选用不同性能指标的芯片。对于一般的A/D和D/A转换器,一般有下列的指标需要考虑。◆分辨率。因为DSP是16位的处理器,所以转换器的分辨率要大于8位,例如12位或16位。选用高分辨率的转换器有利于提高信号处理的精度。◆转换速率。DSP的运算速度很快,能够对信号进行实时处理。转换器的转换速率要能够满足信号实时处理的要求,要满足奈奎斯特取样定理。◆接口。转换器有并行接口和串行接口之分。
TI公司提供了一系列与其DSP处理器相配套的A/D、D/A转换器及CODEC集成电路,CODEC上面包含A/D、D/A电路,完成音频信号的编译码功能。常用的音频CODEC接口电路有TLC320AD50C、TLV320AIC23、PCM3002、TLV320AIC10等。下面以TLC320AD50C为例说明C5402DSP与CODEC接口电路的设计。5.3.1TLC320AD50C概述它是TI公司生产的SIGMA—DELTA型的16位A/D、D/A转换电路,它的采样速率最高可达22.05kb/s,内含抗混叠滤波器和重构滤波器,属于模拟接口芯片(AIC),它有一个能与多种DSP芯片相连的同步串行通信接口,其采样速率可通过DSP编程来设置。在DAC之前有一个插值滤波器以保证输出信号平滑,在ADC之后有一个抽取滤波器以提高输入信号的信噪比。AD50C片内还包括一个定时器(调整采样率和帧同步延时)和控制器(可编程的增益放大器,锁相环PLL,通信协议等)。AD50有28脚的塑料SOP封装(带DW后缀)和48脚的塑料扁平QFP封装(带PT后缀),体积较小,适用于便携设备。AD50C的工作温度范围是0℃~70℃,单一5V电源供电或5V模拟电源和3.3V数字电源供电,最大功耗为120mW。5.3.2AD50的内部结构及引脚
5.3.3AD50模拟输入与输出电路设计
5.3.4AD50与DSP的接口电路设计为了增强AD50的噪声抑制能力,一定要增加电源去耦电容,图5-24给出了电源去耦电路的示意图。
去耦电容采用独石电容104。
布线时要对地线做特别处理,这里的地线指的是数字地和模拟地,要做单点连接。5.3.5AD50内部的寄存器
AD50内部有7个数据和控制寄存器,用于编程控制AD50的工作状态。寄存器0: 空操作寄存器。寄存器1: 软件复位; 软件掉电; 为DAC选择16位或15位工作方式; 硬件或软件二次串行通信请求方式的选择。寄存器2: 使能ALTDATA输入端; 为ADC选择16/15位工作方式。寄存器3: 选择-FS与-FSD之间延迟SCLK的个数; 告诉主机连接了几个从机。寄存器4: 为输入和输出放大器选择放大器增益; 选择N来设置采样频率,fs=MCLK/(128xN)或MCLK/(512xN);
在MCLK输入端使能外部时钟输入并旁路内部的PLL。寄存器5,6:保留。5.3.6AD50的帧同步定时帧同步信号-FS指示器件已经准备好发送和接收数据。由DOUT发送的数据和由DIN接收的数据在帧同步信号-FS的下降沿开始。1.主机模式下的帧同步信号-FS2.从机模式下的帧同步信号-FS3.主机模式下的帧同步延迟信号-FSD4.从机模式下的帧同步延迟信号-FSD5.3.7AD50与DSP的串行通信
DOUT、DIN、SCLK、FS和FC都是串行通信信号。ADC的数字输出结果从DOUT输出,DAC的数字输入数据从DIN输入。串行通信的同步时钟和帧同步信号来自SCLK。包含ADC和DAC数据传输间隔的帧同步脉冲来自FS。一次通信用来传输ADC和DAC的信号数据。二次串行通信用来读出或写入AD50的控制和配置字。一次通信和二次串行通信的用途是允许转换数据和控制数据通过同一个串口进行传输。一次通信往往用于转换数据,二次串行通信用于设置或读出寄存器的值;一次通信在每一个转换周期都会发生,二次串行通信只有当申请时才会发生。二次串行通信可以通过硬件或软件来请求。1.一次串行通信一次串行通信用来发送和接收ADC和DAC的信号数据。DAC的字长取决于控制寄存器1的D0比特的状态。上电或复位之后器件的默认状态是15比特模式。当DAC的字长是15比特时,第一次16比特串行通信字的最后一个比特是用于请求二次串行通信。在16比特模式,所有一次通信的16比特都作为DAC的数据并且必须使用硬件引脚FC请求二次串行通信。图5-31给出了在一次通信中SCLK、-FS、DOUT和DIN的定时关系。定时操作的时序为:◆-FS变为低电平。◆16比特的字从ADC(DOUT)输出,从DAC(DIN)输入。◆FS变为高,表示本次传输结束。2.二次串行通信二次串行通信用来读/写对器件的选项和电路配置进行编程的16比特字。对寄存器的编程总是发生在二次串行通信期间。对四个寄存器进行编程需要四次一次通信和二次串行通信的周期。如果某个寄存器要求为默认值,则在二次串行通信时寄存器的寻址可以省略。NOOP命令寻址空操作寄存器0,且在此次二次串行通信期间没有寄存器被编程。如果要求对所有设备(主设备和从设备)都进行二次串行通信,则必须从主设备开始对所有的设备都请求二次串行通信。这将导致所有设备的二次帧同步。NOOP命令可以用于不需要二次串行通信操作的设备。在二次串行通信期间,寄存器可以写也可以读。当写寄存器时,DIN引脚包含要写的值。当读寄存器时,数据从DOUT引脚移出。有两种方法初始化二次串行通信,FC引脚插入高电平,或者当处于15比特模式时,将16比特串行通信字的LSB位置l。
3.硬件二次串行通信请求当FC有效时请求二次串行通信。FC引脚在一次通信的FS的上升沿锁存。所以FC应在一次帧同步信号FS的上升沿之前拉高。4.软件二次串行通信请求当设备处于15比特模式时一次传输中的DAC数据的最低位LSB能够请求二次串行通信。对于所有的串行通信,首先传送的是最高有效位。对一个16比特的ADC字和一个16比特的DAC字,D15是最高有效位,DO是最低有效位。对于一次通信中的15比特DAC数据字,D15是最高有效位,Dl是最低有效位。DO比特用于二次串行通信请求控制。所有位的数据都是2的补码格式。如果数据格式设置为16比特字的模式,所有的16比特是ADC或DAC的数据,并且二次串行通信只能通过硬件FC请求。5.DIN和DOUT引脚的数据格式
AD50C有两种串行通信格式:一次串行通信和二次串行通信。一次串行通信格式的16位都用来传输数据。ADC的数据长度由寄存器2的D4位决定。启动和复位后默认值为15+1位模式,最后一位用于请求二次串行通信(DO:0表示无操作,1表示请求二次串行通信)。当然,二次串行通信也可以由硬件的FC引脚产生。图5-36为一次通信的数据格式。二次串行通信用来初始化和设置AD50C的内部寄存器的值。二次串行通信时DSP可通过向DIN写入寄存器的值,也可以从DOUT读出寄存器的值。5.3.8AD50的编程
AD50在使用之前首先要进行复位,有两种方式可以复位AD50的内部计数器和寄存器。在RESET引脚上加一个负的复位脉冲,或往可编程的软件复位比特(控制寄存器1的D7位)写1。无论哪种方式都可以复位控制寄存器和清除所有的电路。复位信号应该至少持续6个主时钟(MCLK)的周期。复位之后,所有寄存器的默认值都是0。硬件或软件复位之后,AD50需要一定的时间来稳定内部的锁相环PLL。在这期间不要往AD50中写控制字或D/A数据。应该按下列顺序进行复位:◆进行复位(复位脉冲的宽度至少持续6个MCLK的周期);◆退出复位状态;◆等待主设备产生的SCLK时钟,这大概需要100μs的时间;◆等待18个帧同步脉冲出现;◆往AD50中写控制和配置数据;◆采集A/D转换的数据。当多个AD50与单个DSP串行接口以主/从结构相连时,在设备初始化期间,控制寄存器应以下列顺序编程:控制寄存器1,控制寄存器2,控制寄存器4,控制寄存器3。通过写控制寄存器1、控制寄存器2、控制寄存器4的一次总的初始化将所有的AD50进行相同的配置。一旦控制寄存器3被编程(设置-FS和-FSD之间的SCLK的数目),每一个设备将在指定的时隙进行通信。所有的寄存器编程发生在二次串行通信期间,数据从DIN引脚输入,在帧同步信号有效期间在SCLK的下降沿数据有效并被锁存。如果某个特定的寄存器要求编程为默认值,则在二次串行通信时不需要被寻址和编程。空操作命令(DS12~DS8全部清零)寻址空操作寄存器,并且在通信期间没有寄存器被编程。另外,在二次串行通信时通过设置读比特(DS13)为1,可以从DOUT引脚读回每个寄存器的值。当寄存器处于读方式时,不能往寄存器中写数据。写寄存器时D13必须清零。例如,如果要从DOUT引脚读出控制寄存器1的内容,则必须通过DIN引脚完成下列过程。◆在一次通信时间间隔内,通过设置DO=1(软件请求)或者FC=高电平(硬件请求)请求二次串行通信。◆在二次串行通信的时间内,通过DIN引脚以下面的格式发送数据。◆然后从DOUT引脚将读到下面的数据,DOUT的最后8个比特就是寄存器1的数据。如果需要对控制寄存器1进行编程,则必须通过DIN引脚完成下面的过程:◆在一次通信时间间隔内,通过设置DO=1(软件请求)或者FC=高电平(硬件请求)请求二次串行通信。◆在二次串行通信的时间内,通过DIN引脚以下面的格式发送数据。◆然后DOUT引脚将产生下面的数据。5.4DSP系统异步通信
接口电路的设计串行接口是DSP与外部通信常用的通信接口。串行通信主要包括同步方式的串口通信和异步方式的串口通信。在54xxDSP上都包括1个或2个MCBSP多通道缓冲同步串行口,使用它可以与其他DSP或CODEC器件进行通信。但在DSP与微机进行通信时常使用异步通信串行口,它的接口简单,传输距离长,应用广泛。在54xxDSP的片上外设中并不包括异步通信接口电路,需要用户进行外部扩展。常用的串口扩展芯片有TI的TL16C550C(单串口)、TL16C552(双串口)、TL16C554(四串口),其他公司类似的芯片如ST16C550、ST16C552、ST16C554等。
TL16C554是TI公司生产的4通道异步收发器集成芯片,它的每个通道能从外围设备或MODEM接收数据,实现串一并转换;同时它也可从CPU端接收数据,实现并一串转换。在FIFO模式下,传输和接收前将数据缓冲为16字节数据包,减少了CPU的中断数量。内部包含4片改进的16C550异步传输器件,使得串行I/O更加可靠,每个信道可实现串行和并行两种连接方式的转换,每个信道的状态可以通过CPU读取,可以获取操作情况或任何错误状态。
TL16C554的主要特点如下:①由4个带有逻辑控制的TL16C550异步通信单元组成;②最高可达1Mbps的波特率,具有可编程的波特率发生器,便于灵活选择数据收发速率;③具有16字节的收发FIFO缓冲器;④具有可独立控制的发送、接收、线路状态和MODEM状态中断;⑤具有全双工的接收发送线路,可独立进行接收和发送控制;⑥完整的线路状态报告功能;⑦多优先级的中断系统控制;⑧三态TTL电平输出;⑨允许5V或3.3V工作电源。
TL16C554有68引脚PLCC和80引脚TQFP两种封装形式,各个引脚的功能为:A0~A2为片内寄存器的选择信号端;D0~D7为双向8位数据线;-IOR为读选通端(低电平有效);-IOW为写选通端(低电平有效);INTA~INTD为中断A、B、C、D(高电平有效);-CSA~-CSD为片选A、B、C、D(低电平有效);XTAL1、XTAL2为外部时钟端,可接晶体或外部时钟信号;RXA~RXD为串行输入A、B、C、D端;TXA~TXD为串行输出A、B、C、D端;-RXRDY为接收准备好信号端(低电平有效);-TXRDY为发送准备好信号端(低电平有效)。
DSP的数据线D7~DO分别与16C554的D7~DO相连,地址线A2~A0分别与16C554的A2~A0相连,地址线A15~A14连同控制线R/-W、-MSTRB、-IS连接到逻辑电路进行逻辑译码,生成16C554的读信号-IOR、写信号-IOW、4个通道A~D的片选端-CSA~-CSD。16C554的中断输出连接到DSP的外部中断输入端INTO。逻辑译码电路输入/输出的逻辑关系如下所示:
-INTO=NOT(INTA+INTB+INTC+INTD)-IOR=NOT(R/-W)+-MSTRB-IOW=R/-W+-MSTRB-CSA=-IS+A15+A14%A口的片选地址为I/O空间的OOOOH%-CSB=-IS+A15+NOT(A14)%B口的片选地址为I/O空间的4000H%-CSC=-IS+NOT(A15)+A14%C口的片选地址为I/O空间的8000H%-CSD=-IS+NOT(A15)+NOT(A14)%D口的片选地址为I/O空间的AOOOH%
TL16C554的工作电源为3.3V,所以需要选择工作电源为3.3V的RS-232接口电平转换芯片。例如,可使用Maxim公司的MAX3224/MAX3227/MAX3244/MAX3245系列RS-232收发器。
MAX3224/MAX3227/MAX3244/MAX3245是3.3V供电的EIA/TIA-232和V28/V24接口集成电路,能够自动掉电/唤醒,具备很高的数据传输能力。当RS-232电缆未连接或所连接设备的发送器无效并且UART驱动的发送器输入电平超过30s无效时,这些器件自动进入低功耗掉电模式。当在任意发送器或接收器的输入端检测到有效的电平变化时,便会又一次打开电源。MAX3224、MAX3225的引脚图和典型应用电路分别如图5-42(a)、(b)所示,
MAX3224和MAX3225都包括2个发送器和2个接收器,它们之间唯一的区别是数据传输速率不同,MAX3224是250Kbps,MAX3225是lMbps。具体应用时可根据实际情况进行选择。(a)管脚图(b)典型应用电路扩展异步串行口的另外一种方法是使用DSP的输入/输出引脚进行模拟。TI的C54xxDSP芯片上均提供XF和BIO两条I/O引脚,可以使用这两根接口线来模拟一个低通信速率的异步串行口。用XF作为发送数据线,而用BIO作为接收数据线,同时需要内部的定时器和一个中断引脚。异步通信的数据格式完全用软件来实现。图5-43是此种异步通信接口的示意图。5.5HPI接口电路的设计
HPI接口即主机接口(HostPortInterface,HPI),是54xx系列DSP重要的片上外设,主要用于DSP与其他CPU进行互连通信,根据其数据线的宽度分为HPI-8和HPI-16两种接口类型。在C5402DSP上集成了增强型的HPI-8,它可以访问片内所有的RAM,主机通过对HPI控制寄存器的访问可实现对片内存储器的访问、HPI状态的查询及主从设备的通信,由于HPI-8的数据线宽度只有8位,所以一个字的读/写需要两次操作来完成。5.5.1HPI与主机的接口
HPI主要用于与其他的主处理器进行数据交换。主机可以是DSP芯片、PC或其他的嵌入式处理器。HPI接口的数据总线(HD0~HD7)负责与主机交换信息,HCNTL0和HCNTL1两根控制线表示主机要访问哪个HPI-8寄存器,它们和HBIL一起通常与主机设备的地址线相连。图5-44是一种典型的连接方式。图5-44典型的主机与HPI连接方式
HPI的寄存器包括HPI控制寄存器HPIC、HPI地址寄存器HPIA和HPI数据寄存器HPID,主机通过HCNTL0/HCNTL1决定要访问的寄存器,如表5-16所示。表5-16HPI的寄存器访问5.5.2HPI-8与PC的接口
C54xx的HPI接口可以很方便地实现与PC并行口的连接,它们之间的连接电路如图5-45所示。图5-45HPI与PC并行接口的连接
HPI通过它的数据总线HD0~HD7连接到PC的并口,此时PC的并口工作在双向模式下。控制和状态引脚都工作在I/O状态。这些输入/输出引脚提供了与HPI通信的握手和控制状态。并行接口引脚与HPI之间的连接如表5-17所示。表5-17PC并行接口与HPI的信号线主机通过一个读/写控制引脚HRW、一个数据选通信号HDS1来访问数据,HDS2与VDD相连。在选通信号HDS1的上升沿输入数据。主机(PC)并行口的数据线和地址线是分开的。HAS连接到VDD。在HDS1的下降沿选通控制信号HBIL、HCNTL0、HCNTL1和HRW到HPI。为了保证HPI一直工作,将HCS接地。由于并行口的输出引脚不是很多,所以SELECTIN和AUTOFD信号连同外部的硬件一起产生了4个信号:HCNTL0、HCNTL1、RS和HBIL。这4个信号是TMS320C54x的输入,RS通过AUTOFD产生的时钟沿进行复位。在HDS1的上升沿,数据被选通并进入HPI的数据/地址寄存器中。HBIL输入用于确定接收的字节是低字节还是高字节。HBIL在HDS1的上升沿变化,时间上落后-HDS1一个时间点,这个延迟是触发器的传输时延,它保证了在每个字节的传输过程中得到HBIL正确的样值。为了确保加电时HBIL被初始化为高电平,在触发器的置位端连接了一个电容和电阻。如果HBIL连接到主机进行软件初始化,则不需要这个电阻和电容,程序可以监视HBIL的输入以保证数据和地址转换的有效性。图5-46给出了控制信号、HPI的数据选通输出和选通输入信号HAD的时序图,HAD、HD读和HD写分别是读写数据的信号。显示了通过HPI总线进行的数据传输。5.5.3HPl与51单片机的接口某些信号处理系统通常由两部分组成:一部分为DSP子系统,这是整个系统的核心,主要完成采样、数字信号处理及输出等功能;另一部分为单片机子系统,进行人机交互界面的控制,如键盘和显示。两个子系统之间需要进行必要的数据交换。下面介绍DSP和51单片机之间通过HPI接口进行连接的设计方法。这里以C5402DSP上增强型的HPI-8为例来说明接口电路的设计。
HPI8总共有18条信号线。其中数据线8条(HD0~HD7),其余10条都是控制线,如表5-18所示。表5-18HPI接口信号及功能
HAS在数据线和地址线复用的MCU中,与ALE信号连接,在下降沿锁存HBIL、HCNTL0/1、HR/-W,这些信号通常与地址线连接。如果MCU的数据线和地址线没有复用,则应该接高电平。
-HDS1、-HDS2是数据传输的时序控制信号。信号时序见图5-47,在下降沿对HBIL、HCNTL0/1、HR/-W进行锁存。即下降沿传输开始一上升沿传输结束。图5-47HPI数据传输时序
HCNTL0/1用于选择HPI内部寄存器,如表5-16所示。
54xxDSP的外部I/O引脚使用了3.3V的逻辑电平,而大部分51单片机使用了SV逻辑电平。前者输出高电平的最小值为2.4V;后者输入高电平的最小值为2.OV。所以前者的输出可以直接接到后者的输入。但是前者允许输入的高电平最大值为3.6V,而后者输出的高电平一般都在4.5V以上。所以前者的输入和后者的输出不能直接连接,需要电平转换,如选用TI74LVC16245A芯片来进行电平转换(图5-48)。如果引脚数量少,可以直接用三极管和电阻来转换。图5-48中G为使能端,低电平有效;DIR为方向控制端,高电平时A→B,低电平时B→A。另外要注意,74LVC16245A的工作电压引脚VCC应该接3.3V。整个硬件连接如图5-48所示。
HPI的数据传输分为两部分:外部传输和内部传输。外部传输是指主机和HPI寄存器之间的传输,由主机发出指令完成。内部传输是指HPI寄存器和DSP内部RAM之间的传输,由DSP内部的DMA控制器自动完成。主机在进行外部传输时,要先检查内部传输是否完成,这是通过检测HRDY信号实现的。外部传输操作的一般步骤如下。◆检查HRDY信号的电平:为高,表示可以进行传输;为低,表示DSP正在进行内部传输,此时不能进行外部传输。◆主机发出指令,设置HCNTL0、HCNTL1、HBIL、HR/-W信号的状态,以确定读或写的寄存器及字节的选择。◆主机发出时序控制信号,按照HPI数据传输时序进行操作,从而完成一次外部传输。图5-48DSP与51单片机的硬件接口编程时还要注意以下问题。①由于DSP的数据是16位,而单片机的数据是8位,所以单片机要分两次将数据传给DSP,即将16位的数据分成两个字节传输。这时,可以通过控制HPI口的HBIL信号来指定此次传输的是第1个字节还是第2个字节。另外,还要通过HPI的控制寄存器(HPIC)中的BOB位来指定第1个字节作为高8位还是低8位,所以主机在访问HPI时,应首先对HPIC进行初始化,并注意对BOB位的设置。②主机对地址寄存器(HPIA)的写操作会初始化一次内部传输。当主机通过两次对HPIA的写操作后,HPIA就得到了主机要访问的地址。这时内部的DMA控制器就会根据这个地址将相应单元的内容读到HPI内部的数据锁存器中,再对HPID进行两次读操作就可以将数据读出。如果将HPIA设置成自动递增模式,就会在数据传输的同时完成HPIA加1,于是又启动了一次内部传输,这样有利于数据的连续传输。③注意设置HPIC中的XHPIA位。XHPIA=1时,表示对DSP的7位扩展地址进行操作;XHPIA=O时,表示对DSP的低16位地址进行操作。由于DSP复位后,XHIPA的状态是不确定的,所以必须首先对XHPIA进行设置。④主机和DSP可以互相中断。主机通过向HPIC中的DSPINT位写入1来中断DSP。读该位总是为0,而且DSP对该位的写操作是无效的。而DSP要中断主机时,向HPIC中的HJNT位写入1,这时HPI的接口引脚被置低,从而使主机产生中断。读出该位总是为1,主机可以对该位写1来清除中断,这时HINT引脚就恢复高电平。
下面给出两段C51程序实例,包括单片机初始化HPI程序及单片机读取DSP片内RAM的程序。
sbit
PlO=P1^O;//HRDY信号,单片机输入信号
sbit
Pll=P1^l;//74LVC164245方向控制端,单片机输出信号
/*初始化HPI*/
init_HPl(void){ /*设置HPIC,XHPIA=1*/P11=1;XBYTE[0x0000]=0x18;XBYTE[0x0004]=0x18; //完成初始化
XBYTE[0x0002]=0x00;XBYTE[0x0006]=0x00;} //设置扩展地址为0/*从HPI读取数据,入口参数为RAM地址,返回值为读取的数据*/unsignedint
read_HPI(unsigned
int
ram_address){unsignedint
readdata; //16位读取数据
P11=1; /*设置HPIC,XHPIA=0*/XBYTE[0x0000]=0x08;XBYTE[0x0004]=0x08;XBYTE[0x0002]=ram_address>>8; //写地址高8位
XBYTE[0x0006]=ram_address&Ox00ff; //写地址低8位
while(!P10); //等待DSP内部传输完成
P11=0; /*读取传输数据*/
readdata=XBYTE[OxOOOB]<>8; //读取高8位数据
readdata|=XBYTE[OxOOOF]; //读取低8位数据
retum(readdata);}5.6DSP系统的自举设计
5.6.1自举的概念自举的英文原文是BootLoader,是指DSP芯片从上电复位到从外部设备获得运行程序进入工作状态的过程。这样用户就可以将代码放在外部慢速的设备当中,上电后利用DSP内部ROM中固化的自举程序将外部代码装载到内部的高速存储器中运行,这种方法省去了对片内ROM作掩膜的昂贵手段,而且利于用户对代码的更新和维护。TI公司的C54xx系列DSP提供了灵活的自举方法,如并行口、串行口、HPI等。自举方式可以以字节或字为单位进行代码传输。自举的控制信号有中断信号、BIO和XF,DSP根据它们来确定自举的具体方式。在5402DSP的片内ROM内固化了一些代码,包括自举程序、A律和“律表、正弦表、生产商的测试代码和中断矢量表等,长度为4K字,位于程序空间的OFOOOh~OFFFFh地址空间范围内。当MP/MC-O,即DSP工作于微计算机模式时,片内的ROM映像在程序空间,允许访问,ROM内的自举程序才能够开始运行,从而将外部设备中的代码搬移到指定的位置。在自举前,自举程序会设置CPU的状态寄存器。所有的中断都会被禁止(INTM=1),片内的双寻址RAM将被同时映像到程序空间和数据空间(OVLY=1),所有的空间将被初始化为7个等待周期。自举不会改变块切换控制寄存器BSCR的初始化状态。为了适应不同的系统需求,C54xxDSP提供了多种不同的自举方式,下面是由自举程序完成的各种启动方式的列表和功能概述。◆HPI自举模式:代码由主机通过HPI接口装入内部的片上存储器,当主机在片内的007Fh位置写入起始地址后,DSP才开始独立运行。◆并行口自举模式:DSP通过外部并行接口总线从数据空间读取自举表。自举表中包括代码和相应的信息,整个数据传输完毕后,DSP按提供的起始地址开始运行。◆标准串行口自举模式(支持8位或16位串行口):DSP从工作于标准模式的多通道缓冲串行口接收读取自举表,并且根据自举表中指定的信息读取代码。McBSP0支持以字为单位的传输,McBSP1支持以字节为单位的传输。◆8位串行EEPROM自举模式:将串行EEPROM与McBSP1相连接,McBSP1工作于SPI模式,DSP从EEPROM中读取自举表,并按自举表中提供的信息接收代码。◆I/O自举模式(支持8位或16位I/O):DSP通过外部并行接口总线从I/O口Oh处读取自举表,并通过XF和BIO实现外部设备的握手协议,从而按照外部设备的速率来传输数据。自举程序还提供了下列附加的功能,在并行和I/O自举模式中,DSP根据从自举表中读到的值可以重新配置软件等待状态寄存器和块切换控制寄存器,并且可以多段自举,允许装载不连续地址范围内的多个段代码。当自举开始之后,它进行一系列的检测操作来决定使用哪种自举模式。它首先检查HPI,如果不是则继续检查下一种自举模式,直至检测到一个有效的自举模式。如果没有检测到有效的自举模式,则返回到标准串行口处重复上述操作。图5-49说明了自举模式检测的流程。
DSP按以下顺序检测每个自举模式,直到检测到有效的一个:①HPI自举模式,首先检测INT2信号;②串行EEPROM自举模式(8位),检测INT3信号;③并行模式;④8位标准串行口模式McBSP1;⑤16位标准串行口模式McBSPO;⑥I/O自举模式;⑦HPI自举模式,第二次检测起始地址。第一次自举模式检测的是HPI模式。与其他某些C54x的HPI自举模式不同,C5402的HPI自举模式允许主机在DSP复位之后往片内RAM装载代码,同时允许在装载的过程中指定程序运行的起始地址。在复位后,DSP将片上RAM007Fh单元清0,然后查询该位置的内容有无变化。在查询期间,主机就可以往片内RAM装载代码。在装载完成后,主机必须再次访问HPI,将代码的起始地址写到007Fh单元。当DSP检测到007Fh单元的内容发生变化之后,立即跳转到该地址开始运行。由于这种查询机制,起始地址必须是非零的数值。
C5402HPI自举模式的另一个特点是不需要设置外部中断2(-INT2)。如果-INT2无效,自举程序不断地轮流检测各个自举源,包括上述HPI自举的查询,直到检测到有效的自举源为止。-INT2标志有效时强制自举程序进行HPI自举,此时,DSP等待主机装载代码,并轮询007Fh处的内容。当-INT2无效时,DSP将检测SPI方式的EEPROM自举。串行EEPROM自举模式通过-INT3进行检测。当检测到-INT3有效时,自举程序认为自举表位于与McBSPl相连的8位串行EEPROM中。自举程序从EEPROM的0地址读取一个数,如果这个数是自举表开始的关键字,自举程序将从EEPROM继续装载自举表的其他数据。如果检测不到-INT3或读取的不是有效的自举表数据,DSP将继续检测下一个自举源。接着检测的是并行自举模式。从数据空间的4000h~FFFFh的地址范围内读取自举表。自举程序先从I/O空间FFFFh处读取自举表的起始地址,然后从该位置读取数据。自举表的开始应该是一个关键字,它表明了是采用8位还是16位方式。08AAh表示是8位方式,lOAAh表示是16位方式。如果在I/O空间的FFFFh处没有发现有效的关键字,自举程序将在数据空间的FFFFh处读取自举表的起始地址,然后从起始地址处读取有效的关键字。当关键字有效时,自举程序接着读取其余的数据,再装载执行程序代码。否则,自举程序将继续检测串行模式。在检测串行或I/O自举模式之前,自举程序将XF引脚置低,表示已准备好接收数据。这样,串行主机设备就可以通过McBSPO或McBSPl发送自举表信息。当接收到一个字之后,McBSP会产生串行口中断,自举程序使用中断标志确定哪一个串行口用于自举装载。如果C5402读取的是一个有效的关键字,自举将固定在此串行口而忽略其他的自举源。如果没有一个McBSP接收到数据,自举程序会继续检测I/O自举模式。在I/O自举模式中,主设备通过将BIO输入信号置低来请求发送数据,自举程序检测到该请求之后,从I/O空间的OOOOh读取数据。当该数据是一个有效的自举表数据时,自举程序通过握手协议读取剩余的数据。如果没有找到有效的自举模式,自举程序将从标准串行口方式开始重新进行检测。注意并不是所有的自举模式都被重复检测。图5-50的流程图说明了自举程序用来确定是8位还是16位数据方式传送数据,并开始执行程序的基本过程。当使用串行8位自举模式时,字节传送时必须高字节在前。而在并行8位模式下,低8位字节必须首先出现在总线上。注意用于8位和16位的字节顺序根据所选择的自举模式不同而不同。图5-50I/O自举模式下数据宽度选择和数据传送过程表5-19与表5-20是自举表常见的结构。该结构除了HPI自举外其他的自举方式都适用。最前面的R-l个字存放寄存器初始值和程序运行的起始地址。随后的一个字说明了块的大小,紧接着的两个字说明了该块的23位的装载地址。当自举程序数到块的大小为0时,它便跳转到起始地址并开始运行程序。表5-1916位方式的自举数据结构表5-208位方式的自举数据结构5.6.2HPI自举模式
HPI自举模式是DSP复位后要检测的第一种模式。复位后,自举程序将数据空间007Fh单元清零,并把它作为一种主机通过HPI接口装载应用程序代码结束的标志,然后将主机中断输出信号HINT置低,向主机表示DSP已经准备好接收数据。自举程序接着检查中断标志寄存器(IFR)中的-INT2标志,如果-INT2为1(有效),则初始化为HPI自举模式。如果检测到外部用户中断-INT2,-INT2标志一定为1。有两种方法可以实现INT2中断。一是把HINT的输出引脚连接到-INT2的输入引脚;二是在DSP取得中断向量之后的30个CPU时钟周期内,在-INT2的输入引脚产生一个有效的外部中、断,此时HINT不与-INT2相连。如果-INT2标志没有设置,表明HINT没有连接到-INT2引脚或-INT2没有在30个CPU时钟周期内接入。自举程序将检测所有的自举模式,包括HPI模式。如果检测到了-INT2标志,自举程序将固定在HPI自举模式上。
C5402的自举模式同其他54xHPI的自举有所不同,在DSP复位后,主机必须把代码下载到片内RAM。当主机装载片内RAM时,C5402检查片上RAM007Fh单元的内容有无变化。主机停止装载自举代码后,它还必须往007Fh单元的位置写入装载代码的起始地址。地址007Fh处包含着入口地址的低16位PC(A15~AO),注意装载地址PC必须是一个非零值。当主机写完007Fh后,C5402检测到地址发生变化,就跳转到此地址执行装载的代码。当HINT置低之后,一直保持为低电平,它通知主机C5402已经完成复位,可以开始装载代码了。主机控制器然后通过写HPI控制寄存器HPIC来清除HINT标志。HPI自举只包括源程序数据和代码,不包括任何其他信息,例如段的大小和寄存器的值。装载完毕后,自举程序会跳转到指定的起始地址并开始执行程序。HPI的自举模式流程见图5-51。图5-51HPI自举模式流程5.6.3串行EEPROM自举模式当HPI自举模式没有检测到时,自举程序将检测串行EEPROM自举模式。注意某些版本的C5402不完全支持这种模式。串行EEPROM自举模式可以通过-INT3外部中断进行选择。自举程序检测中断标志寄存器IFR中的-INT3标志,如果此标志为1,就初始化为串行EEPROM自举模式。如果在C5402复位之后的30个CPU周期内在-INT3引脚出现由高到低的跳变,就会选择串行EEPROM自举模式。如果系统无法产生中断信号,McBSPl的发送引脚BDX1可以作为替代信号。在复位之后的前几个周期,BDX1引脚自动从高电平变为低电平,所以可以把它从外部连接到-INT3的输入引脚,从而选择串行EEPROM自举模式。这种选择自举模式的方法很简便,不需要任何其他的外部信号和器件。总之,当符合下面的条件之一时,-INT3标志将被正确置位。BDXl引脚连接到-INT3输入,或者DSP取得复位向量后的30个时钟周期内在-INT3输入引脚产生有效的中断。串行EEPROM自举模式中DSP与EEPROM按SPI方式连接,这种模式将McBSP1设置为时钟停止模式。McBSP用于顺序读取串行EEPROM。EEPROM必须有一个4线的SPI从类型的接口,其地址为16位。McBSP与EEPROM之间的接口如图5-52所示。图5-52McBSP与EEPROM之间的接口
McBSP的时钟速率设置为CLKOUT/250,对于100MHz的器件来说是400kHz,这样低的比特率可以保证与大多数基于SPI的EEPROM兼容。McBSP作为SPI主设备使用,配置为CLKSTP=3,CLKXP=o和CLKXM=1。每次访问.McBSP都发送一个32位的数据包,包括8位的读指令03h,16位的读地址和一个保持字节。EEPROM会忽略最后8位保持字节,利用该时隙从SO引脚送出被访问的数据。自举程序首先从EEPROM的地址0读数,并检查是否是有效的自举表信息,如果有效则继续读取剩余部分。串行EEPROM自举模式使用与标准8位串行口相同的自举表格式。因为串行EEPROM只有16位地址,所以自举表最大为64KB,或32K16比特字。这就限制了能直接装载的代码的大小。串行EEPROM装载结束后,XF信号置低,可将其与EEPROM的HOLD相连,在自举结束后使EEPROM失效。如果在前两次的读操作中未发现有效关键字,则自举程序继续检查下一个自举模式。5.6.4并行自举模式并行自举模式通过并行接口总线从数据空间读取自举表信息,并把代码传送到程序空间。自举程序支持并行的8位或16位自举模式。在这种模式下,可以重新设置SWWSR和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 果树土地托管承包协议书
- 跨国出境领队合同(04版)
- 个人地下车位租赁合同
- 外包工程合同正规范本完整版
- 礼仪服务合同范本版
- 用工单位劳务派遣服务合同
- 2024年度互联网广告发布反贿赂条款3篇
- 河北农业大学现代科技学院《国际结算实验》2023-2024学年第一学期期末试卷
- 2024版工程物资供应与施工配套服务合同2篇
- 河北农业大学现代科技学院《给排水科学与工程概论》2021-2022学年第一学期期末试卷
- 铁路建设征地拆迁补偿标准(附表)
- 水声通信系统中的信道编码技术研究
- 钢结构课设钢结构平台计算书哈工大威海最终终
- PFMEA表格(范例)
- 前列腺增生的护理查房ppt课件
- 酒店前台专业术语常见缩写及解释
- 新教科版三年级上册科学 1.2《水沸腾了》 教案
- 潮州市乡镇信息技术教育的现状和对策
- 一体化净水设备安装、调试、运行操维护说明
- tpe、tpr-SGS检测报告(共4页)
- 行政执法程序流程图
评论
0/150
提交评论