当前位置:文档之家› DSP课程设计 同步串口通信在TMS320C643上实现

DSP课程设计 同步串口通信在TMS320C643上实现

DSP课程设计  同步串口通信在TMS320C643上实现
DSP课程设计  同步串口通信在TMS320C643上实现

摘要

进入21世纪之后,数字化浪潮正在席卷全球,数字信号处理器DSP(Digital Signal Processor)正是这场数字化革命的核心,无论在其应用的广度还是深度方面,都在以前所未有的速度向前发展。数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。

DSP可以代表数字信号处理技术(Digital Signal Processing),也可以代表数字信号处理器(Digital Signal Processor)。前者是理论和计算方法上的技术,后者是指实现这些技术的通用或专用可编程微处理器芯片。

本文就是就是基于DSP原理及应用编写设计的同步串口通信在TMS320C643上实现。其集成开发环境为CCS,工作平台是SEED-DTK 。CCS 是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。SEED-DTK(DSP Teaching Kit)是一套可以满足大学本科、研究生和教师科研工作的综合实验设备。SEED-DTK 是我公司在总结以往产品的基础上,以独特的多DSP 结构、强大的DSP 主板功能、丰富的外围实验电路、精心设计的实验程序、精湛的产品工艺形成的高性能产品。

关键字:同步串口通信 DSP CCS SEED-DTK

目录

一.功能描述 ---------------------------------------------------------- 3二.概要设计 ---------------------------------------------------------- 3

2.1 McBSP 介绍------------------------------------------------- 3

2.2 设计目的------------------------------------------------------ 4

2.3 设计概要------------------------------------------------------ 4三.详细设计 ---------------------------------------------------------- 4

3.1 实验程序功能与结构说明 -------------------------------- 4

3.2 程序流程图 ---------------------------------------------------- 5四.调试过程及效果 ------------------------------------------------- 5

4.1 实验准备------------------------------------------------------ 5

4.2 调试过程及效果 -------------------------------------------- 6

4.2.1 创建源文件 -------------------------------------------- 6

4.2.2 创建工程文件 ----------------------------------------- 7

4.2.2 设置编译与连接选项 -------------------------------- 8

4.2.3 工程编译与调试 ------------------------------------ 10 五.存在问题 -------------------------------------------------------- 12 六. 心得-------------------------------------------------------------- 12 七.参考文献 -------------------------------------------------------- 12 附录(源程序) ----------------------------------------------------- 13

一.功能描述

数字信号处理器由于具有高性能和灵活可编程的优点而得到广泛的应用 ,在许多应用系统中,实现DSP与 PC机之间有效可靠的通信是系统设计的重要部分。一般来说 ,通信可以分为串行和并行两种方式。相对于并行方式而言 ,串行通信具有电路结构简单、通信距离远和成本较低等优点 ,因而在许多数据交换量不大的系统中得到了广泛的应用。串行数据传输又可分为同步和异步两种模式 ,通用 PC机的RS-232接口为通用异步接口UART(UniversalAsynchr onous Receiver and Transmitter) ,而MOT OROLA公司的串行外围设备接口 SPI为同步串行协议。本课程设计在集成开发环境CCS下设计同步串口通信在TMS320C643上的实现,熟悉对MCBSP 的各个寄存器的功用与设置方法,掌握DSP 对寄存器的访问,熟悉同步串行通讯的编程方法,实现两个DSP 同步通讯。

二.概要设计

2.1 McBSP 介绍

TMS320DM643上集成了1个McBSP 片上外设,McBSP是Multichannel Buffered Serial Port 的缩写,即多通道缓冲型串行接口,是一种多功能的同步串行接口,它具有很强的可编程能力,可以配置为多种同步串口标准,直接与各种器件高速接口,其特点如下:全双工通讯;双缓冲数据寄存器,允许连续的数据流;独立的收发帧同步和时钟信号;可以直接与工业标准的Codec、AIC 或串行接口的A/D、D/A 接口;直接与T1/E1 帧、ST-BUS 兼容芯片、IOM-2 兼容芯片、AC97 兼容芯片、IIS 兼容芯片、SPI 芯片接口;最多可实现128 个通道的发送与接收;支持8/12/16/20/24/32-位的数据宽度;内置μ-律和A-律压缩/解压缩硬件;对于8-位数据的传输,可选择LSB 或MSB 方式;帧同步和时钟信号的极性可设定;内部时钟和帧信号发生的灵活编程。

每个McBSP 均由发送器和接收器构成,各有3 个信号:位-时钟、帧同步和串行数据,所以一个McBSP 有下列信号:FSR、CLKR、DR 和FSX、CLKX、DX,另外还有一个外部时钟源(CLKS);帧同步信号(FSR、FSX);位-时钟(CLKR、CLKX);串行数据流(DR、DX);外部时钟源(CLKS)。

McBSP 为一同步串行通信接口,同步串行通信协议包含:串行数据流起始时刻称为帧同步事件。帧同步事件由位-时钟采样帧同步信号给出。串行数据流长度:串行传输的数据流位数达到设定的长度后,结束本次传输,等下一个帧同步信号达到,再发起另一次串行传输。串行数据流传输速度:即每一个串行位的持续时间,由位-时钟决定。

FSR(FSX)、CLKR(CLKX)、DR(DX)三者之间的关系即如何取得帧同步事件、何时采样串行数据位流、或何时输出串行数据位流,是可以通过McBSP 的寄存器进行配置的。

同步串口实验中使用MCBSP0 作为与SEED-DTK_MBoard 通讯的同步串口其连接图如下:

图1. SEED-DTK_MBoard 通讯的同步串口其连接图

2.2 设计目的

1. 了解DSP 的MCBSP 外设的使用;

2. 熟悉C 语言的宏函数在MCBSP 设置中的使用情况;

3. 实现通过MCBSP 发送数字和文字。

2.3 设计概要

1. DSP 的初始化;

2. MCBSP 的初始化设置;

3. MCBSP 的发送MCBSP 的接收。

三.详细设计

3.1 实验程序功能与结构说明

同步串口实验,包含文件

1. Mcbsp_main.c :实验的主程序,包含了系统初始化,MCBSP0 初始化,

SEED-DEC643 通过MCBSP0 与SEED-DTK_MBoard 同步串口通讯等程序。

2. DEC64

3.c:对SEED-DEC643 各项资源操作的函数集,主要包含系统初始化函数,对CPLD 的各个控制函数。

3. vecs.asm:包含DM643 的中断向量表。

4. Mcbsp.c:包括了数据的接收和发送、接收中断、通讯初始化函数。

5. Mcbsp_inti.c:包括了MCBSP 初始化。

6. SEED_DEC643.cmd:声明了系统的存储器配置与程序各段的连接关系。

7. *.h:各子函数的头文件。

8. gui_string.asm:定义了要发送的文字信息。

3.2 程序流程图

图2. 同步串口通信流程图

四.调试过程及效果

4.1 实验准备

1.将SEED-XDS510PLUS 仿真器的USB 插头插入PC 机的USB 插槽中,启动计算机后识别SEED-XDS510PLUS 硬件,识别后安装其驱动程序。双击

\Setup\SEED-XDS510 Emulator Driver for CCS3.3.exe 文件。(此文件是仿真器所配的光盘的内容)

2.按照提示依次执行,同时默认路径为CCS 的安装路径。

3.安装完毕后打开控制面板查看系统中的设备管理器,出现如下结果,证明硬件连接成功,否则需检查硬件是否连接正确和USB 驱动安装是否安装正确:

图3. USB 驱动安装

4.2 调试过程及效果

4.2.1 创建源文件

1.双击 CCStudio v3.3. 图标进入CCS 环境。

2. 打开CCS 选择File →New →Source File 命令。

图4. 新建源文件

3. 编写源代码并保存。

图5. 编写源代码并保存

4. 保存源程序,选择File →Save。并重复创建其他源程序。

4.2.2 创建工程文件

1. 打开CCS,点击Project-->New,创建一个新工程,其中工程名及路径可任意指定,弹出如下对话框:

图6. 创建一个新工程

图7. 创建一个新工程

2. 在Project 中填入工程名,Location 中输入工程路径;其余按照默认选项,点击完成即可完成工程创建。

3. 点击Project 选择add files to project,(如图8)添加工程所需文件。

4. 在弹出的对话框中的下拉菜单中分别选择.c 点击打开,即可添加源程序添加

到工程中:

5. 同样的方法可以添加其他源文件文件到工程中。

图8. 添加工程所需文件

图9. 添加源程序

4.2.2 设置编译与连接选项

1. 点击Project 选择Build Opitions;

2. 在弹出的对话框中设置相应的编译参数,一般情况下,按默认值就可以。

图10.设置编译与连接选项

3. 在弹出的对话框中选择连接的参数设置,设置输出文件名(可执行文件与空

间分配文件),堆栈的大小以及初始化的方式。

图11.设置编译与连接选项

4.2.3 工程编译与调试

1. 点击Project →Build all,对工程进行编译,如正确则生成out 文件;若是修改程序,可以使用Project →Build 命令,进行编译连接,它只对修改部分做编译连接工作。可节省编译与连接的时间。编译通过,生成.out 文件。

图11.工程编译与调试

2. 点击File →load program,在弹出的对话框中载入debug 文件夹下的.out 可执行文件。

图12.工程编译与调试

3. 装载完毕。

图13. 装载完毕

4. 点击debug →Go Main 回到C 程序的入口。

图14.工程编译与调试

5. 加载完程序后要先复位SEED-DTK_MBoard,当LED 显示器出现“通讯自检不成功,请复位系统”时,按下键盘“Enter”键进入主菜单,通过上、下行键,选择“用户菜单”使用“Enter”键进入“用户菜单”界面等待。

6. 打开Mcbsp_main.c 文件,通过修改宏定义DATATYPE 决定发送数字还是文字(第16 行)。通过数组w_num 来决定发送文字的个数,默认为“合众达电子有限公司”,也可以通过gui_string.asm 文件来修改输出文字的内容,最大可写90 个。n_num 决定输出数字的个数,databuffer[ ]内存放输出数字的内容,单

个数字最大为65535。

7. 在第52 行“Test=0;”和57 行“Test=0;”处打断点。

8. 运行程序,数字或文字就会在实验箱LCD 显示器的“结果显示”中显示。

9. 程序运行过程中可以通过更改Test 变量的值进行文字和数字的显示更改。

五.存在问题

1.对管脚的配置不熟悉,导致管脚配置错误,经老师指导以后改正错误,正确配置了管脚。

2. 对实验软件不够熟悉,特别是功能上的实现。只能通过不断练习来熟悉。

六. 心得

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 回顾起此次DSP原理及应用的课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固……通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,同学的帮助下终于迎刃而解。在次我表示感谢!

七.参考文献

[1] DSP原理及应用邹彦电子工业出版社

[2] SEED-DTK643v1.0实验手册(Rev.B) 北京合众达电子技术有限责任公司

附录(源程序)1.mcbsp_main.c

/*************************************************** Copyright (C), 2007 by SEED Electronic Technology LTD. FileName: mcbsp_main.h

Author: Ya.X Version : V1.0 Date:2007-09-20

Description: mcbsp通信演示实验主程序

***************************************************/ #include

#include

#include "gui_string.h"

#include "DEC643.h"

#include "comm.h"

#define Word 0xaa55 //代表文字

#define Number 0x55aa //代表数字

#define DATATYPE 0 /* 0代表文字;1代表数字*/ #define w_num 10 /*通过w_num来控制输出文字的个数,通过gui_string.sam控制内容*/

#define n_num 5 /*通过n_num控制输出选项数字的个数,通过数组dataer控制内容*/

/*存放待发送的数字*/

unsigned short

databuffer[6]={1234,5678,3333,4444,5555,6666};

void main()

{

unsigned int Test;

/* Initialize CSL */

CSL_init();

/* Initialize DEC643 board. */

DEC643_init();

#if DATATYPE==0

Test = Word; //文字 0xAA55

#endif

#if DATATYPE==1

Test = Number; //数据 0x55AA

#endif

/*config McBSP*/

McBSP_init();

/*delay*/

DEC643_wait(2000);

for(;;)

{

switch(Test)

{

case Word:

Mcbsp_Wordsend(w_num, &strMcBSP[0], CHAR_DATASEND); Test=0;

break;

case Number:

Mcbsp_Datasend(n_num, &databuffer[0], NUM_DATASEND); Test=0;

break;

default:

break;

}

}

}

/**************************************************/ // No more

/**************************************************/

2.DEC64

3.c

/*************************************************** Copyright (C), 2007 by SEED Electronic Technology LTD. FileName: DEC643.c

Author: Ya.X Version : V1.0 Date:2007-09-20 Description: DEC643初始化

***************************************************/ #include

#include

#include "DEC643.h"

/* Initialize the board APIs */

void DEC643_init()

{

volatile Uint32 test;

EMIFA_Config emifaCfg0 = {

EMIFA_FMKS(GBLCTL, EK2RATE, HALFCLK) |

EMIFA_FMKS(GBLCTL, EK2HZ, CLK) |

EMIFA_FMKS(GBLCTL, EK2EN, ENABLE) |

EMIFA_FMKS(GBLCTL, BRMODE, MRSTATUS) |

EMIFA_FMKS(GBLCTL, NOHOLD, DISABLE) |

EMIFA_FMKS(GBLCTL, EK1HZ, HIGHZ) |

EMIFA_FMKS(GBLCTL, EK1EN, ENABLE) |

EMIFA_FMKS(GBLCTL, CLK4EN, DISABLE) |

EMIFA_FMKS(GBLCTL, CLK6EN, DISABLE),

EMIFA_FMKS(CECTL, WRSETUP, DEFAULT) |

EMIFA_FMKS(CECTL, WRSTRB, DEFAULT) |

EMIFA_FMKS(CECTL, WRHLD, DEFAULT) |

EMIFA_FMKS(CECTL, RDSETUP, DEFAULT) |

EMIFA_FMKS(CECTL, TA, DEFAULT) |

EMIFA_FMKS(CECTL, RDSTRB, DEFAULT) |

EMIFA_FMKS(CECTL, MTYPE, SDRAM64) |

EMIFA_FMKS(CECTL, WRHLDMSB, OF(1)) |

EMIFA_FMKS(CECTL, RDHLD, OF(7)),

EMIFA_FMKS(CECTL, WRSETUP, DEFAULT) |

EMIFA_FMKS(CECTL, WRSTRB, DEFAULT) |

EMIFA_FMKS(CECTL, WRHLD, DEFAULT) | EMIFA_FMKS(CECTL, RDSETUP, DEFAULT) | EMIFA_FMKS(CECTL, TA, DEFAULT) | EMIFA_FMKS(CECTL, RDSTRB, DEFAULT) | EMIFA_FMKS(CECTL, MTYPE, ASYNC8) | EMIFA_FMKS(CECTL, RDHLD, DEFAULT),

EMIFA_FMKS(CECTL, WRSETUP, OF(7)) | EMIFA_FMKS(CECTL, WRSTRB, OF(14)) | EMIFA_FMKS(CECTL, WRHLD, OF(2)) | EMIFA_FMKS(CECTL, RDSETUP, OF(2)) | EMIFA_FMKS(CECTL, TA, OF(2)) | EMIFA_FMKS(CECTL, RDSTRB, OF(14)) | EMIFA_FMKS(CECTL, MTYPE, ASYNC16) | EMIFA_FMKS(CECTL, RDHLD, OF(1)),

EMIFA_FMKS(CECTL, WRSETUP, OF(2)) | EMIFA_FMKS(CECTL, WRSTRB, OF(10)) | EMIFA_FMKS(CECTL, WRHLD, OF(2)) | EMIFA_FMKS(CECTL, RDSETUP, OF(2)) | EMIFA_FMKS(CECTL, TA, OF(2)) | EMIFA_FMKS(CECTL, RDSTRB, OF(10)) | EMIFA_FMKS(CECTL, MTYPE, SYNC32) | EMIFA_FMKS(CECTL, RDHLD, OF(2)),

EMIFA_FMKS(SDCTL, SDBSZ, 4BANKS) | EMIFA_FMKS(SDCTL, SDRSZ, 12ROW) | EMIFA_FMKS(SDCTL, SDCSZ, 8COL) | EMIFA_FMKS(SDCTL, RFEN, ENABLE) | EMIFA_FMKS(SDCTL, INIT, YES) | EMIFA_FMKS(SDCTL, TRCD, OF(1)) | EMIFA_FMKS(SDCTL, TRP, OF(1)) | EMIFA_FMKS(SDCTL, TRC, OF(5)) | EMIFA_FMKS(SDCTL, SLFRFR, DISABLE),

EMIFA_FMKS(SDTIM, XRFR, OF(0)) | EMIFA_FMKS(SDTIM, PERIOD, OF(2075)),

EMIFA_FMKS(SDEXT, WR2RD, OF(1)) | EMIFA_FMKS(SDEXT, WR2DEAC, OF(3)) | EMIFA_FMKS(SDEXT, WR2WR, OF(1)) |

EMIFA_FMKS(SDEXT, R2WDQM, OF(3)) | EMIFA_FMKS(SDEXT, RD2WR, OF(2)) | EMIFA_FMKS(SDEXT, RD2DEAC, OF(3)) | EMIFA_FMKS(SDEXT, RD2RD, OF(1)) | EMIFA_FMKS(SDEXT, THZP, OF(2)) | EMIFA_FMKS(SDEXT, TWR, OF(2)) | EMIFA_FMKS(SDEXT, TRRD, OF(0)) | EMIFA_FMKS(SDEXT, TRAS, OF(6)) | EMIFA_FMKS(SDEXT, TCL, OF(1)), EMIFA_CESEC_DEFAULT, EMIFA_CESEC_DEFAULT, EMIFA_CESEC_DEFAULT, EMIFA_FMKS(CESEC, SNCCLK, ECLKOUT2) | EMIFA_FMKS(CESEC, RENEN, READ) | EMIFA_FMKS(CESEC, CEEXT, ACTIVE) | EMIFA_FMKS(CESEC, SYNCWL, 0CYCLE) | EMIFA_FMKS(CESEC, SYNCRL, 3CYCLE) }; /* Initialize CSL */ CSL_init(); /* Unlock PERCFG through PCFGLOCK */ *((unsigned long *)0x1b3f018) = 0x10c0010c; /* Enable VP0-VP2, I2C, McASP0 and McBSP in PERCFG */ *((unsigned long *)0x1b3f000) = 0x7B; /* Read back PERCFG */ test = *((unsigned long *)0x1b3f000); /* Wait at least 128 CPU cycles */ DEC643_wait(128); /* Initialize EMIFA */ EMIFA_config(&emifaCfg0); } /* Spin in a delay loop for delay iterations */ void DEC643_wait(Uint32 delay) { volatile Uint32 i, n; n = 0; for (i = 0; i < delay; i++) { n = n + 1; } } /* Spin in a delay loop for delay microseconds */ void DEC643_waitusec(Uint32 delay) { DEC643_wait(delay * 21); } 3.Vecs.asm

**************************************************** * Copyright (C), 2007 by SEED Electronic Technology LTD. * FileName: vecs.asm * Author: Ya.X Version : V1.0 Date:2007-09-20 * Description: *****************************************************--------------------------------------------------- * Global symbols defined here and exported out of this file *--------------------------------------------------- .global _vectors *--------------------------------------------------* Global symbols referenced in this file but defined somewhere else. * Remember that your interrupt service routines need to be referenced here. *--------------------------------------------------- .ref _c_int00 *--------------------------------------------------- * This is a macro that instantiates one entry in the interrupt service table. *--------------------------------------------------- VEC_ENTRY .macro addr STW B0,*--B15 MVKL addr,B0 MVKH addr,B0 B B0 LDW *B15++,B0 NOP 2 NOP NOP .endm *--------------------------------------------------* This is a dummy interrupt service routine used to initialize the IST. *--------------------------------------------------- _vec_dummy: B B3 NOP 5 *--------------------------------------------------- * This is the actual interrupt service table (IST). It is properly aligned and * is located in the subsection .text:vecs. This means if you don't explicitly * specify this section in your linker command file, it will default and link * into the .text section. Remember to set the ISTP register to point to this * table. *--------------------------------------------------- .sect ".text:vecs" .align 1024 _vectors: _vector0: VEC_ENTRY _c_int00 ;RESET _vector1: VEC_ENTRY _vec_dummy ;NMI _vector2: VEC_ENTRY _vec_dummy ;RSVD _vector3: VEC_ENTRY _vec_dummy _vector4: VEC_ENTRY _vec_dummy _vector5: VEC_ENTRY _vec_dummy _vector6: VEC_ENTRY _vec_dummy _vector7: VEC_ENTRY _vec_dummy _vector8: VEC_ENTRY _vec_dummy _vector9: VEC_ENTRY _vec_dummy _vector10: VEC_ENTRY _vec_dummy _vector11: VEC_ENTRY _vec_dummy _vector12: VEC_ENTRY _vec_dummy _vector13: VEC_ENTRY _vec_dummy _vector14: VEC_ENTRY _vec_dummy _vector15: VEC_ENTRY _vec_dummy *---------------------------------------------------4.Mcbsp_inti.c

/*************************************************** Copyright (C), 2007 by SEED Electronic Technology LTD. FileName: Mcbsp_inti.c Author: Ya.X Version : V1.0 Date:2007-09-20 Description: McBSP 的配置 与McBSP 处理相关的一些函数,包括: McBSP 初始化,发送和接收函数 ***************************************************/ #include #include

#include

#include

#include "DEC643.h"

#include "comm.h"

MCBSP_Handle hMcbsp;

/*发送帧缓冲区*/

unsigned short mcbspx[FRAMLENGTH];

PMcbspForDec643 psend = (PMcbspForDec643)mcbspx;

/*McBSP配置结构体*/

static MCBSP_Config MyMcBSPConfig =

{

MCBSP_SPCR_RMK //Serial Port Control Register (SPCR)

(

MCBSP_SPCR_FREE_YES,

// Serial clock free running mode(FREE)

MCBSP_SPCR_SOFT_YES,

// Serial clock emulation mode(SOFT)

MCBSP_SPCR_FRST_YES,

// Frame sync generator reset(FRST)

MCBSP_SPCR_GRST_YES,

// Sample rate generator reset(GRST)

MCBSP_SPCR_XINTM_XRDY,

// Transmit interrupt mode(XINTM)

MCBSP_SPCR_XSYNCERR_NO,

// Transmit synchronization error

MCBSP_SPCR_XRST_YES,

// Transmitter reset(XRST)

MCBSP_SPCR_DLB_OFF,

// Digital loopback(DLB) mode

MCBSP_SPCR_RJUST_RZF,

// Receive data sign-extension and

// justification mode(RJUST)

MCBSP_SPCR_CLKSTP_DISABLE,

// Clock stop(CLKSTP) mode non_SPI mode

MCBSP_SPCR_DXENA_OFF,

// DX Enabler(DXENA) -Extra delay for

// DX turn-on time.

MCBSP_SPCR_RINTM_RRDY,

// Receive interrupt(RINT) mode

MCBSP_SPCR_RSYNCERR_NO,

// Receive synchronization error(RSYNCERR)

MCBSP_SPCR_RRST_YES

// Receiver reset(RRST)

),

MCBSP_RCR_RMK

// Receive Control Register (RCR)

(

MCBSP_RCR_RPHASE_SINGLE,

// Receive phases

MCBSP_RCR_RFRLEN2_OF(0),

// Receive frame length

// in phase 2(RFRLEN2)

MCBSP_RCR_RWDLEN2_8BIT,

// Receive element length

// in phase 2(RWDLEN2)

MCBSP_RCR_RCOMPAND_MSB,

// Receive companding mode (RCOMPAND)

MCBSP_RCR_RFIG_YES,

// Receive frame ignore(RFIG)

MCBSP_RCR_RDATDLY_1BIT,

// Receive data delay(RDATDLY)

MCBSP_RCR_RFRLEN1_OF(0),

// Receive frame length

// in phase 1(RFRLEN1)

MCBSP_RCR_RWDLEN1_16BIT, // Receive element length

// in phase 1(RWDLEN1)

MCBSP_RCR_RWDREVRS_DISABLE // Receive 32-bit bit reversal

// feature.(RWDREVRS)

),

MCBSP_XCR_RMK //Transmit Control Register (XCR)

(

MCBSP_XCR_XPHASE_SINGLE, // Transmit phases

MCBSP_XCR_XFRLEN2_OF(0), // Transmit frame length

// in phase 2(XFRLEN2)

MCBSP_XCR_XWDLEN2_8BIT, // Transmit element length

// in phase 2

MCBSP_XCR_XCOMPAND_MSB, // Transmit companding mode(XCOMPAND)

MCBSP_XCR_XFIG_YES, // Transmit frame ignore(XFIG)

MCBSP_XCR_XDATDLY_1BIT, // Transmit data delay(XDATDLY)

MCBSP_XCR_XFRLEN1_OF(0), // Transmit frame length

// in phase 1(XFRLEN1)

MCBSP_XCR_XWDLEN1_16BIT, // Transmit element length

// in phase 1(XWDLEN1)

MCBSP_XCR_XWDREVRS_DISABLE // Transmit 32-bit bit reversal feature

),

MCBSP_SRGR_RMK //serial port sample rate generator register(SRGR)

(

MCBSP_SRGR_GSYNC_FREE, // Sample rate generator clock

// synchronization(GSYNC).

MCBSP_SRGR_CLKSP_RISING, // CLKS polarity clock edge select(CLKSP)

MCBSP_SRGR_CLKSM_INTERNAL, // MCBSP sample rate generator clock

// mode(CLKSM)

MCBSP_SRGR_FSGM_DXR2XSR, // Sample rate generator transmit frame

// synchronization

MCBSP_SRGR_FPER_OF(0), // Frame period(FPER)

MCBSP_SRGR_FWID_OF(239), // Frame width(FWID)

MCBSP_SRGR_CLKGDV_OF(239) // Sample rate generator clock

// divider(CLKGDV)

),

MCBSP_MCR_DEFAULT, // Using default value of MCR register

MCBSP_RCERE0_DEFAULT, // Using default value of RCERE registers

MCBSP_RCERE1_DEFAULT,

MCBSP_RCERE2_DEFAULT,

MCBSP_RCERE3_DEFAULT,

MCBSP_XCERE0_DEFAULT, // Using default value of XCERE registers

MCBSP_XCERE1_DEFAULT,

MCBSP_XCERE2_DEFAULT,

MCBSP_XCERE3_DEFAULT,

MCBSP_PCR_RMK //serial port pin control register(PCR)

(

MCBSP_PCR_XIOEN_SP, // Transmitter in general-purpose I/O mode

MCBSP_PCR_RIOEN_SP, // Receiver in general-purpose I/O mode

MCBSP_PCR_FSXM_INTERNAL, // Transmit frame synchronization mode

MCBSP_PCR_FSRM_EXTERNAL, // Receive frame synchronization mode

MCBSP_PCR_CLKXM_OUTPUT, // Transmitter clock mode (CLKXM)

MCBSP_PCR_CLKRM_INPUT, // Receiver clock mode (CLKRM)

MCBSP_PCR_CLKSSTAT_0, // CLKS pin status(CLKSSTAT)

MCBSP_PCR_DXSTAT_0, // DX pin status(DXSTAT)

MCBSP_PCR_FSXP_ACTIVEHIGH, // Transmit frame synchronization polarity(FSXP)

MCBSP_PCR_FSRP_ACTIVEHIGH, // Receive frame synchronization polarity(FSRP)

MCBSP_PCR_CLKXP_RISING, // Transmit clock polarity(CLKXP)

MCBSP_PCR_CLKRP_FALLING // Receive clock polarity(CLKRP)

)

};

/*************************************************** ********

Function: McBSP_init

Description: McBSP初始化,包括McBSP的打开、配置、启动

Calls: No

Called By: main

Input: No

Output: No

Return: No

Others: No

**************************************************** ********/

void McBSP_init()

{

/* Let's open up serial port 0 */

hMcbsp = MCBSP_open(MCBSP_DEV0, MCBSP_OPEN_RESET);

/* We'll set it up for digital loopback, 32bit mode. We have */

/* to setup the sample rate generator to allow self clocking.*/

MCBSP_config(hMcbsp,&MyMcBSPConfig);

/* Now that the port is setup, let's enable it in steps. */

MCBSP_start(hMcbsp, MCBSP_RCV_START | MCBSP_XMIT_START |

MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC,

0xFFFF);

}

/***************************************************

********

Function: mcbsp_tx

Description: 通过McBSP发送一帧数据(128 short)

Calls: No

Called By:

Input: addr: McBSP帧数据的地址

Output: No

Return: No

Others: No

****************************************************

********/

void mcbsp_tx(unsigned short * addr)

{

unsigned short i,tmp;

unsigned short check = 0;

//send McBSP_Frame

for(i=0; i < (FRAMLENGTH-1); i++)

{

tmp = *(addr++);

check = check^tmp;

while (!MCBSP_xrdy(hMcbsp));

MCBSP_write(hMcbsp,tmp);

}

//send McBSP_Frame check bit

if( (FRAMLENGTH-1) == i )

{

*addr=check;

while(MCBSP_xrdy(hMcbsp)==0);

MCBSP_write(hMcbsp,check);

}

}

/***************************************************

Function: Mcbsp_Wordsend

Description: 通过McBSP发送文字信息

Calls: mcbsp_tx()

Called By: main

Input: d_sam: 待发送文字的字数

Buffer:存放文字信息的缓冲区

地址

type: 指定当前发送数据的类

型;

文字(CHAR_DATASEND)

数字(NUM_DATASEND)

Output: No

Return: No

Others: No

***************************************************/

void Mcbsp_Wordsend( int d_sam, unsigned short

*Buffer,unsigned short type)

{

int i;

unsigned short tmp;

unsigned short tmpH,tmpL;

//填充mcbsp帧信息

psend->Length = FRAMLENGTH;

psend->Type = type;

psend->Mutul = FRAME_SING;

psend->Data[0] = d_sam;

//将文字信息进行little endian到big endian的置

for( i=0; i

{

tmp = *(Buffer+i);

tmpH = (tmp>>8)&0xFF;

tmpL = tmp&0xFF;

psend->Data[1+i] = (tmpL<<8) | tmpH ;

}

//发送一帧数据

mcbsp_tx(mcbspx);

}

/*************************************************** ********

Function: Mcbsp_Datasend

Description: 通过McBSP发送数字信息

Calls: mcbsp_tx()

Called By: main

Input: d_sam: 待发送数字的个数

Buffer:存放数字的缓冲区地址

type: 指定当前发送数据的类型;

文字(CHAR_DATASEND)

数字(NUM_DATASEND) Output: No

Return: No

Others: No

***************************************************/ void Mcbsp_Datasend(int d_sam, unsigned short *Buffer, unsigned short type)

{

int i;

//填充mcbsp帧信息

psend->Length = FRAMLENGTH;

psend->Type = type;

psend->Mutul = FRAME_SING;

psend->Data[0] = d_sam;

//填充数据信息

for( i=0; i

{

psend->Data[1+i] = *(Buffer+i);

}

//发送一帧数据

mcbsp_tx(mcbspx);

}

/*************************************************/ // No more

/**************************************************/

5.gui_string.asm

************************************************************** * Copyright (C), 2007 by SEED Electronic Technology LTD.

* FileName: gui_string.asm

* Author: Ya.X Version : V1.0 Date:2007-09-20 * Description: GUI(SEED-MMI5402 Graphic User Interface)

**************************************************************

.def _strNull

.def _strMcBSP

.sect ".sconst"

_strNull: .string 0x00,0x00

_strMcBSP: .string "合众达电子有限公司" ,0x00,0x00 .end

dsp课程设计实验报告

DSP 课程设计实验 一、语音信号的频谱分析: 要求首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在MATLAB 中,可以利用函数fft 对信号进行快速傅立叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。 其程序为: >> [y,fs,bits]=wavread('I:\',[1024 5120]); >> sound(y,fs,bits); >> Y=fft(y,4096); >> subplot(221);plot(y);title('原始信号波形'); | >> subplot(212);plot(abs(Y));title('原始信号频谱'); 程序运行结果为: 二、设计数字滤波器和画出频率响应: 根据语音信号的特点给出有关滤波器的性能指标: 低通滤波器性能指标,p f =1000Hz ,c f =1200Hz ,s A =100dB ,p A =1dB ; 高通滤波器性能指标,c f =4800Hz ,p f =5000Hz ,s A =100dB ,p A =1dB ; 带通滤波器性能指标,1p f =1200Hz ,2p f =3000Hz ,1c f =1000Hz ,2c f =3200Hz ,s A =100dB , p A =1dB ;

】 要求学生首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器,在MATLAB中,可以利用函数butte、cheby1和ellip设计IIR滤波器;最后,利用MATLAB中的函数freqz画出各种滤波器的频率响应,这里以低通滤波器为例来说明设计过程。 低通: 用窗函数法设计的低通滤波器的程序如下: >> fp=1000;fc=1200;As=100;Ap=1;fs=22050; >> wc=2*fc/fs;wp=2*fp/fs; >> N=ceil(/*(wc-wp)/2))+1; >> beta=*; >> Win=Kaiser(N+1,beta); 、 >>b=firl(N,wc,Win); >>freqz(b,1,512,fs); 程序运行结果: 这里选用凯泽窗设计,滤波器的幅度和相位响应满足设计指标,但滤波器长度(N=708)太长,实现起来很困难,主要原因是滤波器指标太苛刻,因此,一般不用窗函数法设计这种类型的滤波器。 用双线性变换法设计的低通滤波器的程序如下: >> fp=1000;fc=1200;As=100;Ap=1;fs=22050; >> wc=2*fc/fs;wp=2*fp/fs; 》 >> [n,wn]=ellipord(wp,wc,Ap,As); >> [b,a]=ellip(n,Ap,As,wn); >> freqz(b,a,512,fs); ^

dsp课程设计实验报告总结

DSP课程设计总结(2013-2014学年第2学期) 题目: 专业班级:电子1103 学生姓名:万蒙 学号:11052304 指导教师: 设计成绩: 2014 年6 月

目录 一设计目的----------------------------------------------------------------------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

DSP实验报告

电气信息工程学院 D S P技术与综合训练 实验报告 班级 08通信1W 姓名丁安华 学号 08313115 指导老师倪福银刘舒淇 2011年09 月

目录 实验一 LED演示 1.1.实验目的 -------------------------------------------------P2 1. 2.实验设备-------------------------------------------------P2 1. 3.实验原理-------------------------------------------------P2 1. 4.实验程序设计流程------------------------------------------P3 1. 5.实验程序编写----------------------------------------------P4 1. 6.实验步骤-------------------------------------------------P7 1. 7.实验结果与分析--------------------------------------------P7实验二键盘输入 2.1.实验目的 -------------------------------------------------P8 2.2.实验设备-------------------------------------------------P8 2. 3.实验原理-------------------------------------------------P8 2. 4.实验程序设计流程------------------------------------------P9 2. 5.实验程序编写----------------------------------------------P10 2. 6.实验步骤-------------------------------------------------P14 2. 7.实验结果与分析--------------------------------------------P14实验三液晶显示器控制显示 3.1.实验目的 -------------------------------------------------P15 3.2.实验设备-------------------------------------------------P15 3.3.实验原理-------------------------------------------------P15 3. 4.实验程序设计流程------------------------------------------P17 3. 5.实验程序编写----------------------------------------------P18 3. 6.实验步骤-------------------------------------------------P22 3. 7.实验结果与分析--------------------------------------------P23实验四有限冲激响应滤波器(FIR)算法 4.1.实验目的 -------------------------------------------------P23 4.2.实验设备-------------------------------------------------P23 4.3.实验原理-------------------------------------------------P24 4.4.实验程序设计流程------------------------------------------P25 4. 5.实验程序编写----------------------------------------------P25 4. 6.实验步骤-------------------------------------------------P27 4. 7.实验结果与分析--------------------------------------------P28

DSP实验报告

实验一 程序的控制与转移 一、实验目的 1、掌握条件算符的使用。 2、掌握循环操作指令(BNAZ )和比较操作指令(CMPR ) 二、实验设备 计算机、ZY13DSP12BD 实验箱、5402EVM 板。 三、实验原理 程序控制指令主要包括分支转移、子程序调用、子程序返回、条件操作及循环操作等。通过传送控制到程序存储器的其他位置,转移会中断连续的指令流。转移会影响在PC 中产生和保护的程序地址。其中转移可以分为两种形式的,一种是有条件的,另一种是无条件的。 四、实验内容 编写程序,实现计算y= ∑=5 1 i i x 的值。 五、实验步骤 1、用仿真机将计算机与ZY13DSP12BD 实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS 软件。 2、新建一个项目:点击Project -New ,将项目命名为example2,并将项目保存在自己定义的文件夹下。 3、新建一个源文件example2.asm 。将该文件添加到工程example2.pjt 中。 4、在工程管理器中双击example2.asm ,编写源程序: .tiltle ”example2.asm ” .mmregs STACK .usect ”STACK ”,10H ;堆栈的设置 .bss x,5 ;为变量分配6个字的存储空间 .bss y,1 .def start .data table: .word 10,20,3,4,5 ;x1,x2,x3,x4,x5 .text Start: STM #0,SWWWSR ;插入0个等待状态 STM #STACK+10H,sp ;设置堆栈指针 STM #x,AR1 ;AR1指向x RPT #4 ;下一条被重复执行5遍 MVPD table,*AR1+ ;把程序存储器中的数据传送到数据存储器 LD #0,A ;A 清零 CALL SUM ;调用求和函数 end: B end SUM: STM #x,AR3 ;AR3指向x STM #4,AR2 ;AR2=4 loop: ADD *AR3+,A ;*AR3+A-->A,然后AR3+ BANZ loop,*AR2- ;如果AR2的值不为0,则跳到loop 处;否则执行下一条指令 STL A,*(y) ;把A 的低16位赋给变量y

DSP技术与课程设计实验报告二(精)

东南大学自动化学院 实验报告 课程名称: D SP 原理及C 程序开发 第二次实验 实验名称:基于DSP 系统的实验——指示灯、拨码开关和定时器院(系):自动化专业:自动化 姓名:学号: 实验室:实验组别: 同组人员:实验时间:2012 年 4 月 18日 评定成绩:审阅教师: 第一部分实验:基于DSP 系统的实验——指示灯和拨码开关 一.实验目的 1. 了解ICETEK –F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩展。 2. 了解ICETEK –F28335-A 评估板上指示灯和拨码开关扩展原理。 3. 学习在C 语言中使用扩展的控制寄存器的方法。 二.实验设备 计算机,ICETEK –F28335-A 实验箱(或ICETEK 仿真器+ICETEK–F28335-A 评估板+相关连线及电源)。 三.实验原理

1.TMS320F28335DSP 的存储器扩展接口 存储器扩展接口是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。 -ICETEK –F28335-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下: 0x180004- 0x180005:D/A 转换控制寄存器 0x180001:板上DIP 开关控制寄存器 0x180000:板上指示灯控制寄存器 -与ICETEK –F28335-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备: 208000-208004h :读-键盘扫描值,写-液晶控制寄存器 208002-208002h :液晶辅助控制寄存器 208003-208004h :液晶显示数据寄存器 2.指示灯与拨码开关扩展原理

dsp实验报告 哈工大实验三 液晶显示器控制显示实验

实验三液晶显示器控制显示实验 一. 实验目的 通过实验学习使用2407ADSP 的扩展I/O 端口控制外围设备的方法,了解液晶显示器的显示控制原理及编程方法。 二. 实验设备 计算机,ICETEK-LF2407-EDU 实验箱。 三.实验原理 ICETEK-LF2407-A 是一块以TMS320LF2407ADSP 为核心的DSP 扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。 液晶显示模块的访问、控制是由2407ADSP 对扩展I/O 接口的操作完成。 控制I/O 口的寻址:命令控制I/O 接口的地址为0x8001,数据控制I/O 接口的地址为0x8003 和0x8004,辅助控制I/O 接口的地址为0x8002。 显示控制方法: ◆液晶显示模块中有两片显示缓冲存储器,分别对应屏幕显示的象素,向其中写入数 值将改变显示,写入“1”则显示一点,写入“0”则不显示。其地址与象素的对应 方式如下: ◆发送控制命令:向液晶显示模块发送控制命令的方法是通过向命令控制I/O 接口 写入命令控制字,然后再向辅助控制接口写入0。下面给出的是基本命令字、解释 和 C 语言控制语句举例。 ?显示开关:0x3f 打开显示;0x3e 关闭显示; ?设置显示起始行:0x0c0+起始行取值,其中起始行取值为0 至63; ?设置操作页:0x0b8+页号,其中页号取值为0-7; ?设置操作列:0x40+列号,其中列号为取值为0-63; ◆写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的 数据写入液晶显示模块的缓存。将数据发送到相应数据控制I/O 接口即可。

DSP实验报告

学校代码学号分类号密级 DSP实验报告 院系名称 专业名称 年级 学生姓名 指导老师 年月日

实验一数据存储实验 一、实验目的 1. 掌握 TMS320C54X 程序空间的分配; 2. 掌握 TMS320C54X 数据空间的分配; 3. 能够熟练运用TMS320C54X 数据空间的指令。 二、实验设备 计算机,CCS 3.1版软件,DSP仿真器,E300实验箱,DSP-54XP CPU板。 三、实验系统相关资源介绍 1. 本实验指导书是以TMS320VC5416为例,介绍其相关的内部和外部存储器资源。对于其他类型的CPU请参考查阅相关的数据手册。) 下面给出TMS320VC5416的存储器分配表: 对于数据存储空间而言,映射表相对固定。值得注意的是内部寄存器都映射到数据存储器空间内。因此在编程时这些特定的空间不能作其他用途。 对于程序空间而言,其映射表和CPU 的工作模式有关。当MP/MC 引脚为高电平时,CPU 工作在微处理器模式;当MP/MC引脚为低电平时,CPU工作在微计算机模式。具体的MP和MC模式下的程序和数据映射关系如上图所示。 2. 样例程序实验操作简单说明: 本实验程序将对0x1000 开始的8 个地址空间,填写入0xAAAA 的数据,然后读出,并存储到以0x1008开始的8个地址空间,在CCS中可以观察DATA存储器空间地址0x1000~0x100F 值的变化。 四、实验步骤与内容 1. 在进行 DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示: 2. E300 底板的开关SW4 的第1位置ON,其余位置OFF,SW5全部置ON,其余开关不做设置要求。 3. 上电复位 在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则DSP开发系统与计算机连接存

DSP课程设计报告

数据采集处理和控制系统设计 一课程设计要求 1.基本DSP硬件系统设计要求 ①基本DSP硬件系统以TMS320C54x系列为核心处理器,包括最小系统、存储器扩展、显示器、键盘、AD、DA等电路模块; ②硬件设计画出主要芯片及电路模块之间的连接即可,重点考查电路模块方案设计与系统地址分配; ③设计方案以电路示意图为主,辅以必要的文字说明。 2.基本软件设计要求 ①看懂所给例程,画出例程输出波形示意图; ②修改例程程序,使之输出其它波形,如方波、三角波、锯齿波等均可; ③设计方案以程序实现为主,辅以必要的文字说明。 3.课程设计报告要求 ①硬件系统设计:设计思路、设计系统功能、主要芯片选型及使用方法、设计方案说明、电路示意图 ②软件系统设计:示例程序功能解读及输出波形示意图、设计软件功能、设计思路、实现源码(带程序注释) ③报告总结 二系统分析 利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP 中采集信号,并且对信号进行频谱分析,滤波等。通过键盘或者串口命令选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD 上显示。主要功能如下: (1)对外部输入的模拟信号采集到DSP 内存,会用CCS 软件显示采集的数据波形。 (2)对采集的数据进行如下算法分析: ①频谱分析:使用fft 算法计算信号的频率。 ②对信号进行IIR 滤波或FIR 滤波,并且计算滤波前后信号的频率。 ③外部键盘或者从计算机来的串口命令选择算法功能,并且将结果在 LCD 上显示。 绘制出DSP系统的功能框图、使用AD(Altium Designer)绘制出系统的原理图和PCB 版图。 在 DSP 中采集信号,用CCS 软件显示采集的数据波形,以及对采集的数据进行算法分析。 三硬件设计 3.1 硬件总体结构

DSP实验报告

DSP实验报告 电子111班 刘卓 112099 同组人:张顺 112108

指令实验 一、实验目的 1、了解DSP的结构及引脚功能; 2、掌握DSP的基本指令。 二、实验要求 了解怎样对DSP进行简单的编程操作、运算控制等基本汇编语言及算术语言、实验测试及除错验证。 三、实验步骤 见教材342页。 四、实验结果 1、直观结果 .title "ex1" .mmregs .def _c_int00 DAT0 .SET 60H DAT1 .SET 61H DAT2 .SET 62H DAT3 .SET 63H .text ADD3 .MACRO P1,P2,P3,ADDRP LD P1,A ADD P2,A ADD P3,A STL A,ADDRP .ENDM _c_int00:B start start: LD #004h,DP ;DP=0004,ST0=1804 STM #1000h,SP ;SP=1000 SSBX INTM ;INTM=1 bk0: ST #0012h,DAT0 ;D(0x0260)=0x0012 LD #0023h,A ;A=0000000023 ADD DAT0,A ;A=0000000035,ST0=1004,C=0 NOP NOP bk1: ST #0054h,DAT0 ;D(0x0260)= 0x0054 LD #0002h,A ;A=0000000002 SUB DAT0,A ;A=FFFFFFFFAE NOP NOP bk2: ST #0345h,DAT0 ;D(0x0260)=0x0345 STM #0002h,T ;T=0002

DSP技术及课程设计实验报告二(精)

DSP技术及课程设计实验报告二(精)

东南大学自动化学院 实验报告 课程名称: D SP 原理及C 程序开发 第二次实验 实验名称:基于DSP 系统的实验——指示灯、拨码开关和定时器院(系):自动化专业:自动化 姓名:学号: 实验室:实验组别: 同组人员:实验时间:2012 年 4 月 18日 评定成绩:审阅教师: 第一部分实验:基于DSP 系统的实验——指示灯和拨码开关 一.实验目的 1. 了解ICETEK –F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩展。 2. 了解ICETEK –F28335-A 评估板上指示灯和拨码开关扩展原理。 3. 学习在C 语言中使用扩展的控制寄存器的方法。 二.实验设备 计算机,ICETEK –F28335-A 实验箱(或ICETEK 仿真器+ICETEK–F28335-A 评估板+相关连线及电源)。 三.实验原理

1.TMS320F28335DSP 的存储器扩展接口 存储器扩展接口是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。 -ICETEK –F28335-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下: 0x180004- 0x180005:D/A 转换控制寄存器 0x180001:板上DIP 开关控制寄存器 0x180000:板上指示灯控制寄存器 -与ICETEK –F28335-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备: 208000-208004h :读-键盘扫描值,写-液晶控制寄存器 208002-208002h :液晶辅助控制寄存器 208003-208004h :液晶显示数据寄存器 2.指示灯与拨码开关扩展原理

DSP实验报告

DSP实验报告 1.问题一:设置硬件设备时,找不到实验设备上的仿真器的型号,F2812 XDS510 Emulator怎么办? 解决的方法:只要找到F2812 XDS5100 Emulator添加即可,再添加成功后在System configuration 的窗口中显示F2812 XDS510 Emulator,多的一个0自动就去去除了。 2.问题二:问什么.c文件编译连接通过后程序点run,依然无法运行,会弹出warning窗口,No valid program is currently loaded into memory. 解决的办法:是因为没有添加.out文件的缘故,弹出warning窗口要选择no,然后在菜单的File>>load program 弹出窗口,选择Debug文件夹下的.out添加。3.问题三:执行write_buffer一行时,如果按F10执行程序和按F11执行程序现象 有和不同。 现象:执行write_buffer一行时。如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。 4.问题四:怎样可以看到结构体变量中的每个元素? 解决办法:把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。 5.问题五:在读懂实验2-1程序后,修改了实验2-1的程序,重新编译、连接执 行程序,可是为什么其执行的结果没有改变? 解决办法:对.OUT文件进行重新加载。因为在修改了实验2-1的程序后,重新编译、连接程序,此时.OUT文件已经改变了。如果不重新加载,那么执行的.OUT 文件依旧是之前的.OUT文件,其结果将不会改变。 6.问题六:实验1-1的波形不能显示,显示出杂乱无章的杂声波怎么办?(按实 验指导书应该是正弦波)。 解决办法:原因框中的第二项Start Address中的Inp-buffer设置错了,正确的应该是inp_buffer 中间那根划线是关键。最好的办法就是直接从volume.c的文件中复制inp_buffer再粘贴,这样就不会错了,如果自己输入的话,输入法不对,或是输错都容易

DSP实验报告

DSP课程设计 实验报告 任意信号发生器的设计 院(系):电子信息工程学院 设计人员:王睿学号:08211074 李琦08211068 成绩:工程设计50 报告20 答辩30 总分 评语: 指导教师签字: 日期:

目录 一、设计任务书 (3) 二、设计内容 (3) 三、设计方案、算法原理说明 (3) 四、程序设计、调试与结果分析 (4) 五、设计(安装)与调试的体会 (25) 六、参考文献 (26)

一、设计任务书 信号发生器已广泛应用于科学实验、通讯和控制等应用领域中。使用 DSP 和 D/A 转换器可以产生连续的正弦波信号,同样也能产生方波、锯齿波、三角波等其它各种信号波形。本设计要求采用DSP 及其D/A 转换器产生上述各种信号波形。 基本部分: 使用DSP 产生300—4000HZ 的正弦信号,要求使用计算法,并且频率可变、幅度可变、直流分量可变。 发挥部分: 使用DSP 产生300—4000HZ 的方波、锯齿波和三角波。 二、设计内容 (1)编写C 语言程序,并在CCS 集成开发环境下调试通过。 (2)实现设计所要求的各项功能。 (3)按要求撰写设计报告。 三、设计方案、算法原理说明 产生连续信号的方法通常有两种:查表法和计算法,查表法不如计算法使用灵活。计算法可以使用泰勒级数展开法进行计算,也可以使用差分方程进行迭代计算或者直接使用三角函数进行计算。计算结果可以边计算边输出,也可以先计算后输出。 正弦函数和余弦函数的泰勒级数数学表达式为: =x sin +--+-+-+- --)! 12()1(!9!7!5!3121 9753n x x x x x x n n ,x ?),(∞-∞∈ =x cos +-+-+-+-)! 2()1(!8!6!4!2128642n x x x x x n n ,x ?),(∞-∞∈. 如果要计算一个角度ⅹ的正弦和余弦值,可以取其前五项进行近似计算。 或使用下面递归的差分方程进行计算。 y [n ]=A*y [n -1]-y [n -2] 其中:A=2cos(x ),x =2πF/F S 。F —信号频率,F S —D/A 转换频率。 利用递推公式计算正弦和余弦值需要已知cos(x )和正弦、余弦的前两个值。计算时所需的计算量小,但如果用来产生连续的正弦和余弦信号,则累积误差太大。要得到精确的计算结果,可以使用泰勒级数展开法进行计算,当然计算时所需的计算量很大。在实际应用时可以根据需要选择相应的算法。 要产生一个正弦信号,首先要算出一个周期内各样点的值,因为sin(x )的值总是小于1的小数,而5402 DSP 是16位的定点处理器,所以要将其乘以215,变为Q15的数据格式,才能够在DSP 中送到D/A 转换器进行处理。 查表法与计算法的优缺点比较: 查表法:事先将要输出的数据计算好,存储在DSP 的内部RAM 中,然后依次循环输出,从而才生波形。这种方法的优点在于其速度快,可以产生频率很高的波形,而且不占用DSP 的计算时间,它的缺点是需要占用DSP 的内存空间,尤其是对采样频率比较大的输出波形,所

DSP系统设计实验报告

西南科技大学 课程设计报告课程名称:DSP系统设计 设计题目:字符的可视化显示 专业班级: 学生姓名: 学生学号: 设计时间: 指导教师:

一.设计题目及分析 1、设计题目:字符的可视化显示 2、题目分析 二.设计思路及框图 1.设计思路: 本设计中采用自动显示和手动显示两种方法来实现字符的显示。自动显示采用循环和延迟函数自动读取数据缓存区的内容,给予显示;手动显示则通过不断读取键盘输入,然后根据所得到的扫描码找到相应的存储单元,给予显示。 在最初开始设计的时候必须把要显示字符按列的顺序存储在点阵扫描码中。由于在手动显示方案中要读取键盘输入字符的扫描码,并将其转换为字符显示。在这一过程中,牵涉到键盘输入的读取,扫描码的转换,以及字符的显示。所以接下来编写怎样读取键盘输入,怎样实现扫描码的转化换及字符的显示。 2.框图: 三.硬件设计(算法原理) 四.软件设计 基本功能:在本设计中,软件设计基本功能主要分为四部分:点阵扫描码的存储,键盘输入的读取,扫描码的转换以及字符的显示; 1.点阵扫描码的存储 发光二极管显示阵列的显示是由I/O 扩展端口控制,DSP 须将显示的图形按列的顺序存储起来(8×8 点阵,8 个字节,高位在下方,低位在上方),然后定时刷新控制显示。具体方法是,将以下控制字按先后顺序,每两个为一组发送到全局控制寄存器的第6-4 位和端口CTRLA,地址是0x602802 发送完毕后,隔不太长的时间(以人眼观察不闪烁的时间间隔)再发送一遍。由于位值为“0”时点亮,所以需要将显示的数据取反。 0x01,第8 列数据取反;0x02,第7 列数据取反; 0x04,第6 列数据取反;0x08,第5 列数据取反; 0x10,第4 列数据取反;0x20,第3 列数据取反; 0x40,第2 列数据取反;0x80,第1 列数据取反 根据显示原理,如果要显示0-9和’+’、’-’、’*’、’/’存储单元内容如下: unsigned char ledkey[14][8]=

DSP技术与应用实验报告

1 DSP应用课程设计(论文) 设计(论文)题目D S P技术与应用 学院名称信息科学与技术学院 专业名称通信工程 学生姓名 学生学号 任课教师 设计(论文)成绩 2016年11月

第一节信号源设计 Z变换与反Z变换运算的实现方法 信号发生器本身是没有输入信号的,其输出是按一定的周期,根据输出波形的函数式计算输出信号的数值,因而能连续的,周期性的产生输出信号。其基本思路是:首先,对欲产生的输出波形的函数表达式作Z变换,然后再作反Z变换,求出对应的差分方程的递推公式。第二步,编写计算递推公式的初始化程序。第三步,编写中断后的递推程序,利用中断程序周期性的计算新的输出值,从而获得欲求的基于DSP的信号源。 (1)编写计算递推公式的初始化程序 .title "cos (2P I*20000) wave" .mmregs .global _c_int00,_tint,vector INIT_A .set 79BAh INIT_B .set 0c000h INIT_C .set 0c323h .bss y1,1 .bss y2,1 .bss AA,1 .bss BB,1 .bss CC,1 .text _c_int00: LD #0,DP SSBX INTM LD #vector,A AND #0FF80h,A ANDM #007Fh,PMST OR PMST,A STLM A,PMST STM #10h,TCR STM #2499,PRD STM #20h,TCR LDM IMR,A OR #08h,A STLM A,IMR

LD #AA,DP SSBX FRCT ST #INIT_A,AA ST #INIT_B,BB ST #INIT_C,CC LD AA,A ADD CC,A STL A,y2 LD AA,T MPY y2,A ADD BB,A STH A,y1 STM #0h,TCR RSBX INTM again: NOP B again _tint: LD BB,T MPY y2,A LTD y1 MAC AA,A STH A,1,y1 NOP int1_end: NOP RETE .end (2)编写中断向量程序 .mmregs .ref _ret .ref _c_int00 .ref _tint .global vector .sect ".int_table" ;-------------------------------------------------------------------- ; interrupte vector table ! ;-------------------------------------------------------------------- vector: rs B _c_int00

DSP原理及应用课程设计实验报告

学院:信息与电气工程学院班级:电信081 姓名:学号: 课程:DSP原理及应用实验日期:_____年月日成绩: 实验一开发环境建立 一、实验目的 (1) 学会CCS软件的安装方法。 (2) 熟悉CCS集成开发环境,掌握工程的生成方法。 (3) 熟悉CCS常用菜单的使用。 (4) 掌握CCS集成开发环境的调试方法。 二、实验原理 CCS是进行DSP开发的一个集成环境,它是在 WINDOWS系统下工作的一个软件,通过该软件,我们可以进行DSP程序及系统的开发。 CCS提供了配置、建立、调试、跟踪和分析程序的工具,是进行DSP开发的常用工具,它是在WINDOWS系统下工作的一个软件,通过该软件,我们可以进行DSP程序的编辑及系统的开发。 3. 实验仪器和设备 (1) 主机1台 (2) 仿真器1台 (3) 主机1台 三、实验内容及步骤 3.1 CCS 安装 双击Code Composer Studio 图标;按照光标与提示依次执行,最后安装完成后重启计算机。 3.2 SEED-XDS510PLUS 的驱动安装 1、将SEED-XDS510PLUS 仿真器的USB 插头插入PC 机的USB 插槽中,启动计算机后识别SEED-XDS510PLUS 硬件,识别后安装其驱动程序。 2.按照提示依次执行,同时默认路径为CCS 的安装路径。 3.安装完毕后打开控制面板查看系统中的设备管理器,出现如下结果,证明硬件连接成功。

学院:信息与电气工程学院班级:电信081 姓名:学号: 课程:DSP原理及应用实验日期:_____年月日成绩: 4.将仿真器JTAG 插头与实验箱主控板SEED-DEC6713 的JTAG 插头J1 相连,打开实验箱电源开关。观察SEED-DTK_MBoard 单元的+5V、+3.3V、+15V、-15V 的电源指示灯以及SEED-DEC6713 的D2 与D4 的电源指示灯均亮。 5.双击usb20rest.exe,如下图。可以对仿真器进行复位: 3.3 驱动程序的配置 1.双击桌面上的Setup CCS 2(6000)。“Clear”原有的设备驱动程序配置。 根据DSP 的型号选择相应的TI 原装驱动程序,根据DSP 的型号选择相应的TI 驱动程序,本实验箱采用SEED-DEC6713,故选择C671x XDS510 Emulator 2.单击Import a Configuration File。 3.进入下图所示界面,选择C671x XDS510 Emulator 后,单击Import 后,点击Close 命令。 4.点中C671x XDS510 Emulator 驱动后,鼠标右键,在弹出的菜单中点击Properties

dsp课程设计心得体会

dsp课程设计心得体会 通过本次大学dsp实验,加深了我对DSP的认识,使我对DSP实验的操作有了更进一步的理解。基本掌握了CCS 实验环境的使用,并能够使用C语言进行简单的DSP程序设计。下面是管理资源吧小编为大家收集整理的大学dsp实验心得体会,欢迎大家阅读。 dsp课程设计心得体会篇1实验报告 一、实验室名称:数字信号处理实验室 二、实验项目名称:多种离散时间信号的产生 三、实验原理: 1、基本离散时间信号 利用MATLAB强大的数值处理工具来实现信号的分析和处理,首先就是要学会应用MATLAB函数来构成信号。常见的基本信号可以简要归纳如下: (1).单位采样序列 ?1n=0δ(n)=? 0?n≠0 在MATLAB中可以利用zeros()函数实现。 x=zeros(1,N); x(1)=1; 如果δ(n)在时间轴上延迟了k个单位,得到δ(n-k)即:δ(n-k)=?

(2).单位阶跃序列?1n=k ?0n≠0 ?1n≥0u(n)=? 0n在MATLAB中可以利用ones()函数实现。 x=ones(1,N); (3).正弦序列 x(n)=Asin(2πfn+?) 采用MATLAB的实现方法,如: n=0:N-1 x=A*sin(2*pi*f*n+?) (4).实指数序列 x(n)=A?an 其中,A、a为实数。采用MATLAB的实现方法,如:n=0:N-1 x=a.

(5).复指数序列 x(n)=A?e n=0:N-1 采用MATLAB的实现方法,如:x=A*exp((σ+j*ω0)*n) 为了画出复数信号x[n],必须要分别画出实部和虚部,或者幅值和相角。MATLAB函数real、imag、abs和angle 可以逐次计算出一个复数向量的这些函数。 2、基本数字调制信号 (1).二进制振幅键控(2ASK) 最简单的数字调制技术是振幅键控(ASK),即二进制信息信号直接调制模拟载波的振幅。二进制幅度键控信号的时域表达式:SASK(t)=[∑ang(t-nTs)]cosωct 其中,an为要调制的二进制信号,gn(t)是单极性脉冲信号的时间波形,Ts表示调制的信号间隔。(σ+jω0)n 典型波形如下: 图1 – 1二进制振幅键控信号时间波形 (2).二进制频移键控(2FSK) 在二进制数字调制中,若正弦载波的频率随二进制基带信号在f1和f2两个频率点间变化,则产生 二进制移频键控信号(2FSK信号)。二进制频域键控已调信号的时域表达式为: ????S2FSK(t)=?∑ang(t-nTS)?cosω1t+?∑ng(t-nTS)?cosω2t ?n??n?

DSP实验报告

DSP课程设计实验报告 学院 班级 姓名 学号 指导教师 2010年 6月

课程设计第一部分:学习程序实例 [实验4.1] 卷积运算 一、 实验目的 1. 掌握卷积运算的基本原理; 2. 掌握用C 语言编写DSP 程序的方法。 二、 实验设备 1. 一台装有CCS 软件的计算机; 2. DSP 实验箱的TMS320C5410主控板; 3. DSP 硬件仿真器。 三、 实验原理 卷积是数字信号处理中经常用到的运算。其基本的表达式为: ()()()∑=-= n m m n x m h n y 0 写实现程序时需要注意两点:(1)序列数组长度的分配,尤其是输出数组y (n) 要有足够的长度;(2)循环体中变量的位置,即n 和m 的关系。 四、 实验结果 打开工程Ex5_1.pjt 修改程序: 将输入序列x 的长度改为N1=15,h 的长度改为N2=20,将输入序列x 的函数改为x[i]=i+1,Run 之后出现问题,发现可能是由于x 长度15,h 长度20,卷积运算之后y 的长度为34,超出了之前程序定义好的三个都是20,存储长度没有改导致出错,于是将原来的float y[20]改为float y[100];改之后发现程序运行无误。 绘制波形图的方式: 波形图如下:H 图:

X图: Y图: 该CCS程序用C语言编写,实现得功能较为简单,在源程序的基础上可以很快地实现数据的修改从而得到新的结果,通过运行该程序,对于CCS的操作和使用方法有了初步的认识,同时也熟悉了利用C语言开发DSP程序的过程和 所需要的条件。

§4.2 [实验4.2] 相关运算 一、实验目的 1.掌握相关系数的估计方法; 2.掌握用C语言编写DSP程序的方法。 二、实验设备 1. 一台装有CCS软件的计算机; 2. DSP实验箱的TMS320C5410主控板; 3. DSP硬件仿真器。 三、实验结果 打开工程Ex5_2.pjt修改程序: 修改了m和n的长度: m=15; //10 n=45; //40 修改了for循环: for(i=0;i

DSP课程设计实验报告_06211217 06211229 06211230

DSP课程设计 实验报告 信号发生器的设计 院(系):电子信息工程学院 设计人员:关友亮 06211217 史宜民 06211229 苏文超 06211230 指导老师:高海林 授课时间: 2008 —— 2009 学年第一学期成绩:___________教师签名:___________

目录 一、设计任务 (2) 二、实验目的 (2) 三、设计内容 (2) 四、实验原理 (2) 五、程序设计 (7) 1、流程图 2、程序源代码 六、CCS5000程序调试 (11) 1、新建工程、编译过程、工程架构 2、程序运行结果(数据显示(用watch window观察变量的 变化)、图形显示) 七、实验总结 (16) 八、参考资料 (17)

一、设计任务书 信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。例 如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或 高或低的振荡器。信号发生器已广泛应用于科学实验、通讯和控制等应用 领域中。 使用DSP 和D/A 转换器可以产生连续的正弦波信号,同样也能产生方 波、锯齿波、三角波等其它各种信号波形。本设计要求采用DSP及其D/A 转换器产生上述各种信号波形。 二、实验目的: 1)了解产生信号的两种方法; 2)熟悉使用C语言编写程序; 3)熟悉C语言对CCS的访问和影响; 4)熟练使用软件CCS5000对程序的完整调试过程。 三、设计内容 使用DSP产生300—4000HZ的正弦信号,要求使用计算法,并且频率可变、幅度可变、直流分量可变。用软件CCS5000编程实现,并硬件(DSK 板或示波器)连接进行功能演示。 发挥部分:使用DSP产生300—4000HZ的方波和三角波。 四、设计方案、算法及原理说明 (1)产生连续的波形的方法主要有以下两种方法: 1、查表法:把事先将需要输出的数据计算好,存储在DSP中,然后依次输 出就可以了。查表法的优点是速度快,可以产生频率较高的波形,而且不占用DSP的计算时间;查表法的缺点是在于需要占用DSP的内部的存储空间,尤

相关主题
文本预览
相关文档 最新文档