1、第二章TMS320C2000系列DSP的内核结构,2.1 TMS320C2000的总线结构,总线分类:数据总线:提供数据存储器和程序存储器内容; 地址总线:提供存储器的地址信息; 控制总线:控制存储器的读、写操作;,表2.1总线名称及功能,与微处理器8088和单片机8051总线相比,DSP的总线具有以下特点: (1)具有分离的程序和数据总线,允许同时访问程序和数据存储器空间; (2)具有独立的数据R/W地址总线和数据读写总线,是CPU对数据存储器的读、写操作可在一个机器周期内完成; (3)分离的程序和数据空间及独立总线结构,支持CPU在单机器时钟内并行执行算术、逻辑和位处理操作; (4)采用改
2、进的哈佛结构,极大提高运算速度,优化处理能力。,2.2 DSP的中央处理单元CPU,所有C2000系列芯片的CPU结构完全相同,主要包括以下器件:一个32位的中央算术逻辑单元(CALU);一个32位的累加器(ACC);CALU的输入、输出数据定标移位器;一个16X16位的乘法器;一个乘积定标移位器;数据地址发生逻缉,其中包括8个辅助寄存器和一 个辅助寄存器算术单元ARAU;程序地址发生逻辑;两个16位的状态寄存器ST0、ST1,输入定标部分,输入:16位程序存储器或16位数据存储器; 输出:32位数据 功能:把16位数调整为32位数据,并送往CALU进行操作。,对于数据存储器内容进行输入定标左
3、移操作时,输入定标器将输入移位器中未使用的低位填0,为使用的高位填0或者1,由DSP的状态寄存器ST0的D10位(SXM)决定: SXM=0,未使用的高位填0,不进行符号扩展; SXM=1,输入移位器的高位进行符号扩展,在高 位填符号位0/1; 例,设输入移位器的输入=(97F3h),左移4位: 当SXM=0, 则输出为00097F30h; 当SXM=1,则输出为FFF97F30h;,结 论:在进行dsp编程时,应根据操作数的类型(有符号数、无符号数)对状态寄存器ST0的符号扩展位SXM进行初始化,应在主程序中完成!,乘法单元,乘法器组成: 暂存寄存器(T寄存器),保存其中一个乘数; 16X1
4、6位的乘法器; 32位乘法寄存器(P寄存器),用以保存乘法操作结果; 乘积移位器,对P寄存器的结果进行定标操作;,DSP完成乘法操作步骤: (1)将数据存储器内容装载到T寄存器,用LT指令完成; (2)采用乘法指令完成乘法操作; (3)将乘法结果P寄存器的内容进行移位操作后送入CALU或保存在数据存储器中;,乘积移位器的移位方式由状态寄存器ST1的PM决定:,DSP进行乘法操作之前应根据处理数据的范围,在主程序中初始化好P寄存器的输出移位格式,即PM!,中央算术逻辑单元CALU,CALU的功能: (1)将输入定标器或P寄存器的输入32位数据进行算术(加、减法)、布尔逻辑运算 、移位和循环操作等
5、; (2)输出移位寄存器将ACC的结果复制,并根据指令中的移位位数将其内容移动07位,然后通过SACH或SACL指令把移位器的高位字或低位字存储到数据存储器中。,辅助寄存器和辅助寄存器算术单元,DSP包含8个16位的辅助寄存器AR0AR7及辅助寄存器算术单元ARAU,他独立于CALU。ARAU的主要功能是对8个辅助寄存器AR执行无符号的16位算术运算,用来间接的产生数据存储器地址。 主要部件: (1)8个16位的辅助寄存器AR0AR7; (2)辅助寄存器算术单元ARAU; (3)当前辅助寄存器指针ARP;,辅助寄存器算术单元ARAU的主要操作: (1)执行间接寻址的指令,AR+/-1,或者+/
6、-一个变址值(查表、数字滤波器); (2)加或减一个常数至辅助寄存器(ADRK或SBRK指令),该常数取自指令字的8位最低有效位; (3)比较AR0和当前AR的内容; (4)由CMPR指令,将AR0的内容与当前AR的内容进行比较,并根据比较结果进行条件转移; (5)将辅助寄存器AR用作暂存(LAR,SAR指令); (6)将辅助寄存器AR用作计数器;,状态寄存器ST0、ST1 状态寄存器功能: 反映当前CPU的工作状态; 对CPU的控制位进行设置,从而控制DSP的工作;状态寄存器ST1,R-读访问;W-写访问;短线后面的为复位值;X-不定,ARP: 可以决定在间接寻址方式中使用哪个辅助寄存 器。
7、当ARP被装载时,旧的ARP值被复制到 ARB中; OV溢出标志位,指明CALU中是否发生溢出,OV=1,发生溢出;OV=0, 未发生溢出; INTM中断方式位,用以允许或禁止所有可屏蔽中断,INTM=1,开放所有可屏蔽中断INTM=0,禁止所有可屏蔽中断 DP数据页指针,当一个指令采用直接寻址方式时,9位的DP字段与指令字的7个最低位连接,从而构成一个16位的数据存储器地址;,状态寄存器ST1: ARB辅助寄存器指针缓冲器; CNF片内DARAM配置位,控制将片内DARAM块B0映射到数据空间还是程序空间;CNF=0,B0块映射到数据空间;CNF=1,B0块映射到程序空间; SXM符号扩展位
8、SXM=0,不进行符号扩展;SXM=1, 进行符号扩展;C进位标志位,加法进位时C=1,减法借位 时C=0;PM乘积移位方式控制位,状态寄存器操作: (1)状态寄存器的装载,即将某个值写入ST0或ST1,如LST #0, 60h (2)状态寄存器的存储,即将状态寄存器的值写入数据存储器,如:SST #0,60H (3)状态寄存器的控制位设置,即将ST0或ST1的某一位置1,如:SETC INTM; (4)状态寄存器的控制位清除,即将ST0或ST1的某一位清0,如:CLRC INTM,DSP的中断系统,1.中断分类及中断响应过程 中断分类: 软件中断:由指令INTR、NMI、TRAP向CPU发出
9、中断要求;外部硬件中断:由外部中断引脚上的中断申请信号触发; 硬件中断 内部硬件中断:由片内外围设备的请求信 号出发,如定时器、异步串行口、同步串行 口等; 可屏蔽中断:中断源硬件中断,通过软件屏蔽或使能; 非屏蔽中断:中断源所有软件中断,外部硬件中断RS、NMI;中断响应过程:,接收中断请求,响应中断,执行中断程序,中断触发: 指令启动的软件中断触发 外部硬件引脚 外内外设触发,非屏蔽中断:立即响应 可屏蔽中断:根据中断是 否使能,1.非屏蔽中断 硬件非屏蔽中断: 复位中断RS:当该引脚信号低有效时,使CPU返回初始状态,程序从0000h开始执行; 非屏蔽中断NMI 软件中断: 指令NMI
10、指令INTR 指令TRAP,C2000系列可屏蔽中断,C2000系列中断相关寄存器 中断标志寄存器IFR:表示出中断状态,或指出挂起的中断 中断屏蔽寄存器IMR:屏蔽或使能中断处理 中断控制寄存器ICR:控制某些中断处理过程 中断标志寄存器,中断标志寄存器的功能:用以表明一个可屏蔽中断是否被挂起,当IFR相应位为1时,表明中断请求已被挂起或正在等待CPU中断的确认; IFR的操作:读IFR可了解可屏蔽中断是否被挂起;写IFR可清除已被挂起的中断,向IFR的某位写1可清除该中断请求;,中断屏蔽寄存器IMR,功能:用于屏蔽外部或者内部的硬件可屏蔽中断; 操作:SETC ,IMR的相应位置1,则该中
11、断开放;CLRC, IMR的相应位清0,则该中断被屏蔽; 例:SETC RINT,则定时器中断被开放; 注:该寄存器应在主程序中进行初始化!,中断屏蔽寄存器ICR,MINT2中断2的屏蔽控制位MINT2=0,则中断INT2被屏蔽MINT3=1,则中断INT2被开放,FINT2和IFR的INT2/INT3被置1; FINT2中断2标志位,可查询;FINT2=1,INT2已经被触发并挂起FINT2=0,INT2未被挂起;,MODE:HOLD/INT1引脚模式选择位: MODE=0,为双边沿出发模式,适合完成HOLD操作,使该引脚上的上升沿和下降沿均可触发中断请求; MODE=1,为单沿触发模式,只有引脚上的下降沿可以出发中断请求,适合于启动中断INT1;,中断系统小结: 系统上电复位后应对中断控制寄存器ICR和中断屏蔽寄存器进行相应的初始化,选择中断触发信号源和工作模式,并开放相应的中断矢量; 对于INT2和INT3应在中断服务程序中,判断中断控制器ICR的相应位,并根据中断触发信号源执行相应的服务程序; 在中断服务程序返回前,应向中断标志寄存器IFR的相应位写1,清除中断挂起(DSP在执行完中断服务程序后,不自己清楚中断标志!),