利用 CCS 和DSP 编程实现双边带调制(查表法)
CCS介绍:
CCS的全称是Code Composer Studio,它是美国德州仪器公司(Texas Instrument,TI)出品的代码开发和调试套件。TI公司的产品线中有一大块业务是数字信号处理器(DSP)和微处理器(MCU),CCS便是供用户开发和调试DSP和MCU程序的集成开发软件。
问题描述:
在ccs下实现一个基本的调幅系统,即将输入的两路数据, 一路是载波, 另外一路是基带
信号, 进行双边带调制, 然后再输出。
电脑环境:
1、Windows XP SP3(Windows10 下 VMware12 Pro中的虚拟机)
2、Code Composer Studio2.0
点这里下载,密码:fyij
步骤:
1、首先我们用matlab生成所需要的载波和基带信号的正弦系数表,请参见博客
matlab生成正弦系数表,修改这两个文件的头部, 使之成为符合CCS 文件I/O 的要求格式。
载波信号的正弦系数表:
基带信号的正弦系数表:
2、首先将CCS设置为软件仿真模式(simulate),步骤如下gif动图所示。
3、打开ccs新建工程,并向工程中加入asm.cmd文件和ASMtest6.asm,步骤如下gif动图所示。CMD文件的作用请见博客
CCS中CMD文件解析。
asm.cmd文件代码如下:
MEMORY
{
PAGE 0 :
STACK : origin = 0x0080, length = 0x0080 /* stack space */
XFER : origin = 0x0100, length = 0x0300 /* reserve 0x300 words for comm kernel */
XFERHDR: origin = 0x0400, length = 0x003a /* reserve 0x3a words for kernel header */
FIFO : origin = 0x043a, length = 0x0046 /* reserve 0x46 words for fifo */
VECTORS: origin = 0x0480, length = 0x0080 /* interrupt vectors */
INT_PM_DRAM : origin = 0x0500, length = 0x1b00 /* on-chip ram 5402 */
PAGE 1:
SCRATCH : origin = 00060h, length = 00020h /* page-0 scratch-pad */
INT_DM_RAM : origin = 0x2000, length = 0x2000 /* on-chip ram 5402 */
}
SECTIONS
{
.text : > INT_PM_DRAM PAGE 0
.stack : > INT_DM_RAM PAGE 1
.bss : > INT_DM_RAM PAGE 1
.data : > INT_DM_RAM PAGE 1
}
ASMtest6.asm文件代码如下:
.mmregs
.def _c_int00
carrier .set 1
signal .set 2
DSBout .set 3
.data
BUFFER1 .word 0x0
BUFFER2 .word 0x0
BUFFER3 .word 0x0
.text
_c_int00:
STM #BUFFER1, AR2;
STM #BUFFER2, AR3;
STM #BUFFER3, AR4;
STM #299,BRC ;BRC=299 块循环300次
RPTB LOOP-1
NOP
NOP
PORTR carrier,*AR2
PORTR signal,*AR3
MPY *AR2,*AR3,A
STL A, -8, *AR4
PORTW *AR4,DSBout
LOOP:
NOP
B LOOP
.end
4、由于这里我们使用了 I/O 空间, 所以需要配置I/O 空间, 使得0x0000 到0x0003 地址是可读
写的,步骤如下gif动图所示。
5、然后将这 3 个I/O 空间地址与3 个文件相连接。即在 CCS 中编译,按F10单步运行程序。步骤如下gif动图所示。
6、观察程序无误之后,打开Data Memory 窗口和I/O Memory 窗口,以便观察。步骤如下gif动图所示。
7、在第21 行NOP 处加入断点和探针工具,进行数据文件输入输出,步骤如下gif动图所示。
8、在 CCS 的File->File I/O… 打开文件输入输出对话框,单击按钮 Add File 添加输入数据文件. 添加前面用matlab 产生并对文件头部作了修改的数据文件a.dat 和c.dat, 添加之后出现了2 个数据文件的控制对话框。如图,(Wrap Around 选项可不选,这样CCS 将数据文件中的数据读到结尾时就不再重新从头读起)。步骤如下gif动图所示。
9、然后再添加输出数据文件。在File Output标签下,单击Add file按钮,出现对话框,将输出
文件格式选为 Interger 的dat 文件,在文件名栏中写入新文件名。步骤如下gif动图所示。
注意, 第3 个数据文件输出控制对话框也出现了. 其中的显示“0”表示现在向该文件输出了0 个数据。
10、接下来的任务是将数据文件与探针点连接起来,即告诉CCS 在探针点处将数据从相
应文件中读入,并将相应数据输出给对应的数据文件。步骤如下gif动图所示。
11、完成后单击 OK 确定,这样就回到 CCS 主界面,单步执行程序到探针处,观察I/O 端口和数据内存中数据的变化,也可以动画方式执行程序,也可将断点去除, 按F5 执行程序完毕。
下图是执行程序到第33 次循环的结果。
12、利用CCS 的图示化功能直接看到输出波形。为了观察更长时间,我们可以将循环次数增
加,同时将File I/O 对话框中Input File 标签下两个输入文件的循环读入的选项“Wrap Around”选中即可。步骤如下gif动图所示。
13、利用CCS 的图示化功能直接看到功率谱。
总结
通过这次DSP作业,学习了如何使用ccs进行纯软件仿真。