DSP 用定时器实现数字振荡器程序详解1
DSP计数器 DSP定时器 计数器原理及设计举例
DSP 定时器/计数器原理及设计举例1、定时器结构定时器的组成框图如图1所示。
它有3个16位存储器映像寄存器:TIM 、PRD 和TCR 。
这3个寄存器在数据存储器中的地址及其说明如表1所示。
定时器控制寄存器(TCR )位结构如图2所示,各控制位和状态位的功能如表2所示。
(说明:图中包括,一个16位的主计数器(TIM)和一个4位预定标计数器(PSC)。
TIM 从周期寄存器PRD 加载,PSC 从周期寄存器TDDR 加载。
) 1.1典型操作顺序:(1) 在每个CLKOUT 脉冲后PSC 减1,直到它变为0。
(2) 在下一个CLKOUT 周期,TDDR 加载新的除计数值到PSC ,并使TIM 减1。
(3) 以同样方式,PSC 和TIM 连续进行减操作,直到TIM 减为0。
(4) 下一个CLKOUT 周期,将定时器中断信号(TINT)送到CPU ,同时又用另一脉冲送到TOUT 引脚,把新定时器计数值从PRD 加载到TIM ,并使PSC 再次减1。
因此,定时器中断的速率为1.2定时器编程(1)TIM :定时器中的当前值。
(2)PRD :正常情况,当TIM 减到0后,PRD 中的时间常数自动地加载到TIM 。
系统复位( =1)或定时器复位(TRB=1)时,PRD 中的时间常数重新加载到TIM 。
(3)控制寄存器(TCR)包含的控制位有下列功能: ①控制定时器模式;②指定定时器预先定标计数器的当前计数值; ③重新加载定时器; ④启动、停止定时器; ⑤定义定时器的分频系数。
图1 定时器组成框图TINT 速率=)()(频率1PRD 1TDDR CLKOUT +⨯+(说明:TDDR(Timer Divide-Down Ratio):复位时,TDDR 各位清零;PSC(Timer Prescaler Counter):PSC 可被TCR 读取,但不能直接写入) 1.3定时器初始化步骤:(1) 将TCR 中的TSS 位(停止状态位)置1,关闭定时器。
基于DSP数字振荡器的设计
关键 词 : P: 弦: 字振 荡器:定 时器:C DS 正 数 CS图 形 工 具
.
中 图 分 类 号 : 3 TP 9 1 引 言
文献标 识码 : A
文 章 编 号 :6 4 5 8 (0 0 0 — 0 8 0 17 — 7 7 2 1 )1 0 8 — 3
因 此 根 据 上 面 的 说 明 得 出 以 下 结 论 :只 要 已知 系 统
用 模拟 振荡 器 。比如 “ 容三点 式 ” “ 电 . 电感 三 点式 ” “ 拉 ,克
泼” I 等 c谐振电路构成的正弦波振荡器 . 这些方法虽然
简单 , 但信 号 是模 拟 的 , 不能 应用 在 数字 系统 中。为 了在
采样 频率 或采 样 时问 间隔 利 用 DS P的 C5 1 40系列 中的 片 内定 时 器控 制 寄存 器 以及 中 断屏 蔽寄存 器来产 生 正 弦信 号 用j 编语 言 编辑存 放 中断服 务程 序 的代码 . 中断 矢量表 . c语 言编 写主程 序 和 中断服 务程 序 . r - 即 用
用 D P产 生一 个正 弦信 号 .就 是得 到一个 正 弦信 号 S
可 得到 当前 正 弦采 样 vn= i(w ) ()s n T 。假 设振 荡 器 频 率为 n
2 Hz k .采样 频率 为 2 k .定 时器每 隔 5 u 产 生一 次 中 0 Hz 0s 断 , N- 个 yn。递推 的差 分方 程系数 为 : 得 ・ ()
它情况 为 0 。其 中 ,() 系统 的输 入 ,() 系统 的输 出。 x 是 n yn是
实验303.DSP 的定时器
姓名吴镌樊想孙璐陈玉枫学号0816070110081607020208160702010816070203专业自动化时间成绩实验名称实验3.3:DSP 的定时器实验内容通过编译调试熟悉F2812A 的定时器实验目的和要求1.通过实验熟悉F2812A 的定时器;2.掌握F2812A 定时器的控制方法;3.掌握F2812A 的中断结构和对中断的处理流程;4.学会C 语言中断程序设计,以及运用中断程序控制程序流程。
实验设备计算机,ICETEK-F2812-A 实验箱(或ICETEK 仿真器+ICETEK–F2812-A 系统板+相关连线及电源)。
实验原理1.通用定时器介绍及其控制方法(详见spru078a.pdf)TMS320F2812A 内部有三个32 位通用定时器(TIMER0/1/2),定时器1 和2 被保留给实时操作系统(DSPBIOS)用,只有定时器0 可以提供给用户使用。
2.中断响应过程(详见spru078a.pdf)a.接受中断请求。
必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。
b.响应中断。
必须能够响应中断请求。
如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。
而对于非可屏蔽中断和软件中断,会立即作出响应。
c.准备执行中断服务程序并保存寄存器的值。
d.执行中断服务子程序。
调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。
3.中断类别可屏蔽中断:这些中断可以用软件加以屏蔽或解除屏蔽。
不可屏蔽中断:这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。
所有软件调用的中断都属于该类中断。
4.中断的优先级如果多个中断被同时激发,将按照他们的中断优先级来提供服务。
中断优先级是芯片内部已定义好的,不可修改。
实验设计及调试:(1)对实验内容和实验原理进行分析,理出完成实验的设计思路。
各种初始化之后,更改程序中的时间值,观察指示灯时间明灭频率的变化(2)列出设计所需的特殊环节…1. 初始化关中断2. 初始化pie寄存器禁止所有的中断3. 启动定时器(3)画出设计流程图。
[整理]DSP定时器实验.
-------------
}
interrupt void ISRTimer2(void)
{
CpuTimer2.InterruptCount++;
if(Led_Flag==1)
{ LED1_ON;
*LED3=0;
Led_Flag=0;}
else
{LED1_OFF;
*LED3=1;
(2)用 C 语言编程对频率为 400Hz、幅度为 1V 的三角波;利用通道 1=〉ADCINA4 口实现不同采样频率(8KHz、 44KHz 、 96KHz )下的 ADC 转换,采样长度 1024 点。
四、 小结与体会
通过本次实验,我学习了将 TMS320F2812 片上外设 AD,也了解了片上 AD 的 使用及通道的选择,学会了如何利用片上 AD 进行数据采集。
acc=0; y0=0; for (i=0;i<n;i++) {
if(i+j>=m) break;
else {
y0=(long)(h[i]*x[j+i]); acc=acc+y0; } } *y++=(short)(acc>>s); } 3、波形
噪声正弦 300Hz 1v 通道 0 滤波前时域
-------------
一、 实验目的
1、掌握数字滤波器的设计过程 2、了解 FIR 的原理和特性 3、熟悉设计 FIR 数字滤波器的原理和方法
二、实验原理
1、有限冲击响应数字滤波器(FIR)的基础理论: FIR 数字滤波器是一种非递归系统,其冲激响应 h(n)是有限长序列其差分
方程表达式为:
DSP原理及其应用实验讲义(精)
DSP 原理及其应用实验讲义CCS 设置1. 安装目标板驱动程序。
点击epp 文件夹下的安装文件,进行安装。
2. 运行Code Composer Studio Setup软件,即点击图标3. 点击Install a Device Driver,选择驱动程序 sdgo5xx32.dll 。
4. 此时,Available Board/Simulator Type一栏中出现相应的驱动图标5. 将图标sdgo5xx32 拖到最左边的System Configuration 一栏中,出现Board Properties 对话框。
6. 点击NEXT ,进入下一页,会显示板卡的I/O口值,修改为0x378,再点击NEXT。
7. 在Processor Configuration 窗中,在Available Processor 中选择TMS320C54XX 然后点击Add Single;对话框右边出现CPU_1图标。
8. 点击NEXT ,进入下一页,选择一个初始化的.gel 文件,本实验系统,选择c5402.gel。
9. 点击finish ,关闭CCS 程序,选择保存。
实验一常用指令实验一实验目的1、了解DSP 开发系统的组成和结构;2、熟悉DSP 开发系统的连接;3、熟悉CCS 开发界面;4、熟悉C54X 系列的寻址系统;5、熟悉常用C54X 系列指令的用法。
二实验设备计算机,CCS2.0版软件,DSP 仿真器,实验箱。
三实验步骤与内容1、系统连接进行DSP 实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:PCI/USB/EPP2、上电复位在硬件安装完成之后,确认安装正确、各实验部件及电源连接正常后,接通仿真器电源,启动计算机,此时,仿真器上的“红色小灯”应点亮,否则DSP 开发系统有问题。
3、运行CCS 程序待计算机启动成功后,实验箱后面220V 输入电源开关置“ON ”,实验箱上电,启动CCS ,此时仿真器上的“绿色小灯”应点亮,并且CCS 正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,掉电,检查仿真器的连接、JTAG 接口连接,或检查CCS 相关设置是否正确。
第三周dsp实验课——定时器
2.中断响应过程 外设事件要引起 CPU 中断,必须保证:IER 中相应使能位被使能, IFR 相应中断也被使能。在软件中,当设置好相应中断标志后,开中 断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先 跳转到相应中断高级的服务程序中(如:定时器 1 会引起 TINT中 断) ,程序在进行服务操作之后,应将本外设的中断标志位清除以 便能继续中断,然后返回。 3. 中断程序设计 - 程序中应包含中断向量表,VC5509A默认向量表从程序区 0 地 址开始存放,根据 IPVD 和IPVH 的值确定向量表的实际地址。 - 注意观察程序中 INTR_init()函数的定义部分,其中 IPVD 和 IPVH 的值都为0x0d0;同时观察配置文件 ICETEK–VC5509-AE.cmd 中的 VECT 段描述中 o=0x0d000。 - 向量表中每项为 8 个字, 存放一个跳转指令, 跳转指令中的 地址为相应服务程序入口地址。第一个向量表的首项为复位向量,即 CPU复位操作完成后自动进入执行的程序入口。 - 服务程序在服务操作完成后,清除相应中断标志,返回,完成 一次中断服务。
TIN/TOUT 状态
定时器 时钟源 CPU时钟 CPU时钟 CPU时钟 TIN/TOUT脚
reset
FUNC=0通用输出 Input
由表可见,C5509的定时器有4种工作模式:
● 当FUNC=00时,TIN/TOUT为高阻态,时钟源为CUP时钟。该模式 为复位后的缺省模式。 ● 当FUNC=01时,TIN/TOUT为定时器输出,时钟源为CPU时钟。此 时,TIN/TOUT作为三个定时器事件中的一个,可以输出时钟信号或 脉冲信号。 ● 当FUNC=10时,TIN/TOUT为通用输出,时钟源为CPU时钟。此时, TIN/TOUT作为通用输出(General Output),其电平有控制寄存器 TCR中的DATOUT字段确定。 ● 当FUNC=11时,TIN/TOUT为时钟源输入,定时计数器将在其上 升沿递减。
用定时器实现数字振荡器
山西 电子技术
应 用 实践
用 定 时 器 实现 数 字振 荡器
李 方 健
’
( 重庆 电子 工程职 业学院 , 重庆 4 1 3 ) 0 3 1
摘
要: 简要介绍 了利用数 字振 荡器产生正弦信号的方法。常规的方法是将 某个频率的正弦/ 弦值预 先计 余
算 出来后制成一个表 , S D P工作 时仅作查表运 算即可。本文利用定时器产生一个 2 H 的正 弦信号 , kz 定时器被设置
成每 5 产生一次 中断( O 等效于采样速率 为 2 k z , 用该 中断, 中断服 务程序 中用叠代算 法计算 出一个 s 0 H )利 在 i n 值, 并利 用C S的 图形显示功 能查看波形。中断 矢量表 用汇编语言编辑 , C 主程序和中断服务程序使 用 C语 言编写。 关键词 : 时器 ; 定 中断; 字振 荡器 ; S 数 DP
( =A ( 一1 +B (2 ) ”) y ) y ,—2
结论 : ” 在 >2以后 , ( ) Y , 能用 Y( 一1 和 Y ”一2 算 z ) ( )
出 , 是 一个 递 归 的差 分 方 程 。 因此 只 要 已知 系 统 输 出正 弦 这 信号 角 频 率 和系 统 采样 周 期 了, 可 以得 到输 出 (z的 、 就 ,) 差分 方 程 。 系 统 只 需 要 每 隔 r 秒 ( 过 定 时 器 设 置 , 隔 , 通 每 5 中断 一次 ) 0 计算 一 次 差 分 方 程 , 可 以得 到 当前 输 出 正 就
Ti rc n r l e itr me o t g s e o r
定时器启动时 ,R P D的值装 入 TI 作为初始值 , M 然后 在
DSP 定时器实验
实验三CPU定时器实验一、实验目的1、通过实验掌握TMS320F2812DSP的CPU定时器的控制方法2、掌握TMS320F2812DSP的中断结构和中断服务流程3、了解音乐发生方法二、预习要求TMS320F2812内部有3个32位的通用定时器(Timer0/1/2),这3个定时器具有完全相同的控制结构。
其中Timer1和Timer2被保留给DSP BIOS或实时操作系统(RTOS),只有定时器0可以提供给用户使用,其结构如图所示。
若处理器采用30MHz的外部时钟,经过锁相环10/2倍频后,系统的工作时钟在150MHz。
一旦定时器被使能,定时器时钟通过预定标计数器(PSCH:PSC)递减计数,预定标计数器产生下溢后项定时器的32位计数器(TIMH:TIM)借位。
最后当定时器计数器(TIMH:TIM)产生溢出使定时器向CPU发送中断。
定时器中断结构如下图所示:三、实验原理与参考电路ICETEK-CTR板上有一个蜂鸣器直接受DSP的GPIO控制,电路原理图如下图所示。
图中GPIO1指的是TMS320F2812的PWM1管脚,如果要蜂鸣器发出声音,需要在GPIO1上输出高电平,如果输出低电平,则蜂鸣器不响。
也可以控制PWM2管脚按一定的频率改变高低状态,输出方波,蜂鸣器便发出与之对应的音乐声。
下表为C调中7个音对应的频率(Hz)。
1(dao)2(re)3(mi)4(fa)5(sao)6(la)7(xi)低音262286311349392440494中音523587659698784880987高音1046117413181396156717601975四、实验内容1、配置CCS工作环境:⑴双击桌面上图标:,进入CCS 设置窗口。
⑵在出现的窗口中按标号顺序进行如下设置:(3)在出现的窗口中按标号顺序进行如下设置:(4)在出现的窗口中按标号顺序进行如下设置:②鼠标左键单击删除此配置①单击选择C28XX②单击选择ICETEK emulator(5)在下面出现的窗口中选择“是(Y)”。
实验4:DSP的定时器应用-2812解析
根据分析的公式,修改定时器0时钟寄存器,使 LED灯的每隔1S闪烁
修改中断服务程序,使4个LED灯轮流闪烁。
3.2 PLLCR--锁相环控制寄存器
15 Rserved
43
0பைடு நூலகம்
DIV
DIV(3~0)
0000 CLKIN = OSCCLK/2 (PLL为旁路) 0001 CLKIN = OSCCLK*1/2 0010 CLKIN = OSCCLK*2/2
…… 1010 CLKIN = OSCCLK*10/2
CLKIN = OSCCLK* DIV / 2 相关函数:InitSysCtrl()->InitPll(0xa)
3.3 定时器0
工作频率:
F2812系统时钟工作在150MHz,定时器采用 SYSCLKOUT为定时时钟,工作频率也是150MHz。
相关寄存器:
TIMER0TIMH|TIMER0TIM 计数寄存器高|低
三、实验原理
1、通用定时器介绍及其控制方法
定时器0
2、中断响应过程
接收中断请求 响应中断 准备执行中断服务程序并保存寄存器的值 执行中断服务子程序
3、中断类别
可屏蔽中断和不可屏蔽中断
4、中断优先级
3.1 TMS320F2812的时钟
X1/XCLKIN
片上 晶振 30M
X2
看门狗
CPU定时器预定标计数器
CPU定时器分频寄存器
3.5 定时器0计算公式
公式:
TINIT
频率
输入时钟频率 (TDDRH:TDDR + 1)(PRDH:PRD
+
1)
时钟频率:30M*(10/2) = 150MHz
DSP正弦波——数字振荡器法原理
数字振荡器的本质是,使用一个IIR (Infinite Impulse Response )滤波器,通过把它的极点放在单位圆上面来产生振荡。
利用正弦波sinx 的指数形式)(21sin jx jx e e jx --= 可以得到正弦序列x(n)的Z 变换为)(21)sin(][jnwT jnwT e e jT n n x --==ϖ X (z )=[]∑∑∞=---∞=---=-0110)()(21])([21n n jwT n jwT n n jnwT jnwT z e z e j z e e j =⎥⎦⎤⎢⎣⎡----jwT jwT e z z e z z j 21=⎥⎦⎤⎢⎣⎡+-+---1)cos(221222wT z z ze z ze z j jwT jwT =1)cos(2)sin(2+-wT z z wT z =B Az z Cz --2 式在|z|>1时成立,且)sin(,1),cos(2wTC B wT A =-==。
这是任何一本数字信号处理教材都会给出的结论。
根据Z 变换的基本原理和性质,序列x[n]及其Z 变换X (z )之间存在一一对应的关系,即对于给定的X (z ),可以通过反Z 变换,唯一地确定x[n]。
因此,产生一个正弦波就等价于利用上式设计一个二阶IIR 滤波器,使其系统传递函数就是正弦序列x[n]的z 变换。
结构的图我暂时不画了,明天再添加系统传递函数为21121)(-----=--=Bz Az Cz B Az z Cz z H 滤波器的极点就是分母02=--B Az z 的根。
24)(cos 4)cos(224222,1-±=+±=wT wT B A A P =)sin()cos(wT j wT ±由上式可以看出,P 1,2是一对复根,其幅值为1,相角为wT 。
幅值为1的极点在单位圆 上,对应一个数字振荡器,其振荡频率由系数A 、B 和C 决定。
一种基于DSP的数字振荡器的实现方式
收者 简介 : 李方 健 (93 )男 , 17一 , 四川人 , 学硕 士研 究生 在读 , 庆 电子 工程 职业学 院 , 师 。 工 重 讲
维普资讯
12 5
P D,C 如 表 1所 示 。 R T R, 表 1 定 时 器 相 关 寄 存 器 地 址
摘 要 :常规 的 产生 正 弦信号 的 方 法是 将 某 个频 率 的正 弦/ 弦值 预 先计 算 出来 后制 成 一 个表 , P 工作 余 DS 时仅 作 查表 运算 即可 利 用 定时 器产 生一 个 2Hz的 正弦信 号 , 时器被 设置 成每 5 u k 定 0 S产生一 次 中断 ( 效 于 等 采样 速 率 为 2 K) 利 用该 中断 , 中断 服 务程 序 中用 叠代 算 法计 算 出一 个 SN 值 , 0 , 在 I 并利 用 CCS的 图形 显 示功
重 庆职 业技 术 学 院 学报
第1 7卷
把 系统初 始 化段 放到 D P程序 空间 .把 未初 始化 段 S
放 到 D P的数 据 空间 。 始化 段就 是指 令代 码 。 S 初 未初始 化 段 就 是变 量 。根 据程 序可 知 , 代码 放 在程 序 空间 0 l 0 x 10。 中 断 矢 量 表 放 在 程 序 空 间 O l0 .变 量 放 在 数 据 空 间 xO0
拉泼 ” 由 L 等 C谐 振 电路 构 成 。缺点 , 号 是模 拟 的 , 信 不适
应数 字 系统 。 了在数 字 系统 里 面产 生一 个正 弦信 号 , 为 需 要使 用数 字器 件 f S ) 生这 样 的正 弦波 。 D P产
2 原 理
用 D P产生 一个 正 弦信 号 .就是 得 到一个 正 弦 信号 S
DSP实验手册 实验二 定时器实验
实验二定时器实验一、实验目的:1、了解DSP汇编程序的构成;2、了解DSP程序各段的含义;3、熟悉在汇编条件下如何编写中断服务程序;4、了解串行通讯的过程5、掌握长时间间隔的定时器的处理。
6、掌握片内外设的设置方法。
二、实验内容:1、 DSP的初始设置;2、 DSP中断向量表的建立;3、定时中断的编写;4、查询方式异步串口程序的编写;三、实验背景知识:TMS320VC5416的定时器的说明:VC5416中有一个可编程的片上定时器,总共包含有三个可由用户设置的寄存器,并可以申请主机的中断。
这三个寄存器分别为TIM、PRD、TCR。
这些寄存器与对应的存贮空间地址如下表所示:时间寄存器(TIM)是一个16位的存贮器映射寄存器,它的值由周期寄存器来进行装载,并且做减一操作。
周期寄存器(PRD)是一个16位的存贮器映射寄存器,它是用来重装时间寄存器(TIM)寄存器的值的。
定时器控制寄存器(TCR)是一个16位的存贮器映射寄存器,包含了定时器的控制与状态信息。
TCR的寄存器说明见下表;四、实验程序功能与结构说明:在定时器实验中,主要是以学习与认识DSP汇编程序为主要的目的,因而所有的程序均以汇编程序来完成的。
主要包含了以下文件:1、 timer..asm:包含了以下功能:1) DSP的初始化:设定VC5416的初始软件等待周期,设定存贮区的映射,建立中断向量表,系统时钟的设定,异步串口的初始化。
2) 异步串口的发送与接收子程序。
3) 定时器的操作及中断服务程序。
2、 vector.asm:包含了VC5416的中断向量表。
3、 dec5416.cmd:声明了系统的存贮器配置与程序各段的链接关系。
4、 vc54x.inc: 声明了VC54x系列DSP的片内寄存器的地址与设置的常量定义。
5、 dec5416.inc:定义了SEED-DEC5416模板上资源的地址与设置的常量定义。
6、 timer.out:DSP上可执行的程序,即实验程序。
DSP实验报告_百度文库(精)
实验0 实验设备安装才CCS调试环境实验目的:按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。
实验步骤:以演示实验一为例:1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件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 实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。
TMS320c5000-DSP定时器
谢谢!
定时器编程
1. TSS=1,停止定时器 2. 设置PRD 3. 打开定时器中断 4. 设置TCR,涉及TDDR,同步TSS=0,
TRB=1,开启定时器
数字振荡器-原理
数字振荡器就是单位冲击响应为正弦序 列旳离散系统
sin(kT )
z2
z sin T 2z cosT
1
sin kT
z2
Cz Az
timer:
MPY Y1, #CB, A
;A = Y1*CB
LTD Y2
;T=Y2, Y2复制到Y1
MAC #CA, A
;A = A + T*CA
STH A, 1, Y2
;Y2 = A*2
RETE
试验
根据本章内容与设计实例编写数字振荡 器程序 在CCS Simulator中利用图形功能观察输 出波形,检验周期是否正确
B
其中A=2cosωT, B=-1, C=sin ωT
差分方程
y[k] Ay[k 1] By[k 2] Cx[k 1]
当x[k]为单位冲击信号时,假定初始条件为0
y[0] Ay[1] By[2] Cx[1] 0 y[1] Ay[0] By[1] Cx[0] C y[2] Ay[1] By[0] Cx[1] Ay[1] y[3] Ay[2] By[1] y[n] Ay[n 1] By[n 2]
15-12 11 10 9-6 5 4
3-0
保存 Soft Free PSC TRB TSS TDDR
Soft与Free共同决定在调试器中遇到断点 时定时器怎样工作
Soft Free 描述
X1
定时器不受影响
00
定时器立即停止工作
DSP计数器 DSP定时器 计数器原理及设计举例
DSP 定时器/计数器原理及设计举例1、定时器结构定时器的组成框图如图1所示。
它有3个16位存储器映像寄存器:TIM 、PRD 和TCR 。
这3个寄存器在数据存储器中的地址及其说明如表1所示。
定时器控制寄存器(TCR )位结构如图2所示,各控制位和状态位的功能如表2所示。
(说明:图中包括,一个16位的主计数器(TIM)和一个4位预定标计数器(PSC)。
TIM 从周期寄存器PRD 加载,PSC 从周期寄存器TDDR 加载。
) 1.1典型操作顺序:(1) 在每个CLKOUT 脉冲后PSC 减1,直到它变为0。
(2) 在下一个CLKOUT 周期,TDDR 加载新的除计数值到PSC ,并使TIM 减1。
(3) 以同样方式,PSC 和TIM 连续进行减操作,直到TIM 减为0。
(4) 下一个CLKOUT 周期,将定时器中断信号(TINT)送到CPU ,同时又用另一脉冲送到TOUT 引脚,把新定时器计数值从PRD 加载到TIM ,并使PSC 再次减1。
因此,定时器中断的速率为1.2定时器编程(1)TIM :定时器中的当前值。
(2)PRD :正常情况,当TIM 减到0后,PRD 中的时间常数自动地加载到TIM 。
系统复位( =1)或定时器复位(TRB=1)时,PRD 中的时间常数重新加载到TIM 。
(3)控制寄存器(TCR)包含的控制位有下列功能: ①控制定时器模式;②指定定时器预先定标计数器的当前计数值; ③重新加载定时器; ④启动、停止定时器; ⑤定义定时器的分频系数。
图1 定时器组成框图TINT 速率=)()(频率1PRD 1TDDR CLKOUT +⨯+(说明:TDDR(Timer Divide-Down Ratio):复位时,TDDR 各位清零;PSC(Timer Prescaler Counter):PSC 可被TCR 读取,但不能直接写入) 1.3定时器初始化步骤:(1) 将TCR 中的TSS 位(停止状态位)置1,关闭定时器。
数字振荡器
其中,A=2cosω T,B=-1,C=sinω T。设初始条件为 0,求出上式的反变换位得: y[k]=Ay[k-1]+By[k-2]+Cx[k-1]
这是一个二阶差分方程,其单位冲击相应即为 sinkω T。利用单位冲击函数 x[k-1]的性质,即仅当 时 k=1 时,x[k-1]=1,代入上式得:
寄存器 名称
用途
地址
0024h TIM
定时器寄存器,每计数一次,自动减 1
0025h PRD
定时器周期寄存器,当 TIM 减为 0 后,CPU 自动将 PRD 的值装入
TIM
0026h TCR
定时器控制寄存器
(3) C54X 中断的使用 在 C54X 中用户可以通过中断屏蔽寄存器来决定开放或关闭一个中断请求。寄存器的各个比特位的定义 如表:
实验地点(实验室)
实验日期
年月日
成绩
指导
教师
名称
指导教师
年月日
(2) C54X 的定时器操作 C54X 的片内定时器利用 CLKOUT 时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来
控制定时器,表中列出了定时器控制各个寄存器的各比特位的具体定义。VC5402 的另一个定时器(定时 器 1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。
15、14 13
12
11
10
9
8
7
Resvd
DMAC5 DMAC4 BXINT1 BXINT1 HPINT INT3
TINT
or
or
or
DMAC3 DMAC2
DMAC1
6
DSP实验2
实验二用定时器实现数字振荡器一、实验目的1.在数字信号处理中,会经常使用到正弦/余弦信号。
通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可。
在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。
2.本实验除了学习数字振荡器的DSP实现原理外,同时还学习C6000定时器(在本实验中使用的是TMS320C6713)使用以及中断服务程序编写。
3.熟悉CCS集成软件开发环境,集成汇编、C、VC++;二、实验步骤1. 启动CCS,打开工程文件,文件名为Timer.pjt。
该工程文件含有C源程序commonISR.c、Timer.c、InitCSL.c,汇编源程序vector.asm和连接定位Timer.cmd文件,其中,vector.asm包含中断向量表,commonISR.c包含中断服务程序,而InitCSL.c就是用CSL对片上外设进行初始化,在这里是对Timer进行初始化。
有选择地修改程序代码。
2. 选择Project菜单中的Build Options选项,或使用鼠标右键单击工程文件名(如Timer.pjt)并选择Options来修改或添加编译、连接中使用的参数。
例如,选择Compiler窗口,在Preprocessor中的“Include Search Path”可以写入包括头文件的路径。
选择Linker窗口,在Basic中的“Include Libraries”可以写入包括对库文件的路径,其中就包括C的标准库rts6700.lib,该文件应该在CCS安装目录中。
例如,若CCS安装在d:\ti下,则rts6700.lib 应该在d:\ti\c6000\cgtools\lib下。
“Output Filename”栏中写入输出OUT文件的名字,如Timer.out,同时你还可以设置生成的MAP文件名。
3.完成编译、连接,正确生成OUT文件。
DSP实验十七 DSP实现数字振荡器
实验十七DSP实现数字振荡器一、实验目的l、掌握数字振荡器的设计过程;2、了解数字振荡器的原理和特性;3、熟悉设计数字振荡器的几种方法--递归法、泰勒展开法等。
二、实验内容1、给定参数,设计出振荡器;2、观察设计的振荡器波形。
三、实验原理以及源代码分析最常见的振荡器如正弦波、余弦波既可以由CCS程序本身产生,也可以由其它工具如MA TLAB、TC等先产生数据文件(.dat),然后由DSP主程序导入,用于调制解调滤波等程序应用中。
由DSP本身产生正、余弦波也有多种方式,如递归法,泰勒公式展开法等,也可以直接在CCS中用C语言调用库函数double sin(double x)和double cos(double x)用一个循环语句产生正余弦波序列,因此,要产生振荡波有多种方法可供选择,选择哪一种还要看具体应用的要求。
下面概要介绍汇编语言实现的泰勒法和递归法程序:1、泰勒法:此程序的主要思想是通过定时器每隔一定时间产生中断,迫使主程序进入中断服务程序,这儿是“B sine_isr”,sine_isr子程序产生一个正弦波抽样值,放到sinwave缓冲区。
值得注意的是,本程序利用泰勒级数展开的方法首先在sin_initial和cos_initial子程序中获得正、余弦波的头两个初始值,为了达到程序的实时性,在接下来的过程中,不再用泰勒级数计算其它正弦波抽样值,而用三角递归公式计算新的正弦波值:sin_n_theta=2*cos_theta*(sin_n-1_theta)-(sin_n-2_theta),这样就大大减少了处理器的运算量,从而加快了计算速度。
另外,taylor.asm是主文件,需要在工程中设置entry point为此文件START作为入口。
;*******************************************************;CLKOUT=100MHz,Fs=16kHz,fd=10kHz;theta=2*pi*fd/Fs=0.39269908=0x3243;pi/2=1.57079632,pi/4=0.785398163=0x6487;sin_n_theta=2*cos_theta*(sin_n-1_theta)-(sin_n-2_theta);*******************************************************.mmregs.def start.global sine_isr,sin_init,cos_init.global theta.bss sinwave,256Y0 .usect "y",1Y1 .usect "y",1Y2 .usect "y",1Y_COS .usect "y",1PERIOD .set 8000hK_THETA .set 0x 2162.textstart: B timervector: .align 0x80.space 4*16*19 ;定时中断入口地址B sine_isrNOPNOP.space 4*16*12 ;保留其他中断入口地址timer:LD #0, DPSSBX SXMSSBX FRCTLD #vector, AAND #0FF80h, AANDM #007Fh, PMSTOR PMST, ASTLM A, PMST ;设置IPTRSTM #sinwave,AR5RPTZ A,#255STL A,*AR5+STM #sinwave,AR5STM #Y0,AR1ST #0,*AR5+ST #0,*AR1+LD #K_THETA,ACALL sin_initSTL A,*AR5+STL A,*AR1+LD #K_THETA,ACALL cos_initSTM #Y_COS,AR3STL A,*AR3STM #PERIOD, PRDSTM #0010h, TCR ;TDDR=0STM #0020h, TCR ;TRB=1STM #0FFFFh, IFR ;清除所有中断STM #8h, IMR ;打开时钟中断RSBX INTM ;开中断NOPNOPB $******************************************** 时钟中断处理程序*******************************************sine_isr:STM #Y2,AR2STM #Y1,AR3MVDD *AR3,*AR2STM #Y_COS,AR4LD *AR3-,TMPY *AR4-,ASFTA A,-15,ASUB *AR3+,ASTL A,*AR3-STL A,*AR5+MVDD *AR2,*AR3RETE.end文件taysin.asm,用来计算sin(θ)值。
用定时器实现数字振荡器(DSP实验报告)
用定时器实现数字振荡器一、 实验目的在数字信号处理中,会经常使用到正弦/余弦信号。
通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP 工作时仅作查表运算即可。
在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。
本实验除了学习数字振荡器的 DSP 实现原理外,同时还学习 C54X 定时器使用以及中断服务程序编写。
另外,在本实验中我们将使用汇编语言和 C 语言分别完成源程序的编写。
二、 实验原理1) 数字振荡器原理设一个传递函数为正弦序列 sinkωT ,其 z 变换为2111)(-----=BzAz Cz z H 其中,A=2cosωT, B=-1, C=sinωT 。
设初始条件为 0,求出上式的反 Z 变换得:y[k]=Ay[k-1]+By[k-2]+Cx[k-1]这是一个二阶差分方程, 其单位冲击响应即为 sinkωT 。
利用单位冲击函数 x[k-1]的性质,即仅当 k=1时,x[k-1]=1,代入上式得: k=0 y[0] = Ay[-1] + By[-2] + 0 = 0k=1 y[1] = Ay[0] + By[-2] + c = ck=2 y[2] = Ay[1] + By[0] + 0 = Ay[1]k=3 y[3] = Ay[2] + By[1] .…… .k=n y[n]= Ay[n-1] + By[n-2]在 k>2 以后,y[k]能用 y[k-1]和 y[k-2]算出,这是一个递归的差分方程。
根据上面的说明,我们可以开始数字振荡器的设计。
设该振荡器的频率为 2kHz ,采样率为 40kHz (通过定时器设置,每隔 25us 中断一次,即产生一个 y[n]) ,则递归的差分方程系数为:A=2cosωT=2cos (2 x PI x 2000 / 40000)=2 x 0.95105652B=-1C=sinωT=sin (2 x PI x 2000 / 40000)=0.30901699BC A 792215=⨯ 0002215C B =⨯ 7132215C C =⨯ 为了便于定点 DSP 处理,我们将所有的系数除以 2,然后用 16 位定点格式表示为:这便是本实验中产生 2KHz 正弦信号的三个系数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编源程序====================================================================== ======*/;/* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD */;/* All Rights Reserved. */ ;/* ----------------------------------------------------------------------------*/;/*======================================================================.title "for test INT service program ...(25 us) ".mmregs 定义存储器影响寄存器,这样就可以用AR0,PMST等助记符替换实际的存储器地址.global_c_int00,_tint,vector标明一个或多个全局符号OFF_INTIMER .set 04Ch ; TIMER的向量初始化入口地址VECTOR+OFF_INTIMERINIT_A .set 079bch ; A/2=0.9510498INIT_B .set 0c000h ; B/2=-0.5INIT_C .set 013c7h ; C/2=0.1545105.bss y0,1 ;为结果y0分配一个存储单元.bss y1,1.bss y2,1.bss temp,1.bss AA,1.bss BB,1.bss CC,1.text ;定义可可执行代码段_c_int00:ld #0,dp;设置DP页指针ssbx intm ; 关闭所有中断st #1fffh,spld #vector, a ; 读出中断向量地址and #0FF80h, a ;保留高9位(IPTR:中断向量指针andm #007Fh, pmst ;保留pmst的低7位or pmst, astlm a, pmst ; 设置IPTRstm #10h,TCR ; 初始化定时器TCR为定时器控制寄存器stm #2499,PRD ; f=100M/(2499+1)=40kHz PRD 为计数器周期寄存器stm #20h,TCR ; 重新装入TIM和PSC,然后启动定时器ldm IMR,a ; 重新返回中断屏蔽寄存器or #08h,a ; 启动定时器中断stlm a,IMR ; 设置中断屏蔽寄存器ld #temp,dp ; 设置DP页指针ssbx FRCT ; prepare for fraction mpy FRCT为ST1中的小数方式位;(Ssbx 状态寄存器复位,即对状态寄存器ST0,ST1特定位置1)st #INIT_A,AA ; init AA,BB,CC 即初始化AA BB CCst #INIT_B,BB ;将常数B装入变量BBst #INIT_C,CC ;pshd CC ;将变量CC压入堆栈popd y2 ; init y2,y2=CCld AA,T ; T=AA装载AA到T寄存器mpy y2,a ; y2*AA放入a中sth a,y1 ; y2*AA -> y1(将A寄存器的高十六位放入变量y1)stm #0h,TCR ; 定时器复位noprsbx intm ;复位所有的中断(状态寄存器复位STN (SBIT)=0)again:nopb againnopnopnopnopnopnop;-------------------------------------------------------------; interrupt for INT_TIMER ! 中断服务程序;-------------------------------------------------------------_tint:ld#BB,DPld BB,T ; T=BBmpy y2,a ; a=y2*BBltd y1 ; T=y1,y2=y1mac AA,a ; a=a+y1*AAsth a,1,y1 ; new cos data -> y1sth a,1,y0 ; new cos data -> y0nop ; set breakpoint in CCS !!!int1_end:noprete.end连接命令文件/*====================================================================== ======*//* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD *//* All Rights Reserved. */ /* ----------------------------------------------------------------------------*//*====================================================================== ======*/MEMORY;描述系统的硬件资源,用来定义用户设计的系统中所包含的的各种形式的存储器{PAGE 1:INT_D : ORIGIN=80h, LENGTH=1F80hPAGE 0:EXT_P : ORIGIN=2000h, LENGTH=2000h}SECTIONS ;描述段如何定位到家当的硬件资源上,将输出段定位到所定义的存储器中{.text : > EXT_P PAGE 0.int_table : > (EXT_P ALIGN (128) PAGE (0)).data : > INT_D PAGE 1}中断向量表:;/*====================================================================== ======*/;/* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD;/* All Rights Reserved. */ ;/* ----------------------------------------------------------------------------*/;/*====================================================================== ======*/.mmregs ;.ref _ret ;.ref 在当前段中使用,在其他段中定义.ref _c_int00.ref _tint.global vector.sect ".int_table" ;.建立包含代码和数据的定义段;--------------------------------------------------------------------; interrupte vector table !;--------------------------------------------------------------------vector:rs b _c_int00 ;复位nopnopnmi b __ret ;非屏蔽中断nopnopsint17 b __ret ;软件中断sint17nopnopsint18 b __retnopnopsint19 b __retnopnopsint20 b __ret.word 0,0sint21 b __ret.word 0,0sint22 .word 01000h.word 0,0,0sint23 .word 0ff80h /*TMS320C54x中,中断向量地址由PMST寄存器中的9 .word 0,0,0 位向量地址指针IPTR和左移2位后的中断向量序号组sint24 .word 01000h 成,复位时,IPTR全为1,因此中断向量地址为FF80H.*/ .word 0,0,0.word 0,0,0sint26 .word 01000h ;word用来设置一个或多个16位带符号整型常数.word 0,0,0sint27 .word 0ff80h.word 0,0,0sint28 .word 01000h.word 0,0,0sint29 .word 0ff80h.word 0,0,0sint30 .word 01000h.word 0,0,0int0 b __ret ;外部中断0,软中断0nopnopint1 b __ret ;外部中断1,软中断1nopnopint2 b __ret ;外部中断2,软中断2nopnoptint b _tint ;定时中断,软中断3nopnopbrint0 b __ret ;McBSP(串行口)0接收中断nopnopbxint0 b __ret ;McBSP(串行口)0发送中断nopnoptrint b __retnopnopdmac1 b __ret ;McBSP2发送中断(默认)/DMA通道中断,软中断7 nopnopint3 b __ret ;外部中断3,软中断8nopnophpint b __ret ;HPI中断,软中断9nopnopq26 .word 0ff80h.word 0,0,0.word 0,0,0dmac4 b __retnopnopdmac5 b __retnopnopq30 .word 0ff80h.word 0,0,0q31 .word 01000h.word 0,0,0;--------------------------------------------------------------------------; end of interrupte vector table !;-------------------------------------------------------------------------__ret rete ;开中断,从中断快速返回说明:中断向量表是用来装载不同类型的中断服务程序的入口!。