DSP定时器与数字振荡器

合集下载

基于DSP数字振荡器的设计

基于DSP数字振荡器的设计
通 过 二 者 的 链 接 . 后 通 过 CC 最 S图 形 观 察 工 具 , 到 正 弦 输 出 信 号 。 得
关键 词 : 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是

基于DSP数字振荡器的设计

基于DSP数字振荡器的设计

基于DSP数字振荡器的设计
陈宗梅
【期刊名称】《重庆电子工程职业学院学报》
【年(卷),期】2010(019)001
【摘要】用DSP产生一个正弦序列,就是根据数字振荡器的工作原理,确定信号的振荡频率,设置定时器采样频率或采样时间间隔.利用DSP的C5410系列中的片内定时器控制寄存器以及中断屏蔽寄存器来产生正弦信号.用汇编语言编辑存放中断服务程序的代码,即中断矢量表,用C语言编写主程序和中断服务程序通过二者的链接,最后通过CCS图形观察工具,得到正弦输出信号.
【总页数】4页(P88-90,117)
【作者】陈宗梅
【作者单位】重庆大学通信学院,重庆,400044;重庆电子工程职业学院,重
庆,401331
【正文语种】中文
【中图分类】TP39
【相关文献】
1.一种基于DSP的数字振荡器的实现方式 [J], 李方健;曾浩
2.基于DSP的数字振荡器及应用 [J], 郝小江;石海霞
3.基于DSP的数字振荡器的设计与实现 [J], 黄福莹;陈华;徐金隆
4.基于DSP数字振荡器的三相基准正弦信号发生器设计 [J], 朱卫华;郑留平
5.基于DSP数字振荡器的移相正弦波发生器设计 [J], 郑留平;朱卫华
因版权原因,仅展示原文概要,查看原文内容请购买。

DSP实验报告定时器2

DSP实验报告定时器2

实验二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指示灯就不停地闪烁。

基于DSP微控制器定时器设计

基于DSP微控制器定时器设计

摘要随着时代的进步,电子行业的发展,定时器的应用也越来越广泛。

传统的机械式定时器,电动式定时器都是通过发条、交流同步步进电机或者石英步进电机进行驱动的。

这种定时器精度不高,定时误差较大。

相对于前两种定时器,电子式定时器体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。

本次设计的题目是基于DSP微控制器定时器设计。

本文设计了一种以TMS320F28335 DSP微控制器为核心的定时器。

利用内部定时器0和PIE外设中断扩展模块产生定时中断,并进行逆行计数。

通过SPI串行外设接口在DSP和74HC164之间进行通信,进而实现在数码管上通过动态扫描显示定时时间。

本系统通过矩阵键盘控制定时器开启和暂停。

在定时器暂停时,还可以通过键盘重新输入定时初值。

当定时结束时,还会通过LED灯闪烁报警,提示定时结束。

关键词:定时器,DSP,TMS320F28335 ,串行外设接口,矩阵键盘AbstractWith the progress of the times and the development of electronic industry, the timer is used more and more widely. The traditional mechanical timer, electric timer is drived through the spring, AC synchronous motor or quartz stepper motor .The accuracy of this timer is not high and the error is large. Compared with the former two timer, electronic timer has small volume, light weight, low cost, high precision, long service life, and electronic timer is safety and reliability, convenient adjustment, suitable for frequent use.The topic of this design is timer design based on the DSP microcontroller.This paper designs a timer with the core of TMS320F28335 DSP microcontroller. Generating a timer interrupt and counting retrogradely by using the internal timer 0 and PIE peripheral interrupt expansion module. Communicate between DSP and 74HC164 through the SPI serial peripheral interface, so as to achieve displaying time on the digital tube by dynamic scanning. The system is turned on and paused through the matrix keyboard. In the timer pause,initial value can be inputed through the keyboard . When the timing is over, system will alarm through LED lights flashing, prompting the end of timing.Key Words: timer ,DSP ,TMS320F28335 ,SPI, matrix keyboard目录1 绪论 (1)1.1系统背景 (1)1.1.1 定时器的分类 (1)1.1.2 定时器的应用 (2)1.2 定时器系统概述 (2)1.3 定时器设计及实现的功能 (2)1.3.1 设计过程 (2)1.3.2 定时器方案的确定 (3)1.3.3 定时器的功能 (3)2 定时器系统的硬件设计 (4)2.1 总体硬件设计 (4)2.2 DSP微控制器 (5)2.3定时器中断的实现 (6)2.3.1 DSP内部定时器 (6)2.3.2 PIE外设中断扩展模块 (7)2.4 数码管显示电路 (8)2.4.1 SPI串行外设接口 (9)2.4.2 74HC164 (12)2.4.3 数码管 (13)2.5按键控制电路 (16)2.5.1 矩阵键盘的概述 (16)2.5.2 矩阵键盘的硬件设计 (16)2.5.3 按键接口的消抖 (17)2.6 LED显示电路 (18)3 定时器软件的设计 (19)3.1 主函数程序设计 (19)3.2 SPI的初始化 (19)3.3 定时器、数码管,按键及其他外设的初始化 (21)3.3.1 定时器的初始化 (21)3.3.2 其他外设的初始化 (21)3.4 cpu中断及其PIE的设置 (22)3.5 设置定时器0的周期、打开定时器、看门狗和开中断 (22)3.5.1 设定定时器的周期 (22)3.5.2 打开定时器 (22)3.5.3 开中断 (23)3.5.4 开启看门狗 (23)3.6 主要功能的实现 (23)3.6.1 定时器中断子程序的设计 (23)3.6.2 SPI通信与数码管显示程序的设计 (24)3.6.3矩阵键盘程序设计 (26)3.6.4 核心功能的设计 (29)4 总结 (33)致谢 (35)1 绪论1.1系统背景人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。

数字控制振荡器工作原理

数字控制振荡器工作原理

数字控制振荡器工作原理
数字控制振荡器(Digital Controlled Oscillator,DCO)是一种电路,它可以产生可调频率的信号。

DCO的工作原理是通过数字信号控制电路中的电容或电感,从而改变振荡频率。

DCO广泛应用于数字信号处理、通信系统、音频处理等领域。

DCO的核心是一个振荡电路,它由一个反馈电路和一个放大器组成。

反馈电路将输出信号反馈到输入端,从而产生自激振荡。

放大器将振荡电路的输出信号放大,以便输出到外部电路中。

DCO的频率由振荡电路中的电容或电感决定,因此可以通过改变电容或电感的值来改变振荡频率。

DCO的数字控制是通过一个数字控制器实现的。

数字控制器可以通过数字信号处理器(DSP)或微控制器(MCU)来实现。

数字控制器可以根据外部输入信号或内部程序来改变电容或电感的值,从而改变振荡频率。

数字控制器可以通过串行接口或并行接口与外部电路通信,以便实现数字控制。

DCO的优点是可以实现高精度、高稳定性的频率控制。

数字控制器可以实现微小的频率调整,从而满足不同应用的要求。

此外,DCO 还可以实现频率跳变、频率扫描等功能,从而扩展了其应用范围。

数字控制振荡器是一种重要的电路,它可以产生可调频率的信号,广泛应用于数字信号处理、通信系统、音频处理等领域。

DCO的数
字控制实现了高精度、高稳定性的频率控制,为各种应用提供了更多的可能性。

基于DSP的数字电子钟设计

基于DSP的数字电子钟设计

课程设计报告学生姓名:学号:学院: 电气工程学院班级:题目: 数字电子钟的设计尹维春指导教师:职称: 教师2013 年 3 月 15 日一.设计要求1、硬件电路设计,包括TMS320LF2407基本电路、数码显示电路和基本按键,需要用protel软件完成原理图;2、软件设计,主要指应用片上定时器作为时钟源编写数字钟程序,数字电子钟功能要求能调小时、分钟、秒钟,还有随时暂停的功能等,在实验箱上运行调试成功并能用数码管显示;3、课程设计报告,包括总体设计方案、硬件电路设计和软件设计的具体说明。

二.设计方案论证1、数字时钟选择方案方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。

该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。

为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。

当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。

而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

方案二:本方案完全用软件实现数字时钟。

原理:利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分值加1;若分值达到60,则清零,并将时值加1;若时值达到24,则清零。

该方案具有硬件电路简单的特点。

而且,由于是软件实现,缺点:当DSP芯片不上电,程序不执行时,时钟将不工作。

基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能简单方便,容易操作实现。

2、数码管显示方案方案一:静态显示。

所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。

该方式每一位都需要一个8 位输出口控制。

静态显示时较小的电流能获得较高的亮度,且字符不闪烁。

但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

DSP课程设计数字时钟

DSP课程设计数字时钟

软件调试:检查软件代码是 否正确,确保时钟模块、显 示模块等设备正常工作
功能测试:测试数字时钟的 功能是否正常,如时间显示、 闹钟设置等
性能测试:测试数字时钟的 性能是否满足要求,如时间 精度、功耗等
稳定性测试:测试数字时钟 的稳定性,如长时间运行是 否正常,是否出现异常情况 等
数字时钟的优化
优化目标
提高时钟精度:优化后的时钟精度更高,误差更小 降低功耗:优化后的时钟功耗更低,更节能 提高稳定性:优化后的时钟稳定性更高,不易受干扰 简化设计:优化后的时钟设计更简洁,易于理解和实现
数字时钟的应用 场景
智能家居领域
智能照明:根 据时间自动调 节灯光亮度和
色温
智能安防:监 控家中安全情 况,如门窗开 关、陌生人闯
低功耗设计可以提 高数字时钟的续航 能力
低功耗设计可以减 少数字时钟的能耗 和碳排放
低功耗设计可以降 低数字时钟的生产 成本和维护成本
感谢您的观看
汇报人:
智能家居:作为智 能家电的控制中心, 实现远程控制和定 时操作
工业自动化:用于 生产线的定时控制 和监控,提高生产 效率
医疗设备:用于医疗 设备的定时控制和监 测,提高医疗设备的 准确性和可靠性
交通管理:用于交通 信号灯的定时控制和 监测,提高交通管理 的效率和安全性
数字时钟的发展 趋势
智能化发展
提高时钟的准确性 降低时钟的功耗 提高时钟的稳定性 优化时钟的显示效果
优化方法
提高时钟精度: 采用高精度时 钟源,如晶体
振荡器
降低功耗:优 化电路设计, 减少不必要的
功耗
提高稳定性: 采用稳定的电 源和时钟源, 避免外部干扰
优化显示效果: 采用高亮度、 高对比度的显 示设备,提高

定点DSP来准确定时

定点DSP来准确定时

目录摘要 (2)引言 (2)DSP技术概况 (2)一.TMS320F206的结构特点 (3)二.设计原理 (3)1.通用定时器介绍及其控制方法 (3)2.中断响应过程 (3)3.中断类别 (4)4.中断的优先级 (4)5 TMS320F206的中断 (4)6.设计程序流程图 (5)三. 定点DSP的定时器 (6)1.DSP定时器定时原理 (6)2.DSP定时器的寄存器 (7)3.定点DSP准确计算时间 (7)4.DSP程序实现 (8)定点DSP的准确计时摘要:以定点DSP为例,阐述DSP芯片在实时控制领域中如何高精度地计算时间,为准确测量一些物理量打下坚实的基础,具有较高的参考价值。

关键词:DSP准确计时引言:数字信号处理(DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

20世纪60年代以来,随着计算机技术和信息技术的飞速发展,数字信号处理技术应运而生,并得到迅速的发展。

在过去的二十多年里,DSP已经在通信等领域得到极为广泛的应用,特别是在一些测量控制领域?熏应用更是越来越广泛。

本文拟采用定点DSP——TMS320F206来测量一些物理量,如测交流信号的频率、相位,但这些物理量的测量都离不开信号时间的测量,所以采用定点DSP准确地测量时间直接关系到这些物理量测量是否精确,而且用定点DSP来准确定时并不是件容易的事。

DSP技术概况:数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛DSP技术图解的应用。

数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。

数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。

一种自主可控DSP用的定时器硬件设计

一种自主可控DSP用的定时器硬件设计

一种自主可控DSP用的定时器硬件设计马强1,2,周乐1,21.中国电子科技集团公司第38研究所;2.安徽芯纪元科技有限公司摘要:本文介绍了一种自主可控DSP用的定时器设计,该定时器属于DSP的慢速外设的一部分,通过APB总线和DSP内核相连,该定时器为64位定时器,也可分为2个32位定时器使用,主要有时钟模式和脉冲模式,时钟周期和脉冲宽度是可调的。

关键词:DSP;定时器;中断A hardware design of timer for autonomous and controllable DSPMA Qiang1,2,ZHOU Le1,21.No.38th Research Institute,China Electronic Technology Group Corporation;2.AnHui Sliliepoch Technology Co.,LtdAbstract:This paper introduces a timer design for autonomous controllable DSP,which is part of the slow peripheral of DSP and is connected by the APB bus and DSP core.The timer is a64-bit timer,can also be divided into232-bit timers,mainly clock mode and pulse mode,clock period and pulse width is adjustable.Keywords:Digital Signal Processor(DSP);Timer;Interrupt图1定时器架构框图0引言定时器作为处理器的常用外设,一般是DSP 的标准配置。

比如:ADI 的TS201[1]和TI 的TMS320C6678[2]都含有定时器,本设计是面向一款国产自主可控DSP 的定时器设计,输出模式包含了脉冲模式和时钟模式,并随时产生中断。

定时器及硬件中断(C55xDSP)

定时器及硬件中断(C55xDSP)

实时时钟是嵌入式系统中的重 要组成部分,用于提供系统当 前时间。基于C55xDSP的实时 时钟设计需要考虑时钟源、时 钟精度、时间格式等因素。
可以选择外部晶振、RTC芯片 或内部振荡器作为时钟源,根 据系统需求选择合适的时钟源 。
通过软件或硬件方式调整时钟 计数器,提高或降低时钟精度 ,以满足系统对时间精度的要 求。
硬件中断
硬件中断是一种由硬件产生的中断,用于在特定事件发生时请求CPU服务。在C55X系列 DSP中,硬件中断用于响应外部事件或异常情况。
C55X系列DSP
C55X系列DSP(数字信号处理器)是一种专为数字信号处理算法而优化的微处理器。该系列 DSP具有高性能、低功耗和易于编程的特性,广泛应用于通信、音频处理、图像处理等领域。
随着物联网和边缘计算的发展,定时器和 硬件中断需要考虑更多的安全性和可靠性 问题,以确保系统的稳定运行。
THANKS
感谢观看
02
需要外部元件配合,如晶振、电容等。
可编程定时器
03
用户可以通过编程配置定时器的参数。
C55xDSP定时器功能
定时/计数功能
可以用于产生固定时间间隔或计数。
事件触发功能
可以用于检测特定事件的发生。
报警功能
可以用于产生报警信号。
C55xDSP定时器工作原理
01
02
03
定时器工作原理
通过计数器计数,当计数 值达到预设值时,产生中 断或输出信号。
02 定时器选择
选择合适的定时器,用于产生 PWM波形。
03
波形参数设置
04
设置PWM波形的频率、占空比 、周期等参数,以满足实际应用 需求。
输出方式选择
可以选择推挽输出或开漏输出等ቤተ መጻሕፍቲ ባይዱ输出方式,根据实际应用选择合 适的输出方式。

DSP实验十七 DSP实现数字振荡器

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正弦波——数字振荡器法原理

数字振荡器的本质是,使用一个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的定时器实现数字振荡器(汇编语言)

基于DSP的定时器实现数字振荡器(汇编语言)

基于DSP 的定时器实现数字振荡器一、实验目的1.更进一步掌握定时器和中断的使用;2.学会用数字振荡器方法产生正弦/余弦信号;二、实验原理利用定时器及中断产生频率为f 正弦信号,定时器被设置成每1/fs 产生中断一次(等效于采样速率),在中断服务程序中用迭代算法计算出一个正弦值。

用此方法可以很精确地产生某频率的正弦波。

设一个传递函数为正弦序列sin T ω,其Z 变换为2111)(-----=BzAz Cz z H ,其中A=2cos T ω,B=-1,C=sin T ω。

设初始条件为0,求出其反Z 变换得:[][1][2][1]y k Ay k By k Cx k =-+-+-是一个二阶差分方程,其单位冲击响应即为sink ωT ,利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,推导得:[][1][2]y n Ay n By n =-+-在k>2以后,y[k]能用y[k-1]和y[k-2]算出,这是一个递归的差分方程。

式中2cos 2cos(2**/)s A T n f f ω==,1B =-sin sin(2**/)s C T n f f ω==fs 为采样频率,f 为正弦波频率。

A 为正弦波幅度。

可见用数字频率振荡器产生正弦波的实质就是用程序实现上述的递归差分方程。

如要产生振荡器的频率为2kHz 正弦波,设采样速率为40k ,通过定时器设置,每隔25us 中断一次,即产生一个y[n]。

则递归差分方程系数为:2cos 2cos(2**/)s A T f f ωπ==2cos(2**2000/40000)2*0.95105652π==B=-1sin sin(2**/)sin(2**2000/40000)0.30901699s C T f f ωππ====为了便于定点DSP 处理,将所有系数除以2,然后用16位定点格式表示为:A=6D4BH ,B=C000H ,C=214FH ,这便是产生2kHz 正弦信号的三个系数。

DSP 用定时器实现数字振荡器程序详解与汇编指令集1

DSP 用定时器实现数字振荡器程序详解与汇编指令集1

汇编源程序====================================================================== ======*/;/* 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 ;开中断,从中断快速返回说明:中断向量表是用来装载不同类型的中断服务程序是的入口!DSP伪指令集段定义伪指令:.asect “段名” , 地址汇编到一以绝对地址为起始的段中.bss 符号,字数[,块标号] 在未初始化数据段bss中保留空间.data 汇编到已初始化数据段data中.sect “段名” 汇编到一已命名(已初始化)的段中.text 汇编到可执行代码段text中符号.usect “段名”,字数[,块标号] 在一已命名(未初始化)的段中保留空间常数初始化伪指令(包括数据和地址常数).bes 位数在当前段中保留位数(标号指向所保留空间的尾部).bfloat 数值初始化一个32位,IEEE单精度的浮点常数;禁止有跨页的初始化对象。

一种基于DSP的数字振荡器的实现方式

一种基于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实验报告_百度文库(精)

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 实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。

轻松学会DSP——定时器和时钟课件

轻松学会DSP——定时器和时钟课件

止、调整频率等。
定时器与时钟的联合编程实例
定时器触发时钟
可以通过定时器触发时钟的启动或停止,实现定时任务与时间戳的 同步。
时钟回调定时器
可以在时钟中断处理程序中调用定时器的回调函数,实现时间敏感 任务的调度。
联合编程注意事项
在联合编程时,需要注意时序问题,确保定时器和时钟的同步运行; 同时还需要注意资源共享问题,避免资源冲突和死锁。
用于控制定时器的启动、停止 、复位等操作,以及设置定时
器的计数值和预置值。
定时器的控制方式
硬件控制方式
通过硬件电路实现定时器的启动、停 止、复位等操作,具有速度快、可靠 性高的优点。
软件控制方式
通过编写程序实现定时器的启动、停 止、复位等操作,具有灵活性高、易 于实现复杂功能的优点。
定时器的计数方式
CHAPTER 05
DSP定时器与时钟的编程实 例
使用C语言编写DSP定时器程序
定时器初始化
在C语言中,需要先对定时器进 行初始化设置,包括设置定时器
模式、计数值等。
定时器中断处理
在定时器溢出时,需要编写中断 处理程序,以执行相应的操作, 如更新计数值、执行回调函数等

定时器控制
通过C语言中的函数调用,可以 实现对定时器的控制,如启动、
频率合成
时钟信号还可以用于生成其他频率 的信号,这在信号调制和解调中非 常有用。
定时器与时钟的协同工作
时间基准与事件计数
定时器可以基于时钟信号进行触发,用于计数或测量时间间隔。
同步操作
通过将定时器输出与系统时钟源同步,可以确保DSP中的各种操作 在正确的时间点开始和结束。
动态调整
根据需要,可以通过调整时钟频率或定时器的配置来动态改变DSP 的处理速度或响应时间。

轻松学会DSP——第9章-定时器和时钟

轻松学会DSP——第9章-定时器和时钟
当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]
3、设计实例
设DSP主频为80MHz,设计一个输出1kHz,采样 频率为10kHz的数字振荡器。
A 2 cosT 2 cos36 1.618034
B 1
C sinT sin 36 0.587785
y[1] C 0.587785 y[2] Ay[1] 0.951056
定时器计数器初值为80M/10k-1=7999
从DIV到PLL
从PLL到DIV
例如:从PLL×3模式到DIV-2模式
从PLL到PLL
首先要从PLL模式变为DIV模式,然后从DIV模式变 回PLL模式,因为只有在DIV模式下才可以改系数。
例如:从PLL×X到PLL×1模式
从DIV到DIV模式
(1)虽然DIV模式下面可以进行对CLKMD修改,但 是,从DIV到DIV的改变必须首先把DIV模式改为 PLL模式,而且这个PLL模式还必须是整数系数的 PLL模式,最后再从PLL模式改回DIV模式;
ANDM #0010h, TCR
;TDDR=0
ORM #0020h, TCR
;TRB=1
STM #0FFFFh, IFR
;清除所有中断
ORM #8h, IMR
;打开时钟中断
RSBX INTM
;开中断
ANDM #0FFEFh, TCR
;TSS=0, 启动
时钟
Y2 .word 079BCh

DSP实验2

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计数器  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,关闭定时器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北科技大学
实验报告
12级电信专业123班学号Z120701306 15年6月16日
姓名张娟同组人丁伟曼Z120701305 指导教师安国臣实验名称实验二定时器与数字振荡器成绩
实验类型设计型批阅教师
一、实验目的
在数字信号处理中,会经常使用到正弦/余弦信号。

通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表, DSP 工作时仅作查表运算即可。

在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。

本实验除了学习数字振荡器的 DSP 实现原理外,同时还学习 C54X 定时器使用以及中断服务程序编写。

另外,在本实验中我们将使用汇编语言和 C 语言分别完成源程序的编写。

二、实验要求
本实验利用定时器产生一个 2kHz 的正弦信号。

定时器被设置成每 25uS 产生一次中断(等效于采样速率为 40K)。

利用该中断,在中断服务程序中用叠代算法计算出一个 SIN值,并利用 CCS 的图形显示功能查看波形。

三、实验内容
本实验需要使用 C54X 汇编语言或 C 语言实现数字振荡器,并通过 CCS 提供的图形显示窗口观察输出信号波形以及频谱。

实验分下面几步完成:
1) 根据确定数字振荡器的频率,确定系数。

数字振荡器系数的确定在前面已经说明,这里不再赘述。

2) 启动 CCS,新建工程文件,如文件名为 sinewave.pjt。

选择 Project 菜单中的 Add Fileto 4Project 选项,将汇编源程序 exer3.asm、 vec_table.asm 和连接定位 sinewave.cmd文件依次添加到工程文件中。

注意,你可以在添加文件对话框中选择显示不同的文件类型来加快文件选择速度你也可以使用鼠标右键
单击工程文件名(如sinewave.pjt)并选择 Add Files 项来添加需要的文件。

其中, exer3.asm 包括初始化代码和中断服务程序,而 vec_talbe.asm 包含中断向量表。

3) 选择 Project 菜单中的 Options 选项,或使用鼠标右键单击工程文件名(如sinewave.pjt)并选择 build options 项来修改或添加编译、连接中使用的参数。

选择Linker 窗口,在“ Output Filename”栏中写入输出 OUT 文件的名字,如 sine.out,你还可以设置生成的 MAP 文件名。

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

然后使用 File 菜单的“ Load Program”选项,将生成的 OUT 文件(如 sine.out)装入 DSP 的片内存储器。

这时 CCS 将显示程序的启始地址_c_int00。

5) 选 View→Graph→Time/Frequency…打开图形显示设置窗口。

在弹出的对话框中按下图设置,主要修改“Start Address”为 y0(y0 为生成的正弦波输出变量);“Acquisition Buffer Size”为 1,“DSP Data Type”为“16-bit signed integer”。

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

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

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

将“ DisplayType”项改为“ FFT Magnitude”以便显示信号频谱。

修改“ Sampling Rate(Hz)”项为 40000,然后退出。

注意观察生成的正弦波频率。

四、实验原程序
.title "for test INT service program ...(25 us) "
.mmregs
.global _c_int00,_tint,vector
OFF_INTIMER .set 04Ch ; vector of INTtimer at VECTOR+OFF_INTIMER INIT_A .set 079bch ; A/2=0.9510498
INIT_B .set 0c000h ; B/2=-0.5
INIT_C .set 013c7h ; C/2=0.1545105
.bss y0,1
.bss y1,1
.bss y2,1
.bss temp,1
.bss AA,1
.bss BB,1
.bss CC,1
.text
_c_int00:
ld #0,dp
ssbx intm ; disable all interrupt ! st #1fffh,sp
ld #vector, a ; get vector table address !
and #0FF80h, a
andm #007Fh, pmst
or pmst, a
stlm a, pmst ; 设置IPTR
stm #10h,TCR ; init TIMER
stm #2499,PRD ; f=100M/(2499+1)=40kHz
stm #20h,TCR ; reset TIMER
ldm IMR,a ; read back IMR
or #08h,a ; enable TIMER interrupt
stlm a,IMR ; set IMR
ld #temp,dp ; set DP
ssbx FRCT ; prepare for fraction mpy
st #INIT_A,AA ; init AA,BB,CC
st #INIT_B,BB ;
st #INIT_C,CC ;
pshd CC
popd y2 ; init y2,y2=CC
ld AA,T ; T=AA
mpy y2,a ; y2*AA -> a
sth a,y1 ; y2*AA -> y1
stm #0h,TCR ; enable TIMER
nop
rsbx intm ; enable all int !
again:
nop
b again
nop
nop
nop
nop
nop
nop
;------------------------------------------------------------- ; interrupt for INT_TIMER !
;------------------------------------------------------------- _tint: ld #BB,DP
ld BB,T ; T=BB
mpy y2,a ; a=y2*BB
ltd y1 ; T=y1,y2=y1
mac AA,a ; a=a+y1*AA
sth a,1,y1 ; new cos data -> y1
sth a,1,y0 ; new cos data -> y0
nop ; set breakpoint in CCS !!!
int1_end: nop
rete
.end
实验现象:在图形显示窗口中,观察输出波形,是一连串的正弦波。

相关文档
最新文档