TMSCDSP结构原理及应用的大作业
TMS320系列DSP原理、结构及应用
如将信号从时域转化为频域,从模拟信号转换为数字信号等。信号处理 的内容涉及广泛,尤其信号的数字处理为信号处理带来了广阔的前景。
由信号、系统和信号处理的定义,可以清晰地看到它们之间的关系, 即信号分析是基础,系统分析是桥梁,信号处理是手段,系统综合是目的。 信号处理作为手段,贯穿信号分析、系统分析、系统综合的始终。
第一章号处理是利用计算机或专用处理设备,以数字的形式对信号进 行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便 提取有用的信息并进行有效的传输与应用。与模拟信号处理相比,数字信 号处理具有精确、灵活、抗干扰能力强、可靠性高、体积小、易于大规模 集成等优点。
第一章 绪论
1.1信号处理技术基础——数字信号处理
数字信号处理包括算法研究和实现方法两个方面的内容:
1.算法研究。算法研究是指如何以最小的运算量和存储器的 使用量来完成指定的任务。20世纪60年代出现的快速傅里叶变 换(FFT),使数字信号处理技术发生了革命性的变化。近几年 来,数字信号处理的理论和方法得到了迅速的发展,诸如:语音 与图像的压缩编码、识别与鉴别,信号的调制与解调、加密和解 密,信道的辨识与均衡,智能天线,频谱分析等各种快速算法都 成为研究的热点,并取得了长足的进步,为各种实时处理的应用 提供了算法基础。
第一章 绪论
1.2 DSP芯片概述
1. DSP 芯片的发展概况
DSP 芯片诞生于 20 世纪 70 年代末,至今已经得到了突飞猛进的发 展,并经历了以下三个阶段:
第一阶段,DSP 的雏形阶段(1980 年前后)。 1978 年 AMI公司生产出第一片 DSP 芯片 S2811。 1979 年美国 Intel 公司发布了商用可编程 DSP器件 Intel2920。 代表性器件主要有:Intel2920(Intel)、 PD7720(NEC)、 TMS320C10(TI)、DSP16(AT&T)、S2811(AMI)、ADSP-21 (AD公司)等
DSP大作业报告--DSP原理及其应用
目录1 前言 (3)1.1 课程设计背景 (3)1.2 课程设计目的 (3)1.3 课程设计内容 (3)1.1 课程设计要求 (3)2 DSP及其开发环境 (4)2.1 DSP系统的构成 (4)2.2 DSP系统的特点及设计过程 (4)2.3 TI 和DSP介绍 (5)2.3.1C54x芯片 (5)2.3.2C5410体系结构 (6)2.3.3 中央处理器CPU (7)2.3.4数据存储器寻址 (8)2.3.5 程序存储器寻址 (8)2.3.6流水线操作 (8)2.3.7 片上外设 (8)2.3.8 外部总线接口 (8)2.3.9 IEEE 1149.1标准的逻辑扫描电路 (9)2.4.1DSK简介 (9)2.4.2CCS开发环境 (10)3 数字滤波器的设计原理 (12)3.1关于IIR与FIR滤波器 (12)3.2 FIR滤波器的设计 (12)3.1.1FIR滤波器的基本结构 (12)3.1.2FIR滤波器的常规设计方法 (13)3.3窗函数法设计FIR滤波器 (15)3.3.1典型窗口函数介绍 (15)3.3.2利用Hamming窗设计低通滤波器 (15)1前言1.1课程设计背景随着信息时代的到来,数字信号处理已经成为当今一门极其重要的学科和技术,并且在通信、语音、图像、自动控制等众多领域得到了广泛的应用。
在数字信号处理中,数字滤波器占有极其重要的地位,它具有精度高、可靠性好、灵活性大等特点。
现代数字滤波器可以用软件或硬件两种方式来实现。
软件方式实现的优点是可以通过滤波器参数的改变去调整滤波器的性能。
在信号处理领域中,对于信号处理的实时性、快速性的要求越来越高,因此在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器。
其中数字滤波器具有稳定性高、精度高、设计灵活、实现方便等许多突出的优点,避免了模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题,因而随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。
TMS C DSP结构 原理及应用的大作业
南京航空航天大学DSP原理与应用实验报告学生姓名:蔡静学生学号: SX1401111上机地点: 12号楼509室2015年6月一、已知一低通滤波器的采样率为2KHz ,通带为500Hz ,阻带为600Hz ,带内波动3dB ,带外衰减-50dB ,滤波器的相位具有线性特性,具体幅频特性见下图。
要求用等波纹方法设计出该FIR 滤波器,然后用TMS320C54x 汇编语言编程实现该FIR 滤波器。
FIR 滤波器系数为:0.0073 -0.0009 -0.0395 -0.0609 -0.0149 0.0340 -0.0014 -0.04570.0125 0.0641 -0.0375-0.10800.12540.4717 0.4717 0.1254 -0.1080-0.03750.06410.0125 -0.0457 -0.00140.0340-0.0149-0.0609-0.0395-0.00090.00731.matlab 设计FIR 滤波器:0200400600800100012001400160018002000-120-100-80-60-40-2020Frequency M a g n i t u d e (d B )滤波器的幅频响应2.C54x 汇编语言设计FIR 滤波器:⑴输入100点的冲激响应信号impluse.dat,输出存到y_impluse.dat 文件中00.10.20.30.40.50.60.70.80.91-30-25-20-15-10-5Frequency P h a s e (d e g r e e )滤波器的相频响应⑵输入100点的正弦信号y_sin200.dat,输出存到out_sin200.dat文件中⑶输入100点的正弦信号y_sin800.dat,输出存到out_sin800.dat文件中二、认真阅读课本中P182~P186上基于时间抽取的8~1024点FFT的程序及输入、输出说明,然后调试出该程序,并对输入方波信号进行FFT变换,检验输出信号是否是一sinc波形。
DSP原理及应用DSP芯片的硬件结构节讲稿
特殊功能 寄存器
TMS320C54x的硬件结构图
PAB
程序存储器
PB
数据存储器
CAB
串行口
CB
并行口
DAB
定时器
DB
计数器
EAB
中断
EB
外部 存储器 接口
外部 设备 接口
乘法
C累PU加器
算术/逻辑 运算单元
比较器
桶形 移位器
第3页/共40页
2.2 ’C54x的主要特性和外部引 脚2.2.1 ’C54x的主要特性 1、CPU 2、存储器 3、指令系统 其特性还将在后面章节专门介绍
1 9 BIT0 1 8 BIT1 1 7 BIT2 1 6 BIT3 1 5 BIT4 1 4 BIT5 1 3 BIT6 1 2 BIT7
10
GND
GND
15 14 13 12 11 10 9 7
SEG0 1 1 SEG1 7 SEG2 4 SEG3 2 SEG4 1 SEG5 1 0 SEG6 5 SEG7 3
SEG0 1 1 SEG1 7 SEG2 4 SEG3 2 SEG4 1 SEG5 1 0 SEG6 5 SEG7 3
U2 A 2
3
7 4HC0 2 1
U2 B 5
6
7 4HC0 2 4
U2 C 8
9
7 4HC0 2 10
U2 D 11
12
7 4HC0 2 13
a
DS1
b
c
d
e
f
g
dp
a
DS2
b
c
d
第32页/共40页
8. 测试引脚 TCK:测试时钟输入引脚; TDI:测试数据输入引脚; TDO:测试数据输出引脚; TMS:测试方式选择引脚; TRST:测试复位引脚; EMU0:仿真器中断0引脚; EMU1/OFF:仿真器中断1引脚/关断所有 输出引脚。
DSP工作原理及应用
改进的哈佛构造
哈佛构造:是指处理器具有独立的程序 和数据总线,独立的程序和数据空间。
处理器可以同时对数据和程序空间进展 并行访问,处理速度快。
缺点:外部引脚太多,成品率低。 改进的哈佛构造:DSP芯片内部承受哈
佛构造,外部总线合并为一组。
哈佛构造
改进的哈佛构造
多级流水线技术
多级流水线技术可以使得DSP能在一个 机器周期内同时对多条指令进展处理。
代:60ns 四代:40-50ns 五代:10-35ns TMS320DM642: 1.39-2ns
8.1 TMS320C54x的体系构造
是定点DSP; 构造优化; 指令功能强; 应用于电信方面,有优越的性能。
C54x的芯片内部包括:
中心处理单元〔CPU或DSP核〕
片内存储器
串行口 主机接口 其他在片外设 内部总线
主机独享模式〔HOM〕:只有主机可以访问HPI 存储器,C54x处于复位状态或休眠状态,其内 部和外部时钟全部停顿。
串行口
C54x器件有四种类型的串口: 标准型串口〔SP〕 缓冲串口〔BSP〕 时分复用串口 〔TDM〕 多通道缓冲串口〔McBSP〕
1. 标准串口〔SP〕
标准 模式
16 DRR(16) 16
片内SARAM:分块组织,每一块在单机器周期内 只能进展一次读或写访问。
一般总是作为数据存储器,主要是用来存储数据。 也可以作为程序存储器,用来存储程序编码。
三、 存储器映射存放器
CPU存放器:一共26个,访问时不需要等待状态。 外设存放器:它们是外设电路中把握和数据存放
器。 便笺式RAM块〔高速暂存器〕:包括32字的
第8章 TMS320C54x系列 DSP的体系构造
DSP原理及应用大作业
DSP原理及应用大作业题目:IIR算法的软件实验学生姓名:学号:院(系):信息工程学院专业:电子信息工程专业IIR算法实验摘要:本课题通过软件设计IIR数字滤波器,并对所设计的滤波器进行仿真:应用DSP集成开发环境—CCS调试程序,用TMS320F2812实现IIR数字滤波。
具体工作包括:对IIR 数字滤波器的基本理论进行分析和探讨。
应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。
关键词:数字滤波器;DSP;TMS320F2812;无限冲激响应滤波器(IIR)。
引言:21世纪是数字化的时代,随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为一门主流技术。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等。
这些优势决定数字滤波器的应用越来越广泛。
数字滤波器是数字信号处理中最重要的组成部分之一,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。
实验原理1.无限冲激响应数字滤波器的基础理论。
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
3.数字滤波器系数的确定方法。
4.根据要求设计低通IIR滤波器要求:低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。
设计:-确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。
模拟边缘频率为:fp1=1000Hz,fs1=12000Hz 阻带边缘衰减为:-20logδs=30dB -用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。
Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度-计算预扭曲模拟频率以避免双线性变换带来的失真。
DSP原理及应用 TMS320C54x片内外设及应用实例
表8-4 复位时的时钟方式(C5402)
CLKMD 1 0
0 0 1 1 1 1 0
CLKMD 2 0
0 1 0 1 1 0 1
CLKMD 3 0
1 0 0 0 1 1 1
CLKMD寄存 器 E007H
9007H 4007H 1007H F007H 0000H F000H …
时钟方式
乘15,内部振荡器工作,PLL工作
返回首页
图8-1 定时器组成框图
表8-1 定时器的三个寄存器
Timer0 地址 0024H 0025H 0026H Timer1 地址 0030H 0031H 0032H 寄存器 TIM PRD TCR 说明 定时器寄存器,每计数一次自动减 1
定时器周期寄存器,当TIM减为0 后,CPU自动将PRD的值装入TIM
:>SPRAM1
STACK :>SPRAM2
返回本节
8.4 多通道缓冲串口(McBSP)
8.4.1 McBSP原理框图及信号接口
8.4.2 McBSP控制寄存器 8.4.3 时钟和帧同步 8.4.4 McBSP数据的接收和发送 8.4.5 有关的几个概念
返回首页
8.4.1 McBSP原理框图及信号接口
定时器控制寄存器,包含定时器的 控制和状态位
15~12 保留
11 soft
10 free
9~6 PSC
5 TRB
4 TSS
3~0 TDDR
图8-2 TCR位结构图
表8-2 定时器控制寄存器(TCR)的功能
返回本节
8.2 时钟发生器
8.2.1 硬件配置PLL 8.2.2 软件可编程PLL
TMS320C54XDSP原理及应用课件乔瑞萍第1章绪论
第1章 绪论
表1-2 Q表示法及其表示的十进制数范围
第1章 绪论
1) Q15.0格式 Q15.0格式的字长为16位,其每位的具体表示为: Sxxxxxxxxxxxxxxx。 2) Q3.12格式 Q3.12格式的字长为16位,其每位的具体表示为: Sxxxyyyyyyyyyyyy。 3) Q0.15(或Q.15)格式 Q.15格式的字长为16位,其每位的具体表示为: S.xxxxxxxxxxxxxxx。
第1章 绪论
A /D
1 0 0 1 0 1 0 0 1 1 D S F
D /A
1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0
1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0
第1章 绪论
5.定点格式数据的转换 同一个用二进制表示的定点数,当采用不同的 Qm.n表示方法时,其代表的十进制数是不同的。 例如: 用Q15.0表示方法,十六进制数3000H=12 288; 用Q0.15表示方法,十六进制数3000H=0.375; 用Q3.12表示方法,十六进制数3000H=3。
图1-1 数字信号处理系统简化框图
第1章 绪论
DSP系统的输入信号可以有各种各样的形式,例 如:声音、图像、温度、压力等。假设我们输入的是 语音信号,DSP系统首先对语音信号进行带限滤波和 抽样,根据奈奎斯特定理,抽样频率至少必须是输入 带限信号最高频率的2倍,以防止信号频谱混叠,保证 语音信息不丢失。
【例8】 12×(-5)= -60。
Future
多处理器DSP
TMS 320C3x
绪论《TMS320C54XDSP结构、原理及应用》
如JPEG、MC54xDSP可以用于实现各种图像识别算法,如人脸识别、手势
识别等。
在自动控制系统中的应用
控制系统建模与仿真
利用TMS320C54xDSP的高速运算能力,可以实现各 种控制系统的建模与仿真。
控制系统分析与优化
利用TMS320C54xDSP的高速运算能力,可以对控制 系统进行分析和优化,提高控制系统的性能。
音频处理
音频压缩、音频分析、音频合 成等。
控制与自动化
电机控制、智能仪表、自动控 制系统等。
TMS320C54xDSP的主要特点
高性能
采用哈佛结构,流水线作业,运算速度快。
低功耗
采用低功耗设计,适合于电池供电和便携式 设备。
定点运算
采用定点运算,无需浮点运算器,降低了成 本和功耗。
可扩展性
具有可扩展的外部存储器和I/O接口,方便 系统集成和升级。
存储器结构
1
TMS320C54xDSP具有内部和外部存储器两种类 型的存储器结构。
2
内部存储器包括程序存储器和数据存储器,用于 存储程序代码和临时数据。
3
外部存储器通过外部总线接口与DSP相连,提供 更大的存储空间。
输入/输出(I/O)接口
01
I/O接口是TMS320C54xDSP与外部设备进行通信的桥梁。
02 TMS320C54xDSP的结 构
中央处理单元(CPU)
01
CPU是TMS320C54xDSP的核心部分,负责执行指令和控制数 据流。
02
它包括算术逻辑单元(ALU)、累加器、程序计数器、指令寄
存器等组件。
CPU通过指令集架构(ISA)与外部组件进行通信,以执行各种
03
《TMS320C54X DSP原理及应用》课件第2章
当算术逻辑运算发生溢出,且状态寄存器ST1中的 OVM=1时,若是正向溢出,则用32位最大正数00 7FFF FFFFH 加载累加器;若是负向溢出,则用32位最大负数FF 8000 0000H加载累加器。溢出发生后,累加器相应的溢出标志位 OVA或OVB置1,直到复位或执行溢出条件指令。
2.3.2 累加器
2.2 TMS320C54x的总线结构
TMS320C54x DSP片内由8组16bit总线(1组程序总线、3 组数据线和4组地址总线)构成。程序总线(PB)传送从程序存储 器装载的指令代码和立即数。
TMS320C54x还有一组双向的片内总线用于访问片内外设, 这组总线轮流使用DB和EB与CPU连接。访问者使用这组总线 进行读/写操作需要两个或更多的周期,具体所需周期数取决 于片内外设的结构。表格2-2总结了总线访问类型。
2.3.3 桶形移位器
桶形移位器能把输入的数据进行0~31位的左移和0~15 位的右移。40位桶形移位器的输入来自数据总线DB的16位输 入数据、DB和CB的32位输入数据及任意一个40位累加器,并 输出到ALU,经过MSW/LSW(最高有效字/最低有效字)写选择 单元至EB总线。
它所移的位数就是指令中的移位数。移位数都是用二进制 补码表示的,正值表示左移,负值表示右移。移位数可由立即 数、状态寄存器ST1中的累加器移位方式(ASM)字段和被指定 为移位数值寄存器的暂存器T来决定。
2.4 TMS320C54x存储器和I/O空间
DSP扩展存储器主要分为两类:ROM和RAM。ROM包 括EPROM、EEPROM、Flash Memroy等。这一类存储器主要 用于存储用户程序和系统常数表,一般映像在程序存储空间。 RAM主要指静态RAM(SRAM)。本章主要讨论片内存储器, 而片外扩展存储器将在第8章中详细介绍。
DSP原理与应用课程作业PPT课件
TMS320C55x Low-Power Optimization DSP Starter Kit (DSK)
TMS320C5509(U.S oart number) 495 SU.S
TMS320C55xTM DSP Starter Kit(DSK), TMS320C5510 DSP based 395 SU.S
一个虚拟的DSP环境,可以调试、运行程序。但一般软件无法构造DSP中的外设, 所以软件仿真通常用于调试纯软件的算法和进行效率分析等。软件仿真无需目标板和 仿真器等硬件就可以开始软件编程,缺点是仿真速度慢而且无法仿真某些外设的功能。
11
第11页/共50页
第 2 次作业
硬件仿真需要用户具备目标板,如TI的DSK、EVM及用户设计的系统板,仿真程序会 利用开发系统将代码下载到DSP芯片中。程序在目标板中运行,仿真软件只是将结果读 出来显示。目标板一般是通过XDS510开发系统与主机相连。硬件仿真的优点是仿真速 度快,仿真结果与系统实际一致。有并口、ISA、PCI和USB仿真器。现TI新推出告诉 XDS560开发系统。在外设程序调试及系统程序联调时需使用硬件仿真。
23
第23页/共50页
步骤3:写汇编代码 分析C代码中存在的影响性能的关键低效率段,用汇编代码编写它们,再次剖析。如果仍然有效性不够,进入
步骤4. 步骤4:优化汇编代码 优化汇编代码,再次优化,直至足够有效。
24
第24页/共50页
第4次作业
5.2 为什么通常需要采用C语言和汇编语言的混合编程? 答:在数字信号处理器的软件开发中一直存在一个两难的选择:C/C++语言开 发容易、移植性强、但效率较低,不能满足实时性要求;汇编语言效率高,对硬 件的操作更为直接,但程序编写复杂易读性差、移植性不好。
DSP原理及应用的实验教学
TMS320C54X的数据寻址方式
立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映象寄存器寻址 堆栈寻址
寻址指令中用到的缩写符号及其含义
缩写符号 Smem Xmem Ymem dmad 16位单数据存储器操作数 含义
在双操作数指令及某些单操作数指令中所用的16位双数据存储器操 作数,从DB总线上读出
.title "ex9“
FG_ADDR .set 1002H ;set伪指令。将一个值分 配 给一个符号。1002H I/O口地址定义。 DATA .set 60h ; ram data
LOOP:
4. 调试
输入信号的频谱图
输入信号的时域波形
输出信号频谱图
输出信号时域波形
实验课内容简介
实验参考资料
\\电子资料\\电子文档\\SZDSPⅡ型开发实验平台 54X.doc \\电子资料\\ 说明书\\ \\电子资料\\ DEVELOPMENT DATA\\5000资 料\\TMS320C54x DSP 参考(Mnemonic Instruction Set).pdf
实验安排
基础实验
\\DSP基础实验程序.rar
打开 实验箱
课程设计类实验
\\5402licheng IO实验 数码显示实验 定时器实验 交通灯实验 同步串口 语音录、放实验 语音处理综合实验
b1io b2shuma b4ds b6jt b3tongbu a12lf szSpeechFIR
目的累加器(A或令系统
TMS320C54x的指令表示方法
C54x的助记符指令是由操作码和操作数两部分组成
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京航空航天大学DSP原理与应用实验报告学生姓名:蔡静学生学号: SX1401111上机地点: 12号楼509室2015年6月一、已知一低通滤波器的采样率为2KHz ,通带为500Hz ,阻带为600Hz ,带内波动3dB ,带外衰减-50dB ,滤波器的相位具有线性特性,具体幅频特性见下图。
要求用等波纹方法设计出该FIR 滤波器,然后用TMS320C54x 汇编语言编程实现该FIR 滤波器。
FIR 滤波器系数为:0.0073 -0.0009 -0.0395 -0.0609 -0.0149 0.0340 -0.0014 -0.04570.0125 0.0641 -0.0375-0.10800.12540.4717 0.4717 0.1254 -0.1080-0.03750.06410.0125 -0.0457 -0.00140.0340-0.0149-0.0609-0.0395-0.00090.00731.matlab 设计FIR 滤波器:0200400600800100012001400160018002000-120-100-80-60-40-2020Frequency M a g n i t u d e (d B )滤波器的幅频响应2.C54x 汇编语言设计FIR 滤波器:⑴输入100点的冲激响应信号impluse.dat,输出存到y_impluse.dat 文件中00.10.20.30.40.50.60.70.80.91-30-25-20-15-10-5Frequency P h a s e (d e g r e e )滤波器的相频响应⑵输入100点的正弦信号y_sin200.dat,输出存到out_sin200.dat文件中⑶输入100点的正弦信号y_sin800.dat,输出存到out_sin800.dat文件中二、认真阅读课本中P182~P186上基于时间抽取的8~1024点FFT的程序及输入、输出说明,然后调试出该程序,并对输入方波信号进行FFT变换,检验输出信号是否是一sinc波形。
同时更改程序,使其能进行2048点FFT运算。
⑴8点fft,输入FFTIN.DAT,输出存到out.dat文件中⑵2048点fft,输入FFTIN.dat,输出存到out.dat文件中。
三、编写TMS320C54x 汇编语言程序,计算下列矩阵乘法:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⋅⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⋅=3C 56 A4 7832 47 88 6428 38 6C 501E 29 50 34 5A 83 4 8 62 3 6 41 3 4 27 6 5 46 5 4 35 4 3 24 3 2 1C C B A 要求:① 两个矩阵的数据由DATA 段输入(可放在源程序中,也可单独建立一个数据文件);②两个矩阵的数据从0口以数据文件IN.DAT 输入,计算结果从1口以数据文件OUT.DAT 输出。
1.程序说明本程序由Matrix_Mul.asm,Matrix_Mul.cmd,input_B.dat,input_C.dat,ou tput_A.dat 组成。
通过两种不同的方式输入矩阵B 和矩阵C:①矩阵B 保存在input_B.dat 文件中,由data 段输入,通过.copy 命令加载到程序中;②矩阵C 保存在input_C.dat 文件中,利用I/O 端口从PA1口输入。
矩阵相乘时,利用RPTZ ,RPTB ,BANZ 实现三层循环嵌套,并通过MAR 指令实现对辅助寄存器的修改。
2.测试结果①矩阵B保存在input_B.dat文件中,由data段输入到MatrixB(0x0070);②矩阵C保存在input_C.dat文件中,通过PA1口输入到MatrixC(0x0080);③通过计算,结果矩阵A保存到MatrixA(0x0090)中,并通过PA0口输出到output_A.dat文件中。
四、附录实验一:matlab程序:clc;clear all;[n,fo,mo,w] = remezord( [500 600], [1 0], [0.18 0.003], 2000 );b = remez(n,fo,mo,w);[h,w]=freqz(b);figure(1);plot(w*2000/pi,20*log10(abs(h)));grid on;xlabel('Frequency');ylabel('Magnitude(dB)');title('滤波器的幅频响应');figure(2);plot(w/pi,unwrap(angle(h)));xlabel('Frequency');ylabel('Phase(degree)');grid ontitle('滤波器的相频响应');CCS程序:FIR.asm.title "FIR.asm".mmregs.def_c_int00PA0.set0 ;0口输出PA1.set 1 ;1口输入ect "x",28 ;定义数据空间ect "h",28.bss y,1.dataCOEF: .word 32768*73/10000; H0----H27 .word -32768*9/10000.word -32768*395/10000.word -32768*609/10000.word -32768*149/10000.word 32768*340/10000.word -32768*14/10000.word -32768*457/10000.word 32768*125/10000.word 32768*641/10000.word -32768*375/10000.word -32768*1080/10000.word 32768*1254/10000.word 32768*4717/10000.word 32768*4717/10000.word 32768*1254/10000.word -32768*1080/10000.word -32768*375/10000.word 32768*641/10000.word 32768*125/10000.word -32768*457/10000.word -32768*14/10000.word -32768*149/10000.word -32768*609/10000.word -32768*395/10000.word -32768*9/10000.word 32768*73/10000; H0----H27.text_c_int00:SSBX FRCT ;状态寄存器st1置位,frct置为1,小数乘法STM #h,AR1;ar1指向hRPT #27;将28个系数传送到数据空间MVPD COEF,*AR1+STM #x+27,AR3;ar3指向x(n-27)STM #h+27,AR4;ar4指向h27STM #28,bk;循环缓冲区长度bk=28STM #-1,AR0;ar0=-1LD #x,DPPORTR PA1,@x;输入x(n)STM #00BEh,AR6 ;输出数据缓冲区首地址#00BEhSTM #0064h-1,AR7 ;循环计算100个样点FIR: RPTZ A,#27 ;A清零,迭代28次MAC *AR3+0%,*AR4+0%,A ;乘法累加STH A,@y;保存y(n)STH A,*AR6+ ;保存y(n)到DM空间,方便画图PORTW @y,PA0;输出y(n)PORTR PA1,*AR3+0%;输入新数据BANZ FIR,*AR7-end: B end.ENDFIR.cmd-x .\Debug\FIR.obj-x .\Debug\FIR_V.obj-o FIR.out-m FIR.objMEMORY{PAGE 0:EPROM: org=0xE000,len=0x1000VECS:org=0xFF80,len=0x0080PAGE 1:SPRAM: org=0x0060,len=0x0020DARAM: org=0x0080,len=0x1380}SECTIONS{.text:> EPROM PAGE 0.data:> EPROM PAGE 0.bss :> SPRAM PAGE 1x: align(16){}> DARAM PAGE 1h: align(16){}> DARAM PAGE 1.vectors:> VECS PAGE 0}FIR_V.asm.title "FIR_V.asm".ref _c_int00.sect ".vectors"B _c_int00.end实验二:2048点fftFFT.ASM****************************************************************** *** N(8-1024) points FFT Program *** ****************************************************************** .title "fft.asm".mmregs.copy"coeff.inc".copy"fftin.dat"* .copy"fftin64.dat".def startsine:.usect"sine",512cosine:.usect"cosine",512d_input:.usect"d_input",2048fft_data:.usect"fft_data",2048fft_out:.usect"fft_out",1024ect"STACK",10K_DATA_IDX_1.set 2K_DATA_IDX_2.set 4K_DATA_IDX_3.set 8K_TWID_TBL_SIZE.set 512K_TWID_IDX_3.set 128K_FLY_COUNT_3.set 4K_FFT_SIZE.set 2048;N=2048(8)K_LOGN.set 11;LOG(N)=LOG(2048)=11(3)PA0.set 0PA1.set 1.bss d_twid_idx,1.bss d_data_idx,1.bss d_grps_cnt,1.sect"fft_prg"***Bit Reversal Routine***.asg AR2,REORDERED.asg AR3,ORIGINAL_INPUT.asg AR7,DATA_PROC_BUF.textstart:SSBX FRCTSTM#STACK+10,SPSTM#d_input,AR1;input the 2N data*STM #fft_data,AR1;input the 2N dataRPT#2*K_FFT_SIZE-1;from PA1MVPD d_input1,*AR1+*PORTR PA1,*AR1+STM#sine,AR1;move coeft of sinRPT#1024;from program to dataMVPD sine1,*AR1+STM#cosine,AR1;move coeff of cosRPT#1024;from program to dataMVPD cosine1,*AR1+STM#d_input,ORIGINAL_INPUTSTM#fft_data,DATA_PROC_BUFMVMM DATA_PROC_BUF,REORDEREDSTM#K_FFT_SIZE-1,BRCRPTBD bit_rev_end-1STM#K_FFT_SIZE,AR0MVDD*ORIGINAL_INPUT+,*REORDERED+MVDD*ORIGINAL_INPUT-,*REORDERED+MAR*ORIGINAL_INPUT+0Bbit_rev_end:* * * * FFT Code * * * * *.asg AR1,GROUP_COUNTER.asg AR2,PX.asg AR3,QX.asg AR4,WR.asg AR5,WI.asg AR6,BUTTERFLY_COUNTER.asg AR7,STAGE_COUNTER* * * stage 1 * * *STM#0, BKLD#0,ASMSTM#fft_data,PXLD*PX,16,ASTM#fft_data+K_DATA_IDX_1,QXSTM#K_FFT_SIZE/2-1,BRCRPTBD stage1end-1STM#K_DATA_IDX_1+1,AR0SUB*QX,16,A,BADD*QX,16,ASTH A,ASM,*PX+ST B,*QX+||LD*PX,ASUB*QX,16,A,BADD*QX,16,ASTH A,ASM,*PX+0ST B,*QX+0%||LD*PX,Astage1end:* * * Stage 2 * * *STM#fft_data,PXSTM#fft_data+K_DATA_IDX_2,QXSTM#K_FFT_SIZE/4-1,BRCLD*PX,16,ARPTBD stage2end-1STM#K_DATA_IDX_2+1,AR0;1st butterflySUB*QX,16,A,BADD*QX,16,ASTH A,ASM,*PX+ST B,*QX+||LD*PX,ASUB*QX,16,A,BADD*QX,16,ASTH A,ASM,*PX+STH B,ASM,*QX+;2nd butterflyMAR*QX+ADD*PX,*QX,ASUB*PX,*QX-,BSTH A,ASM,*PX+SUB*PX,*QX,AST B,*QX||LD*QX+,BST A,*PX||ADD*PX+0%,AST A,*QX+0%||LD*PX,Astage2end:* * * Stage 3 through Stage logN * * *STM#K_TWID_TBL_SIZE,BKST#K_TWID_IDX_3,d_twid_idxSTM#K_TWID_IDX_3,AR0STM#cosine,WRSTM#sine,WISTM#K_LOGN-2-1,STAGE_COUNTERST #K_FFT_SIZE/8-1,d_grps_cntSTM#K_FLY_COUNT_3-1,BUTTERFLY_COUNTERST#K_DATA_IDX_3,d_data_idxstage:STM#fft_data,PXLD d_data_idx,AADD*(PX),ASTLM A,QXMVDK d_grps_cnt,GROUP_COUNTERgroup:MVMD BUTTERFLY_COUNTER,BRCRPTBD butterflyend-1LD*WR,TMPY*QX+,AMACR*WI+0%,*QX-,AADD*PX,16,A,BST B,*PX||SUB*PX+,BST B,*QX||MPY *QX+,AMASR*QX,*WR+0%,AADD*PX,16,A,BST B,*QX+||SUB*PX,BLD*WR,TST B,*PX+||MPY*QX+,Abutterflyend:; Update pointers for next groupPSHM AR0MVDK d_data_idx,AR0MAR *PX+0MAR *QX+0BANZD group,*GROUP_COUNTER-POPM AR0MAR *QX-;Update counters and indices for next stageLD d_data_idx,ASUB #1,A,BSTLM B,BUTTERFLY_COUNTERSTL A,1,d_data_idxLD d_grps_cnt,ASTL A,ASM,d_grps_cntLD d_twid_idx,ASTL A,ASM,d_twid_idxBANZD stage,*STAGE_COUNTER- MVDK d_twid_idx,AR0fft_end:* * * Compute the power spectrum * * *STM#fft_data,AR2STM#fft_data,AR3STM#fft_out,AR4STM#K_FFT_SIZE*2-1,BRCRPTB power_end-1SQUR*AR2+,ASQURA*AR2+,ASTH A,*AR4+power_end:STM#fft_out,AR4RPT#K_FFT_SIZE-1PORTW*AR4+,PA0here:B here.endFFT.CMDfft.obj-o fft.out-m fft.map-e startMEMORY{PAGE 0:EPROM: org=0E000h, len=1000hVECS : org=0FF80h, len=0080hPAGE 1:SPRAM: org=0060h, len=0020hDARAM: org=0100h, len=7000hRAM : org=8000h, len=20000h}SECTIONS{.text : > EPROM PAGE 0.data : > EPROM PAGE 0STACK : > SPRAM PAGE 1.bss: > SPRAM PAGE 1sine: align(1024) {} > DARAM PAGE 1cosine : align(1024) {} > DARAM PAGE 1d_input : >DARAM PAGE 1fft_data : >DARAM PAGE 1fft_out : > DARAM PAGE 1}fft_v.asm.title "fft_v.asm".ref start.sect ".vectors"B start.end实验三:Matrix_Mul.asm.title "Matrix_Mul.asm".mmregs.copy "input_B.dat".def _c_int00PA0 .set 0 ;0口输出PA1 .set 1 ;1口输入MatrixB .usect "MatrixB",16MatrixC .usect "MatrixC",16MatrixA .usect "MatrixA",16STACK .usect "STACK",10h.text_c_int00:STM #STACK+10h,SP ;堆栈初始化STM #MatrixB,AR1RPT #15 ;输入B,通过.copy复制到.data段MVPD input_B,*AR1+STM #MatrixC,AR1RPT #15 ;输入C,通过PA1端口PORTR PA1,*AR1+STM #MatrixB,AR2STM #MatrixC,AR3STM #MatrixA,AR7STM #16,BKSTM #4,AR0STM #3,AR4loop: STM #3,BRC ;块重复4次RPTB NEXT-1RPTZ A,#3MAC *AR2+,*AR3+0%,A;X每次加1,Y每次加4STL A,*AR7 ;存储APORTW *AR7+,PA0;输出AMAR *+AR2(-4) ;AR2重新指向行首MAR *AR3+;AR3指向下一列NEXT: MAR *+AR2(4) ;AR2指向下一行MAR *+AR3(-4) ;AR3重新指向首列BANZ loop,*AR4-END: B END.endMatrix_Mul.cmd-x .\Debug\Matrix_Mul.obj-o Matrix_Mul.out-m Matrix_Mul.mapMEMORY{PAGE 0:EPROM: org=0E000h, len=1000hPAGE 1:SPRAM: org=0060h, len=1000h}SECTIONS{.text : > EPROM PAGE 0 .data : > EPROM PAGE 0 STACK : > SPRAM PAGE 1 MatrixB : > SPRAM PAGE 1 MatrixC : > SPRAM PAGE 1 MatrixA : > SPRAM PAGE 1 }。