dsp实验_2
- 格式:doc
- 大小:3.95 MB
- 文档页数:57
继续我的第二个实验;实现按键控制LED亮灭:功能描述:上电默认LD3亮;触动一次按键SW12,LD3灭再按一次按键SW12,LD3亮再触动一次按键SW12,LD3灭再按一次按键SW12,LD3亮。
实现每触动一次按键,LED执行一次由亮到灭,或者由灭到亮,也就是实现一次状态反转。
电路连接说明:LD3 设置为通用GPIO 上拉输出初始化后默认为输出LD3亮状态;LD3控制LED灯的负极,如下图;SW12 设置为通用GPIO 上拉输入该引脚应用滤波功能,且仅在按键抬起时控制LD3状态发生变化。
按键电路如上图,GPIO53须输出0,当按键按下时,读取GPIO50端口值,为0,当按键未按下时,GPIO50因为上上拉作用,其端口值为1。
程序设计说明:按键的读取采用实时扫描的方式(非中断方式),功能要求在按键抬起后发生LED状态翻转;所以要记录上一次按键值,并且将当前值==0&&上一次值==1时,做为按键抬起有效,控制LED发生状态翻转。
主要程序如下:while(1){EALLOW;last_Key_SW12 = new_Key_SW12; //保存旧值new_Key_SW12 = Key_SW12();//读取新值if( last_Key_SW12==0 && new_Key_SW12==1)LD3_TOGGLE();EDIS;}经实际测试,上述程序可以实现LD3的翻转,基本达到设计要求。
但是在测试过程中,时好时坏,有时能够看见LED快速翻转,说明按键有抖动的情况,这里可以考虑IO口滤波,即在初始化时,设置IO采样周期以及量化串口,设置如下:采样周期设置为200时,不再出现抖动现象,按键稳定操作。
源程序如下:#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#define LD3_ON() GpioDataRegs.GPACLEAR.bit.GPIO0 = 1#define LD3_OFF() GpioDataRegs.GPASET.bit.GPIO0 = 1#define LD3_TOGGLE() GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1#define LD4_ON() GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1#define LD4_OFF() GpioDataRegs.GPBSET.bit.GPIO34 = 1#define Key_SW12() GpioDataRegs.GPBDAT.bit.GPIO50/** main.c*/int main(void) {unsigned char last_Key_SW12=1;//保留上一次扫描结果,上电默认为未按下状态unsigned char new_Key_SW12=1;//保留当前扫描结果,上电默认为未按下状态InitSysCtrl();DINT;IER = 0x0000;IFR = 0x0000;InitPieCtrl();InitPieVectTable();InitGpio();EALLOW;//GPIO0 LD3 控制LED负极GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;//0 gpio modeGpioCtrlRegs.GPADIR.bit.GPIO0 = 1;//1 output 0 inputGpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//1 enable pullup 0 disable pullup//GPIO34 LD4 控制LED负极GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit.GPIO34 = 0;//1 enable pullup 0 disable pullup//GPIO50 按键矩阵SW12输入端GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO50 = 0;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO50 = 0;//1 enable pullup 0 disable pullup GpioCtrlRegs.GPBCTRL.bit.QUALPRD2= 200;//采样周期=2*Tsysclkout*200GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 2;//采样窗内3次采样结构相同//GPIO53 按键矩阵负极输出0GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO53 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO53 = 0;//1 enable pullup 0 disable pullup GpioDataRegs.GPBCLEAR.bit.GPIO53 = 1;LD3_ON();//默认输出亮状态LD4_OFF();EDIS;while(1){EALLOW;last_Key_SW12 = new_Key_SW12; //保存旧值new_Key_SW12 = Key_SW12();//读取新值if( last_Key_SW12==0 && new_Key_SW12==1) LD3_TOGGLE();EDIS;}}。
DSP原理与应用实验报告实验一集成开发环境CCS应用基础一、程序分析(1)三个文件的作用及接口情况,说明各个文件中伪指令的作用。
答:test1.asm文件的作用是汇编主程序,vectors.asm文件是中断矢量处理程序,test1.cmd文件是命令文件。
test1.asm中伪指令的作用:.title作用是在每页的顶部打印文件标题.mmregs为存储器映像寄存器定义符号名。
使用.mmregs的功能和对所有的存储器映像寄存器执行set伪指令相同。
.usect汇编命令建立的自定义段也是未初始化段.def 定义全局变量.text已初始化段.end终止汇编,位于程序源程序的最后一行。
vectors.asm中伪指令的作用:.ref 定义全局变量.sect汇编器伪指令建立的自定义段也是已初始化段.space对存储器进行初始化。
(2)分析主程序的结构和功能,对每条指令进行注释,写出执行结果。
.title "example1.asm".mmregs ;使能存储器映像寄存器stack .usect "STACK",10h.def _c_int00;------------------------------------------------------------------------------.text_c_int00:stm # stack+10h, SP ;设置堆栈指针stm #0x0000, SWWSR ;所有存储器未加软件延迟;================================================stm #0x70,AR2st #0xff80,*AR2;================================================;观察控制位SXM的作用;当SXM=0时,进行无符号数的加载rsbx SXM ;SXM置零nopld *AR2, A ;(A)=( 000000FF80 H);------------------------;当SXM=1时,进行有符号数的加载ssbx SXM ;SXM置一nopld *AR2, A ;(A)=( FFFFFFFF80H ) ;================================================ ;================================================ ;观察控制位OVM的作用;当OVM=0时,对溢出不进行处理rsbx OVMld #0x7fff, 16, B ;立即数左移16位给Badd #0x7fff, 16, B ;(B)=( 00FFFE0000H);------------------------;当OVM=1时,对溢出进行处理ssbx OVMld #0x7fff, 16, Badd #0x7fff, 16, B ;(B)=( 007FFFFFFFH );================================================ ;================================================ ;观察控制位C16的作用;当C16=0时,进行32位双精度数加法运算ssbx OVMld #0x0001, 16, Aadd #0x7fff, Adst A, *AR2ld #0x0001, 16, Aor #0xffff, A ;相“或”rsbx C16nopdadd *AR2, A, B ;(B)=( 0000037FFEH);------------------------;当C16=1时,进行两个独立的16位数加法运算ssbx C16nopdadd *AR2, A, B ;(B)=( 0000027FFE H);================================================ ;================================================ ;观察控制位FRCT的作用;当FRCT=0时,对乘积不进行移位ld #0x1234, 16, Arsbx FRCTnopmpya *AR2 A中高16位与T相乘;(B)=( 0000001234H) ;------------------------;当FRCT=1时,对乘积左移1位ssbx FRCTnopmpya *AR2 ;(B)=( 0000002468 H);================================================ ;================================================ ;观察测试位TCbitf *AR2, #0x8000 ;(TC)=( 0 )nopnop;------------------------bitf *AR2, #0x0001 ;(TC)=( 1 )nopnop;================================================ ;================================================ ;观察标志位Cssbx SXMld #0x7fff, Ald #0x8000, Bmax A ;(C)=( 0 )nopnop;------------------------min B ;(C)=( 1 )nopnop;================================================ ;================================================ ;观察标志位OV A, OVBssbx SXMrsbx OV Ald #0x7fff, 16, Aadd #0xffff, A ;(OV A)=(0 )nopnop;------------------------add #0x7fff, 16, A ;(OV A)=( 1 )nopnop;================================================ dead_loop:nopnopnopnopb dead_loop.end(3)写出本工程的分段和存储器的定位情况。
实验二DSP系统定时器的使用一、实验目的:1、掌握5402 DSP片上定时器的初始化设置及应用;2、掌握DSP系统中实现定时的原理及方法;3、了解5402 DSP中断寄存器IMR、IFR的结构和使用;4、掌握5402 DSP系统中断的初始化设置过程和方法;5、掌握在C语言中嵌入汇编语句实现数字I/O的方法。
二、实验原理:1、定时器及其初始化在5402内部包括两个完全相同的定时器:定时器0和定时器1。
每个定时器分别包括3个寄存器:定时器周期寄存器PRD、定时器寄存器TIM、定时器控制寄存器TCR,其中TCR 寄存器中包括定时器分频系数TDDR、定时器预分频计数器PSC两个功能寄存器。
通过PRD 和TDDR可以设置定时器的初始值,TIM(16bits)和PSC(4bits)是用于定时的减法计数器。
CLKOUT是定时器的输入时钟,最大频率为100Mhz。
定时器相当于20bit的减法计数器。
定时器的结构如图1所示。
图1 定时器的组成框图定时器的定时周期为:CLKOUT×(TDDR+1)×(PRD+1)其中,CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。
在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。
当系统复位或者定时器单独复位时,PRD中的时间常数重新加载到TIM。
同样地,每当复位或PSC减到0后,定时器分频系数TDDR自动地加载到PSC。
PSC在CLKOUT作用下,作减1计数。
当PSC 减到0时,产生一个借位信号,令TIM作减l计数。
TIM减到0后,产生定时中断信号TINT,传送至CPU和定时器输出引脚TOUT。
例如:欲设置定时器0的定时周期为1ms,当DSP工作频率为100Mhz时,通过上式计算可得出:TDDR=15,PRD=6520。
2、定时器的使用下面是一段定时器应用程序,每检测到一次中断,ms+1,利用查询方式每计500个数就令XF引脚的电平翻转一次,在XF引脚输出一矩形波信号,因定时器1ms中断一次,故500ms就使LED翻转一次,这样LED指示灯就不停地闪烁。
苏州职业大学实训报告
图2.2创建工程文件
选择菜单“Project”的“Rebuild All”项,或单击工具条中的按钮;注意编
图 2.4修改工程文件
通过以上设置操作,重新编译后,程序中的用户堆栈的尺寸被设置成 1024 个字。
6.基本调试功能
(1)下载程序:执行File Load Program ,在随后打开的对话框中选择刚刚建立的
C:\ICETEK\F2812\DSP281x_examples\Lab0101-UseCCS\Debug\volume.out 文件。
设置软件调试断点:在项目浏览窗口中,双击volume.c 激活这个文件,移动光标到
图 2.6设置图形显示功能
-在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。
-按Alt+F5 运行程序.观察input 窗口的内容。
10.选择菜单File→workspace→save workspacs As…,输入文件名11.退出CCS 。
五.实验结果:
通过对工程文件“volume”的编译、执行后得到结果的图形显示如下:。
南京邮电大学实验报告实验名称:离散时间信号与系统的时、频域表示离散傅立叶变换和z变换数字滤波器的频域分析和实现数字滤波器的设计课程名称数字信号处理A(双语) 班级学号B13011025姓名陈志豪开课时间2015/2016学年,第1学期实验名称:离散时间信号与系统的时、频域表示实验目的和任务:熟悉Matlab基本命令,理解和掌握离散时间信号与系统的时、频域表示及简单应用。
在Matlab环境中,按照要求产生序列,对序列进行基本运算;对简单离散时间系统进行仿真,计算线性时不变(LTI)系统的冲激响应和卷积输出;计算和观察序列的离散时间傅立叶变换(DTFT)幅度谱和相位谱。
实验内容:基本序列产生和运算:Q1.1~1.3,Q1.23,Q1.30~1.33离散时间系统仿真:Q2.1~2.3LTI系统:Q2.19,Q2.21,Q2.28DTFT:Q3.1,Q3.2,Q3.4实验过程与结果分析:Q1.1运行程序P1.1,以产生单位样本序列u[n]并显示它。
clf;n = -10:20;u = [zeros(1,10) 1 zeros(1,20)];stem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([-10 20 0 1.2]);Q1.2 命令clf,axis,title,xlabel和ylabel命令的作用是什么?答:clf命令的作用:清除图形窗口上的图形;axis命令的作用:设置坐标轴的范围和显示方式;title命令的作用:给当前图片命名;xlabel命令的作用:添加x坐标标注;ylabel c命令的作用:添加y坐标标注;Q1.3修改程序P1.1,以产生带有延时11个样本的延迟单位样本序列ud[n]。
运行修改的程序并显示产生的序列。
clf;n = -10:20;u = [zeros(1,21) 1 zeros(1,9)];stem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([-10 20 0 1.2]);Q1.23修改上述程序,以产生长度为50、频率为0.08、振幅为2.5、相移为90度的一个正弦序列并显示它。
装订线实验报告课程名称:微机原理及其应用指导老师:徐习东成绩:实验名称:实验一二三综合实验报告实验类型:同组学生姓名:一、实验目的和要求(必填)二、实验内容和原理(必填)三、主要仪器设备(必填)四、操作方法和实验步骤五、实验数据记录和处理六、实验结果与分析(必填)七、讨论、心得一、实验目的和要求1、了解DSP的基本原理和实验过程。
完成实验一、二、三。
完成4段程序的运行过程。
2、了解DSP的编程方法,学习TI资源文件的使用方法,3、认识中断、GPIO、定时器等的编程使用方法。
二、实验内容和原理实验一LED绿灯的控制:共阳极发光二极管原理图如下图1 发光二极管原理图通过GPIO控制发光二极管DS20~DS25的亮灭。
当GPIOFx=0时,对应的发光二极管被点亮。
GPIO端口:GPIOF13~GPIOF8实验二实验名称:DSP实验综合报告姓名:学号:装订线利用CPU定时器和中断实现点亮了4盏规定的绿灯,同时控制灯分别以1s,100ms,10ms,1ms为周期交替亮灭。
通过设置CPU定时器,使1ms产生1个中断输出,再通过循环计数控制当分别产生1ms、10ms、100ms、1s的时间间隔进入中断,控制相应LED亮灭。
实验三分别用两种TI资源的方法编程,实现控制绿灯和红灯的要求。
方法一是仅仅使用TI规定的变量编程,方法二是使用TI资源的内置文件,初始化文件和.c文件等中的自带函数。
把6盏绿灯及16盏红灯有规律地控制点亮。
红灯的控制:LED接口如图:1、一端接电源高电平红灯的控制:2、一端接锁存器的输出;3、由两个锁存器控制16盏灯;两个锁存器:1、输入数据为实验名称:DSP实验综合报告姓名:学号:装订线GPIOB8 ~GPIOB15;2、锁存信号由GPIOE0 ~GPIOE2 控制;点灯控制:1、先确定第几组,第几盏;2、GPIOE输出组号,GPIOB输出位号;3、延时,GPIOE输出锁存信号三、主要仪器设备TMS实验板、PC机、程序烧写器四、操作方法和实验步骤1、实验一(1)学习DSP的相关内部元件的使用方法。
2-2 2013.1主讲教师:任海鹏1. 8088CPU结构和240DSP流水线 2. C6000系列DSP的CPU结构 3. C6000系列DSP的指令基础 4. C6000系列DSP的流水线操作 5. 中断结构和中断响应《DSP原理及应用》2任海鹏z概述 z寻址方式和数据访问指令 zSOP操作举例《DSP原理及应用》3任海鹏SOP操作举例zSOP的实现SOP是许多DSP算法的关键 组件。
这里写出SOP算法, 来学习C6000的程序的基本 结构。
Y = ∑ an * xnn = 1N= a1 * x1 + a2 * x2 +... + aN * xN此算法需要两个基本操作: : 1)乘 2)加 因此,需要2个基本指令。
《DSP原理及应用》4任海鹏SOP操作举例zSOP的实现乘法的实现Y = ∑ an * xnn = 1N= a1 * x1 + a2 * x2 +... + aN * xNa1乘x1用如下汇编语言 指令实现: 该指令由称为“.M”的乘法 器单元执行。
《DSP原理及应用》5任海鹏zSOP的实现Y = ∑ an * xn40注意: 16位×16位产生32位积; 32位×32位产生64位积;n = 1= a1 * x1 + a2 * x2 +... + aN * xN由.M单元硬件完成乘法操作:《DSP原理及应用》6任海鹏zSOP的实现Y = ∑ an * xnn = 140.M= a1 * x1 + a2 * x2 +... + aN * xN由.M单元硬件完成乘法 操作:《DSP原理及应用》7任海鹏zSOP的实现Y = ∑ an * xnn = 140.M .?= a1 * x1 + a2 * x2 +... + aN * xN由.L单元硬件完成加法 操作:《DSP原理及应用》8任海鹏zSOP的实现Y = ∑ an * xnn = 140.M .L像 C6000 这 样 的 RISC 处 理器使用寄存器保持操作数。
课程名称DSP原理与应用
实验序号实验2
实验项目DSP 数据存取实验实验地点
实验学时实验类型
指导教师实验员
专业班级
学号姓名
年月日
1、装载程序memory.out,进行调试。
运行到main 函数入口:
2、修改程序区的存储单元:
修改前:
此时入口地址为10801200,数据地址为01BCD4F6
修改中:
注意:修改前面的入口地址之后,一定要重新设置数据存储地址修改后:
当前语句被改成了“NOP”。
将地址0x10801200 上的数据改回0x01BCD4F6,程序又恢
复成原样。
3、断点调试:
(1)、运行到第一个断点:
我们可以memory 窗口中从0x80000080 开始的16 个单元的值被写入0x00000000 到0x0000000。
(2)、运行到第二个断点:
我们可观察到memory 窗口中从0x80000100 开始分16 个单元中的值被均被写入0x00001234。
(3)、运行到第三个断点:
我们可以观察到0x80000080 开始的16 个单元的值复制到以0x80000100 开始的16 个单元,数据发送了变化,因此数据颜色变为红色。
实验二液晶显示屏显示实验1实验目的1.进一步掌握AZURE-BF609开发平台的使用;2.了解DMA操作方式;3.进一步掌握CCES调试方法;4.掌握两种EPPI寄存器的配置方法;5.了解定时器的使用。
2实验前的准备工作1、仔细阅读实验指导书,确定实验的目的和要求。
2、复习定时器相关的寄存器及其具体含义。
3实验环境1、预装开发环境Cross Core Embedded Studio 1.0.2的计算机;2、BF609开发板一套;3、ADDS HPUSB-ICE仿真器一套。
4实验内容1、使用两种方法完成图像的加载;2、利用定时器功能模块评估图像加载所需要的时间。
5学时数4学时6实验原理1)RGB色彩模式基本概念RGB色彩模式是工业界的一种颜色标准,是通过对红(Red)、绿(Green)、蓝(Blue)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。
例如:纯红色R值为255,G值为0,B值为0;灰色的R、G、B三个值相等(除了0和255);白色的R、G、B都为255;黑色的R、G、B都为0。
RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色。
在RGB 模式下,每种RGB 成分都可使用从0(黑色)到255(白色)的值。
例如,亮红色使用R 值246、G 值20 和B 值50。
当所有三种成分值相等时,产生灰色阴影。
当所有成分的值均为255 时,结果是纯白色;当该值为0 时,结果是纯黑色。
目前的显示器大都是采用了RGB颜色标准。
2)BF609的视频互连功能简介BF609的视频互连提供一个连接矩阵,用于视频子系统各部分互相连接:三个PPI、PIXC 和PVP。
DSP图像处理实验报告组员:张海星通信1107班陈淑菁通信1103班手势识别1.题目分析不同的手势出现在屏幕上会显示手势的名字,找出不同手势在屏幕上显示的特点,用这个特点来区分出手势的名称,同时将名称显示在屏幕的左下角。
2.步骤:(1)找特征:用运肤色检测的程序调试出来的显示屏幕上图像的特征我们发现肤色的面积大小会随着不同手势透出的皮肤面积的大小而变化,因此我们利用面积的大小来判断不同的手势,并将其名称显示在屏幕的左下角。
(2)采集图像:我们组用石头和剪刀两个手势。
首先用loop2的显示采集两个手势的图像。
在save data 中保存图像的数据,从程序中找到图像的首地址,保存数据的首地址为:OX80000000,图像的大小设置为720*288/4。
然后利用matlab程序读图像并计算框的面积大小的值。
读图程序:% dat文件是由CCS保存的数据文件% dat文件中每个像素用8bit表示,% 0x245A3654表示第一个像素的值为0x54;第二个像素的值为0x36% 第三个像素的值为0x5A;第四个像素的值为0x24% 本例以图像大小为640*240,请根据你的实际做修改% 在使用本程序前请手动删除dat文件的第一行clc;clear all;close all;imagedata=zeros(720,288);% ------------------------------- 低温---------------------------------------I = importdata('C:\Documents and Settings\Administrator\桌面\s1.dat');[M,N] = size(I);for i=1:720*288/4a=cell2mat(I(i));imagedata(i*4) = hex2dec(a(3:4));imagedata(i*4-1) = hex2dec(a(5:6));imagedata(i*4-2) = hex2dec(a(7:8));imagedata(i*4-3) = hex2dec(a(9:10));endimagedata = uint8(imagedata');imshow(imagedata,[0,720])用matlab计算面积值的程序:将图像中手势出现的范围截框,在算出像素点的值就是面积大小。
7>自动装载比较和周期寄存器减少CPU开销8>PDPINTx可直接屏蔽PWM输出EV比较单元PWM的电路功能框图如下:有图可知比较单元的PWM有以下功能单元:1>非对称/对称波形发生器2>可编程死区单元(DBU)3>输出逻辑4>空间矢量(SV)PWM状态机2)定时器的计数方式3)PWM的产生当T1CNT的值与T1CMPR的值相等时,发生比较匹配事件,此时如果T1CON的TECMPR位为1,定时器比较操作被使能,同时GPTCONA的TCMPOE位为1,定时器比较输出被使能,引脚T1POM_T1CMP的电平就会发生跳变从而输出PWM波形。
如下图所示。
图一4)PWM波形的调节如上图所示,当T1PWM_T1CMP高电平有效时,减小T1CMPR的值或者增大T1CNT的值可以增大PWM波形的占空比;增大T1CMPR的值或者减小T1CNT的值,可以减小PWM波形的占空比。
2、直流电机控制1)直流电机驱动电路:图二图二是直流电机翻译/驱动的典型电路的一种,采用这种电路不但能够完成直流电机驱动的动作,而且可以避免典型H桥电路的潜在的短路危险。
2)直流电机的驱动接口:本实验箱通过控制EVA的T1PWM_T1CMP与T2PWM_T2CMP引脚实现对直流电机的控制。
实验程序功能与结构说明1、直流电机实验,包含的文件:1)MOTOR.c:实验主程序,包含了系统初始化,直流电机控制,机调速等;2)DSP28_EV.c:包含了事件管理器初始化;3)DSP28_Defaultlsr.c:包含了异步串口接收中断服务程序;4)DSP28_GlobalVariableDefs.c:各个外设全局变量定义;5)DSP28_PieCtrl.c:PIE中断初始化;6)DSP28_PieVect.c:PIE中断矢量表初始化;7)DSP28_SysCtrl.c:系统初始化;8)2812.cmd:声明了系统的存储器配置与程序各段的联系关系;9)2812.gel:系统初始化;10)*.h:各个源文件的头函数;11)Rts2800.l:库函数文件。
DSP学习2)CPU内部结构解读CPU(中央处理器)是计算机中最重要的组件之一,它负责执行计算机程序中的指令和处理数据。
了解CPU的内部结构可以帮助我们更好地理解计算机的工作原理和优化程序的性能。
本文将对CPU的内部结构进行解读。
首先,CPU由三个主要组件组成:控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit, ALU)和寄存器(Registers)。
控制单元是CPU的大脑,它负责控制计算机的各个部分协同工作。
它通过解码和执行指令集来控制程序的执行顺序。
控制单元将从内存中读取的指令进行解码,并将其转换为控制信号,以便与其他部件进行通信。
它还负责执行分支和跳转指令,以便根据程序的逻辑流程进行控制。
算术逻辑单元(ALU)是CPU中用于执行算术和逻辑运算的部分。
它能够进行基本的数学运算(如加法、减法、乘法、除法)以及逻辑运算(如与、或、非和异或)。
ALU的特点是速度非常快,这使得CPU能够在极短的时间内完成大量的数学和逻辑运算。
寄存器是CPU中用于临时存储数据和指令的地方。
它们是CPU内部的存储区域,所以它们的访问速度非常快。
CPU中有多个寄存器,每个寄存器都有特定的用途。
比如,累加器是一个通用寄存器,用于存储和操作临时数据。
指令寄存器存储当前正在执行的指令。
程序计数器(PC)存储下一条要执行的指令的地址。
寄存器的数量和功能因CPU的型号而异。
除了以上三个主要组件外,CPU还包含诸如时钟、总线接口、高速缓存等辅助组件。
时钟是CPU中的一个定时器,它以固定的频率向CPU发出脉冲信号,用于同步各个组件的工作。
总线接口是CPU与其他设备(如内存、硬盘、显卡等)进行通信的接口。
高速缓存是位于CPU和内存之间的一种临时存储器,它可以存储最常用的数据和指令,以加快CPU访问数据的速度。
为了提高CPU的性能,现代CPU还引入了一些高级技术和特性。
例如,流水线技术可以将指令的执行过程划分为多个步骤,并同时执行多条指令,从而提高整体的执行效率。
引言近年来,随着DSP 芯片技术的发展,DSP 在视频领域的应用越来越广泛,更多的高校开设了DSP 专业的课程,建立了DSP 实验室。
长春工业大学计算机科学与工程学院采用闻亭公司的TDS642EVM多路实时图像处理系统,利用丰富的实验例程,由浅入深地开设实验,满足不同层次学生的需求。
实验的设置分为以下部分:第一部分:基础实验通过基础实验,能轻松掌握DSP 的集成开发环境CCS,掌握基本的调试技能及编程方法。
有一定DSP 基础的学生会对编程与调试理解得更深刻一些。
同时对基于TI TMS320DM642 的视频处理平台有一个基本的认识。
通过实验能够理解相应的硬件和软件资源。
第二部分:处理基础实验这部分的实验共有十几个,涵盖了几乎所有的处理的基本算法,包括噪声图像的产生、二维的DCT、边缘检测、直方图统计、直方图均匀化、中值滤波、锐化、取反、灰度阈值和窗口变换、运动估计等算法。
通过这部分的实验,能使学生对处理算法有一个完整、清晰的概念,深切体会处理算法的具体应用,由此进一步消化理解所学的理论知识。
第三部分:音频视频编码解码实验通过这部分的实验能使学生体验JPEG,H.263,H.264 算法在实时系统中的应用。
了解压缩、解压的过程,了解压缩比的概念。
第四部分:视频通讯实验这是一个实时采集的经过JPEG 压缩,通过TCP/IP 协议与PC 通讯,在PC 平台上通过IE 浏览器看远程实时显示的例子。
能使学生亲身感受远程的实时传输,切身体会DM642 处理芯片对网络传输应用的支持。
目录第一章系统概述1.1 实验平台主要指标1.2 实验平台功能框图1.3 实验平台连接器布局1.4 连接器接口定义1.5 实验连接图1.6 音视频开发平台功能概述1.7 拨码开关在不同工作方式下的设置第二章实验准备2.1 软件安装2.2 仿真工具安装2.3 视频流观察程序说明2.4 实验步骤说明第三章基础实验实验一 Code Composer Studio 的使用实验二指示灯闪亮实验三语音采集回放实验四视频采集与回放实验五 FLASH 编程实验第四章视频处理基础实验实验一噪声图像的产生实验实验二二维的DCT实验三边缘检测实验四直方图统计实验五直方图均匀化实验六中值滤波实验七锐化实验八平滑实验九取反实验十直方图增强实验十一灰度阈值处理实验十二灰度窗口变换实验十三视频运动估计第五章音、视频编码解码实验实验一H.263 编解码实验实验二H.264 编解码实验实验三JPEG 编解码实验第六章图像网络传输实验第七章补充实验实验一VIDEO 图象输出实验实验二VGA 图象输出实验实验三图像锐化实验四MPEG2 图象压缩回放实验五动目标检测实验六图象---字幕叠加第八章算法框架程序说明第一章系统概述本实验培训教程描述了基于“TDS642EVM多路实时图像处理系统”(以下简称“图像处理系统”)的系列处理实验。
图像处理系统的核心部分是闻亭公司开发的基于600MHz TI TMS320DM642 DSP芯片的“音视频开发平台”,其DSP的计算能力可达到4800MIPS。
下表列出了图像处理系统的性能指标。
1.1 实验平台主要指标1.2 实验平台功能框图图1-11.3 实验平台连接器布局图像处理系统音视频开发平台的物理尺寸为10.00×4.5inch(254×115 mm),外形图和连接器布局如下图所示。
图1-21.4 连接器接口定义音视频开发平台有各种接口共24 个。
用户可通过这些接口与音视频开发平台进行通信。
各接口功能见下表:1.5 实验连接图图1-31.6 音视频开发平台功能概述音视频开发平台上的DSP 通过宽度为一个64bits 的EMIF 和三个8/16 bits 的视频口连接板上的外设,如SDRAM,Flash,FPGA 和UART。
另外,EMIF 和视频也扩展到子板连接器上,用户可以通过子板来扩展其它应用。
平台上的视频编解码器支持多种视频信号的采集和播放。
例如:PAL 制、NTSC 制。
平台上的音频编解码器AIC23 实现模拟音频信号的采集和播放功能。
通过DSP 的McASP 接口与DSP 进行数据传输。
用户可通过软件设置使McASP 接口信号扩展到子板连接器上,用于子板的扩展应用。
平台上的CPLD 用于实现板上各部分的粘合逻辑。
FPGA 的内部寄存器映像在DSP 的地址空间上,用户可通过对寄存器的读写来配置板上的参数。
平台上有4 个扩展的用户LED,用户可通过对VP0 口高位的配置来控制LED。
平台需要+12V 的外接电源供电。
平台通过14 芯的JTAG 接口与仿真器连接。
1.7 拨码开关在不同工作方式下的设置实验平台上有两个拨码开关S1 和S2,允许用户通过拨码开关设置DSP 的初始化状态。
当实验平台运行在不同工作方式时,拨码开关设置有所不同。
如下:拨码开关各位的意义S1 用来配置平台的上电引导方式,见下表:S2 用来配置DSP 的PCI 使能和DSP 的代码模式。
见下表:*为缺省状态第二章实验准备实验的硬件组成如下:1.闻亭公司TDS642EVM多路实时图像处理系统2.微型计算机调试环境:1.PC 机最低配置,PIII 500MHz CPU,128M 内存2.操作系统支持Windows 2000(SP2)或Windows XP3.调试软件支持CCS2.20.18 或以上版本*2.1 软件安装我们假设实验的程序放置在C:\ti\myprojects\下,CCS 软件安装在C:\ti 目录下(网络安装的时候也要指定到C:\ti 开始的目录)。
和DM642 相关的补丁和驱动以及各种辅助程序(CCS 的升级补丁,网络通信程序,FLASH 烧写插件,软件框架参考等等)都安装到C:\ti 开始的目录下。
这些程序,DDK, Flashbrun, NDK1.6, RF,CCS2.20.18 的补丁都包含在图像处理系统安装光盘中的AddOns 目录下。
以安装RF 和NDK 为例,在目录选择的时候输入C:\ti,如图2-1、2-2 所示。
图2-1图2-2TI 的缺省安装目录是C:\ti,因为考虑到DSP 实验室可能有多个DSP 种类,比如TMS320C2XXX 和TMS320C5XXX,不同种类的DSP使用不同的路径,会更加清晰一些。
老师和学生可以更改我们设定的路径,但是在调用并编译图像处理系统所带的工程文件时,需要更改相应的DSP 工程文件,CCS 编译才能通过。
CCS 软件的安装方法可参见CCS 的安装光盘中的帮助文件。
CCS 仿真环境的设置可参见相应“仿真器驱动程序的安装指南”。
2.2 仿真工具安装按照仿真器的安装手册,安装相应的软件和硬件。
安装成功后在系统的设备管理器中会出现WintechDigital TDS510USB2.0 JTAG Emulator 的设备信息。
确保仿真器和图像处理系统中DSP 板的连接正确,连接方式参见图1-3。
确保CCS 调试环境设置正确,可参见仿真器的安装手册。
2.3 视频流观察程序说明YUVviewer.exe是通过文件IO方式学习图像实验的看图软件。
左侧Frame Size确定输入的格式和大小,在整个实验过程中,会用到CIF和QCIF两种图像格式;中间Play Parameters确定视频播放和显示的方式,Zoom 2X2选择开关决定是否放大2倍显示;右侧Open File打开视频流文件,可以打开多个视频流文件;Play播放视频流文件,Close All关闭所有视频流文件;Quit退出视频流观察软件;BackTo0把视频流文件的指针归零;Next显示视频流文件的下一帧,Next 5连续显示视频流文件的5帧;Previous显示视频流文件当前帧的前一帧;Previous5显示视频流文件当前帧的前5帧。
★特别注意:YUVview程序对文件目录有记忆效应,大家要特别注意在打开视频流文件的时候,一定要确认目录是否正确。
2.4 实验步骤说明从第三章起的每个实验都按如下步骤操作:1)按照图1-3 连接实验设备。
2)供电后,在计算机的设备管理器中确认TDS510USB 仿真器的驱动安装正确。
3)双击桌面上或CCS 安装目录中的Code Composer Studio 图标启动CCS。
4)在CCS 环境中,打开“Project”菜单,选择“Open…”菜单项,找到并打开C:\ti\myprojects\目录下相应子目录下的pjt 工程文件。
5)使用Project\Build 编译整个工程文件。
6)打开“File”菜单,选择“Load program…”菜单项,在弹出的窗口中选中刚才所选实验目录下的Debug 目录中的.out 文件,点击“确定”,程序便加载到DSP 上。
(可以查看这个.out 文件的生成时间,正是刚刚编译的时间。
每次编译一个工程文件都会重新生成一个.out 文件)7)运行:按下功能键“F5”或选择“Debug”菜单中的“Run”项。
★特别说明:在Video 或VGA 设备上观察输出。
如果不能看到输出,可能是CCD 等输入设备连接不牢靠,也可能是输出设备连接不牢靠,或者相应电源开关没有打开。
用户可以检查一下实验系统的连接是否正确。
如果还不行,可以使用GEL 菜单中Reset 里面的Reset-BreakPts-and-EMIF 复位,复位之后选择File 菜单中的Reload 项,再次加载实验程序,然后运行并观察结果。
第三章基础实验实验一Code Composer Studio 的使用【实验目的】1、熟悉Code Composer Studio 开发环境2、熟悉DSP 软件开发流程3、熟悉几种主要的调试方法4、熟悉在调试环境下观察指令执行结果的方法【实验内容与步骤】1.在CCS 中创建和测试一个工程项目在这个实验中,你将创建并测试一个简单的程序hello,运行该程序可以在CCS 的输出窗口显示“hello world!”1.1 创建一个新的工程1)在C:\ti\myprojects\下建立一个“hello”的子目录。
2)把C:\ti\tutorial\evmDM642\hello1目录下的文件(不包括debug目录下的文件),都copy 到这个新建的“hello”文件夹中。
3)从菜单或者快捷方式中打开CCS。
4)选择Project→New 菜单5)在弹出的窗口中,在最上端第一行填“myhello”作为文件名,下一行选择你新建的文件夹“hello”,然后点击“完成”。
这样CCS 就新建了一个名为“myhello.pjt”的工程文件。
这个文件能保存你的工程的设置并且包括了你的工程用到的各种文件。
1.2 向工程中添加文件1)选择Project→Add Files to Project,将hello.c 添加至工程。