dsp期末考试实验报告

2023-06-05

随着国民文化水平的提升,报告在工作与学习方面,已经成为了常见记录方式。报告是有着写作格式与技巧的,写出有效的报告十分重要。下面是小编为大家整理的《dsp期末考试实验报告》,供需要的小伙伴们查阅,希望能够帮助到大家。

第一篇:dsp期末考试实验报告

DSP实验报告

实验0 实验设备安装才CCS调试环境 实验目的:

按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤:

以演示实验一为例:

1. 使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;

2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStartsinewave”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;

3. 打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示;

4. 点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框

5. 双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;

6. 点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察

7. 点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:

心得体会:

通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。 实验二 基本算数运算

2.1 实验目的和要求

加、减、乘、除是数字信号处理中最基本的算术运算。DSP 中提供了大量的指令来

实现这些功能。本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法

和编程技巧。本实验的演示文件为exer1.out。

2.2 实验原理

1 定点 DSP 中的数据表示方法

C54X 是16 位的定点DSP。一个16 位的二进制数既可以表示一个整数,也可以表

示一个小数。当它表示一个整数时,其最低位(D0)表示20,D1 位表示21,次高位(D14) 表示214。

2 实现 16 位定点加法

C54X 中提供了多条用于加法的指令,如ADD,ADDC,ADDM 和ADDS。其中

ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32 位扩展精度加

法),而ADDM 专用于立即数的加法。

3 实现 16 位定点减法

C54X 中提供了多条用于减法的指令,如SUB,SUBB,SUBC 和SUBS。其中SUBS 用于无符号数的减法运算,SUBB 用于带进位的减法运算(如32 位扩展精度的减法),

而SUBC 为移位减,DSP 中的除法就是用该指令来实现的。

4 实现 16 位定点整数乘法

在C54X 中提供了大量的乘法运算指令,其结果都是32 位,放在A 或B 寄存器

中。乘数在C54X 的乘法指令很灵活,可以是T 寄存器、立即数、存贮单元和A 或B 寄存器的高16 位。

5 实现 16 位定点小数乘法

在 C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,

其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X 中提供了一个状态位FRCT,将其设置为1 时,系统自动将乘积结果左移一位。但注意

整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。两个小数(16 位)

相乘后结果为32 位,如果精度允许的话,可以只存高16 位,将低16 位丢弃,这样仍可

得到16 位的结果。 6 实现 16 位定点整数除法

在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法

来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于

除以常数特别适用。另一种方法是使用SUBC 指令,重复16 次减法完成除法运算。

7 实现 16 位定点小数除法

在 C54X 中实现16 位的小数除法与前面的整数除法基本一致,也是使用循环的

SUBC 指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),

所以被除数一定小于除数。

2.3 实验内容

本实验需要使用C54X 汇编语言实现加、减、乘、除的基本运算,并通过DES 的存 贮器显示窗口观察结果。 1 编写实验程序代码

2 用 ccs simulator 调试运行并观察结

2.4 实验结果

1、加法结果

2、乘法结果

3、减法结果

4、除

2.5 思考题(0.5、0.25)

实验三 C54X的浮点数的算术运

一、实验目的

1 练习 TMS320C54X 汇编程序的编写与调试方法,重点练习C54X 程序流程控制的方法。

2 学习并掌握应用 TMS320C54X 来进行浮点数的各种算术运算的算法实现。

3 练习并掌握 TMS320C54X 的汇编语言的汇编指令系统的使用方法,重点练习具有C54X 特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。

4 练习并掌握用 CCS 调试程序的一些基本操作。 二.实验原理 1 浮点数的表示方法

在定点运算中,小数点是在一个特定的固定位置。例如,如果一个 32-bit 的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。在定点运

算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到限制。 3 浮点数运算的步骤

程序代码分成四个 ASM 文件输入,通过编译生成.obj 文件,连接生成.out 文件后就可以在DES320PP-U 实验系统上调试运行(先要创建一个工程文件,然后加入四个工程文件,并且一起编译,连接。因为每个文件都对下一个文件作了引用)。步骤如下:

a. 首先启动 setup CCS C5000,在其中设置目前需要的CCS 的工作状态为C54xxsimulator,保存这一设置并退出。然后再启动CCS 实验系统软件CCS C5000。

b. 在下拉菜单中选择“File”->“Load Program”以装入所要调试的程序fc.out,这时,在反汇编窗口中能看到程序的源代码。

c. 在下拉菜单中选择“View”->“CPU Registers”->“CPU Register”,可以看见在CCS 界面下部份会出现CPU 中的相关寄存器;选择“View”->“Memory…”,在弹出的“Memory Window Options”窗口中选择要观察的区域为数据区,地址开始为0x80h,然后就可以看见出现一个Data Memory 窗口,其中显示了从0x80h 开始的 .bss 区。

d. 在反汇编窗口中需要观察的地方设置断点:在这条指令处双击将其点为红色即可。比如在加法程序中有指令nop 的位置都可以加一个断点。

e. 在下拉菜单中选择“调试”——“连续运行”(或直接点击“运行程序”按钮)运行浮点数程序。如果编写程序时在计算完毕后遇到一个断点,那么程序到此会自动停止。

f. 当示范程序在第一个断点处停下来时,此时就可以看见程序初始化后的情况:被加数12.0 以浮点数的格式放在内存区0x08a-0x08b 中,其值为4140h 和0000h。加数12.0 放在内存区0x08c-0x08d 中,其值也为4140h 和0000h。

g. 再点击“运行程序”按钮,之后程序会在下一个断点处停下来,这时可以看见被加数被格式转换后的变量op1hm、op1lm 和op1se 的值在内存区0x084-0x086 中,分别为00c0h、0000h 和0082h。同样加数被格式转换后的变量op2se、op2hm 和op2lm的值在内存区0x087-0x089 中,分别为0082h、00c0h 和0000h。

h. 再点击“运行程序”按钮,程序停下来时就可以观察到在存储器窗口中表示结果的变量rlthm、rltlm、rltsign 和rltexp 的值在内存区0x080-0x083 中,其值分别为0040h、0000h、0180h 和0083h。

i. 这时可以看到 A 寄存器中的值为AH=41c0h,AL=0000h 这就是最后的以浮点数的格式表示的结果值24(=12+12)。加法运算到此结束。

j. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的13.0 与12.0 进行减法运算的结果:AH=3f80h,AL=0000h。这是用浮点数格式表示的数1(=13-12)。减法运算的程序到此结束。

k. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与12.0 进行乘法运算的结果:AH=4310h,AL=0000h。这是用浮点数格式表示的数144(=12*12)。乘法运算的程序到此结束。

l. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与4.0 进行除法运算的结果:AH=4040h,AL=0000h。这是用浮点数格式表示的数3(=12/4)。至此加、减、乘、除四种运算都运行完毕。

m. 如果程序运行不正确,请检查源程序是否有误,必要时可以在源程序中多插入断点语句。程序在执行到断点语句时自动暂停,此时可以通过检查各个寄存器中的值以及内存单元中的值来判断程序执行是否正确。

三.在 CCS 的C54xx simulator 上调试观察实验结果

浮点加法断点一:

浮点加法断点二:

浮点加法断点三:

浮点减法

浮点数乘法

浮点数除法

四 心得体会

通过学习C54X的浮点数的算术运算,以及实验结果的观察,使我了解了浮点数运算的原理,学习并掌握用TMS320C54X来进行浮点数的各种算术运算的算法实现。 实验四用定时器实现数字振荡器

实验四 用定时器实现数字振荡器

4.1 实验目的

在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP 工作时仅作查表运算即可。在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。本实验除了学习数字振荡器的DSP 实现原理外,同时还学习C54X 定时器使用以及中断服务程序编写。另外,在本实验中我们将使用汇编语言和C 语言分别完成源程序的编写。

4.2

本实验利用定时器产生一个 2kHz 的正弦信号。定时器被设置成每25uS 产生一次中断(等效于采样速率为40K)。利用该中断,在中断服务程序中用叠代算法计算出一个SIN值,并利用CCS 的图形显示功能查看波形。

4.3 实验原理

1 数字振荡器原理

sinkωT

,其

z 变换为

H(z=

其中,A=2cosωT, B=-1, C=sinωT。设初始条件为0,求出上式的反Z 变换得:

y[k]=Ay[k-1]+By[k-2]+Cx[k-1] 2 C54X 的定时器操作

C54X 的片内定时器利用CLKOUT 时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2 中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402 的另一个定时器(定时器1)的控制寄存器分别为:0x30

TIM1 ) ,0x31 ( PRD1 ) ,0x32 ( TCR1 )。

3 C54X 中断的使用

C54X 中用户可以通过中断屏蔽寄存器 IMR 来决定开放或关闭一个中断请求。图 4-1 给出了 C5402 的 IMR 寄存器的各个比特位的定义。

图 4-1 ‘C5402 的IMR 寄存器

其中,

表示HPI 接口中断,INT3-INT0 为外部引脚产生的中断,TXINT 和TRINT 为TDM 串口的发送和接收中断,BXINT0 和BRINT0 BSP 串口的发送和接收中断,14

为定时器 0 中断。在中断屏蔽寄存器 IMR 中, 1 表示允许 CPU 响应对应的中断, 0 表示禁止。当然要 CPU 响应中断,

INTM 还应该为 0 (允许所有的中断)。

本实验的初始化程序读取中断向量表的启始地址,然后设置的高

DSP 能正确响应中断,代码如下:

ld #0,dp ;设置DP 页指针 ssbx intm ;关闭所有中断

ld #vector, a ;读出中断向(地址vector 在中断向量表程序中定义)

and #0FF80h, a ;保留高9 位(IPTR) andm #007Fh, pmst ;保留PMST 的低7 位 or pmst, a ;

stlm a, pmst ;设置PMST(其中包括IPTR)

4.4 实验内容

C54X 汇编语言或C 语言实现数字振荡器,并通过CCS 提供的图形显示窗口观察出信号波形以及频谱。实验分下面几步完成:

1 根据确定数字振荡器的频率,确定系数。 2 启动 CCS,新建工程文件。

选择 Project 菜单中的Options 选项,或使用鼠标右键单击工程文件名(如sinewave.pjt)并选择build options 项来修改或添加编译、连接中使用的参数。选择Linker Output Filename”栏中写入输出OUT 文件的名字,如sine.out,你还可以设置生成的MAP 文件名。 4 完成编译、连接,正确生成OUT 文件。 5 选 View→Graph→

1

5…打开图形显示设置窗口。

6 在汇编源程序的中断服务程序(_tint)中的“nop”语句处设置断点。

7 用右键单击图形显示窗口,并选择“Proporties”项以便修改显示属性。

8 清除所有断点,关闭除波形显示窗口外的所有窗口,并关闭工程文件。

9 完成编译、连接,正确生成OUT 文件。

10打开 C 源程序(timer.c)窗口,在中断服务程序(函数tint()的“con_buf=0

Start Address ”改为 buf ;“ Acquisition Buffer Size ”改为“ Display Data Size 128,“DSP DataType”为“32-bit floating point”

11选择 Debug→Animate,运行程序,观察输出波形。

第二篇:dsp课程设计实验报告总结

DSP课程设计总结

(2013-2014学年第2学期)

目 :

专业班级 :

电子1103

学生姓名 :

号 :

11052304

指导教师 :

设计成绩 :

2014 年 6 月

1 目

一 设计目的--------3 二 系统分析--------3 三 硬件设计 3.1 硬件总体结构----------------------------3 3.2 DSP模块设计----------------------------4 3.3 电源模块设计---------------------------4 3.4 时钟模块设计---------------------------5 3.5 存储器模块设计-------------------------6 3.6 复位模块设计---------------------------6 3.7 JTAG模块设计-------------------------7 四 软件设计

4.1 软件总体流程----------------------7 4.2 核心模块及实现代码--------8 五 课程设计总结----------------------14

2

一、 设计目的

设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。

二、 系统分析

1.1设计要求 硬件要求:

(1)使用TMS320VC5416作为核心芯片。 (2)具有最简单的led控制功能。 (3)具有存放程序的外部Flash芯片。 (4)外部输入+5V电源。 (5)绘制出系统的功能框图。

(6)使用AD(Altium Designer)绘制出系统的原理图和PCB版图。 软件要求:

利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示。

三、 硬件设计

3.1 硬件总体结构

3

3.2 DSP总体结构

3.3 电源模块设计

3.4 时钟模块设计

4

3.5 存储器模块设计

3.6复位模块设计

5

3.7 JTAG模块设计

四、 硬件设计

4.1 软件总体流程

6

4.2核心模块及实现代码 1.采集数据去直流

in_x[m] = port8002 & 0x00ff;//读取数据

m++;

intnum = m;

if (intnum == Len)

//以256个点为采样周期 { intnum = 0; xavg = 0.0; for (s=0; s

7

xavg = xavg/Len;//采样均值 for (s=0; s

//输入实部 pi[s] = 0;

//输入虚部 for (p=0; p

xmid[0] = x[s]; r = 0; rm= 0;

for (j=0; j

} y[s] = rm;

r = xmid[j] * h[j]; rm = rm + r; xmid[FLen-p-1] = xmid[FLen-p-2];

4. LCD显示

SendCMD(CLEAR);

showperson();

Delay(1);

//----------------------------

SendCMD(CLEAR);

SendCMD(0x0080);

//设定DDRAM的地址在第一行 80H

delay_100us();

for(i =0;i<16;i++)

{

SendDat(data_buff3[i]);

delay_100us();

asm(" nop "); } asm(" nop ");

SendCMD(0x0090);

shownum(f1);

//------------------------------ SendCMD(0x0088);

//设定DDRAM的地址在第二行 90H delay_100us(); for(i =0;i<16;i++)

{

SendDat(data_buff4[i]);

delay_100us(); }

SendCMD(0x0098);

shownum(f2); 4.3 软件实验效果图 1.去直流

12

2.滤波前fft

3.滤波后fft

13 4.窗口函数

五 课程设计总结

在为期两个多星期的综合设计中,重新熟悉了一下AD和CCS软件的操作 。在画原理图时,各元件的连接及封装形式都应参照手册。只有深刻了解各管脚的功能,才能准确快速地画好原理图。画好原理图后,要先编译一下看是否有连接错误。

如果原理图有所改变,可以在PCB中重新导入。如果元器件管脚或IO引脚变绿,可能是间距违反了规定的rule。可以将rule里的间距改小一点。在pcb连线过程中,我发现 移动clk时钟器件,其管脚变绿,但rule并无问题。后经查阅资料,取消了Drc功能,才恢复正常。在连接滤波电容时,将滤波电容靠近其滤波元器件。

在软件设计过程中,前两天一直没有搞清楚设计要求,进展缓慢。首先了结了一下各个模块程序的输入输出变量的含义,只有 这样才能正确地调用各个函数。在计算频率时,其实我只计算了一个频率。

14 输入是一个混频信号,由于左右对称,在128点内可得到两个最大幅度,0到30(或其他分界点亦可,视滤波效果而言),比较一次,30到128,再比较一次。滤波函数仅仅只是计算了窗口函数,故还需将输入信号函数和窗口函数进行卷积得到最终结果。

在编写LCD显示模块程序时,经常出现乱码。Unsigned

char类型的字符串数组,一个汉字相当于两个英文字母,如果地址1没有安排好容易出现乱码。

15

第三篇:DSP第一次实验报告

信息与通信工程学院

信号与信息处理综合实验(DSP部分)

实验报告

级: 2012211127

名: 刘灿

号: 2012210732 期: 2015.4.10 一.实验题目

Hello World和LED 二.实验目的

熟悉平DSK6416开发台,掌握CCS软件的基本操作流程,达到熟练操作软、硬件系统开发、调试的目的。

三.实验任务及要求

1.任务

(1)在控制台中显示Hello World

运行程序后,在控制台显示Hello World (2)控制LED灯闪烁

FTP给出一个LED的程序模板,可以控制LED 0的闪烁。基于该模板,需要完成:

(a) 修改闪烁的频率;

(b) 通过写8bit数值到CPLD寄存器来控制LED,使得4个LED以200ms的频率同时打开和关闭。

2.要求

(1)实现基本功能且不出现任何错误

(2)基于原理实现多功能的扩展

四.组内分工

刘杰

程序代码的编写与调试

刘灿

建立工程以及目标系统的配置

五.实验内容及流程

1.实验内容

这次实验内容是显示hello world和控制LED灯的闪烁。由于是dsp的第一次实验,内容比较简单,主要还是在于熟悉ccs这个软件在进行dsp开发时的具体建立工程、配置文件、导入实验板和程序烧写调试的过程和步骤。

2.实验流程介绍

1.新建工程

(1)打开ccs后点击菜单中的“File->New->Project”,选择“CCS project”,然后进入下一个页面进行工程的命名。

(2)命名完成之后是选择工程的硬件平台,我们实验室所使用的实验板是DSK6416,它的芯片为C6000系列的TMS320C6416,所以在“Project Type”下拉框中选择“C6000”,其余选项默认即可。

(3)接下来是设置工程属性,在“Device Variant”下拉栏中选择“Generic devices-> Generic C64xx Device”,“Device Endianness”选择little,,其余保持默认值。

(4)然后工程模板选择“hello world”,就完成了工程的新建。

2.代码编译和链接

(1)添加源代码 (2)配置CSL库

将C6000的CSL库,存在本地PC机硬盘上,我们hello world工程的代码路径为C: icsl。在pll_led工程图标上单击右键,选择“Show Build Settings…”来设置编译属性,设置include options,单击新建,在对话框中输入“C: icslinclude”

(3)定义芯片型号:

在“predefine symbols”选项中输入芯片型号CHIP_6416 (4)指定链接库:

在工程属性的“C6000 Linker”的“File Search Path”选项中需要添加DSK6416和CSL6416这两个库,其路径分别为“c: idsk6414libdsk6414bsl.lib”和“c: icsllib_2xcsl6414.lib”

(5)添加cmd文件:

在工程路径下新建一个文本文件,将其后缀修改成.cmd,名称可随便修改,并且在文本文件中写入下列内容: -stack 0x400 -heap 0x400 保存并编译工程,生成“.out”文件。

3.软件调试

在工程中运行“New ->Target Configuration File”新建配置文件,命名为DSK6416_led.ccxml来完成CCS软件和板卡的连接。命名完后在配置文件Basic中Connection选择Spectrum digital DSK-EVM-eZdsp onboard USB Emulator,Device选择DSK6416,保存。然后进行调试,设置断点。最后将程序烧录到实验板中,检查实验结果。

六.源代码及注释

#include #include "dsk6416.h" #include "dsk6416_led.h" #include "dsk6416_dip.h" void main(void) {

printf("Hello World! ");

//控制台显示“hello world”

DSK6416_init();

//初始化LED和DIP

DSK6416_LED_init();

DSK6416_DIP_init();

while(1) {

if (DSK6416_DIP_get(3) == 0)

//开关3控制LED灯以200ms闪烁

{

DSK6416_LED_toggle(3);

DSK6416_waitusec(200000);

}

else if(DSK6416_DIP_get(2) == 0)

//开关2控制LED灯以100ms闪烁

{

DSK6416_LED_toggle(3);

DSK6416_waitusec(100000);

}

else if(DSK6416_DIP_get(1) == 0)

//开关1控制4个灯以200ms同时亮灭

{

DSK6416_rset(DSK6416_USER_REG, 0x0f);

DSK6416_waitusec(200000);

DSK6416_rset(DSK6416_USER_REG, 0x00);

DSK6416_waitusec(200000);

}

else if(DSK6416_DIP_get(0) == 0) //开关0控制4个灯循环亮灭,间隔200ms

{

for(int i=0;i<4;i++){

DSK6416_LED_toggle(i);

DSK6416_waitusec(200000); }

}

} }

七.实验结果

1.按照实验步骤进行操作后,实验控制台正常显示显示“Hello World”,如下图:

2.实验板上DIP 0~3开关控制的LED灯闪烁效果也符合程序预期的效果。

八.遇到的问题

由于第一次实验的内容较为简单,我们在编程方面没有遇到什么困难,工程的建立和系统的配置也能照着实验指导书按部就班的完成。但是在连接实验板时我们遇到了连接不上的问题。机房的电脑连接实验板后安装不了驱动,我们自己带的笔记本电脑也有没有反应的现象。后来我们换了同学的电脑才成功的连接上。

九.心得体会

第一次的实验总的来说比较容易,主要是对ccs这个软件的操作和建立工程的过程的熟悉。通过这次实验我对于这学期dsp实验的流程和步骤有了大体的了解,也熟悉了ccs的编程和调试,也为下次的实验打好了基础。

第四篇:DSP期末复习资料

第一章DSP基本概念

1 DSP系统由抗混叠滤波器 A/D转换器 微处理器 D/A转化器和平滑滤波器组成

2 数字信号处理具有灵活 精确和重复性好等优良特性

3 DSP芯片采用哈弗结构 数据总线与程序总线分离 可以同时访问指令和数据,

比传统的冯诺伊曼结构有更快的指令执行速度

4 MAC时间:一次乘法和一次加法的时间

5 一般定点DSP芯片字长为16位 浮点的字长为32位

第二章TMS320C55x的硬件结构

1 C55x主要由3个部分组成:CPU 存储空间和片内外设

CPU包含5个功能单元:指令缓冲单元(I单元) 程序流单元(P单元)

地址-数据流单元(A单元) 数据运算单元(D单元)和存储器接口单元(M单元)

I单元包括32*16位指令缓冲队列和指令译码器。此单元主要接收程序代码并负

责放入指令缓冲队列,由指令译码器来解释指令,然后再把指令流传给其他的工

作单元来执行这些指令

P单元包括程序地址发生器和程序控制逻辑,此单元产生所有程序空间地址,并送到PAB总线 A单元包括数据地址产生电路 附加的16位ALU和一组寄存器,此单元产生读/写

数据空间地址,并送到BAB CAB DAB总线

D单元包括1个40位的简形移位寄存器 2个乘法单元 1个40位的ALU以及若干

寄存器 D单元是CPU的最主要组成部分,是主要的数据处理部件

M单元是CPU和数据空间或I/O空间之间传输所有数据的中间媒介

2 C55x的两种封装179脚BGA封装144脚PGE LQFP封装

3 电源引脚

CVDD:数字电源 +1.6v 为cpu内核提供电源

DVDD:数字电源 +3.3v 为I/O引脚提供电源

USBVDD:数字电源 +3.3v 为USB模块的I/O引脚提供电源

USBPLLVDD:数字电源 +1.6v 为USB PLL提供电源

RDVDD:数字电源 +3.3v 为RTC模块的I/O引脚提供电源

RCVDD:数字电源 +1.6v 为RTC模块提供电源

VSS:数字地

AVDD:模拟电源 为10位的A/D模块提供电源

AVSS:模拟地 10位A/D内核部分接地引脚

ADVSS:模拟数字地 10位A/D模拟的数字部分接地引脚

USBPLLVSS:数字地 用于USB PLL

4 C55x包含4个40位累加器每个累加器分为低字 高字和8个保护位

5 MPNMC为

MPNMC=0 微计算机模式 使能片上ROM 可以在程序空间寻址

MPNMC=1 微处理器模式 禁止片上ROM 不映射在程序空间里

6 C55x的存储(数据/程序)空间采用统一编址的访问方法,当CPU读取程序代码时

使用24位的地址访问相关的字节 而CPU读/写数据时 使用23位的地址访问相关的

16位字,这两种情况下地址总线均为24位

7 字节B8位字W16位 长字(LW)32位

8 DSP处理中断的一般步骤

1接收中断请求

2 响应中断请求

3 准备进入中断服务子系统

4 执行中断服务子系统

可屏蔽中断能用软件关闭或开放 都是硬件中断

不可屏蔽中断cpu接到一个不可屏蔽中断的请求时 立刻无条件响应 并很快跳转到相

应的中断服务子程序 软件中断都是不可屏蔽中断

第三章指令系统

1 三种寻址方式

绝对寻址方式:通过在指令中指定一个常数地址完成寻址

直接寻址方式 :使用地址偏移量寻址

间接寻址方式:使用指针完成寻址

2 直接寻址方式

DP直接寻址该方式用DPH与DP合并的扩展数据页指针寻址存储空间和存储映射寄存器SP直接寻址该方式用SPH和SP合并的扩展堆栈指针寻址存储空间中的堆栈

寄存器直接寻址该模式用偏移地址指定一个位地址,用于寻址寄存器中的一个相邻的两个位 3 计算偏移地址的方法

访问空间偏移地址(Doffser)的计算描述

数据空间Doffset=(Daddr-.dp)&7FHDaddr是一个16位的局部地址 dp指DP的值 &与操作

存储器映射寄存器Doffset=Daddr&7FHDaddr是一个16位的局部地址&是与操作 需要使用mmap()指令

4 初始化和寻址一个循环缓冲区

MOV#3,BK03;设置循环缓冲区大小为N=3

BESTAR1LC;使用AR1循环寻址

AMOV#010000h,XAR1;循环缓冲区位于主数据页页01

MOV#0A20h,BSA01;循环缓冲区首地址为010A20h

MOV#0000h,AR1;初始化AR1

MOV*AR1+,ACO;ACO=(010A20h)AR1=0001h

MOV*AR1+,ACO;ACO=(010A21h)AR1=0002h

MOV*AR1+,ACO;ACO=(010A22h)AR1=0000hPDP直接寻址该模式使用PDP和一个偏移地址寻址I/O空间

MOV*AR1+,ACO;ACO=(010A20h)AR1=0001h

5 加法指令举例

(1) ADD*AR3+,T0,T1;AR3间接寻址得到的内容与T0的内容相加,结果装入T1,并将AR3增1

寄存器执行前寄存器执行后

AR30302AR30303

T03300T03300

T10T12200

CARRY0CARRY1

数据存储器数据存储器

0302EF000302EF00

(2)ADD *AR1〈〈T0,AC1,AC0;将由AR1寻址得到的内容右移T0位与AC1相加,结果装入AC0

寄存器执行前寄存器执行后

AC000 0000 0000AC000 2330 0000

AC100 2300 0000AC100 2300 0000

T0000CT0000C

AR10200AR10200

SXMD0SXMD0

M400M400

ACOV00ACOV00

CARRY0CARRY1

数据存储器数据存储器

0200030002000300

6条件减法指令举例

SUBC*AR1,AC0,AC1;如果(ACO-(*AR1)〈〈#15)〉=0,则AC1=(AC0-(*AR1)〈〈#15)〈〈#1+1 否则AC1=AC0〈〈#1寄存器执行前寄存器执行后

AC023 4300 0000AC023 4300 0000

AC100 0000 0000AC146 8400 0001

AR10300AR10300

SXMD0SXMD0

ACOV00ACOV01

CARRY0CARRY1

数据存储器数据存储器

0302020003020200

7 入栈和出栈指令举例

(1) POP AC0,AC1;AC0(15-0)=(SP)AC1(15-0)=(SP+1)

(36-16)不变 SP=SP+2

执行前执行后

AC000 4500 0000AC001 4500 4890

AC1F7 5678 9432AC0F7 5678 2300

SP0300SP0302

数据存储器数据存储器

0300489003004890

0301230003012300

(2)PSH AR0,AC1;SP=SP-2 (SP)=AR0(SP+1)=AC1(15-0)

执行前执行后

AC00300AC00300

AC103 5644 F800AC003 5644 F800

SP0300SP02FE

数据存储器数据存储器

02FE000002FE0300

8 存储单元间的移动及初始化指令举例

(1)DELAY *AR1+;*(AR1+1)=*(AR1)AR1=AR1+1

执行前执行后

AR10200AR10201

数据存储器数据存储器

0200340002003400

02010D8002013400

0202203002022030

(2) MOV *CDP,*(#0500h);将(*CDP)存入0500h处

执行前执行后

*CDP3400*CDP3400

0500000005003400

第四章TMS320C55x汇编语言编程

1 C55x的软件开发环境有集成开发环境和非集成开发环境两种

2 C/C++编译器:用来将C/C++语言源程序(.c.cpp)自动编译

成C55x的汇编语言源程序.asm汇编器:用来将汇编语言源文件.asm

汇编成机器语言COFF目标文件.obj

链接器:将汇编生成的 可重新定位的COFF目标模版.obj组合

成一个可执行的COFF目标模版.out

3 段是COFF文件的基本单元 段是一个占据存储器里连续地址的

代码或数据块

COFF目标文件的3个默认段

.text段:通常包含可执行代码

.data段:通常包含初始化数据

.bss段 :通常给未初始化的变量保留存储空间

4 链接器对段的处理有两个主要任务,其一是将一个或多个COF

F目标文件.obj中的各种段作为链接器的输入段,经链接后在一

个可执行的COFF模块.out中建立各个输出段。其二是为各个输出段

选定存储器地址(MEMORY SECTIONS)

5 外部符号是指在一个模块中定义 而在另一个模块中引用的符号

它可以用伪指令.def .ref .global来定义

.def在当前模块中定义 并可在别的模块中引用的符号

.ref在当前模块中引用 但在别的模块中定义的符号

.global可以是上面的任何一种情况

6 (1).asg伪指令的使用

.asg AR0,FP:帧指针

.asg *AR1+,Ind:间接地址

.asg”””string”:””,string :串

.asg”a,b,c”,parms:参数

(2).eval伪指令的使用

.asg 1,counter;把1赋值给counter

.loop 100;循环100次

.word counter;给counter分配16位存储空间

.eval counter+1,counter;counter表达式替换符号

.endloop;1自加了100次

7 助记符指令源语句的每一行通常包含4个部分:标号区 助记符区 操作数区 注释区 8 汇编程序中的符号用于标号 常数和替代字符。由字母 数字以及下划线和美元符号 等组成。符号名最长可达200个字符。第一位不能是数字并且符号中不能有空格

第五章 集成开发环境

1 CCS有两种工作模式

软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主 要用于前期算法实现和调试(simulator)

硬件仿真器模式:可以实时运行在DSP芯片上,与硬件开发板相组合在线编程和 调试应用程序(emulator)

2 所建工程文件夹中包含:

包含include文件夹 包含了以.h为扩展名的文件 即c语言文件中的头文件

目标库函数Libraries文件夹 存放以.lib为扩展名的库文件

源程序Source文件夹包含所有扩展名为.c和.asm的源文件

链接命令文件 以.cmd为扩展名直接显示在工程项目文件下

子工程Dependent Projects文件夹

DSP/BIOS配置文件(DSP/BIOS configuration)文件夹

生成(Generated Files)文件夹

3 断点的作用是暂停程序的运行,以便观察程序的状态,检查或修正变量,查看调用的堆栈存储器和寄存器的内容等

第六章C/C++语言程序设计

1 C/C++语言的基本特点:

语言简洁 紧凑,使用方便 灵活

运算符丰富,表达式类型多样化

数据结构类型丰富

具有结构化的控制语句

语法限制不太严格,程序设计自由度大

允许访问物理地址,能进行位操作 能实现汇编语言的大部分功能,能直接对硬件进行操作 2 编译源代码的模式如下

Normal ANSI模式(默认)

K&R C模式

宽松ANSI模式

严格ANSI 模式

3 编译器包括剖析器 优化器和代码产生器

4 编译器的基本优化选项 –o0 –o1 –o2 –o3 –oi(P206)

5P213

6.优化C代码主要方法

生成高效循环代码高效地实用MAC硬件使用本征函数

7 混合使用C代码和汇编语言代码的主要方法有

(1)使用几个独立的汇编代码模块,并将它们与编译了的C模块进行链接,最常用方法

(2)在C源代码中使用汇编语言变量和常数

(3)将汇编语言程序直接嵌入C源代码中

(4)在C源代码中使用本征函数直接调用汇编语言语句

第七章应用程序设计

1 数的定标:由程序员来确定一个数的小数点处于16位中的哪一位

溢 出:算术运算结果超出寄存器所能表达的最大数就会出现溢出

2 溢出的处理方法:饱和 输入定标 固定定标和动态定标

3 常用信号处理算法中的定标方法

FIR滤波器的定标方法IIR滤波器的定标方法FFT的定标方法

第五篇:“DSP 技 术”实验教学改革与研究

要: 针对“DSP技术”课程理论难度大、抽象、不容易理解等特点,本文分析了一些实验教学方法,包括加大综合性设计性实验比重、课外选修实验和软硬件相结合的实验教学模式。实践证明,这些方法有利于培养学生的实践动手能力和创新能力,提高教学质量。

关键词: DSP技术

实验教学

软硬件结合

一、相关课程背景

“DSP技术”实验课开设的目的是使学生掌握DSP系统的基本原理及其项目设计的开发方法,掌握DSP的工作原理、TMS320C55X系列DSP芯片的基本结构、片内外设、汇编语言、C语言程序设计、开发环境及其使用方法、常用数字信号处理算法的DSP实现及其在各种系统中的实际应用等[1]。通过实验,使学生掌握DSP方面的理论知识,提高分析问题和解决问题的能力,使学生有信心也有能力逐步适应本领域迅速发展的需要,进而有效培养学生的创新能力。

二、目前存在的问题

1.“DSP技术”课程总学时数有限,实验学时数过少,造成有些知识点讲解得不够深入。目前该门课程一共是45学时,实验为10学时。

2.大部分实验只采用CCS软件仿真查看结果的方式,学生对硬件的操作较少,对DSP硬件结构、硬件设计方法和流程一知半解。

三、实验教学改革方法

针对以上出现的问题,结合多年实践教学经验,我提出了一些提高“DSP技术”实验教学质量的方法。

1.增加实验项目数量,引入课外选修实验机制。由于学时有限,课内必须完成的实验学时数是10学时,有的理论知识点实验不能涵盖,学生理解起来有些困难。为了让学生多动手,课题组设计了20学时的课外实验,学生可以在课外时间来实验室做实验。实验室能开设的所有实验做成电子版实验讲义,该讲义包含详细的实验目的、实验要求、实验内容和实验条件等,学生可以自主选择做哪几个实验。这些资源都挂在网站上,学生可以自行下载。

2.合理调整综合性和设计性实验的比重,注重培养学生的创新能力。根据“DSP技术”实验大纲的要求,目前实验学时数是10学时,其中6学时是基础性实验,4学时是综合性和设计性实验。基础性实验过程相对简单,学生机械地做实验,实际操作能力和综合分析问题的能力没有提高。我们教研室经过多年努力,大力改革调整实验内容,适当增加综合设计性实验和创新性实验的比重。综合性实验是指实验内容涉及本课程的综合知识或与本课程相关课程知识的实验。

“DSP技术”理论课程开设时间安排在大三学年,这时学生已经学完“数字信号处理”、“数字电路”、“EDA原理”等相关课程,同时学习了用于软件仿真的C语言、MATLAB语言等,具备了开发信号处理系统的潜能。同时DSP技术涉及的知识非常广泛,新算法层出不穷,有关器件推陈出新。因此,可以说“DSP技术”实验课程是电子信息类本科生对所学知识的综合运用,要求学生从工程设计选题、方案设计、编程、信号仿真和工程设计DSP实现,完全由学生独立完成。综合性实验以学生为主体,能充分调动学生的主动性、积极性和创造性,激发学生的创新思维和创新意识,全面提高学生的创新实验能力。

3.硬件设计和软件仿真相结合,与DSP课程设计和毕业设计相结合,培养学生硬件电路设计能力和CCS的使用能力。给学生布置题目为“基于TMS320VC5509DSP最小系统设计”的大作业,要求学生从整体设计到各部分的具体实现都亲力亲为。通过设计DSP最小系统,使学生掌握DSP系统的设计流程、PCB原理图的设计、DSP硬件结构、基本电路的设计、硬件电路调试和CCS软件的使用等。通过设计DSP最小系统,有助于学生理解DSP芯片的基本结构、片内外设、DSP设计流程、基本方法、开发环境CCS的使用方法,提高学生的硬件设计能力、分析能力、实际动手能力和创新能力。同时,开设了基于DSP平台的课程设计和基于DSP平台的图像语音等相关内容的毕业设计[2],让部分学生集中一段时间花在DSP实验上。从应用角度出发,采用C语言和汇编语言混合编程,锻炼学生的实际工程开发能力,这样教学效果会更好。

4.开展课外科技活动。“DSP技术”课程是一门实践性很强的课程,为了培养学生的动手能力和创新能力,必须加强实践环节。但从目前的教学与实验学时来看,有些学生基本掌握了DSP的简单开发运用,但是还有一部分学生对DSP兴趣很浓厚,并不满足于现有的课堂教学。针对这类学生,我们可以开放DSP实验室,开展一些课外科技活动,给他们设计一些系统级的题目,或让他们参与到教师的科研项目中。以实践课题为主,开展实践训练,使部分学生能够对实际的DSP开发技术有较深入的研究。

四、结语

本文探索的一些实验教学方法能提高学生对理论的认识,能充分调动学生的求知欲望,激发学习“DSP技术”课程的兴趣,充分发挥学生的主体作用,提高教学质量,受到任课教师和学生的一致好评,使学生的动手能力和创新能力得到提高。

参考文献:

[1]赵洪亮,等.TMS320C55xDSP应用系统设计[M].北京:北京航空航天大学出版社,2010.

[2]洪波,等.基于创新理念的DSP课程实验教学研究[J].实验室研究与探索,2013,33(10):215-217.

上一篇:读书笔记300字大全集下一篇:成绩退步检讨书400字

本站热搜