长字运算和并行运算_第1页
长字运算和并行运算_第2页
长字运算和并行运算_第3页
长字运算和并行运算_第4页
长字运算和并行运算_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

长字运算和并行运算长字运算C54x可以利用长操作数(32位)进行长字运算。如下所示为长字指令:

DLD Lmem,dst;dst=LmemDST src,Lmem ;Lmem=srcDADD Lmem,src[,dst] ;dst=src+LmemDSUB Lmem,src[,dst];dst=src–LmemDRSUB Lmem,src[,dst];dst=Lmem-src返回本节并行运算并行运算,就是同时利用D总线和E总线。其中,D总线用来执行加载或算术运算,E总线用来存放先前的结果。在不引起硬件资源冲突的情况下,C54x允许某些指令并行执行(即同时执行),以提高执行速度。并行指令有并行加载——存储指令、并行加载——乘法指令、并行存储——乘法指令,以及并行存储——加/减法指令,所有并行指令都是单字单周期指令。

返回本节IIR数字滤波器的DSP实现IIR数字滤波器的传递函数H(z)为:其对应的差分方程为:例如,对于直接形式的二阶IIR数字滤波器,其结构如图7-19所示,编程时,可以分别开辟四个缓冲区,存放输入、输出变量和滤波器的系数,如图7-20所示。(7-4)(7-3)返回首页图7-19直接形式的二阶IIR数字滤波器图7-20存放输入、输出变量和滤波器系数的缓冲区【例7-15】设计一个三阶的切比雪夫Ⅰ型带通数字滤波器,其采样频率Fs=16kHz,其通频带3.2kHz<f<4.8kHz,内损耗不大于1dB;f<2.4kHz和f>5.6kHz为阻带,其衰减大于20dB。1.IIR滤波器的设计在MATLAB中设计IIR滤波器,程序为:wp=[3.2,4.8];ws=[2.4,5.6];rp=1;rs=20[n,wn]=cheb1ord(wp/8,ws/8,rp,rs)[b,a]=cheby1(n,rp,wn)

设计结果为:N=3wn=0.40000.6000b0=0.0114747 a0=1.000000b1=0 a1=0b2=-0.034424 a2=2.13779b3=0 a3=0b4=0.034424 a4=1.76935b5=0 a5=0b6=-0.0114747 a6=0.5397582.产生滤波器输入信号的文件使用CCS的Simulator进行滤波器特性的测试时,需要输入时间信号x(n)。

#include<stdio.h>#include<math.h>voidmain(){inti;doublef[256];FILE*fp;if((fp=fopen("iirin.inc","wt"))==NULL) { printf("can'topenfile!\n"); return; }fprintf(fp,"INPUT:.sect%cINPUT%c\n",'"','"');for(i=0;i<=255;i++){ f[i]=sin(2*3.14159*i*4000/16000)+sin(2*3.14159*i*6500/16000); fprintf(fp,".word %1d\n",(long)(f[i]*32768/2)); }fclose(fp);}该程序将产生名为iirin.inc的输入信号程序,内容如下:INPUT: .sect "INPUT".word 0.word 25486.word -15136.word -314.word -11585.word 19580.word 6270.word -30006.word 16383 然后,在DSP汇编语言程序中通过.copy汇编命令将生成的数据文件iirin.inc复制到汇编程序中,作为IIR滤波器的输入数据。3.直接型IIR数字滤波器汇编源程序的编写直接型IIR数字滤波器汇编程序diir.asm如下:********直接型IIR数字滤波器通用程序**********.title"diir.asm".mmregs.global start.def start,_c_int00N .set 16 .copy "iirin.inc" ;输入信号x(n)数据table ;IIR滤波器系数.word63,0,-188,0,188,0,-63 .word0,11675,0,9663,0,2948.data

BN .usect "BN",N+1AN .usect "AN",N+1INBUF.usect "INBUF",256;输入缓冲区在数据区0x2400OUTPUT.usect"OUTPUT",256;输出缓冲区在数据区0x2600.text.asg AR0,INDEX_P.asg AR2,XN_P.asg AR3,ACOFF_P.asg AR4,YN_P.asg AR5,BCOFF_P _c_int00bstartnopnopstart: SSBX FRCTSSBX OVMSSBX SXM STM #BN+N,AR1 RPT #NMVPD #table,*AR1-;;将bi由程序区存放到数据区STM #AN+N-1,AR1RPT #N-1MVPD #table+N+1,*AR1- ;将ai由程序区存放到数据区STM #OUTPUT,AR1RPTZ A,#255STL A,*AR1+;输出数据缓冲区清零STM #INBUF,AR1RPT #255MVPD #INPUT,*AR1+ ;将输入数据由程序区

STM #OUTPUT,YN_P STM #INBUF,XN_P STM #N-1,INDEX_P STM #255,BRC RPTB LOOP-1IIR: SUBA,A STM #BN,BCOFF_P STM #AN,ACOFF_P RPT #N-1 ;计算前向通道

MAC *XN_P+,*BCOFF_P+,A MAC *XN_P,*BCOFF_P,A MAR*XN_P-0 ;将AR2指针指向x(n-N) RPT #N-1 ;计算反馈通道

MAC *YN_P+,*ACOFF_P+,A STH A,*YN_P-0 ;保存y(n)LOOP:EENDB EEND .end4.IIR滤波器链接命令文件的编写对应以上汇编程序的链接命令文件diir.cmd如下:diir.obj-odiir.out-mdiir.mapMEMORY{PAGE0:ROM:ORIGIN=0080H,LENGTH=1000HPAGE1:SPRAM: ORIGIN=0060H,LENGTH=0020HDARAM: ORIGIN=0080H,LENGTH=1380HRAM1: ORIGIN=2400H,LENGTH=0200HRAM2: ORIGIN=2600H,LENGTH=0200H}SECTIONS{.text :>ROM PAGE0.data :>DARAMPAGE1BN :>DARAMPAGE1AN :>DARAMPAGE1INBUF :>RAM1PAGE1OUTPUT :>RAM2PAGE1}返回本节基二实数FFT运算的算法该算法主要分为以下四步。第一步,输入数据的组合和位倒序把输入序列作位倒序是为了在整个运算最后的输出中得到的序列是自然顺序。如图7-21所示。第二步,N点复数FFT在DATA数据处理缓冲器里进行N点复数FFT运算。如图7-22所示。第三步,分离复数FFT的输出为奇部分和偶部分分离FFT输出为RP、RM、IP和IM四个序列,即偶实数、奇实数、偶虚数和奇虚数四部分。第四步,产生2N点的复数FFT输出序列产生2N=256个点的复数输出,它与原始的256个点的实输入序列的DFT一致。如图7-24所示。返回本节FFT运算模拟信号的产生及输入产生模拟输入信号可以有两种方法,第一种方法是用C语言程序产生mdata.inc文件,然后,在DSP汇编语言程序中通过.copy汇编命令将生成的数据文件mdata.inc复制到汇编程序中,如例7-12和例7-15,数据起始地址标号为INPUT,段名为INPUT。第二种方法是首先建立与输入信号对应的数据流文件mdata.dat,其数据格式如下:165110100x1f400x1f40

……返回本节实序列FFT汇编源程序及链接命令文件【例7-16】256点实序列FFT的DSP实现。256点实序列FFT汇编源程序如下:**************************************Radix-2,DIT,Real-inputFFTProgram**fft.asm**************************************.mmregs.globalreset,start,sav_sin,sav_idx,sav_grp.def start,_c_int00.dataDATA .space1024.copy"mdata1.inc";mdata1.inc为模拟输入信号数据,起始地址标号INPUTN .set 128 ;复数点数LOGN .set 7;蝶形级数sav_grp .usect"tempv",3 ;定义组变量值sav_sin .set sav_grp+1 ;定义旋转因子表sav_idx .set sav_grp+2OUTPUT .usect"OUTPUT",256;信号功率谱BOS .usect "stack",0Fh ;定义堆栈TOS .usect "stack",1.copy "twiddle1.inc";正弦表系数由twiddle1.inc文件给出,起始地址标号TWI1.copy "twiddle2.inc";余弦表系数由twiddle2.inc文件给出,起始地址标号TWI2.text_c_int00bstartnopnopstart:STM #TOS,SPLD #0,DPSSBX FRCT*****************************************************************返回本节观察信号时域波形及其频谱经程序计算得到的信号功率谱放在数据存储区0x2000开始的256个单元中。在

温馨提示

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

评论

0/150

提交评论