例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示
2、’C54x小数的表示方法:采用2的补码小数;.word32768*707/1000
3、定点算术运算:
乘法:解决冗余符号位的办法是在程序中设定状态寄存器STl中的FRCT位为1,让相乘的结果自动左移1位。
第二章CPU结构和存储器设置
一、思考题:
1、C54xDSP的总线结构有哪些特点?
答:TMS320C54x的结构是围绕8组16bit总线建立的。
(1)、一组程序总线(PB):传送从程序存储器的指令代码和立即数。
(2)、三组数据总线(CB,DB和EB):连接各种元器件,
(3)、四组地址总线(PAB,CAB,DAB和EAB)传送执行指令所需要的地址。
2、C54xDSP的CPU包括哪些单元?
答:'C54X芯片的CPU包括:(1)、40bit的算术逻辑单元(2)、累加器A和B(3)、桶形移位寄存器(4)、乘法器/加法器单元(5)、比较选择和存储单元(6)、指数编码器(7)、CPU状态和控制寄存器(8)、寻址单元。
1)、累加器A和B分为三部分:保护位、高位字、地位字。保护位保存多余高位,防止溢出。
2)、桶形移位寄存器:将输入数据进行0~31bits的左移(正值)和0~15bits的右移(负值)
3)、乘法器/加法器单元:能够在一个周期内完成一次17*17bit的乘法和一次40位的加法
4)、比较选择和存储单元:用维比特算法设计的进行加法/比较/选择运算。
5)、CPU状态和控制寄存器:状态寄存器ST0和ST1,由置位指令SSBX和复位指令RSBX控制、处理器模式状态寄存器PMST
2-3、简述’C54xDSP的ST1,ST0,PMST的主要功能。
答:’C54xDSP的ST1,ST0,PMST的主要功能是用于设置和查看CPU的工作状态。
ST0主要反映处理器的寻址要求和计算机的运行状态。
ST1主要反映处理器的寻址要求、计算初始状态的设置、I/O及中断的控制等。
PMST主要设定和控制处理器的工作方式和存储器的配置,反映处理器的工作状态。
ST0的ARP用于指示当前使用的辅助寄存器,TC为测试/控制的状态位,C表示加减法的进借位,OVA、OVB为累加器的溢出状态,DP表示当前使用的数据页。
ST1的BRAF为块重复标志,CPL表示编译方式,HM表示挂起方式,INTM用于中断屏蔽控制,OVM为溢出方式设置,SXM用于设置符号扩展,C16用于设置双16位或者双精度方式,FRCT用于设置小数计算,CMPT为兼容模式位,ASM用于设定移位数。PMST的IPTR用于配置中断向量指针,MP/MC、OVLY、DROM用于配置片内存储器的使用,AVIS用于配置地址是否可见,CLKOFF用于关断时钟输出,SMUL、SST分别用于乘法、存储的饱和处理设置。
4、C54xDSP存储器可采用软件配置吗如何配置
答:’C54X通过在处理器工作方式状态寄存器(PMST)中的三个状态位来设置片内存储器。
MP/MC=0:片内ROM安排到程序空间;MP/MC=1:片内ROM不安排到程序空间;
OVLY=0:片内RAM只安排到数据空间;OVLY=1:片内RAM安排到数据空间和程序空间;
PROM=0:片内不安排到数据空间;PROM=1:片内安排到数据空间;
5、C54x数据存储器前1K如何划分?
答:1)存储器映象CPU寄存器(0000h~001Fh,共26个单元)2)外围电路寄存器(0020h~005FH)3)32字暂存器DARAM(0060h~007Fh)4)896字DARAM(0080h~03FFh)。
6、C54x程序存储器ROM的保留部分的内容是什么?
答:(1)自举加载程序。从串行口、外部存储器、I/O口、或者主机接口(如果有的话)自举加载。
(2)256字U律压扩表。(3)256字A律压扩表。(4)256字正弦函数值查找表。(5)中断向量表。
7、C54xDSP的IO空间有何特点?
答:(1)它是一个64K字的地址空间(0000h—FFFFh),都在片外。(2)可以用两条指令(PORTR和PORTW)对I/O空间寻址。(3)用于与外部设备连接;(4)读写信号均为对通过外部总线实现。
二、重点:
1、C54x的三个独立存储器空间:(1)、64K字的程序存储空间(2)、64K字的数据空间(3)、64K字的I/O空间,
片内存储器的有DARAM、SARAM和ROM三种类型
第三章指令系统
1、C54指令有哪些数据类型?
答:16位数的单精度和32位数的双精度、长字指令
2、C54指令有哪些数据寻址方式?
答:‘C54x提供了七种基本的数据寻址方式:
(1)、立即数寻址——指令中嵌有一个固定的数。
(2)、绝对地址寻址——指令中有一个固定的地址。
(3)、累加器寻址——按累加器内的地址去访问程序存储器中的一个单元。
(4)、直接寻址——指令中的7bits是—个数据页内的偏移地址,而所在的数据页由数据页指针DP或SP决定。该偏移加上DP和SP的值决定了在数据存储器中的实际地址。
(5)、间接寻址——按照辅助寄存器中的地址访问存储器。
(6)、存储器映射寄存器寻址——修改存储器映射寄存器中的值,而不影响当前DP或SP的值。
(7)、堆栈寻址——把数据压入和弹出系统堆栈。
3、直接寻址的数据地址是如何形成的
答:(1)、CPL=0时状态寄存器ST0的9位数据页指针(DP)和指令中的操作数的低七位偏移地址合成16位有效地址(2)、CPL=1时状态寄存器ST0的16位堆栈指针(SP)和指令中的操作数的低七位偏移地址合成16位有效地址4、什么是循环寻址如何实现(算法可以不用记)
答:使所寻址的数据存储器地址在指定的范围内循环的寻址方式成为循环寻址。循环缓冲器的有效基址是用户选定的辅助寄存器ARX的低N位置0后所得的值,其尾地址是通过BK的低N位代替ARX的低N位得到的。
循环寻址的算法实际上是以BK的值为模进行的取模运算。
5、什么是位倒序寻址如何实现
答:AR0存放的整数N是FFT点数的一半,—个辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左。
6、什么是循环缓冲器如何实现
答:循环缓冲器是一个包含了最近的数据的滑动窗口,当新的数据来到时,缓冲器就会覆盖最早的数据。循环缓冲器实现的关键是循环寻址的实现。循环缓冲器大小寄存器(BK)确定了循环缓冲器的大小。大小为R的循环缓冲器必须从一个N-bit边界开始(也就是说,循环缓冲器基地址的最低N位必须为0),N是满足2N>R的最小整数。R的值必须装入BK。循环缓冲器的有效基地址(EFB)就是用户选定的辅助寄存器(ARx)的低N位置0后所得到的值。循环缓冲器的尾地址(EOB)是通过用BK的低N位代替ARx的低N位得到。
1)对于N阶的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。
2)每次输入新的样本时,以新样本改写滑窗中的最老的样本数据,而滑窗中的其他数据不需要移动。
3)利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址。
1、C54X的汇编指令由操作符和操作数两部分组成。基本形式为
2、LD#80h,A如果漏掉了‘#’号,指令:LD80h,A
3、双操作数寻址方式:只能选择4个辅助寄存器:AR2~AR5。
4、四条使用堆栈寻址方式访问堆栈的指令:
PSHD:把一个数据存储器的值压入堆栈。PSHM:把一个存储器映射寄存器的值压入堆栈。
POPD:把一个数据存储器的值弹出堆栈。POPM:把一个存储器映射寄存器的值弹出堆栈。