华东交通大学 DSP大作业 张艳伟
用2812的定时器0实现对D6、D7、D8、D9
流水灯显示
一、引言
DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。DSP
芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。数字信号处理是20世纪60年代,随着信息学科和计算机学科的高速发展而迅速发展起来的一门新兴学科。它的重要性日益在各个领域的应用中表现出来。 其主要标志是两项重大进展,即快速傅里叶变换(FFT)算法的提出和数字滤波器设计方法的完善。数字信号处理是把信号用数字或符号表示成序列,通过计算机或通用(专用)信号处理设备,用数值计算方法进行各种处理,达到提取有用信息便于应用的目的。例如:滤波、检测、变换、增强、估计、识别、参数提取、频谱分析等。
根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点: (1)在一个指令周期内可完成一次乘法和一次加法。 (2)程序和数据空间分开,可以同时访问指令和数据。
(4)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。 (4)具有低开销或无开销循环及跳转的硬件支持。 (5)快速的中断处理和硬件I/O支持。
(6)具有在单周期内操作的多个硬件地址产生器。 (7)可以并行执行多个操作。
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。 (9)与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。 随着大规模集成电路以及数字计算机的飞速发展,加之从60年代末以来数字信号处理理论和技术的成熟和完善,用数字方法来处理信号,即数字信号处理,已逐渐取代模拟信号处理。在近20年时间里,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。
第 1页
华东交通大学 DSP大作业 张艳伟
二、整体设计原理
通过对DSP结构、原理及应用的学习。在初步了解DSP结构和原理的基础上,进行简单的应用实验,掌握DSP的基本应用。通过熟悉DSP模板的内部结构以及CCS软件,掌握DSP2812编程和调试方法,了解DSP的指令和I/O端口的寄存器的配置,并结合DSP实验模板对DSP进行编程控制数字输入/输出端口点亮LED显示管。
实验的具体要求如下:
用2812的定时器0实现对D6、D7、D8、D9流水灯显示。
1 CPU定时器的工作原理
(1)通用定时器介绍及其控制方法
TMS3202812内部有三个32 位通用定时器(TIMER0/1/2),定时器1 和2 被保留给实时操作系统(DSPBIOS)用,只有定时器0 可以提供给用户使用。
(2)中断响应过程
a.接受中断请求。必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。
b.响应中断。必须能够响应中断请求。如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。而对于非可屏蔽中断和软件中断,会立即作出响应。
c.准备执行中断服务程序并保存寄存器的值。
d.执行中断服务子程序。调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。
(3)中断类别
可屏蔽中断:这些中断可以用软件加以屏蔽或解除屏蔽。不可屏蔽中断:这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。所有软件调用的中断都属于该类中断。
(4)中断的优先级
如果多个中断被同时激发,将按照他们的中断优先级来提供服务。中断优先级是芯片内部已定义好的,不可修改。
第 2页
华东交通大学 DSP大作业 张艳伟 (5)CPU定时器的原理框图和定时中断如下图所示:
图1 CPU定时器的原理框图
图2 CPU定时器定时中断示意图
2 CPU定时器寄存器
2812CPU定时器0、1、2中每个定时器寄存器组有计数寄存器(TIM :TIMH,32位),周期寄存器(PRD:PRDH,32位),控制寄存器(TCR,16位),保留(16位),预定标寄存器(TPR:TPRH,32位)。
TIMH:TIM,保存当前计数器的值; PRDH:PRD,保存32位周期值;
TCR,控制功能,主要控制定时器的种种状态; TPRH:TPR,详细的说:
TPR PSC(8位):TDDR(8位) TPRH PSCH(8位):TDDRH(8位)
第 3页
华东交通大学 DSP大作业 张艳伟 PSCH:PSC保存当前定时器预定标值,每个定时器源时钟周期PSCH:PSC递减1,递减到0时,即是一个定时器周期, 将TDDRH:TDDR中的值重新装载,并且定时器计数器减1;TDDRH:TDDR,CPU定时器分频寄存器,每隔(TDDRH:TDDR+1)个定时器源时钟周期,定时器计数器减1;当TRB被软件置1时,PSCH:PSC也会重新装载;所以一个定时器计数周期完成,周期=定时器源时钟周期*(TDDRH:TDDR+1)*(PRDH:PRD+1)。 表1CPU定时器寄存器列表 名称 TIMER0TIM TIMER0TIMH TIMER0PRD TIMER0PRDH TIMER0TCR Reserved TIMER0TPR TIMER0TPRH TIMER1TIM TIMER1TIMH TIMER1PRD TIMER1PRDH TIMER1TCR Reserved TIMER1TPR TIMER1TPRH TIMER2TIM TIMER2TIMH TIMER2PRD 地址 0x0000C00 0x0000C01 0x0000C02 0x0000C03 0x0000C04 0x0000C05 0x0000C06 0x0000C07 0x0000C08 0x0000C09 0x0000C0A 0x0000C0B 0x0000C0C 0x0000C0D 0x0000C0E 0x0000C0F 0x0000C10 0x0000C11 0x0000C12 大小 (?16) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 说明 CPU定时器0计数器寄存器低位 CPU定时器0计数器寄存器高位 CPU定时器0周期寄存器低位 CPU定时器0周期寄存器高位 CPU定时器0控制寄存器 保留 CPU定时器0预定位寄存器低位 CPU定时器0预定位寄存器高位 CPU定时器1计数器寄存器低位 CPU定时器1计数器寄存器高位 CPU定时器1周期寄存器低位 CPU定时器1周期寄存器高位 CPU定时器1控制寄存器 保留 CPU定时器1预定位寄存器低位 CPU定时器1预定位寄存器高位 CPU定时器2计数器寄存器低位 CPU定时器2计数器寄存器高位 CPU定时器2周期寄存器低位 第 4页
华东交通大学 DSP大作业 张艳伟 TIMER2PRDH TIMER2TCR Reserved TIMER2TPR TIMER2TPRH Reserved 0x0000C13 0x0000C14 0x0000C15 0x0000C16 0x0000C17 0x0000C18 0x0000C3F 1 1 1 1 1 40 CPU定时器2周期寄存器高位 CPU定时器2控制寄存器 保留 CPU定时器2预定位寄存器低位 CPU定时器2预定位寄存器高位 保留 三、程序设计 控制D6~D94个灯的状态,映射在F2812 外部存储空间的 Zone0中,地址为0x002003,为只写寄存器,复位值为1,其定义如下: 用软件延时的方法来调整发光二极管的延时时间间隔。当发光二极管被点亮之后,通过改变端口的数据输出,达到点亮不同的LED显示管的目的。实验要求实现LED显示管D6、D7、D8、D9点亮。 在给端口赋初值为0001后,其高4位为0000;主要是对低4位进行操作。通过对低4位左移一位,得到的值通过端口输出,便可以完成0000 0001?… …?0000 1111的显示,每改变一次显示的时间间隔是由软件延时控制产生的。当数据的最高位等于1的时候,根据判断将程序跳转,将得到的结果输出。当输出数据的最低位为0的时候程序跳转,完成了基本功能的一个循环,程序跳到循环开始的地方,即给程序重新赋值为0000 0001,进行下一轮的循环。如此即可以实现实验要求的功能。 算法的重要性体现在灯的循环点亮的过程中,由第一个灯被点亮到1、2个被点亮,…,到1-4全部点亮,而且在移动的过程中不断补充后面左移得到的0,使之为1,那么就可以得到实验要求的循环。这正是实验的目的。此时判断的条件其实变化为读取寄存器的最低位是否为0,当满足条件的时候就认为程序的一个循环结束了,跳转到循环开始之初,即赋初值的地方去就可以实现实验要求的功能了。 第 5页