芯片结构及性能概述中文手册.doc_第1页
芯片结构及性能概述中文手册.doc_第2页
芯片结构及性能概述中文手册.doc_第3页
芯片结构及性能概述中文手册.doc_第4页
芯片结构及性能概述中文手册.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 芯片结构及性能概述TMS320C2000系列是美国TI公司推出的最佳测控应用的定点DSP芯片,其主流产品分为四个系列:C20x、C24x、C27x和C28x。C20x可用于通信设备、数字相机、嵌入式家电设备等;C24x主要用于数字马达控制、电机控制、工业自动化、电力转换系统等。近年来,TI公司又推出了具有更高性能的改进型C27x和C28x系列芯片,进一步增强了芯片的接口能力和嵌入功能,从而拓宽了数字信号处理器的应用领域。TMS320C28x系列是TI公司最新推出的DSP芯片,是目前国际市场上最先进、功能最强大的32位定点DSP芯片。它既具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制功能,特别适用于有大批量数据处理的测控场合,如工业自动化控制、电力电子技术应用、智能化仪器仪表及电机、马达伺服控制系统等。本章将介绍TMS320C28x系列芯片的结构、性能及特点,并给出该系列芯片的引脚分布及引脚功能。1.1 TMS320C28x系列芯片的结构及性能C28x系列的主要片种为TMS320F2810和TMS320F2812。两种芯片的差别是:F2812内含128K16位的片内Flash存储器,有外部存储器接口,而F2810仅有64K16位的片内Flash存储器,且无外部存储器接口。其硬件特征如表1-1所示。表1-1 硬件特征特 征F2810F2812指令周期(150MHz)6.67ns6.67nsSRAM(16位/字)18K18K3.3V片内Flash(16位/字)64K128K片内Flash/SRAM的密钥有有Boot ROM有有掩膜ROM有有外部存储器接口无有事件管理器A和B(EVA和EVB)EVA、EVBEVA、EVB *通用定时器44 *比较寄存器/脉宽调制1616 *捕获/正交解码脉冲电路6/26/2看门狗定时器有有12位的ADC有有 *通道数1616续表特 征F2810F281232位的CPU定时器33串行外围接口有有串行通信接口(SCI)A和BSCIA、SCIBSCIA、SCIB控制器局域网络有有多通道缓冲串行接口有有数字输入/输出引脚(共享)有有外部中断源33供电电压核心电压1.8VI/O电压3.3V核心电压1.8VI/O电压3.3V封装128针PBK179针GHH,176针PGF温度选择 A:-40 +85 S:-40 +125PBK仅适用于TMSPGF和GHH仅适用于TMS产品状况产品预览(PP)高级信息(AI)产品数据(PD)AI(TMP)AI(TMP)注:“S”是温度选择(-40 +125)的特征化数据,仅对TMS是适用的。产品预览(PP):在开发阶段的形成和设计中与产品有关的信息,特征数据和其他规格是设计的目标。TI保留了正确的东西,更换或者终止了一些没有注意到的产品。高级信息(AI):在开发阶段的取样和试制中与新产品有关的信息,特征数据和其他规格用以改变那些没有注意到的东西。产品数据(PD):是当前公布的数据信息,产品遵守TI的每项标准保修规格,但产品加工不包括对所有参数的测试。TMP:最终的硅电路小片,它与器件的电气特性相一致,但是没有进行全部的品质和可靠性检测。C28x系列芯片的主要性能如下。1高性能静态CMOS(Static CMOS)技术l 150MHz(时钟周期6.67ns)(最大)l 低功耗(核心电压1.8V,I/O口电压3.3V)l Flash编程电压3.3V2JTAG边界扫描(Boundary Scan)支持3高性能的32位中央处理器(TMS320C28x)l 16位16位和32位32位乘且累加操作l 16位16位的两个乘且累加l 哈佛总线结构(Harvard Bus Architecture)l 强大的操作能力l 迅速的中断响应和处理l 统一的寄存器编程模式l 可达4兆字的线性程序地址l 可达4兆字的数据地址l 代码高效(用C/C+或汇编语言)l 与TMS320F24x/LF240x处理器的源代码兼容4片内存储器l 8K16位的Flash存储器l 1K16位的OTP型只读存储器l L0和L1:两块4K16位的单口随机存储器(SARAM)l H0:一块8K16位的单口随机存储器l M0和M1:两块1K16位的单口随机存储器5根只读存储器(Boot ROM)4K16位l 带有软件的Boot模式l 标准的数学表6外部存储器接口(仅F2812有)l 有多达1MB的存储器l 可编程等待状态数l 可编程读/写选通计数器(Strobe Timing)l 三个独立的片选端7时钟与系统控制l 支持动态的改变锁相环的频率l 片内振荡器l 看门狗定时器模块8三个外部中断9外部中断扩展(PIE)模块l 可支持96个外部中断,当前仅使用了45个外部中断10128位的密钥(Security Key/Lock)l 保护Flash/OTP和L0/L1 SARAMl 防止ROM中的程序被盗113个32位的CPU定时器12马达控制外围设备l 两个事件管理器(EVA、EVB)l 与C240兼容的器件13串口外围设备l 串行外围接口(SPI)l 两个串行通信接口(SCIs),标准的UARTl 改进的局域网络(eCAN)l 多通道缓冲串行接口(McBSP)和串行外围接口模式1412位的ADC,16通道l 28通道的输入多路选择器l 两个采样保持器l 单个的转换时间:200nsl 单路转换时间:60ns15最多有56个独立的可编程、多用途通用输入/输出(GPIO)引脚16高级的仿真特性l 分析和设置断点的功能l 实时的硬件调试17开发工具l ANSI C/C+编译器/汇编程序/连接器l 支持TMS320C24x/240x的指令l 代码编辑集成环境l DSP/BIOSl JTAG扫描控制器(TI或第三方的)l 硬件评估板18低功耗模式和节能模式l 支持空闲模式、等待模式、挂起模式l 停止单个外围的时钟19封装方式l 带外部存储器接口的179球形触点BGA封装l 带外部存储器接口的176引脚低剖面四芯线扁平LQFP封装l 没有外部存储器接口的128引脚贴片正方扁平PBK封装20温度选择l A:-40 +85l S:-40 +125C28x系列芯片的功能框图如图1-1所示。代码保护的模块图1-1 C28x功能框图注:+ 器件上提供96个中断,45个可用;+ XINTF在F2810上不可用。1.2 引脚分布及引脚功能TMS320F2812芯片的封装方式为179引脚GHH球形网格阵列BGA(Ball Grid Array)封装和176引脚PGF低剖面四芯线扁平LQFP(Low-profile Quad)封装,其引脚分布分别如图1-2(BGA封装底视图)和图1-3(LQFP封装顶视图)所示。TMS320F2810芯片的封装方式为128引脚PBK LQFP封装,其引脚分布情况如图1-4(顶视图)所示。表1-2详细描述了芯片F2810和F2812的引脚功能及信号情况。所有输入引脚的电平均与TTL兼容;所有引脚的输出均为3.3V CMOS电平;输入不能承受5V电压;上拉电 流/下拉电流均为100A。所有引脚的输出缓冲器驱动能力(有输出功能的)典型值是4mA。图1-2 179引脚BGA封装底视图图1-3 176引脚LQFP封装顶视图图1-4 128引脚PBK封装顶视图表1-2 引脚功能和信号情况名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装XINTF信号(只限于F2812)XA18D7158O/ZXA17B7156O/ZXA16A8152O/ZXA15B9148O/ZXA14A10144O/ZXA13E10141O/ZXA12C11138O/Z19位地址总线XA11A14132O/ZXA10C12130O/ZXA9D14125O/ZXA8E12125O/ZXA7F12121O/ZXA6G14111O/ZXA5H13108O/ZXA4J12103O/ZXA3M1185O/ZXA2N1080O/ZXA1M243O/ZXA0G518O/ZXD15A9147I/O/ZPU16位数据总线XD14B11139I/O/ZPUXD13J1097I/O/ZPUXD12L1496I/O/ZPUXD11N974I/O/ZPUXD10L973I/O/ZPUXD9M868I/O/ZPUXD8P765I/O/ZPUXD7L554I/O/ZPUXD6L339I/O/ZPUXD5J536I/O/ZPUXD4K333I/O/ZPUXD3J330I/O/ZPUXD2H527I/O/ZPUXD1H324I/O/ZPUXD0G321I/O/ZPU续表名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装XINTF信号(仅F2812)XMP/F117IPU可选择微处理器/微计算机模式。可以在两者之间切换。为高电平时外部接口上的区域7有效,为低电平时区域7无效,可使用片内的Boot ROM功能。复位时该信号被锁存在XINTCNF2寄存器中,通过软件可以修改这种模式的状态。此信号是异步输入,并与XTIMCLK同步E7159IPU外部DMA保持请求信号。为低电平时请求XINTF释放外部总线,并把所有的总线与选通端置为高阻态。当对总线的操作完成且没有即将对XINTF进行访问时,XINTF释放总线。此信号是异步输入并与XTIMCLK同步K1082O/Z外部DMA保持确认信号。当XINTF响应的请求时呈低电平,所有的XINTF总线和选通端呈高阻态。和信号同时发出。当有效(低)时外部器件只能使用外部总线P144O/ZXINTF区域0和区域1的片选,当访问XINTF区域0或1时有效(低)P1388O/ZXINTF区域2的片选。当访问XINTF区域2时有效(低)B13133O/ZXINTF区域6和7的片选。当访问区域6或7时有效(低)N1184O/Z写有效。有效时为低电平。写选通信号是每个区域操作的基础,由XTIMINGx寄存器的前一周期、当前周期和后一周期的值确定M342O/Z读有效。低电平读选通。读选通信号是每个区域操作的基础,由XTIMINGx寄存器的前一周期、当前周期和后一周期的值确定。注意:和是互斥信号XR/N451O/Z通常为高电平,当为低电平时表示处于写周期,当为高电平时表示处于读周期续表名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装XREADYB6161IPU数据准备输入,被置1表示外设已为访问做好准备。XREADY可被设置为同步或异步输入。在同步模式中,XINTF接口块在当前周期结束之前的一个XTIMCLK时钟周期内要求XREADY有效。在异步模式中,在当前的周期结束前XINTF接口块以XTIMCLK的周期作为周期对XREADY采样3次。以XTIMCLK频率对XREADY的采样与XCLKOUT的模式无关JTAG和其他信号X1/XCLKINK97758I振荡器输入/内部振荡器输入,该引脚也可以用来提供外部时钟。28x能够使用一个外部时钟源,条件是要在该引脚上提供适当的驱动电平,为了适应1.8V内核数字电源(VDD),而不是3.3V的I/O电源(VDDIO)。可以使用一个嵌位二极管去嵌位时钟信号,以保证它的逻辑高电平不超过VDD(1.8V或1.9V)或者去使用一个1.8V的振荡器X2M97657I振荡器输出XCLKOUTF1111987O源于SYSCLKOUT的单个时钟输出,用来产生片内和片外等待状态,作为通用时钟源。XCLKOUT与SYSCLKOUT的频率或者相等,或是它的1/2,或是1/4。复位时XCLKOUT = SYSCLKOUT/4TESTSELA1313497IPD测试引脚,为TI保留,必须接地D6160113I/OPU器件复位(输入)及看门狗复位(输出)。器件复位,XRS使器件终止运行,PC指向地址0x3F FFC0(注:0xXX XXXX中的0x指出后面的数是十六进制数。例如0x3F FFC0=3FFFC0h)当XRS为高电平时,程序从PC所指出的位置开始运行。当看门狗产生复位时,DSP将该引脚驱动为低电平,在看门狗复位期间,低电平将持续512个XCLKIN周期。该引脚的输出缓冲器是一个带有内部上拉(典型值100mA)的开漏缓冲器,推荐该引脚应该由一个开漏设备去驱动TEST1M76751I/O测试引脚,为TI保留,必须悬空TEST2N76650I/O测试引脚,为TI保留,必须悬空续表名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装B1213598IPD有内部上拉的JTAG测试复位。当它为高电平时扫描系统控制器件的操作。若信号悬空或为低电平,器件以功能模式操作,测试复位信号被忽略注意:在上不要用上拉电阻。它内部有上拉部件。在强噪声的环境中需要使用附加上拉电阻,此电阻值根据调试器设计的驱动能力而定。一般取22k即能提供足够的保护。因为有了这种应用特性,所以使得调试器和应用目标板都有合适且有效的操作TCKA1213699IPUJTAG测试时钟,带有内部上拉功能TMSD1312692IPUJTAG测试模式选择端,有内部上拉功能,在TCK的上升沿TAP控制器计数一系列的控制输入TDIC1313196IPU带上拉功能的JTAG测试数据输入端。在TCK的上升沿,TDI被锁存到选择寄存器、指令寄存器或数据寄存器中TDOD1212793O/ZJTAG扫描输出,测试数据输出。在TCK的下降沿将选择寄存器的内容从TDO移出EMU0D11137100I/O/ZPU带上拉功能的仿真器I/O口引脚0,当为高电平时,此引脚用作中断输入。该中断来自仿真系统,并通过JTAG扫描定义为输入/输出EMU1C9146105I/O/ZPU仿真器引脚1,当为高电平时,此引脚输出无效,用作中断输入。该中断来自仿真系统的输入,通过JTAG扫描定义为输入/输出ADC模拟输入信号ADCINA7B5167119I采样/保持A的8通道模拟输入。在器件未上电之前ADC引脚不会被驱动ADCINA6D5168120IADCINA5E5169121IADCINA4A4170122IADCINA3B4171123IADCINA2C4172124IADCINA1D4173125IADCINA0A3174126I续表名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装ADCINB7F599I采样/保持B的8通道模拟输入。在器件未上电之前ADC引脚不会ADCINB6D188IADCINB5D277IADCINB4D366IADCINB3C155IADCINB2B144IADCINB1C333IADCINB0C222IADCREFPE21111OADC参考电压输出(2V)。需要在该引脚上接一个低ESR(50m1.5)的10F陶瓷旁路电容,另一端接至模拟地ADCREFME41010OADC参考电压输出(1V)。需要在该引脚上接一个低ESR(50m1.5)的10F陶瓷旁路电容,另一端接至模拟地ADCRESE-XTF21616OADC外部偏置电阻(24.9k)ADCBGREFNE6164116I测试引脚,为TI保留,必须悬空AVSSREFBGE31212IADC模拟地AVDDREFBGE11313IADC模拟电源(3.3V)ADCLOB3175127I普通低侧模拟输入VSSA1F31515IADC模拟地VSSA2C5165117IADC模拟地VDDA1F41414IADC模拟电源(3.3V)VDDA2A5166118IADC模拟电源(3.3V)VSS1C6163115IADC数字地VDD1A6162114IADC数字电源(1.8V)VDDAIOB211I/O模拟电源(3.3V)VSSAIOA2176128I/O模拟地电源信号VDDH123201.8V或1.9V核心数字电源VDDL13729VDDP55642VDDP97556VDDP1263VDDK1210074VDDG1211282VDDC1411282VDDB10143102VDDC8154110续表名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装VSSG41917内核和数字I/O地VSSK13226VSSL23826VSSP45239VSSK658VSSP87053VSSM107859VSSL118662VSSK139973VSSJ14105VSSG13113VSSE1412088VSSB1412995VSSD10142VSSC10103VSSB8153109VDDAIOB211I/O模拟电源(3.3V)VSSAIOA2176128I/O口模拟地VDDIOJ43125I/O数字电源(3.3V)VDDIOL76449VDDIOL1081VDDION14VDDIOG1111483VDDIOE9145104VDD3VLN86952Flash核电源(3.3V),上电后所有时间内都应将该引脚接至3.3V通用输入/输出(GPIO)或外围信号GPIOA或EVA信号GPIOA0PWM1(O)M129268I/O/ZPUGPIO或PWM输出引脚1GPIOA1PWM2(O)M149369I/O/ZPUGPIO或PWM输出引脚2GPIOA2PWM3(O)L129470I/O/ZPUGPIO或PWM输出引脚3GPIOA3PWM4(O)L139571I/O/ZPUGPIO或PWM输出引脚4GPIOA4PWM5(O)K119872I/O/ZPUGPIO或PWM输出引脚5GPIOA5PWM6(O)K1410175I/O/ZPUGPIO或PWM输出引脚6GPIOA6T1PWM-T1CMPJ1110276I/O/ZPUGPIO或定时器1输出1续表 名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装GPIOA7T2PWM_T2CMPJ1310477I/O/ZPUIGPIO或定时器2输出2GPIOA8CAP1_QEP1(I)H1010678I/O/ZPUIGPIO或捕获输入1GPIOA9CAP2_QEP2(I)F1110779I/O/ZPUGPIO或捕获输入2GPIOA10CAP3_QEPI1(I)F1210980I/O/ZPUGPIO或捕获输入3GPIOA11TDIRA(I)F1411685I/OZPUGPIO或计数器方向GPIOA12TCKINA(1)F1311786I/O/ZPUGPIO 或计数器时钟输入GPIOA13(I)E1312289I/O/ZPUGPIO或比较器1输出GPIOA14(I)E1112390I/O/ZPUGPIO或比较器2输出GPIOA15(I)F1012491I/O/ZPUGPIO或比较器3输出GPIOB或EVB信号GPIOB0PWM7(O)N24533I/O/ZPUGPIO或PWM输出引脚7GPIOB1PWM8(O)P24634I/O/ZPUGPIO或PWM输出引脚8GPIOB2PWM9(O)N34735I/O/ZPUGPIO或PWM输出引脚9GPIOB3PWM10(O)P34836I/O/ZPUGPIO或PWM输出引脚10GPIOB4PWM11(O)L44937I/O/ZPUGPIO或PWM输出引脚11GPIOB5PWM12(O)M45038I/O/ZPUGPIO或PWM输出引脚12GPIOB6T3PWM_T3CMPK55340I/O/ZPUGPIO或定时器3输出GPIOB7T4PWM_T4CMPN55541I/O/ZPUGPIO或定时器4输出GPIOB8CAP4_QEP3(I)M55743I/O/ZPUGPIO或捕获输入#4GPIOB9CAP5_QEP4(I)M65944I/O/ZPUGPIO或捕获输入#5GPIOB10CAP6_QEPI2(I)P66045I/O/ZPUGPIO或捕获输入#6GPIOB11TDIRB(I)L87154I/O/ZPUGPIO或定时器方向GPIOB12TCLKINB(I)K87255I/O/ZPUGPIO或定时器时钟输入GPIOB13(I)N66146I/O/ZPUGPIO或比较器4输出GPIOB14(I)L66247I/O/ZPUGPIO或比较器5输出GPIOB15(I)K76348I/O/ZPUGPIO或比较器6输出GPIOD或EVA信号GPIOD0(I)H1411081I/O/ZPU定时器1比较输出GPIOD1/(I)G1011584I/O/ZPU定时器2比较输出或EV-A开启外部AD转换输出GPIOD或EVB信号GPIOD5(I)P107960I/O/ZPU定时器3比较输出GPIOD6/(I)P118361I/OZPU定时器4比较输出或EV-B开启外部AD转换输出续表名 字引脚号I/O/ZPU/PDS说 明179针GHH封装176针PGF封装128针PBK封装GPIOE或中断信号GPIOE0XINT_(I)D9149106I/O/Z通用I/O或XINT1或核心输入GPIOE1XINT2_ADCSOC(I)D8151108I/O/ZPUGPIO或XINT2或开始AD转换GPIOE2XNMI_XINT13(I)E8150107I/O/ZPUGPIO或XNMI或XINT13GPIOF或串行外围接口(SPI)信号GPIOF0SPISIMOA(O)M14031I/O/ZGPIO或SPI从动输入,主动输出GPIOF1SPISOMIA(I)N14132I/O/ZGPIO或SPI从动输出,主动输入GPIOF2SPICLKA(I/O)K23427I/O/ZGPIO或SPI时钟GPIOF3SPISTEA(I/O)K43528I/O/ZGPIO或SPI从动传送使能GPIOF或串行通信接口A(SCI-A)信号GPIOF4SCITXDA(O)C7155111I/O/ZPUGPIO或SCI异步串行口发送数据GPIOF5SCIRXDA(I)A7157112I/O/ZPUGPIO或SCI异步串行口接收数据GPIOF6CANTXA(O)N128764I/O/ZPUGPIO或eCAN发送数据GPIOF7CANRXA(I)N138965I/O/ZPUGPIO或eCAN接收数据GPIOF或多通道缓冲串行口(McBSP)信号GPIOF8MCLKXA(I/O)J12823I/O/ZPUGPIO或发送时钟GPIOF9MCLKRA(I/O)H22521I/O/ZPUGPIO或接收时钟GPIOF10MFSXA(I/O)H42622I/O/ZPUGPIO或发送帧同步信号GPIOF11MSXRA(I/O)J22924I/O/ZPUGPIO或接收帧同步信号GPIOF12MDXA(O)G12219I/O/ZGPIO或发送串行数据GPIOF13MDRA(1)G22018I/O/ZPUGPIO或接收串行数据GPIOF或XF CPU输出信号GPIOF14XF_(O)A11140101I/O/ZPU此引脚有3个功能:(1)XF通用输出引脚(2)XPLLDIS复位期间此引脚被采样以检查锁相环PLL是否不使能,若该引脚采样为低,PLL将不被使能。此时,不能使用HALT和STANDBY模式(3)GPIO通用输入/输出功能GPIOG或串行通信接口B(SCI-B)信号GPIOG4SCITXDB(O)P149066I/O/ZGPIO或SCI异步串行口发送数据端GPIOG5SCIRXDB(I)M139167I/O/ZGPIO或SCI异步串行口接收数据端注: 除了TDO,CLKOUT,XF,XINTF,EMU0及EMU1引脚之外,所有引脚的输出缓冲器驱动能力(有输出功能的)典型值是4mA。I:输入;O:输出;Z:高阻态。PU:引脚有上拉功能;PD:引脚有下拉功能。第3章 DSP芯片的定点运算3.1 数 的 定 标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。显然,字长越长,所能表示的数的范围越大,精度也越高。如无特别说明,本书均以16位字长为例。DSP芯片的数以2的补码形式表示。每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。其余15位表示数值的大小。因此二进制数0010000000000011b8195二进制数1111111111111100b-4对DSP芯片而言,参与数值运算的数就是16位的整型数。但在许多情况下,数学运算过程中的数不一定都是整数。那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。那么是不是说DSP芯片就不能处理各种小数呢?当然不是。这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。这就是数的定标。通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标有Q表示法和S表示法两种。表3.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。从表3.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。例如:16进制数2000H8192,用Q0表示16进制数2000H0.25,用Q15表示但对于DSP芯片来说,处理方法是完全相同的。从表3.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为 1/32768 = 0.00003051。因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。浮点数与定点数的转换关系可表示为:浮点数(x)转换为定点数():定点数()转换为浮点数(x):例如,浮点数 x=0.5,定标 Q15,则定点数,式中表示下取整。反之,一个用 Q15 表示的定点数16384,其浮点数为163842-1516384/32768=0.5。表3.1 Q表示、S表示及数值范围Q表示S表示十进制数表示范围Q15S0.15-1X0.9999695Q14S1.14-2X1.9999390Q13S2.13-4X3.9998779Q12S3.12-8X7.9997559Q11S4.11-16X15.9995117Q10S5.10-32X31.9990234Q9S6.9-64X63.9980469Q8S7.8-128X127.9960938Q7S8.7-256X255.9921875Q6S9.6-512X511.9804375Q5S10.5-1024X1023.96875Q4S11.4-2048X2047.9375Q3S12.3-4096X4095.875Q2S13.2-8192X8191.75Q1S14.1-16384X16383.5Q0S15.0-32768X327673.2 高级语言:从浮点到定点在编写DSP模拟算法时,为了方便,一般都是采用高级语言(如C语言)来编写模拟程序。程序中所用的变量一般既有整型数,又有浮点数。如例3.1程序中的变量i是整型数,而pi是浮点数,hamwindow则是浮点数组。例3.1 256点汉明窗计算inti;floatpi=3.14159;floathamwindow256;for(i=0;iQy,加法/减法结果z的定标值为Qz,则zx+y = 所以定点加法可以描述为:int x,y,z;long temp;/*临时变量*/tempy(QxQz), 若QxQzz(int)(temp(QzQx), 若QxQz例3.2 定点加法设x0.5,y3.1,则浮点运算结果为zx+y0.5+3.13.6;Qx15,Qy13,Qz13,则定点加法为:x16384;y25395;temp253952)29491;因为z的Q值为13,所以定点值z29491即为浮点值z29491/81923.6。例3.3 定点减法设x3.0,y3.1,则浮点运算结果为zx-y3.0-3.1-0.1;Qx13,Qy13,Qz15,则定点减法为:x24576;y25295;temp25395;tempx-temp24576-25395-819;因为QxQz,故 z(int)(-819Qy,加法结果z的定标值为Qz,则定点加法为:int x,y;long temp,z;tempy(Qx-Qz),若QxQzztemp32767,因此Qx1,Qy0,Qz0,则定点加法为:x30000;y20000;temp20000135000;因为z的Q值为0,所以定点值z=35000就是浮点值,这里z是一个长整型数。当加法或加法的结果超过16位表示范围时,如果程序员事先能够了解到这种情况,并且需要保证运算精度时,则必须保持32位结果。如果程序中是按照16位数进行运算的,则超过16位实际上就是出现了溢出。如果不采取适当的措施,则数据溢出会导致运算精度的严重恶化。一般的定点DSP芯片都设有溢出保护功能,当溢出保护功能有效时,一旦出现溢出,则累加器ACC的结果为最大的饱和值(上溢为7FFFH,下溢为8001H),从而达到防止溢出引起精度严重恶化的目的。3.2.2 乘法运算的C语言定点模拟设浮点乘法运算的表达式为:float x,y,z;z = xy;假设经过统计后x的定标值为Qx,y的定标值为Qy,乘积z的定标值为Qz,则z = xy = =所以定点表示的乘法为:int x,y,z;long temp;temp = (long)x;z = (tempy) (Qx+Qy-Qz);例3.5 定点乘法设x = 18.4,y = 36.8,则浮点运算值为z =18.436.8 = 677.12;根据上节,得Qx = 10,Qy = 9,Qz = 5,所以x = 18841;y = 18841;temp = 18841L;z = (18841L*18841)(10+9-5) = 354983281L14 = 21666;因为z的定标值为5,故定点 z = 21666即为浮点的 z = 21666/32 = 677.08。3.2.3 除法运算的C语言定点模拟设浮点除法运算的表达式为:float x,y,z;z = x/y;假设经过统计后被除数x的定标值为Qx,除数y的定标值为Qy,商z的定标值为Qz,则z = x/y = 所以定点表示的除法为:int x,y,z;long temp;temp = (long)x;z = (temp(Qz-Qx+Qy)/y;例3.6 定点除法设x = 18.4,y = 36.8,浮点运算值为z = x/y = 18.4/36.8 = 0.5;根据上节,得Qx = 10,Qy = 9,Qz = 15;所以有x = 18841, y = 18841;temp = (long)18841;z = (18841L(15-10+9)/18841 = 308690944L/18841 = 16384;因为商z的定标值为15,所以定点z = 16384即为浮点 z = 16384/215= 0.5。3.2.4 程序变量的Q值确定在前面几节介绍的例子中,由于x、y、z的值都是已知的,因此从浮点变为定点时Q值很好确定。在实际的DSP应用中,程序中参与运算的都是变量,那么如何确定浮点程序中变量的Q值呢?从前面的分析可以知道,确定变量的Q值实际上就是确定变量的动态范围,动态范围确定了,则Q值也就确定了。设变量的绝对值的最大值为,注意必须小于或等于32767。取一个整数n,使它满足则有Q = 15-n例如,某变量的值在-1至1之间,即1,因此n = 0,Q15-n = 15。确定了变量的就可以确定其Q值,那么变量的又是如何确定的呢?一般来说,确定变量的有两种方法:一种是理论分析法,另一种是统计分析法。1理论分析法有些变量的动态范围通过理论分析是可以确定的。例如:(1) 三角函数,y = sin(x)或y = cos(x),由三角函数知识可知,|y|1;(2) 汉明窗,y(n) = 0.54-0.46cos 2pn/(N-1) ,0nN-1。因为-1cos 2pn/(N-1)1,所以0.08y(n)1.0;(3) FIR卷积。y(n)=,设,且x(n)是模拟信号12位量化值,即有 211,则211;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论