DSP处理器原理与应用第2章 TMS320C55X系列DSP.ppt
文本预览下载声明
1. 指令缓冲队列 CPU从程序存储器一次可以提取32 bit代码。读程序的数据线(PB)从存储器提取32 bit的代码,放入指令缓冲队列。该队列一次最多可以存放64 Byte的代码。当CPU准备好解码后,每次可以从队列里取6 Byte送往指令解码器。 另外,为了协助指令的流水操作,指令缓冲队列还能完成以下操作: (1) 执行队列中的一个代码块(局部循环指令)。 (2) 当测试了一个程序流控制指令(条件分支、条件调用或条件返回),则可以随机提取指令。 2. 指令解码器 在指令流水的解码阶段,指令解码器从指令缓冲队列接收6 Byte的程序代码并解码。 指令解码器可以实现: (1) 识别指令边界,可以对8、16、24、32、40、48 bit的指令解码。 (2) 决定CPU是否并行执行两条指令。 (3) 将解码后的执行命令和立即数传送给程序流单元(P单元)、地址数据流单元(A单元)以及数据计算单元(D单元),可以使用一些指令,通过特定的数据路径,直接把立即数写到存储器或I/O空间。 2.2.5 程序控制单元(P单元) P单元主要是通过判断是否满足条件执行指令的条件来控制程序地址的产生,达到控制程序流程的目的。程序控制单元中还含有程序控制寄存器、循环控制寄存器、中断寄存器和状态寄存器等硬件寄存器。通过循环控制寄存器的设置,可以直接控制程序中的循环次数等,而不必像在普通DSP中一样在外部对循环条件进行判断,从而可以有效地提高运行效率。 图2-3是P单元的基本框图。下面介绍P单元的主要部分。 图2-3 程序控制单元(P单元)框图 1. 程序地址的产生和程序控制逻辑 在P单元内,程序地址产生逻辑产生24 bit的地址,以便从程序存储器里提取指令。P单元通常产生顺序地址,但也可以产生非顺序的地址,这时程序地址产生逻辑可从I单元接收立即数,从D单元接收寄存器的值。地址产生后,就通过读程序的地址总线(PAB)送往存储器。 程序控制逻辑从I单元接收立即数,测试从A单元和D单元来的结果,并执行以下操作: (1) 对一个条件指令,测试其条件的真假,然后将测试结果递交程序地址产生逻辑。 (2) 当有中断请求,并已使能时,启动中断服务。 (3) 控制单循环语句后面的指令的循环,或块循环语句后面的指令块的循环。可以嵌套三层循环,把一个块循环语句嵌套在另一个块循环语句里,再把一条单循环语句嵌套在以上任意一个块循环里,或者两个块循环里。所有的循环操作都可以中断。 C55X系列DSP可以在作数据处理的同时,并行地执行程序控制指令。 2.? P单元内的寄存器 对程序流寄存器的访问是有限制的,用户不能对PC进行读或写操作,对RETA和CFCT两个寄存器的访问只能用以下两条语句:MOV dbl(Lmem),RETA和MOV RETA,dbl(Lmem)。所有其他的寄存器,都可以存放从I单元来的立即数,且可以和数据存储器、 I/O空间、A单元的寄存器以及D单元的寄存器双向通信。P单元包含下列寄存器。 1) 程序流寄存器 ● ?PC 程序计数器; ● ?RETA 返回地址寄存器; ● ?CFCT 控制流关系寄存器。 2) 块循环寄存器 ● ?BRC0,BRC1 块循环计数器0和1; ● ?BRS1,BRC1 存储寄存器; ● ?RSA0,RSA1 块循环起始地址寄存器0和l; ● ?REA0,REA1 块循环结束地址寄存器0和1。 3) 单循环寄存器 ● ?RPTC 单循环计数器; ● ?CSR 经过计算的单循环寄存器。 4) 中断寄存器 ● ?IFR0,IFR1 中断标志寄存器0和1; ● ?IER0,IER1 中断使能寄存器0和l; ● ?DBIER0,DBIERl 调试中断使能寄存器0和1。 5) 状态寄存器 ● ?ST0_55~ST3_55 状态寄存器0、1、2、3。 2.2.6 地址生成单元(A单元) A单元的功能是产生读写数据空间的地址。地址生成单元由数据地址产生电路(DAGEN)、16位的算术逻辑单元(ALU)和一组寄存器构成。C55X DSP地址生成单元与其他功能模块分开,不会因为地址产生的原因使得单条指令需要在多个时钟周期内完成,提高了DSP的运行效率。A单元中的寄存器包括数据页寄存器、辅助寄存器、堆栈指针寄存器、循环缓冲寻址寄存器和临时寄存器等。A单元框图如图2-4所示。 图2-4 地址数据流单元(A单元)框图 下面介绍A单元的主要部分。 1. 数据地址产生单元(DAGEN) DAGEN
显示全部