AR2辅助寄存器,23Ah数据空间地址数放入AR2。
*AR2+访问后AR2中地址加一。
AR2=#023Ah和*AR2+=#999Ah完成了向地址为023Ah+1=23Bh的数据单元存放数据999Ah。
*+AR2访问前AR2中地址加一。
AR2中地址为23Bh+1=23Ch,累加器A内的数左移7位。
23C地址放0。
8h放入AR0。
1200h放入AR3。
AR3里地址数1200h内放立即数1111h。
*AR3+0访问后AR3中地址1200h加上AR0中的值8,AR3内新的地址数为1208h。
AR3里地址数1208h内放立即数2222h。
*AR3+0访问后AR3中地址1208h加上AR0中的值8,AR3内的地址数为1210h。
AR3里地址数1210h内放立即数3333h。
*AR3+0访问后AR3中地址1210h加上AR0中的值8,AR3内的地址数为1218h。
*AR3(16)为AR3中地址1218h加上立即数16(十进制数),(1218h+10h=1228h)。
地址1228h放立即数5555h。
访问后AR3不变,AR3内的地址数1218h。
数据空间地址数266Ah放入AR4。
地址266Ah被存储在AR4中,*AR4表示AR4中地址所指向的存储器单元266Ah存放数据8848h,AR4中地址不变。
*AR4+0B:
访问后AR4中地址加上AR0中的值,并反向进位。
AR4=2666,8848的二进制数左移12位(高位1)则A=FFF8848000。
266A+8换算成二进制再计算(注:
266A的二进制数10011001101010,8的二进制数1000,后4位相加=10010,反向进位=00110,10011001100110=2666)
*AR4表示AR4中地址所指向的存储器单元2666h存放数据9911h。
立即数25Ah载入B累加器。
*AR2+0%访问后AR2中地址加上AR0中的值,并循环寻址;
先在23C地址内放25A0(二进制数左移4位,16进制数左移1位)访问后AR2地址(AR2中地址23Ch+AR0中的值8h)=244h。
6、熟悉ALU的旋转及移位
源程序
内存
地址
地址存的
16进制数
反汇编程序
主寄存器
start:
SXM=0
A=#684Fh
A=A+#0EDC9h
B=#1204h
B=B+#05D9Ah
C=1
A=A\\CARRY
C=0
A=A\\CARRY
ROLTC(A)
SXM=1
B=B+#1234h
B=B//CARRY
B=#0C000h<<16
0x500
0x501
0x502
0x503
0x504
0x505
0x506
0x507
0x508
0x509
0x50A
0x50B
0x50C
0x50D
0x50E
0x50F
0x510
0x511
0x512
0x513
F6B8
F020
684F
F000
EDC9
F120
1204
F300
5D9A
F5BB
F491
F4BB
F491
F492
F7B8
F300
1234
F590
F162
C000
ST[1,8]=0
A=#684Fh<<0
A=A+#OXEDC9
B=#1204h<<0
B=B+#OX05D9A
ST[0,11]=1
A=A\\CARRY
ST[0,11]=0
A=A\\CARRY
roltc(A)
ST[1,8]=0B=B+#OX1234
B=B//CARRY
B=#0C000h<<16
SXM=0
A=00000684F
A=000015618,C=0
B=000001204
B=000006F9E
C=1
A=00002AC31,C=0
(\\旋转左移)
C=0
A=000055862,C=0
A=0000AB0C4
SXM=1
B=0000081D2
B=0000040E9
(//旋转右移)
B=FFC0000000
源程序
注释
start:
SXM=0
A=#684Fh
A=A+#0EDC9h
B=#1204h
B=B+#05D9Ah
C=1
A=A\\CARRY
C=0
A=A\\CARRY
ROLTC(A)
SXM=1
B=B+#1234h
B=B//CARRY
B=#0C000h<<16
A内0000684F+立即数EDC9后的值送累加器A。
B内00001204+立即数5D9A后的值送累加器B。
进位位C置1
A内000015618的二进制数左移1位且进位位C=1加入累加器的最后1位,并将其第32位数0送进位位C内。
A内00002AC31的二进制数左移1位且进位位C=0加入累加器的最后1位,并将其第32位数0送进位位C内。
[roltc(A)左移(TC移入)]。
A内000055862的二进制数左移1位且TC=0移入最后1位。
符号扩展位置1
B内000006F9E加立即数1234后的值送累加器B。
B内0000081D2的二进制数右移1位且进位位C=0加入累加器的最后1位,并将其第32位数0送进位位C内。
实验二采样定理及实验
1、实验目的
通过模拟信号与数字信号之间转换过程的实验,
(1)掌握DSP系统的模拟信号输入输出通道控制和使用方法;
(2)加深对采样定理的理解。
2、实验步骤
1、正确连接实验板同微机连接的信号电缆,实验板VC5410的电源接实验箱+5V电源,实验箱函数信号发生器信号输出端接实验板IN1,实验板IN1和OUT接示波器,确定所有连接正确后,选择信号发生器为正弦波,频率范围:
1KHz~10KHz,频率细调旋钮旋至最低,打开实验箱电源,打开示波器。
2、CPU串行输入A/D数据采集实验
本实验例程的采样频率为25KHz,根据采样定理,当信号发生器的频率超过12.5KHz时输出信号的波形就开始发生混叠失真。
利用函数信号发生器频率细调旋钮,缓慢增加频率,当频率值超过12.5KHz时,继续增加频率,在示波器中可以观察到波形逐渐失真,直到发生混叠。
*打开微机并运行Explor5410程序,进入系统调试环境。
*载入实验子目录下Ex2中的sampling.obj程序并运行程序。
*从频谱显示窗口,单击鼠标右键后再填入频率最大值(fs/2),调节信号发生器频率细调旋钮,观察显示窗口频谱变化情况和观察比较实验板上A/D转换前和D/A转换后的示波器信号波形,记录过采样,欠采样及频率混叠现象。
*暂停程序运行,打开图象窗口,数据类型选择16_bitINT,Q值为0,起始地址为0x3000,显示点数128点,采样率25000,选择时域、连线,标尺设置选择线性、自动标尺,按确定键后就可观察所采信号。
在没有示波器时,可以通过调节频率细调旋钮不断改变信号频率,并不断“暂停”和“运行”程序,也可以观察到当频率超过12.5KHz时输出波形发生的混叠失真。
*改变采样率为100KHz,重复上面的实验。
过程是确定CPU时钟下的CLKGDV、FPER的值,修改在sampling.asm程序中初始化部分相应的值。
汇编该程序,生成*.OBJ文件,然后运行Explor5410程序,加载*.OBJ,运行程序,进行实验。
3、DSP并行输入A/D数据采集实验
本实验的VC5410板上设计有一个并行接口输出的高速A/D通道,它的I/O地
址是0X8000H,采样率是6.25MHz。
DSP数据接收分为I/O口直接读入和DMA缓冲中断输入两种方式,程序是实验子目录下Dma2中5510.OBJ和5510DMA.OBJ两个程序。
将信号源与VC5410板上5510模拟输入接口接好,然后运行Explor5410程序,加载*.OBJ,运行程序,进行实验。
程序清单
1、串行输入A/D数据采集
2、TLC5510并行输入A/D数据采集
3、TLC5510DMA输入A/D数据采集
3、实验成果
1.采样率25000
f=4.0785KHz
时域
频域
2.
f=6.0274KHz
时域
频域
3.
f=10.174KHz
时域
频域
4.
F=15.426KHz
时域
频域
5.
F=19.271KHz
时域
时域
6.
时域
频域
实验三FIR滤波器的设计
1、实验目的
1.掌握直接型结构FIR滤波器的设计
2.进行FIR滤波器特性测试实验
3.学习数字FIR滤波器差分方程程序实现方法
FIR低通滤波器的直接型结构
一个FIR系统可由差分方程或其对应的转移函数来描述。
数字FIR滤波器的DSP实现要求:
首先根据滤波器指标计算FIR滤波器参数,选择FIR滤波器采样方式和设计采样程序,设计实现滤波器差分方程计算程序。
本实验采用实验二的串口采样方式,加入了FIR算法程序,为了观察其频谱还增加FFT程序。
2、实验步骤
1.FIR低通滤波器测量
*阅读程序FIRLP.ASM,了解FIR滤波器算法程序
*接好试验系统连线,打开微机并运行Explor5410程序,进入系统调试环境。
*载入实验子目录下Ex3中的FIRLP.OBJ程序并运行程序
*从频谱显示窗口,单击鼠标右键后再填入频率最大值(fs/2),调节信号发生器频率细调旋钮,在显示窗口
(1)观察并记录低通滤波器频谱特性,
(2)增高信号频率观察有频率混叠现象情况下的输出变化。
(也可以暂停程序运行,打开图像窗口,观察低通滤波器频谱特性)
2.FIR高通,带通,带阻滤波器测量
* 阅读程序FIRHP.ASM、FIRBP.ASM、FIRBS.ASM。
了解各种FIR滤波器算法程序。
*重复FIR低通滤波器测量过程,观测不同滤波器频谱特性。
3.FIR低通滤波器设计和测量
*采用MATLAB仿真设计FIR低通滤波器,求得滤波器参数和节数,建立新数表文件
*.DAT,将上系数分别输入至相应的数表文件中。
*根据滤波器参数和节数修改FIRHP.ASM文件,然后进行编译生成*.OBJ
*重复FIR低通滤波器实验测量过程,记录测量结果。
附:
用MATLAB设计仿真FIR滤波器步骤:
1. 打开MATLAB6.1应用程序;
2. 点击“view”,在弹出下拉菜单中的“LaunchPad”前打上对钩,我们可以看到在MATLAB主窗口中出现了“LaunchPad”子窗口;
3. 展开“LaunchPad”子窗口中的“FilterDesignToolbox”,双击打开“FilterDesign&AnalysisTool”。
我们看到这时弹出了滤波器设计分析窗口。
4. 在滤波器设计分析窗口中的左下方选择FIR滤波器,然后对FIR滤波器的参数进行设置,点击下方的“DesignFilter”按键即可完成FIR滤波器的设计。
我们可以看到滤波器的幅频特性以及相频特性,同时可以计算出滤波器的阶数(按如图所设参数阶数为50)。
5. 点击“Analysis”,在下拉菜单中选择“FilterCoefficients”,或者点击快捷方式图标,可以生成FIR滤波器的系数文件;
6. 在“File“菜单中可以利用“Export”命令输出滤波器的系数文件,亦可用“ExporttoCHeaderFile”生成C语言的头文件。
3、实验成果
低通滤波器
3k
3.5k
MATL