DSP课程设计

时间:2024.4.20

课程设计说明书

名   称     正弦信号发生器  

院  系                     

班   级                     

姓   名                     

学   号                     

              系 主 任                   

              教研室主任                   

         指导教师             

 

  

第一章  绪论....................................................... 1

第二章  DSP芯片的介绍.............................................. 3

2.1  DSP芯片的特点............................................. 3

2.1.1  DSP芯片主要特点...................................... 3

2.1.2  DSP芯片的优缺点...................................... 4

2.2  DSP芯片的分类............................................. 4

2.3  DSP芯片的应用............................................. 5

2.4  TMS320C54X芯片的介绍...................................... 6

第三章CCS集成开发工具............................................. 9

3.1  CCS是什么................................................. 9

3.2  CCS窗口简介.............................................. 10

3.2.1  CCS窗口示例......................................... 10

3.2.2  CCS中常用的工具..................................... 11

3.3  CCS的安装与设置.......................................... 11

第四章正弦信号发生器的实现过程.................................... 13

4.1  正弦信号发生器的理论实现.................................. 13

  4.1.1  常用的理论实现方法................................ 13

4.1.2  编程实现............................................ 13

4.2  调试过程.................................................. 18

第五章 实验心得与体会............................................. 23

第一章  绪论

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

数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。数字信号处理在理论上的发展推动了数字信号处理应用的发展。反过来,数字信号处理的应用又促进了数字信号处理理论的提高。而数字信号处理的实现则是理论和应用之间的桥梁。数字信号处理是以众多的学科为理论基础的,它所涉及的范围及其广泛。例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。一些新兴的学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。

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

第二章  DSP芯片的介绍

2.1  DSP芯片的特点

 DSP芯片,也称数字信号处理器, 是一种具有特殊结构的微处理器。DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。

2.1.1  DSP芯片主要特点

根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:

⑴在一个指令周期内可完成一次乘法和一次加法。

⑵程序和数据空间分开,可以同时访问指令和数据。

⑶片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。

⑷具有低开销或无开销循环及跳转的硬件支持。

⑸快速的中断处理和硬件I/O支持。

⑹具有在单周期内操作的多个硬件地址产生器。

⑺可以并行执行多个操作。

⑻支持流水线操作,使取指、译码和执行等操作可以重叠执行。

⑼与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

2.1.2  DSP芯片的优缺点

DSP芯片主要应用在信号处理 、图像处理 、仪器 、声音语言 、控制军事 、通讯 、医疗 、家用电器等诸多领域。其优点主要有:大规模集成性、稳定性好、精度高、可编程性、高速性能、可嵌入性、接口和集成方便;缺点主要有:成本较高、高频时钟的高频干扰、功率消耗较大等。

2.2  DSP芯片的分类

DSP芯片可以按照下列三种方式进行分类。

1.按基础特性分

这是根据DSP芯片的工作时钟和指令类型来分类的。如果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称为静态DSP芯片。例如,日本OKI 电气公司的DSP芯片、TI公司的TMS320C2XX系列芯片属于这一类

如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称为一致性DSP芯片。例如,美国TI公司的TMS320C54X就属于这一类。

2.按数据格式分

这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP芯片称为定点DSP芯片,如TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/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.按用途分

按照DSP的用途来分,可分为通用型DSP芯片和专用型DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片属于通用型DSP芯片。专用DSP芯片是为特定的DSP运算而设计的,更适合特殊的运算,如数字滤波、卷积和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就属于专用型DSP芯片。

2.3  DSP芯片的应用

数字信号处理(DSP)芯片是一种特别适合于进行数字信号处理运算的微处理器可实时快速地实现各种数字信号处理算法。自20世纪80年代初诞生以来已广泛应用于通信、电子、航空航天、军事及家电产品成为一种十分重要的电子产品的核心部件。DSP芯片得到了飞速的发展。DSP芯片的高速发展,一方面得益于集成电路技术的发展,另一方面也得益于巨大的市场。在近20年时间里,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前,DSP芯片的价格越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP芯片的应用主要有:

(1) 信号处理——如数字滤波、自适应滤波、快速傅立叶变换、相关运算、谱分析、卷积、模式匹配、加窗、波形产生等;

(2) 通信——如调制解调器、自适应均衡、数据加密、数据压缩、回波抵消、多路复用、传真、扩频通信、纠错编码、可视电话等;

(3) 语音——如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音存储等;

(4) 图形/图像——如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等;

(5) 军事——如保密通信、雷达处理、声纳处理、导航、导弹制导等;

(6) 仪器仪表——如频谱分析、函数发生、锁相环、地震处理等;

(7) 自动控制——如引擎控制、声控、自动驾驶、机器人控制、磁盘控制等;

(8) 医疗——如助听、超声设备、诊断工具、病人监护等;

(9) 家用电器——如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等。

随着DSP芯片性能价格比的不断提高,可以预见DSP芯片将会在更多的领域内得到更为广泛的应用。

2.4  TMS320C54X芯片的介绍

    TMS320 C54x系列DSP芯片是使用静态CMOS技术制造的。其方框图见图2-1,从图中可以看出C54x系列DSP芯片具有以下功能单元:

       总线

       C54x共有八条总线分别是:

       PB: 程序读取总线           CB: 数据读取总线1
       DB: 数据读取总线2         EB: 数据写入总线
       PAB: 程序读取地址总线      CAB: 数据读取地址总线1
       DAB: 数据读取地址总线2    EAB: 数据写入地址总线

       中央处理器(CPU)

       CPU由以下几个部件组成:

       先进的多总线结构: 包括三个独立的数据总线和一个程序总线

       40位的算术逻辑单元: 包括一个40位移位器和两个独立的40位累加器

       17bit 17bit的并行乘法器同一个专用的加法器相配合: 用来执行不经流水线的单周期乘加(MAC)运算

       指数译码器: 可以在一个周期里计算出一个40位累加器的指数值

       两个地址生成器: 包括8个辅助寄存器和两个辅助寄存器算术单元

       程序控制器: 对指令进行解码、管理流水线和程序流程

       片上存储器

   C54x共有192K字的寻址能力(64K字的程序区,64K字的数据区,和64K字的I/O区)如图2-2所示。

芯片内部采用改进的哈佛结构,允许同时取指令和取数据,而且还允许在程序空间和数据空间之间相互传送数据。 所谓哈佛结构,是将程序和数据的存贮空间分开,各有各的地址总线和数据总线。这样同一条指令可以同时对不同的存贮空间进行读操作或写操作,从而提高了处理速度。

C54x DSP芯片还提供了块指令循环功能,此功能可以大大地提高执行循环的速度,但是此功能只能在一重循环中使用,因为它只提供了一个循环记数寄存器BRC,所以在遇到多重循环时就要尽量把这个功能用在最里层的循环中,最里层循环是执行次数最多的循环。 

C54xDSP结构框图

   图2-1 C54x DSP结构框图

第0页程序存储器           第0页程序存储器                   数据存储器

文本框: MP/MC=1
微处理器方式

 

下表1给出了部分C54x芯片的片上资源、运算能力、工作电压等。运算能力用MIPS来度量,即每秒能执行一百万条指令的数量。

 表1:部分C54X芯片资料

第三章CCS集成开发工具

3.1  CCS是什么

通常,DSP厂商和第三方都会为DSP的开发应用提供各种各样的软硬件开发工具(代码生成工具和代码调试工具等)。早期的DSP开发工具没有集成化,需要在DOS环境下键入比较复杂的命令,使用起来不很方便,调试、开发的效率也不高。1999年,TI公司推出了CCS(Code Composer Studio)集成开发工具(直译为代码设计工作室),为DSP用户提供了十分便利的开发环境。

CCS内部集成了以下软件工具:

u  DSP代码生成工具(包括DSP的C编译器、汇编优化器、汇编器和链接器等)

u  CCS集成开发工具(编辑、链接和调试DSP目标程序)。

u  实时分析插件DSP/BIOS和实时数据交换模块RTDX等(必须有硬件开发板)。

CCS是一种可视化集成开发工具,它集代码生成软件和代码调试工具

于一体,具有强大的应用开发功能:

⑴可视化代码编辑界面:可以直接编写汇编语言和C语言程序、.H头文件和.CMD命令文件等。

⑵代码生成工具:包括DSP的汇编器、C编译器和链接器等。

⑶各种调试工具:包括加载执行文件、运行、单步操作、设置断点、查看编辑存储器和寄存器、观察变量、评估程序和执行时间等。

⑷探针工具:可将PC机数据文件中的数据传到DSP,或者将DSP中数据传到PC机数据文件中,以便实现各种算法仿真和数据监视。

⑸图形显示工具:可以将DSP程序生成的数据绘制成时域/频域图等,以便于观察和分析。

⑹通用扩展语言GEL:可以让用户通过GEL语言编程,建立需要的GEL函数来扩展CCS的功能,包括配置各种参数、修改变量等。

⑺DSP/BIOS工具:它是DSP芯片简化了的操作系统内核,即各种DSP芯片操作系统的底层文件,为嵌入式系统应用提供基本的运行服务,具有代码较少、逻辑精简等优点。

⑻开放式的插入架构技术:只需安装相应的驱动程序,就能够集成第三方的专用插件。

3.2  CCS窗口简介

3.2.1  CCS窗口示例

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

图3-1  CCS应用窗口示例

3.2.2  CCS中常用的工具

菜单栏——和CCS所有功能相关的菜单都在这里面。

编译工具栏——编译程序时常用的一些工具。

调试工具栏——调试程序时常用的一些工具。

工程文件框——打开的工程所有文件会按类别放在这里,便于我们编程时在各个文件之间的切换。

代码编辑区——顾名思义,代码都是在这里编辑完成的了,是我们最主要的工作区域。

编译信息输出区——编译时产生的信息会在这个区域内输出,能让我们直观的了解到正在编译哪个文件,编译过程中是否产生了错误,而这些错误是哪些,由于什么原因引起的,这些内容都会显示在这里。

3.3  CCS的安装与设置

CCS的安装步骤如下:

(1)将CCS的安装光盘插入计算机的CD-ROM光盘驱动器中,运行CCS安装程序Set-up.exe.按屏幕提示,将CCS系统安装到C:\ti(默认系统)安装目录下。安装完成后:

①在桌面上将出现Set-upCCS2(’C5000)和CCS2(’C5000)两个快捷方式图标,分别对应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软件仿真器作为系统配置,显示在System  Configuration列表框中。

第四章正弦信号发生器的实现过程

4.1  正弦信号发生器的理论实现

  4.1.1  常用的理论实现方法

在通信、仪器和控制等领域的信号处理系统中,可能会用到正弦波信号发生器。一般来说产生正弦波的方法有两种:

①查表法:此方法用于对精度要求不高的场合,如果要求精度高,表就很大,相应的存储器容量也要增大。

②泰勒级数展开法。这是一种更为有效的方法。与查表法相比,该方法需要的存储单元很少,而且精度高。

一个角度正弦和余弦函数,都可以展开成泰勒级数,取其前5项进行近似。

本次课程设计利用泰勒级数展开法求正弦值,产生正弦波。软件流程图如图4-1

4.1.2  编程实现

先计算0~45°(间隔为0.5°)的sin和cos值,在利用sin2a=2sina*cosa求出sin值(间隔为1°)。然后,通过复制,获得0~359°的正弦值。重复向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   ;为堆栈保留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      AR1,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         ;修改辅助寄存器AR1

loop1:    STM      #sin_x+89,AR7  ;sin91(deg.)- -sin179(deg.)

          STM      #88,BRC        ;重复执行下条指令至loop2-1

          RPTB     loop2-1        ;处90次

          LD       *AR7-,A        ;((AR7)) →A,然后AR7减去1

          STL      A,*AR6+        ;(A) 低16位→AR6

loop2:    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位→AR6

loop3:    STM      #sin_x,AR6     ;generate sin wave AR6指向sin_x

          STM      #1,AR0         ;ARß 01

          STM      #360,BK        ;BKß360

loop4:    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/(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      ;为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,AR4        ;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)左移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_cosx

d_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/2

d_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  .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+    ;把table_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      ;7FFFh→c_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-x^2/56,T=x^2

          MPYA     A                 ;A=T*A=x^2(1-x^2/56)

          STH      A,*AR2            ;(d_temp)= x^2(1-x^2/56)

          MASR     *AR2-,*AR3+,B,A   ;A=1-x^2/30(1-x^2/56),

T= x^2(1-x^2/56)

          MPYA     *AR2+             ;B=x^2(1-x^2/30(1-x^2/56))

          ST       B,*AR2            ;(d_temp)= x^2(1-x^2/30(1-x^2/56))

           ||LD    *AR4,B            ;B=1

          MASR     *AR2-,*AR3+,B,A   ;A= 1-x^2/12(1-x^2/30(1-x^2/56))

          SFTA     A,-1,A            ;-1/2

          NEG      A                 ;

          MPYA     *AR2+             ;B=1-x^2/2(1-x^2/12(1-x^2/30

                                     ;(1-x^2/56)))

          MAR      *AR2+             ;

          RETD                       ;

          ADD      *AR4,16,B         ;B=1-x^2/2(1-x^2/12(1-x^2/30

                                     ;(1-x^2/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,      len = 0200h

}

SECTIONS 

{

 .text     :>EPROM     PAGE 0 ;文本代码段其实地址为0E000h,长度为1000h

 .data     :>EPROM     PAGE 0 ;数据代码段其实地址为0D000h

 STACK     :>SPRAM     PAGE 1 ;堆栈起始地址为0060h,长度为0020h

 sin_vars  :>DARAM1    PAGE 1 ;标号为sin_vars段的起始地址为0080

;长度为0010h

 coef_s    :>DARAM1    PAGE 1 ;标号为coef_s段的起始地址为0070h

                              ;长度为0010h

 cos_vars  :>DARAM2    PAGE 1 ;标号为cos_vars段的起始地址为0090h

                              ;长度为0010h

 coef_c    :>DARAM2    PAGE 1 ;标号为coef_c段的起始地址为0080h

                              ;长度为0020h

 sin_x     : align(512) {} > DARAM3  PAGE 1

 .vectors  :>VECS      PAGE 0

}

3.复位向量文件sin_v.asm:

     .title      "sin_v.asm"

     .ref        _c_int00

     .sect       ".vectors"

     B           _c_int00

.end

4.2  调试过程

1.      打开Setup CCStudio v3.3如图4-2所示。

图4-1 Setup CCStudio v3.3的打开界面

2.选择C5402芯片并加载,如图4-3-1、图4-3-2和图4-3-3所示:

.

图4-3-1选择C5402芯片

图4-3-2加载芯片

图4-3-3确定已加载

3.输入4.1.2节的三个程序,保存名称分别为“sin.asm”、“sin.cmd”、“sin_v.asm”。如图4-4所示。

图4-4  输入程序

4.新建工程名为“shiyan”,保存路径为C:// CCStudio v3.3/ MyProjects/shiyan。如图4-5所示。

图4-5  新建工程对话框

5.将三个程序加载入新建工程“shiyan”里,对三个文件进行编译链接,若有错误进行改正,直至无误,如图4-6所示:

图4-6  编译链接无误界面

6.选择View→Graph→Time/Frequency,如图4-7-1所示,调出如图4-7-2所示对话框,进行参数设置。

图4-7-1  选择View→Graph→Time/Frequency

图4-7-2显示滤波器冲击响应图行参数设置对话框

7.查看波形。如图4-8所示。

图4-8  实验所得正弦波形

第五章 实验心得与体会

作为电子信息工程系学生,学过DSP之后,我觉得能做这样的课程设计是十分有意义。在已度过的两年大学生活里我们大多数接触的是专业基础课。我们在课堂上掌握的仅仅是专业基础课的理论面,如何去面对现实中的各种电子设计?如何把我们所学到的专业基础理论知识用到实践中去呢?我想做类似的大作业就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当属查阅了很多次设计书和指导书。为了让自己的设计更加完善,更加符合工程标准,一次次翻阅机械设计书是十分必要的,同时也是必不可少的。我们做的是课程设计,而不是艺术家的设计。艺术家可以抛开实际,尽情在幻想的世界里翱翔,我们是工程师,一切都要有据可依.有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。因为这样的设计,理论上可用,实际上加工困难,增加产品成本。所以我们工程师搞设计不要认为自己是艺术家,除非是外形包装设计。
    作为一名专业学生掌握一门或几门专业软件同样是必不可少的,对专业学习十分有利。    另外,课堂上也有部分知识不太清楚,于是我又不得不边学边用,时刻巩固所学知识,这也是我作本次课程设计的第二大收获。整个设计我基本上还满意,由于水平有限,难免会有错误。我会在以后的学习中不断进步!

参考文献:

程佩青  《数字信号处理教程》(第二版)  清华大学出版社  20##年

戴明帧 周建江《TMS320C54X DSP结构、原理及应用》(第二版)

北京航空航天大学出版社  2007

雷勇  《DSP系统设计与实践》  电子工业出版社  2005

www.cadedu.com

   www.baidu.com

更多相关推荐:
工程预算课程设计总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着工程技术发展的日新日异,工程造价已经成为当今建筑工程领域最为重要的管理环…

c++课程设计总结

课程设计总结经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在为期近两周的C++课程设计中,我体会颇多…

化工原理课程设计总结

《化工原理课程设计》总结本学期顺利完成了化学工程与工艺专业共100名同学的化工原理课程设计,总体来看学生的工艺计算、过程设计及绘图等专业能力得到了真正有效的提高,可以较好地把理论学习中的分散知识点和实际生产操作…

PLC自动门课程设计心得体会

PLC自动门课程设计心得体会:通过此次C语言程序设计实践本人实在是获益不浅!C语言是上个学期开的课程所以这个学期并没怎么看过当要开始设计的时候还真不知从哪下手!结果第一次的上机我傻坐着不知道该做什么后来就写了几…

课程设计心得体会

课程设计心得体会在初学C语言的一个学期后,学校组织我们进行了C语言实训,尝试编写一些有难度的程序。在为期两周的时间中,同组同学共同的感受是:C语言实训和平时上课所接触的程序是完全不同的,所经受的考验是平时所无法…

综合实践活动课程设计练习题(判断题、填空题、名词解释、简答题)

单选题第1题(3.0)分下列以研究性为主的探究活动的实施程序哪个是正确的√A、产生问题-确定主题-组建小组-制定计划-开展活动-总结成果-展示交流-评价反思B、产生问题--组建小组-确定主题-制定计划-开展活动…

20xx年《管理信息系统》课程设计论文选题

20xx年《管理信息系统》课程设计论文选题一、管理信息系统设计与开发1、IT行业市场情报管理信息系统设计与开发2、某工业企业生产业务处理信息系统设计与开发3、某产品质量管理信息系统设计与开发4、某工业企业设备管…

消防课程设计范文.doc

课程设计课题名称所在班级同组姓名指导教师目录1前言12简介13火灾危险性分析231学生公寓的火灾特点232学生公寓的火灾危险性等级233学生公寓的耐火等级2331建筑物耐火等级的划分2332建筑物耐火等级的选定...

化工原理课程设计范文

化工原理课程设计3题目吸收量为2400mh水吸收丙酮过程填料塔设计教学院专业班级学生姓名学生学号指导教师20xx年12月24日I目录任务书1摘要2第一章绪论311吸收技术概况312吸收设备的发展313吸收过程在...

毕业论文及课程设计参考模版

摘要摘要电信营业厅顾客排队是一个常见的现象为了提高顾客满意度并为实现电信企业转型提供保障必须解决好这个问题而解决该问题的基本目标是平稳波动的顾客需求与电信营业厅有限的服务能力之间的矛盾本文基于排队论和需求管理的...

课程设计排版范本

课程设计课题名称我校顺枫公寓A6栋的消防现状分析与改进专业名称安全工程所在班级安本0803班设计者解燕同组人姜琼学号0860124031008601240212指导教师胡鸿湖南工学院课程设计任务书安全与环境工程...

创新课程设计范例

机械创新设计课程设计院系班级成员指导老师设计题目1年月日多功能平口钳设计方案一设计任务简述多功能平口钳为了实现平口钳的多功能化解决平口钳功能单一的问题设计出一种多功能平口钳其我们将钳口作成燕尾槽结构并配合以不同...

课程设计(518篇)