DSP课程设计报告-终结版_第1页
DSP课程设计报告-终结版_第2页
DSP课程设计报告-终结版_第3页
DSP课程设计报告-终结版_第4页
DSP课程设计报告-终结版_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、DSP原理与应用课程设计(学年论文)说明书 课题名称: DSP原理与应用课程设计 学生学号: 专业班级: 学生姓名: 指导教师: 目 录第一章 绪论1第二章 DSP芯片的介绍32.1 DSP芯片的特点32.1.1 DSP芯片主要特点32.1.2 DSP芯片的优缺点42.2 DSP芯片的分类42.3 DSP芯片的应用52.4 TMS320vC5509芯片的介绍6第三章 总体设计93.1 硬件设计93.1.1 DSP芯片93.1.2 电源设计103.1.3 复位电路设计113.1.4 时钟电路设计103.1.5 程序存储器扩展设计113.1.6 数据存储器扩展设计93.1.7 JTAG接口设计10

2、3.1.8 A/D接口电路设计113.2 软件设计9第四章CCS集成开发工具94.1 CCS是什么94.2 CCS窗口简介104.2.1 CCS窗口示例104.2.2 CCS中常用的工具11 4.3 CCS的安装与设置11第五章 正弦信号发生器的实现过程135.1 正弦信号发生器的理论实现135.1.1 常用的理论实现方法135.1.2 编程实现135.2 调试过程18第六章 实验心得与体会13参考文献23 第一章 绪论数字信号处理是20世纪60年代,随着信息学科和计算机学科的高速发展而迅速发展起来的一门新兴学科。它的重要性日益在各个领域的应用中表现出来。其主要标志是两项重大进展,即快速傅里叶

3、变换(FFT)算法的提出和数字滤波器设计方法的完善。数字信号处理是把信号用数字或符号表示成序列,通过计算机或通用(专用)信号处理设备,用数值计算方法进行各种处理,达到提取有用信息便于应用的目的。例如:滤波、检测、变换、增强、估计、识别、参数提取、频谱分析等。数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(DSP)和专用集成电路(ASIC)等。数字信号处理的研究方向应该更

4、加广泛、更加深入特别是对于谱分析的本质研究,对于非平稳和非高斯随机信号的研究,对于多维信号处理的研究等,都具有广阔前景。数字信号处理技术发展很快、应用很广、成果很多。多数科学和工程中遇到的是模拟信号。以前都是研究模拟信号处理的理论和实现。模拟信号处理缺点:难以做到高精度,受环境影响较大,可靠性差,且不灵活等。数字系统的优点:体积小、功耗低、精度高、可靠性高、灵活性大、易于大规模集成、可进行二维与多维处理。随着大规模集成电路以及数字计算机的飞速发展,加之从60年代末以来数字信号处理理论和技术的成熟和完善,用数字方法来处理信号,即数字信号处理,已逐渐取代模拟信号处理。数字信号处理是利用计算机或专用

5、处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们所需要的信号形式。数字信号处理是将信号以数字方式表示并处理的理论和技术。数字信号处理与模拟信号处理是信号处理的子集。数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。数字信号处理在理论上的发展推动了数字信号处理应用的发展。反过

6、来,数字信号处理的应用又促进了数字信号处理理论的提高。而数字信号处理的实现则是理论和应用之间的桥梁。数字信号处理是以众多的学科为理论基础的,它所涉及的范围及其广泛。例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。一些新兴的学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。长期以来,信号处理技术直用于转换或产生模拟或数字信号。其中应用得最频繁的领域就是信号的滤波。此外,从数字通信

7、、语音、音频和生物医学信号处理到检测仪器仪表和机器人技术等许多领域中,都广泛地应用了数字信号处理(digital signal processing,DSP)技术。数字信号处理己经发展成为一项成熟的技术,并且在许多应用领域逐步代替了传统的模拟信号处理系统。世界上三大DSP芯片生产商:1.德克萨斯仪器公司(TI) 2.模拟器件公司(ADI) 3.摩托罗拉公司(Motorola).这三家公司几乎垄断了通用DSP芯片市场。数字信号处理的书籍很多,其中以麻省理工学院奥本海姆编著的Discrete Time Signal Processing最为经典 ,有中译本离散时间信号处理由西安交通大学出版。现在是

8、第二版。第二章 DSP芯片的介绍2.1 DSP芯片的特点 DSP芯片,也称数字信号处理器, 是一种具有特殊结构的微处理器。DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。2.1.1 DSP芯片主要特点根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:在一个指令周期内可完成一次乘法和一次加法。 程序和数据空间分开,可以同时访问指令和数据。 片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。 具有低开销或无开销循环及跳转的硬件支持。 快速的中断处理和硬件I/O支持。 具有在

9、单周期内操作的多个硬件地址产生器。 可以并行执行多个操作。 支持流水线操作,使取指、译码和执行等操作可以重叠执行。 与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。 2.1.2 DSP芯片的优缺点DSP芯片主要应用在信号处理 、图像处理 、仪器 、声音语言 、控制军事 、通讯 、医疗 、家用电器等诸多领域。其优点主要有:大规模集成性、稳定性好、精度高、可编程性、高速性能、可嵌入性、接口和集成方便;缺点主要有:成本较高、高频时钟的高频干扰、功率消耗较大等。 2.2 DSP芯片的分类DSP芯片可以按照下列三种方式进行分类。 1按基础特性分 这是根据DSP芯片的工作时钟和指令类型来分类的。如

10、果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称为静态DSP芯片。例如,日本OKI 电气公司的DSP芯片、TI公司的TMS320C2XX系列芯片属于这一类 如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称为一致性DSP芯片。例如,美国TI公司的TMS320C54X就属于这一类。 2按数据格式分 这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP芯片称为定点DSP芯片,如TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X

11、/C62XX系列,AD公司的ADSP21XX系列,AT&T公司的DSP16/16A,Motolora公司的MC56000等。以浮点格式工作的称为浮点DSP芯片,如TI公司的TMS320C3X/C4X/C8X,AD公司的ADSP21XXX系列,AT&T公司的DSP32/32C,Motolora公司的MC96002等。 不同浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,如TMS320C3X,而有的DSP芯片则采用IEEE的标准浮点格式,如Motorola公司的MC96002、FUJITSU公司的MB86232和ZORAN公司的ZR35325等。 3按

12、用途分 按照DSP的用途来分,可分为通用型DSP芯片和专用型DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片属于通用型DSP芯片。专用DSP芯片是为特定的DSP运算而设计的,更适合特殊的运算,如数字滤波、卷积和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就属于专用型DSP芯片。 2.3 DSP芯片的应用数字信号处理(DSP)芯片是一种特别适合于进行数字信号处理运算的微处理器可实时快速地实现各种数字信号处理算法。自20世纪80年代初诞生以来已广泛应用于通信、电子、航空航天、军事及家电产品成为一种十

13、分重要的电子产品的核心部件。DSP芯片得到了飞速的发展。DSP芯片的高速发展,一方面得益于集成电路技术的发展,另一方面也得益于巨大的市场。在近20年时间里,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前,DSP芯片的价格越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP芯片的应用主要有:(1) 信号处理如数字滤波、自适应滤波、快速傅立叶变换、相关运算、谱分析、卷积、模式匹配、加窗、波形产生等;(2) 通信如调制解调器、自适应均衡、数据加密、数据压缩、回波抵消、多路复用、传真、扩频通信、纠错编码、可视电话等;(3) 语音如语音编码、语音合成、语音识别、语音增强、说话人辨

14、认、说话人确认、语音邮件、语音存储等;(4) 图形/图像如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等;(5) 军事如保密通信、雷达处理、声纳处理、导航、导弹制导等;(6) 仪器仪表如频谱分析、函数发生、锁相环、地震处理等;(7) 自动控制如引擎控制、声控、自动驾驶、机器人控制、磁盘控制等;(8) 医疗如助听、超声设备、诊断工具、病人监护等;(9) 家用电器如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等。随着DSP芯片性能价格比的不断提高,可以预见DSP芯片将会在更多的领域内得到更为广泛的应用。2.4 TMS320VC5509芯片的介绍  

15、;  TMS320 C54x系列DSP芯片是使用静态CMOS技术制造的。其方框图见图2-1,从图中可以看出C54x系列DSP芯片具有以下功能单元:       总线       C54x共有八条总线分别是:       PB: 程序读取总线 CB: 数据读取总线1       DB: 数据读取总线2 EB: 数据写入总线 

16、60;     PAB: 程序读取地址总线 CAB: 数据读取地址总线1       DAB: 数据读取地址总线2 EAB: 数据写入地址总线       中央处理器(CPU)       CPU由以下几个部件组成:       先进的多总线结构: 包括三个独立的数据总线和一个程序总线   

17、;    40位的算术逻辑单元: 包括一个40位移位器和两个独立的40位累加器       17bit 17bit的并行乘法器同一个专用的加法器相配合: 用来执行不经流水线的单周期乘加(MAC)运算     指数译码器: 可以在一个周期里计算出一个40位累加器的指数值     两个地址生成器: 包括8个辅助寄存器和两个辅助寄存器算术单元      

18、 程序控制器: 对指令进行解码、管理流水线和程序流程       片上存储器   C54x共有192K字的寻址能力(64K字的程序区,64K字的数据区,和64K字的I/O区)如图2-2所示。芯片内部采用改进的哈佛结构,允许同时取指令和取数据,而且还允许在程序空间和数据空间之间相互传送数据。 所谓哈佛结构,是将程序和数据的存贮空间分开,各有各的地址总线和数据总线。这样同一条指令可以同时对不同的存贮空间进行读操作或写操作,从而提高了处理速度。 C54x DSP芯片还提供了块指令循环功能,此功能可以大大地提高执行循环的速

19、度,但是此功能只能在一重循环中使用,因为它只提供了一个循环记数寄存器BRC,所以在遇到多重循环时就要尽量把这个功能用在最里层的循环中,最里层循环是执行次数最多的循环。 第三章 总体设计基于TMS320VC5509的语音信号采集系统的结构如图21所示,该系统的中央处理单元采用美国TI(德州仪器)公司的高性能定点数字信号处理芯片TMS320VC5509,TMS320VC5509是TI公司推出的定点数字信号处理器,它采用修正的哈佛结构,包括12组独立总线,即1组程序读总线,1组程序地址总线,3组数据读总线,2组数据写总线,5组数据地址总线。这种结构允许同时执行程序指令和对数据操作, 运行速

20、度快,单周期定点指令执行时间为10ns。在语音信号采集中, 模拟信号向数字信号转换(ADC)的精度和实时性对后续信号处理过程起到了重要作用。设计中采用TLC320AD50完成语音信号的A/D转换。TLC320AD50是TI公司提供的一款32 bit同步串口A/D和D/A转换芯片,ADC之后有1个抽取滤波器以提高输入信号的信噪比, 其采样频率最高可达22.5 Kb/s,满足语音信号处理关于采样频率的要求。3.1 硬件设计 图2-2 TMS320VC5509芯片3.1.1 DSP芯片作为DSP家庭高性价比代表的16位定点DSP芯片,C5402适用于语音通信等实时嵌入应用场合。与其它C54X芯片一样

21、,C5402具有高度灵活的可操作性和高速的处理能力。其性能特点如下:操作速率可达100MIPS;具有先进的多总线结构,三条16位数据存储器总线和一条程序存储器总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个17×17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;整合维特比加速器,用于提高维特比编译码的速度;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的定点DSP C语言编译器;数据/程序寻址空间为1M×16bit,内置4K×16bit ROM和16K×16bit RAM;内置可编

22、程等待状态发生器、锁相环(PLL)时钟产生器、两个多通道缓冲串口、一个与外部处理器通信的8位并行HPI口、两个16位定时器以及6通道DMA控制器且低功耗。与C54X系列的其它芯片相比,C5402具有高性能、低功耗和低价格等特点。它采用6级流水线,且当RPT(重复指令)时,一些多周期的指令就变成了单周期的指令;芯片内部RAM和ROM可根据PMST寄存器中的OVLY和DROM位灵活设置。这些都有利于算法的优化。3.1.2 电源设计为了降低芯片功耗,C54x系列芯片大部分都采用低电压设计,并且采用双电源供电,即内核电源CVDD:采用1.8V,主要为芯片的内部逻辑提供电压,包括CPU、时钟电路和所有的

23、外设逻辑;I/O电源DVDD:采用3.3V,主要供I/O接口使用。可直接与外部低压器件接口,而无需额外的电平变换电路。DSP芯片采用的供电方式,主要取决于应用系统中提供什么样的电源。在实际中,大部分数字系统所使用的电源可工作于5V或3.3V,本设计采用TI公司提供的双电源芯片: TPS73HD318电源的最大输出电流为750mA,并且提供两个宽度为200ms的低电平复位脉冲。电路图如图3.1-1所示。图3.1-1由TPS7301 芯片组成的电源电路3.1.3 复位电路设计TMS320VC5502的复位输入引脚RS为处理器提供了一种硬件初始化的方法,它是一种不可屏蔽的外中断,可在任何时候对TMS

24、320VC5502进行复位。当系统上电后,RS引脚应至少保持5个时钟周期稳定的低电平,以确保数据、地址和控制线的正确配置。复位后(RS回到高电平),CPU从程序存储器的FF80H单元取指,并开始执行程序。本设计采用手动复位电路(如图3.1-2)。图3.1-2 手动复位电路3.1.4 时钟电路设计时钟电路用来为C54x芯片提供时钟信号,由一个内部振荡器和一个锁相环PLL组成,可通过芯片内部的晶体振荡器或外部的时钟电路驱动。利用DSP芯片内部提供的晶振电路,在DSP芯片的X1、X2之间连接晶体振荡器。使用芯片内部的振荡器在芯片的X1和X2/CLKIN引脚之间接入一个晶体,用于启动内部振荡器。时钟电

25、路图如图3.1-3。 C1=C2=20pF图3.1-3时钟模块电路3.1.5 程序存储器扩展设计FLASH存储器用以扩展程序存储器 AT29LV1024是1M位的FLASH存储器FLASH存储器与EPROM相比,具有更高的性能价格比,而且体积小、功耗低、可电擦写、使用方便,并且3.3V的FLASH可以直接与DSP芯片连接。地址线:A0A15;数据线:I/O0I/O15;控制线:片选信号;编程写信号;输出使能信号。扩展连接图如图3.1-4。图3.1-4程序存储器扩展电路3.1.6数据存储器扩展设计要实现语音数据和系统程序的存储,TMS320VC5502必须有外接扩展存储器。TMS320VC550

26、2 的速度为100 MI/s,为保证DSP运行速度,需要外部存储器的速度接近10ns。系统选择ICSI64LV16作为外部存储器,其容量64K字×16 bit。其硬件连接图如图3.1-5所示。图3.1-5数据存储器扩展电路3.1.7 JTAG接口设计在系统中,通过JTAG测试口访问和调试DSP芯片。JTAG是一种国际标准测试协议(IEEE 1149.1兼容),针对现代超大规模集成电路测试、检验困难而提出的基于边界扫描机制和标准测试存取口的国际标准。标准JTAG测试端口包括4个必选引脚和一个可选的异步JTAG的复位引脚TRST,分别是工作模式选择引脚TMS,串行数据输入引脚TDI,串行

27、数据输出引脚TDO,端口工作时钟引脚TCK。JTAG接口引脚连接如图3.1-6所示。图3.1-6 JTAG接口引脚连接图3.1.8 A/D接口电路设计A/D转换模块是整个系统的主要部分,它接收来自外部的信号或模拟数据,然后经过处理转换成数字信号传递给CPU做后续的处理。TLC320AD50是一款SIGMA- DELTA 型单片音频接口芯片, 通过串行口与DSP 或其它设备通信。它内部集成了16 位的D/A 和A/D 转换器, 采样速率最高可达22.05 Kb/s, 其采样速率可通过DSP 编程来设置。设置AD50时,串行通信数据最低为高电平。在DAC 之前有一个插值滤波器以保证输出信号平滑,

28、ADC 之后有一个抽取滤波器以提高输入信号的信噪比。AD50 的发送和接收可以同时进行。图3.1-7 TLC320AD50与 TMS320VC5509 串行口的连接3.1.9总体电路图 第四章 CCS集成开发工具4.1 CCS是什么 通常,DSP厂商和第三方都会为DSP的开发应用提供各种各样的软硬件开发工具(代码生成工具和代码调试工具等)。早期的DSP开发工具没有集成化,需要在DOS环境下键入比较复杂的命令,使用起来不很方便,调试、开发的效率也不高。1999年,TI公司推出了CCS(Code Composer Studio)集成开发工具(直译为代码设计工作室),为DSP用户提供了十分便利的开发

29、环境。CCS内部集成了以下软件工具:u DSP代码生成工具(包括DSP的C编译器、汇编优化器、汇编器和链接器等)u CCS集成开发工具(编辑、链接和调试DSP目标程序)。u 实时分析插件DSP/BIOS和实时数据交换模块RTDX等(必须有硬件开发板)。CCS是一种可视化集成开发工具,它集代码生成软件和代码调试工具于一体,具有强大的应用开发功能:可视化代码编辑界面:可以直接编写汇编语言和C语言程序、.H头文件和.CMD命令文件等。代码生成工具:包括DSP的汇编器、C编译器和链接器等。各种调试工具:包括加载执行文件、运行、单步操作、设置断点、查看编辑存储器和寄存器、观察变量、评估程序和执行时间等。

30、探针工具:可将PC机数据文件中的数据传到DSP,或者将DSP中数据传到PC机数据文件中,以便实现各种算法仿真和数据监视。图形显示工具:可以将DSP程序生成的数据绘制成时域/频域图等,以便于观察和分析。通用扩展语言GEL:可以让用户通过GEL语言编程,建立需要的GEL函数来扩展CCS的功能,包括配置各种参数、修改变量等。DSP/BIOS工具:它是DSP芯片简化了的操作系统内核,即各种DSP芯片操作系统的底层文件,为嵌入式系统应用提供基本的运行服务,具有代码较少、逻辑精简等优点。开放式的插入架构技术:只需安装相应的驱动程序,就能够集成第三方的专用插件。4.2 CCS窗口简介 4.2.1 CCS窗口

31、示例 CCS系统设置完成后,就可以打开CCS应用程序,在CCS集成开发环境下完成工程定义,程序的编辑、编译、链接和调试,以及程序运行结果的分析和评估等工作。一个典型的CCS集成开发环境住窗口如图3-1所示。该示例窗口由菜单栏、工具栏、工程窗口、源程序编辑和调试窗口、存储器窗口、CPU寄存器窗口、输出窗口等组成。此外,还可以根据需要打开反汇编窗口、图形显示窗口、变量观察窗口,以及时钟窗口等。图3-1 CCS应用窗口示例 4.2.2 CCS中常用的工具菜单栏和CCS所有功能相关的菜单都在这里面。 编译工具栏编译程序时常用的一些工具。 调试工具栏调试程序时常用的一些工具。 工程文件框打开的工程所有文

32、件会按类别放在这里,便于我们编程时在各个文件之间的切换。 代码编辑区顾名思义,代码都是在这里编辑完成的了,是我们最主要的工作区域。 编译信息输出区编译时产生的信息会在这个区域内输出,能让我们直观的了解到正在编译哪个文件,编译过程中是否产生了错误,而这些错误是哪些,由于什么原因引起的,这些内容都会显示在这里。4.3 CCS的安装与设置CCS的安装步骤如下:(1)将CCS的安装光盘插入计算机的CD-ROM光盘驱动器中,运行CCS安装程序Set-up.exe.按屏幕提示,将CCS系统安装到C:ti(默认系统)安装目录下。安装完成后:在桌面上将出现Set-upCCS2(C5000)和CCS2(C500

33、0)两个快捷方式图标,分别对应CCS配置程序和CCS应用程序。在C:ti目录下有bin、c5400、c5500、cc、docs、drivers、examples、myprojects、plugins、 tutoria、uninstall共11个文件夹,以及DosRun等3个文件夹,用户的工程文件都将存放在myprojects文件夹下。(2)单击Set-upCCS2(C5000)快捷方式图标,运行CCS配置程序,弹出对话框如图3-2所示。图3-2 CSS配置对话框从对话框的Available Configurations列表框中选择应用平台类型。配置完成后,保存设置并退出。CCS系统将C5402

34、软件仿真器作为系统配置,显示在System Configuration列表框中。第五章 正弦信号发生器的实现过程5.1 正弦信号发生器的理论实现开始 5.1.1 常用的理论实现方法初始化设置调用sin.cos程序计算045°值在通信、仪器和控制等领域的信号处理系统中,可能会用到正弦波信号发生器。一般来说产生正弦波的方法有两种:Sin2a=2sina*cosa求090°的sin值(间隔为1°)查表法:此方法用于对精度要求不高的场合,如果要求精度高,表就很大,相应的存储器容量也要增大。重复向PA口输出重复得到0359°正弦值泰勒级数展开法。这是一种更为有效的

35、方法。与查表法相比,该方法需要的存储单元很少,而且精度高。正弦波一个角度正弦和余弦函数,都可以展开成泰勒级数,取其前5项进行近似。图4-1 程序流程图结束本次课程设计利用泰勒级数展开法求正弦值,产生正弦波。软件流程图如图4-1 5.1.2 编程实现先计算045°(间隔为0.5°)的sin和cos值,在利用sin2a=2sina*cosa求出sin值(间隔为1°)。然后,通过复制,获得0359°的正弦值。重复向 5.1.2 编程实现先计算045°(间隔为0.5°)的sin和cos值,在利用sin2a=2sina*cosa求出sin值(间

36、隔为1°)。然后,通过复制,获得0359°的正弦值。重复向PA口输出,便可得到正弦波。程序如下:1.产生正弦波程序清单sin.asm: .title "sin.asm" ;为汇编文件取名为“sin.asm” .mmregs ;定义存储器映像寄存器 .def _c_int00 .ref sinx,d_xs,d_sinx,cosx,d_xc,d_cosx;定义标号sin_x: .usect "sin_x",360 ;为"sin_x"保留360个存储空间STACK: .usect "STACK",10

37、 ;为堆栈保留10个存储空间k_theta .set 286 ;theta=pi/360(0.5deg)PA0 .set 0_c_int00 .text ;定义文本程序代码段 STM #STACK+10,SP ;设置堆栈指针 STM k_theta,AR0 ;AR0->K_theta(increment) STM 0,AR1 ;(AR1)=X(rad) STM #sin_x,AR6 ;AR6- - >sin(x) STM #90,BRC ;form sin0(deg.)sin90(deg);重复执行块语句(下条语句开始至loop1-1 )91次 RPTB loop1-1 LDM A

38、R1,A LD #d_xs,DP ;DPd_xs STL A,d_xs ;(A)低16位d_xs STL A,d_xc ;(A)低16位d_xc CALL sinx ;调用sinx程序 CALL cosx ;调用conx程序 LD #d_sinx,DP ;DPß d_sinx LD d_sinx,16,A ;A=sin(x) MPYA d_cosx ;B= sin(x)*cos(x) STH B,1,*AR6+ ;AR6- - >2*sin(x)*cos(x) MAR *AR1+0 ;修改辅助寄存器AR1loop1: STM #sin_x+89,AR7 ;sin91(deg.)

39、- -sin179(deg.) STM #88,BRC ;重复执行下条指令至loop2-1 RPTB loop2-1 ;处90次 LD *AR7-,A ;(AR7) A,然后AR7减去1 STL A,*AR6+ ;(A) 低16位AR6loop2: STM #179,BRC ;sin180(deg.)- -sin359(deg.);(BRC)=179,重复执行180次 STM #sin_x,AR7 ;AR7指向sin_x首地址 RPTB loop3-1 ; LD *AR7+,A ;(AR7) A,然后AR7加1 NEG A ;累加器变负 STL A,*AR6+ ;A低16位AR6loop3:

40、STM #sin_x,AR6 ;generate sin wave AR6指向sin_x STM #1,AR0 ;ARß 01 STM #360,BK ;BKß360loop4: PORTW *AR6+0%,PA0 ;PA0=*AR6+0%,向PA0输出数据 B loop4 ;sinx: .def d_xs,d_sinx ;定义标号d_xs,d_sinx .data ;定义数据代码段table_s .word 01c7h ;c1=1/(8*9) .word 030bh ;c1=1/(6*7) .word 0666h ;c1=1/(4*5) .word 1556h ;c1=1

41、/(2*3)d_coef_s .usect "coef_s",4 ;为"coef_s"保留4个存储空间d_xs .usect "sin_vars",1 ;为d_xs中sin_vars保留1个存储空间d_squr_xs .usect "sin_vars",1 ;为d_squr_xs中sin_vars保留1个存储空间d_temp_s .usect "sin_vars",1 ;为d_temp_s中sin_vars保留1个存储空间d_sinx .usect "sin_vars",1

42、;为d_sinx中sin_vars保留1个存储空间c_l_s .usect "sin_vars",1 ;为d_xs中sin_vars保留1个存储空间 .text ;定义代码开始段 SSBX FRCT ;设置FRCT=1以解决冗余符号位 STM #d_coef_s,AR5 ;AR5指向d_coef_s首地址 RPT #3 ;重复下条指令4次 MVPD #table_s,*AR5+ ;table_s中的数复制到AR5指向的单元 STM #d_coef_s,AR3 ;AR3指向d_coef_s首地址 STM #d_xs,AR2 ;AR2指向d_xs首地址 STM #c_l_s,A

43、R4 ;AR4指向c_l_s首地址 ST #7FFFh,c_l_s ;7FFFh c_l_s SQUR *AR2+,A ;AR2指向累加器A中的数值求其平方 ST A,*AR2 ;(A)左移16位AR2 |LD *AR4,B ;(AR4)左移16位B MASR *AR2+,*AR3+,B,A ;从累加器A中减去(AR2)*(AR3) MPYA A ;操作数与累加器A中高位相乘 STH A,*AR2 ;(A)高16位AR2 MASR *AR2-,*AR3+,B,A ;从累加器A中减去(AR2)*(AR3) MPYA *AR2+ ;AR2指向的数与累加器A的高16位相乘 ST B,*AR2 ;(B

44、)左移16位AR2 |LD *AR4,B ;(AR4)左移16位B MASR *AR2-,*AR3+,B,A ;从累加器A中减去(AR2)*(AR3) MPYA *AR2+ ;与累加器A中高16位相乘 ST B,*AR2 ;(B)左移16位AR2 |LD *AR4,B ;(AR4)左移16位B MASR *AR2-,*AR3+,B,A ;从累加器A中减去(AR2)*(AR3) MPYA d_xs ;d_xs指向的操作数与累加器A中高16位相乘 STH B,d_sinx ;(B)高16位d_sinx RET ;返回cosx: .def d_xc,d_cosx ;定义标号d_xc,d_cosxd_

45、coef_c .usect "coef_c",4 ;为coef_c保留4个存储空间 .data ;定义数据代码段table_c .word 0249h ;c1=1/(7*8) .word 0444h ;c2=1/(6*5) .word 0aabh ;c3=1/(3*4) .word 4000h ;c4=1/2d_xc .usect "cos_vars",1 ;为d_xc中cos_vars保存1个存储单元d_squr_xc .usect "cos_vars",1 ;为d_squr_xc中cos_vars保存1个存储单元d_temp_c

46、.usect "cos_vars",1 ;为d_temp_c中cos_vars保存1个存储单元d_cosx .usect "cos_vars",1 ;为d_cosx中cos_vars保存1个存储单元c_l_c .usect "cos_vars",1 ;为c_l_c中cos_vars保存1个存储单元 .text ;定义文本代码段 SSBX FRCT ;FRCT=1以清除冗余符号位 STM #d_coef_c,AR5 ;AR5指向d_coef_c首地址 RPT #3 ;重复下条指令4次 MVPD #table_c,*AR5+ ;把tabl

47、e_c中的数复制到中AR5 STM #d_coef_c,AR3 ;AR3指向d_coef_c首地址 STM #d_xc,AR2 ;AR2 指向d_xc首地址 STM #c_l_c,AR4 ;AR4指向c_l_c首地址 ST #7FFFh,c_l_c ;7FFFhc_l_c SQUR *AR2+,A ;求X的平方存放在累加器A中 ST A,*AR2 ;(A)左移16位AR2 |LD *AR4,B ;(AR4)左移16位B MASR *AR2+,*AR3+,B,A ;A=1-x2/56,T=x2 MPYA A ;A=T*A=x2(1-x2/56) STH A,*AR2 ;(d_temp)= x2(

48、1-x2/56) MASR *AR2-,*AR3+,B,A ;A=1-x2/30(1-x2/56),T= x2(1-x2/56) MPYA *AR2+ ;B=x2(1-x2/30(1-x2/56) ST B,*AR2 ;(d_temp)= x2(1-x2/30(1-x2/56) |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A= 1-x2/12(1-x2/30(1-x2/56) SFTA A,-1,A ;-1/2 NEG A ; MPYA *AR2+ ;B=1-x2/2(1-x2/12(1-x2/30 ;(1-x2/56) MAR *AR2+ ; RETD ; A

49、DD *AR4,16,B ;B=1-x2/2(1-x2/12(1-x2/30 ;(1-x2/56) STH B,*AR2 ;cos(theta) RET ; .end ;2. .cmd文件描述输入文件和输出文件,说明系统中有哪些可用存储器、程序段、堆栈及复位向量和中断向量等安排在什么地方。其中MEMORY段就是用来规定目标存储器的模型,通过这条指令,可以定义系统中所包含的各种形式的存储器,以及它们占据的地址范围;SECTIONS段说明如何将输入段组合成输出段以及在可执行文件中定义输出段、规定输出段在存储器中的位置等。正弦波程序链接命令文件sin.cmd:MEMORY PAGE 0: EPROM: org = 0E000h, len = 1000h VECS: org = 0FF80h, len = 0080h PAGE 1: SPRAM: org = 0060h, len = 0020h DARAM1: org = 0080h, len = 0010h DARAM2: org = 0090h, len = 0010h DARAM3: org = 0200h,

温馨提示

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

评论

0/150

提交评论