DSP复习资料
DSP 复习资料
DSP 复习资料:1、DSP(digital singnal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。
其工作原理是对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
2、DSP芯片一般具有如下主要特点:在一个指令周期内可以完成一次乘法和一次加法;可以并行执行多个操作;快速的中断处理和硬件I/O支持;存储器采用哈佛结构;主要用于信号处理。
3、一个典型的DSP系统应包括抗混叠滤波器、数据采集A/D转换器、数字信号处理器DSP、D/A转换器和低通滤波器等组成。
4、按数据格式分为定点DSP和浮点DSP两类。
按数据的定点格式工作的DSP芯片称为定点DSP;按数据的浮点格式工作的DSP芯片称为浮点DSP。
其中C2x、C24x称为C2000系列,主要用于数字控制系统; C54x、C55x称为C5000系列,主要用于功耗低、便于携带的通信终端; C62x、C64x和C67x称为C6000系列,主要用于高性能复杂的通信系统,如移动通信基站。
5、链接命令文件(·cmd文件)指定存储器的结构和段的定位,有MEMORY和SECTIONS两条指令。
MEMORY伪指令用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址和长度。
SECTIONS伪指令用来指定链接器将输入段组合成输出段方式,以及输出段在存储器中的位置,也可用于指定子段。
6、DSP系统中流水线操作是各指令以机器周期为单位相差一个时钟周期,连续并行工作的情况。
其本质是DSP多条总线彼此独立地同时工作,使得同一条指令在不同机器周期内占用不同总线资源。
同时,不同指令在同一机器周期内占用不同总线资源。
DSP复习资料
7、简答SARAM和DARAM的联系和区别
区别前者1个机器周期内只能被访问1次后者1个机器周期内能被访问2次,可同时进行读操作和写操作。
联系都可当数据存储器和程序存储器使用
第三章
1、数的定标是指定点DSP芯片处理小数时,由程序员来确定一“小数点”的位置。
SXM的中文名称是符号扩展模式位;当SXM=1时,设置符号扩展模式,即高24位扩展为符号位。用指令表示SSBXSXM;当SXM=0时,设置符号不扩展模式,即高24位用0填充;用指令表示RSBXSXM
4、DSP芯片的乘法运算,常需要用到舍入处理方法书上p47
方法是在低16位的最高位加1,然后将低16位清除,将高16位作为结果。(将该数加0.5,之后再将小数部分去除,即舍入处理方法,也称上取整。)
{*SWWSR=0X2000
}
(3)P108为什么要用volatile类型的数据?
答:对程序进行编译时,代码优化器会避免存储区访问而删除一些语句,为了保留这些语句,可以使用volatile关键字可确保编译器不会对这些变量进行优化。
3、P112申明一个函数是中断函数,要使用中断关键字interrupt(怎么考??)
5、简答C语言程序代码优化有几种方法?其中并行指令属于那种优化方法?并举一例并行指令
算法优化编译优化函数优化属于编译优化ST||LD特点:单字单周期
第六章
1、小题DSP的内部存储器类型可分为随机存取存储器(RAM)和只读存储器(ROM)。其中RAM又可以分为两种类型:单寻址RAM(SARAM)和双寻址RAM(DARAM)。
中断程序没有参数传递,即使说明,也将被忽略
4、小题pragma指令告诉编译器如何处理函数。常用的pragma指令有
DSP复习资料
DSP复习资料1、DSP 芯⽚的结构?答:DSP 是改进的哈佛结构 (80C51是哈佛结构)。
冯.诺依曼结构与哈佛结构的区别是地址空间和数据空间分开与否。
冯诺依曼结构数据空间和地址空间不分开,哈佛结构数据空间和地址空间是分开的。
哈佛结构的特点:使⽤两个独⽴的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使⽤独⽴的两条总线,分别作为CPU 与每个存储器之间的专⽤通信路径,⽽这两条总线之间毫⽆关联。
改进的哈佛结构,其结构特点为:使⽤两个独⽴的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并⾏处理;具有⼀条独⽴的地址总线和⼀条独⽴的数据总线,利⽤公⽤地址总线访问两个存储模块(程序存储模块和数据存储模块),公⽤数据总线则被⽤来完成程序存储模块或数据存储模块与CPU 之间的数据传输,改进的哈佛结构在哈佛结构的基础上⼜加以改进,即使得程序代码和数据存储空间之间也可以进⾏数据的传送。
TMS320LF2407A 采⽤改进的哈佛结构,芯⽚内部具有六条16位总线,即程序地址总线(PAB )、数据读地址总线(DRAB )、数据写地址总线(DWAB )、程序读总线(PRDB )、数据读总线(DRDB )、数据写总线(DWEB ),其程序存储器总线和数据存储器总线相互独⽴,⽀持并⾏的程序和操作数寻址,因此CPU 的读/写可在同⼀周期内进⾏,这种⾼速运算能⼒使⾃适应控制、卡尔曼滤波、神经⽹络、遗传算法等复杂控制算法得以实现。
结构⽰意图如下:2、什么是流⽔线技术?DSP 是不是具有流⽔线技术(pipeline) ?答:流⽔线技术是将各指令的各个步骤重叠起来执⾏,⽽不是⼀条指令执⾏完成之后,才开始执⾏下⼀条指令。
计算机在执⾏⼀条指令时,总要经过取指、译码、取数、执⾏运算等步骤,需要若⼲个指令周期才能完成。
流⽔线技术是将各指令的各个步骤重叠起来执⾏,⽽不是⼀条指令执⾏完成之后,才开始执⾏下⼀条指令。
DSP复习资料.pdf
3、DSP有哪几种分类方式,可将DSP芯片分成哪几类?答:DSP有三种分类方式:按基础特性分类、按数据格式分类和按用途分类。
按基础特性可分为静态DSP芯片和一致性DSP芯片;按数据格式可分为定点DSP芯片和浮点DSP芯片;按照用途可分为通用型DSP芯片和专用型DSP芯片。
7、冯·诺伊曼结构和哈佛结构的主要区别是什么?与前者相比,哈佛结构有何优势?答:1)主要区别:冯·诺伊曼结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线。
哈佛结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线。
2)哈佛结构优势哈佛结构可独立编址和访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,极大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
8、以四级流水线为例,介绍DSP所采用的流水线技术。
答:计算单元在执行一条多周期指令时,总要经过取指、译码、取数、执行、写结果等步骤,需要若干指令周期才能完成。
流水线技术是将各指令的各个步骤重叠起来执行,而不是一条指令完成后,才开始执行下一条指令。
即在每个指令周期内,几个不同的指令均处于激活状态,每个指令处于不同的阶段。
如下图所示,在第N个指令取指令时,前面一个即第N-1个指令正在译码,而第N-2个指令正在取操作数,第N-3个指令则正在执行指令。
使用流水线技术后,尽管每一条指令的执行仍然要经过这些步骤,需要同样的指令周期数,但将一个指令段综合起来看,其中每一条指令的执行都是在一个指令周期内完成的。
10、数字信号处理的实现方法有哪几种?答:1)在通用的微型计算机(PC机)上用软件(如VB、VC语言)实现。
2)在通用的计算机系统中加上专用的加速处理机实现。
3)用单片机(如MCS-51、96系列等)实现。
4)用FPGA等产品实现数字信号处理算法。
5)用通用的可编程DSP芯片实现。
DSP复习资料
DSP复习资料DSP复习资料填空题:1、TL公司的DSP产品主要有TMS320C2000、TMS320C5000和TMS320C6000系列。
2、程序计数器的值可以通过复位操作、顺序执行指令、分支转移、累加器转移、块重复、子程序调用、从累加器调用子程序,中断操作来改变。
3、COFF目标文件都包含以下三种形式的段,分别是.text文本段、.data数据段、.bass保留空间。
4、DSP的寻址方式有七种分别是立即寻址、绝对寻址、累加器寻址、直接寻址、间接寻址、存储器映像寄存器寻址、堆栈寻址。
5、DSP芯片的开发工具可以分为代码生成工具和代码调试工具两类。
6、子段有两种,用.sect命令建立的是已初始化段,用.usect命令建立的是未初始化段。
7、DROM为1,片内ROM配置程序和存储空间,ST1的CPL为1表示选用堆栈指针SP的直接寻址方式;ST1的C16等于1表示ALU 工作在双精度算式(填0或1)8、DSP具有两个40 位的累加器A和B,累加器A的32-39位是保护位。
9、TMS320C54x DSP的内部总存储空间为192K字,分成了3个可选择的存储空间分别是64K程序存储空间、64K数据存储空间、64K的I/O存储空间。
10、TMS320C54x有4组地址总线分别是PAB、CAB、DAB和EAB总线。
11、链接器对段的处理主要头通过MEMORY 和SECTIONS的两个命令来完成。
12、DSP有3个16位寄存器作为状态控制寄存器,分别是ST0、ST1和PMST。
13、TMS320C54x的三类串行口分别是标准同步串行口、缓冲串行口、时分多路串行口。
14、DSP的内部存储器类型可分为RAM和ROM,其中RAM可以定义为两个类型单寻址RAM(SARAM)和双寻址RAM(DARAM)。
15、在数字信号处理器寻址指令系统中,D mad为16位立即数,表示数据存储器地址,P mad表示程序存储器地址。
DSP期末复习资料_图文(精)
DSP期末复习资料2.DSP芯片的特点:哈佛结构:将程序空间和数据空间分开,可同时取指令和取操作数;(重要)多总线结构:一个机器周期可以多次访问程序空间和数据空间,其内部有P、C、D、E 4个总线;(重要)流水线结构:DSP执行一条指令需要取指、译码、取操作数和执行等几个阶段;(重要)多处理单元:算术逻辑运算单元、辅助寄存器、累加器、硬件乘法器等;特殊的DSP指令、指令周期短、运算精度高、硬件配置强。
3.TMS320系列DSP可分为:C2000(16位/32位定点DSP,主要运用控制领域)、C5000(16位定点DSP,用于高性能、低功耗的中高档应用场合)、C6000(32位DSP,高性能)系列。
4. TMS320C54X的主要特性:⑴多总线结构(1条程序总线、3条数据总线、4条对应地址总线);⑵192K字节可寻址空间(64K字程序存储器、64K字数据存储器以及64K字I/O空间);⑶片内有单寻址RAM(SRAM)和RAM(DRAM存储器。
5.TMS320VC5416-160有1个CPU、6. C54X的总线结构:C54X片内有8条16位主总线、4条程序/数据总线和4条相应的地址总线。
7.当处理器复位时,复位和中断向量都映像到程序空间的FF80h。
8.累加器A和B的差别在于:累加器A的31~16位可用于乘法器的一个输入。
9.桶形移位器的移位数可用一个立即数、状态寄存器ST1的累加器移位方式ASM或者T寄存器中最低的6位数值来定义。
10.指数编码器可以在单个周期内执行EXP指令,求的累加器中数据的指数值,并以2的补码形式存放在T寄存器中,可以用11.C54XCPU有3个状态寄存器:状态寄存器0(ST0)、状态寄存器1(ST1)、处理工作方式状态寄存器(PMST)。
12.C54X中断可分为可屏蔽中断和非屏蔽中断。
所有的软件中断都是非屏蔽的。
13.定时中断的周期:CLKOUT*(TDDR+1)*(PRD+1)14. C54X片内有一个主机接口(HPI)。
DSP复习资料
答:流水线作业就是使取址、译码、取操作数和执行指令等操作重叠执行。 3. 什么是哈佛总线?P1
答:哈佛总线就是程序空间和数据空间分开,分别由各自的地址总线和数据总线; 它可以同时完成获取指令和数据读取操作。 4. 2812 的 SPI 和 SCI 接口的主要异同?
EALLOW; PieVectTable.TINT0=&cpu_timer0_isr; GpioMuxRegs.GPAMUX.all=0x0000; GpioMuxRegs.GPADIR.all|=0x0001; EDIS; InitCpuTimers(); ConfigCpuTIMER(&CpuTimer0,100,2000000); StartCpuTimer0; IER|=M_INT1; PieCtrlRegs.PIEIER1.bit.INTx7=1; EINT; ERTM; for(;;) { GpioDataRegs,GPATOGGLE.bit.GPIOA0=1; CpuTimer0.InterruptCount==CpuTimer0.InterruptCount ; } } interrupt void cpu_timer0_isr(void) { CpuTimer0.InterruptCount++; PieCtrlRegs.PIEACK.all= PIEACK_GROUP1; } 15. 拨码键盘地址 0x88000,LED 显示器地址 0x88001,编程实现:拨码为 1,相应灯亮;反 之则灭。 答:#include “DSP2812x_Device.h” #include “DSP2812x_Examples.h” void InitsysCtrl(void); void main(void) { InitsysCtrl(); DINT; IER=0x0000; IFR=0x0000; unsigned int temp; while(1) { temp=*(int*)0x88000; *(int*)0x88001=temp; } } void InitsysCtrl(void) { EALLOW;
DSP复习资料
第一章概述、第三章存储空间第四章DSP系统设计入门第五章DSP的时钟与系统控制Chap 6 中断与中断控制第7章通用输入输出GPIO总结第8章DSP的捕获单元第9章:增强型脉宽调制器ePWM第10章模数转换器(ADC实验代码:实验一:#include"DSP28x_Project.h"#include"LED_TM1638.h"interrupt void cpu_timer0_isr(void); //timer0 interrupt void myXint1_isr(void); //xint1// interrupt void EPWM4Int_isr(void); //EPWM4 // interrupt void Ecap1Int_isr(void); //ECAP1 // interrupt void MyAdcInt1_isr(void); //ADCINT1//初始化变量int hourH =0 ;int hourL =0;int minH = 0;int minL = 0;int secH = 0;int secL =0; int TenmS =0;int HorseType = 0;//跑马灯的类型int keyDLTime = 0;//设置去抖动int LedFlashCtr = 0 ;//用于数码管的显示int NewLedEn = 0;int Begin =1;void HorseRunning(int16 no);#define Led0Blink() GpioDataRegs.GPACLEAR.bit.GPIO0 = 1 #define Led1Blink() GpioDataRegs.GPACLEAR.bit.GPIO1 = 1 #define Led2Blink() GpioDataRegs.GPACLEAR.bit.GPIO2 = 1 #define Led3Blink() GpioDataRegs.GPACLEAR.bit.GPIO3 = 1 #define Led0Blank() GpioDataRegs.GPASET.bit.GPIO0 = 1 #define Led1Blank() GpioDataRegs.GPASET.bit.GPIO1 = 1 #define Led2Blank() GpioDataRegs.GPASET.bit.GPIO2 = 1 #define Led3Blank() GpioDataRegs.GPASET.bit.GPIO3 = 1void Xint1_Init(){EALLOW;GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 12;XIntruptRegs.XINT1CR.bit.POLARITY = 0;//下降沿XIntruptRegs.XINT1CR.bit.ENABLE = 1;EDIS;}void HorseIO_Init(){EALLOW;GpioDataRegs.GPASET.bit.GPIO0 = 1;GpioDataRegs.GPASET.bit.GPIO1 = 1;GpioDataRegs.GPASET.bit.GPIO2 = 1;GpioDataRegs.GPASET.bit.GPIO3 = 1;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;GpioCtrlRegs.GPADIR.bit.GPIO3 = 1;EDIS;}void DelaymS(int tm){int i;unsigned int j;for(i = 0;i < tm ;i++){j = 60000;while(j != 0)j--;}}void main(void){InitSysCtrl(); //初始化系统时钟,选择内部晶振1,10MHZ,12倍频,2分频,初始化外设时钟,低速外设,4分频DINT; //关总中断IER = 0x0000; //关CPU中断使能IFR = 0x0000; //清CPU中断标志InitPieCtrl(); //关pie中断InitPieVectTable(); //清中断向量表EALLOW; //配置中断向量表PieVectTable.TINT0 = &cpu_timer0_isr;PieVectTable.XINT1 = &myXint1_isr;// PieVectTable.ECAP1_INT = &Ecap1Int_isr;// PieVectTable.EPWM4_INT = &EPWM4Int_isr;// PieVectTable.ADCINT1 = &MyAdcInt1_isr;PieCtrlRegs.PIEIER1.bit.INTx7 = 1;PieCtrlRegs.PIEIER1.bit.INTx4 = 1;IER |= 1;EDIS;// MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash();HorseIO_Init();Xint1_Init();TM1638_Init(); //初始化LEDInitCpuTimers(); // 初始化定时器ConfigCpuTimer(&CpuTimer0, 60, 10000);//设置时钟的响应时间为0.01sEALLOW;CpuTimer0Regs.TCR.bit.TRB = 1;CpuTimer0Regs.TCR.bit.TSS = 0;EDIS;EINT;//中断总使能ERTM;while(1){//if(NewLedEn == 0){LED_Show(1,(TenmS % 10),0); LED_Show(2,(TenmS / 10),0); LED_Show(3,secL,1);LED_Show(4,secH,0);LED_Show(5,minL,1);LED_Show(6,minH,0);LED_Show(7,hourL,1);LED_Show(8,hourH,0);NewLedEn = 1;}}}void HorseRunning(int no){if(no & 0x1)Led0Blink();else Led0Blank();if(no & 0x2)Led1Blink();else Led1Blank();if(no & 0x4)Led2Blink();else Led2Blank();if(no & 0x8)Led3Blink();else Led3Blank();}void HorseRunning1(int no){if(no & 0x1) Led0Blink();else Led0Blank();if(no & 0x2){Led0Blink();Led1Blink();} else{Led0Blank();Led1Blank();} if(no & 0x4){Led2Blink();Led1Blink();}else{Led2Blank();Led1Blank();}if(no & 0x8){Led3Blink();Led2Blink();}else{Led3Blank();Led2Blank();}}interrupt void myXint1_isr(void){Begin = 1;if((HorseType == 0)&&(keyDLTime>20)){HorseType = 1; keyDLTime = 0;}else if((HorseType == 1)&&(keyDLTime>20)){HorseType = 0; keyDLTime = 0;}PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;//手动清楚这里的中断标志 all=0x0001也行EALLOW;CpuTimer0Regs.TCR.bit.TRB = 1;CpuTimer0Regs.TCR.bit.TSS = 0;EDIS;}interrupt void cpu_timer0_isr(void) {keyDLTime++;LedFlashCtr++;if((LedFlashCtr & 0xf)==0) NewLedEn = 0;if(Begin == 1){TenmS ++;if(TenmS == 100){TenmS = 0; secL++;}if(secL == 10){secL = 0; secH++;}if(secH == 6){secH = 0; minL++;}if(minL == 10){minL = 0; minH++;}if(minH == 6){minH = 0; hourL++;}if(hourH == 2 && hourL ==4){hourH = 0; hourL =0;}else if(hourL == 10){hourL = 0; hourH++;}}if(HorseType == 0 && Begin == 1){HorseRunning((LedFlashCtr&0xf0)>>4);}else if(HorseType == 1 && Begin ==1){HorseRunning1((LedFlashCtr&0xf0)>>4);}PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;}实验二:#include"DSP28x_Project.h"#include"LED_TM1638.h"#include"DSP2802x_ECap.h"// interrupt void EPWM4Int_isr(void); //EPWM4 interrupt void Ecap1Int_isr(void); //ECAP1//初始化变量int t1 = 0; int t2 = 0;int t3 = 0;int t4 = 0;int DutyOnTime = 0;int DutyOffTime = 0;int Period = 0;float rate = 0;void Gpio_Init(void);void InitPWM4(void);void InitCap1(void);void DelaymS(int tm);void DelaymS(int tm){int i;unsigned int j;for(i = 0;i < tm ;i++){j = 60000;while(j != 0)j--;}}void InitCap1(void){ECap1Regs.ECEINT.all = 0x0000;//中断向量初始化 ECap1Regs.ECCLR.all = 0xFFFF;ECap1Regs.ECCTL1.bit.PRESCALE = 0;//1分频ECap1Regs.ECCTL1.bit.CAP1POL = 0;//上下沿均触发 ECap1Regs.ECCTL1.bit.CAP2POL = 1;ECap1Regs.ECCTL1.bit.CAP3POL = 0;ECap1Regs.ECCTL1.bit.CAP4POL = 1;ECap1Regs.ECCTL1.bit.CTRRST1 = 1;//差分模式ECap1Regs.ECCTL1.bit.CTRRST2 = 1;ECap1Regs.ECCTL1.bit.CTRRST3 = 1;ECap1Regs.ECCTL1.bit.CTRRST4 = 1;ECap1Regs.ECCTL1.bit.CAPLDEN = 1;//允许装载ECap1Regs.ECCTL2.bit.CAP_APWM = 0;//用于捕获ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;//连续ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0;ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;//自由运行ECap1Regs.ECEINT.bit.CEVT4 = 1;//设置中断}void InitPWM4(void){int PWMPRD,DeadTime;//周期和死区时间EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//设置epwm同步暂停 EDIS;PWMPRD = 3750;DeadTime = 180;EPwm4Regs.TBPRD = PWMPRD;EPwm4Regs.TBPHS.half.TBPHS = 0;//忽略同步事件EPwm4Regs.TBCTL.bit.CLKDIV = 0;//预分频为1EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm4Regs.TBCTL.bit.PRDLD = 0;//使用映射寄存器EPwm4Regs.TBCTL.bit.CTRMODE = 2;//对称模式EPwm4Regs.TBCTL.bit.PHSEN = 0;//不从时基相位寄存器进行装载 EPwm4Regs.TBCTL.bit.SYNCOSEL = 1;//EPwm4Regs.CMPCTL.bit.SHDWAMODE = 0;//使用映射寄存器EPwm4Regs.CMPCTL.bit.SHDWBMODE = 0;EPwm4Regs.CMPCTL.bit.LOADAMODE = 2;//计数器=0或T时候装载 EPwm4Regs.CMPCTL.bit.LOADBMODE = 2;EPwm4Regs.CMPA.half.CMPA = (PWMPRD / 2);//脉冲占比50%EPwm4Regs.CMPB = (PWMPRD / 2);EPwm4Regs.AQCTLA.bit.CAU = 2;//配置动作EPwm4Regs.AQCTLA.bit.CAD = 1;EPwm4Regs.AQCTLA.bit.CBU = 0;EPwm4Regs.AQCTLA.bit.CBD = 0;EPwm4Regs.DBCTL.bit.HALFCYCLE = 0;//全周期EPwm4Regs.DBCTL.bit.IN_MODE = 0;//A是源EPwm4Regs.DBCTL.bit.POLSEL = 2;EPwm4Regs.DBCTL.bit.OUT_MODE = 3;EPwm4Regs.DBFED = DeadTime;EPwm4Regs.DBRED = DeadTime;EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//设置epwm同步暂停EDIS;}void Gpio_Init(){EALLOW;GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; //设置为输出GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0;//上拉GpioCtrlRegs.GPAPUD.bit.GPIO6 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO7 = 1;GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 3;//设置外设功能GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1;GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 1;GpioDataRegs.GPACLEAR.bit.GPIO5 =1;//初始化数值GpioDataRegs.GPACLEAR.bit.GPIO6 =1;GpioDataRegs.GPACLEAR.bit.GPIO7 =1;EDIS;}void main(void){InitSysCtrl(); //初始化系统时钟,选择内部晶振1,10MHZ,12倍频,2分频,初始化外设时钟,低速外设,4分频DINT; //关总中断IER = 0x0000; //关CPU中断使能IFR = 0x0000; //清CPU中断标志InitPieCtrl(); //关pie中断InitPieVectTable(); //清中断向量表EALLOW; //配置中断向量表PieVectTable.ECAP1_INT = &Ecap1Int_isr;PieCtrlRegs.PIEIER4.bit.INTx1 = 1;IER |= 8;EDIS;// MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash();Gpio_Init();InitPWM4();InitCap1();TM1638_Init(); //初始化LEDEINT;//中断总使能ERTM;while(1){DelaymS(2000);LED_Show(1,(DutyOnTime % 10),0);LED_Show(2,((DutyOnTime / 10) % 10),0);LED_Show(3,((DutyOnTime / 100) % 10),1);LED_Show(4,((DutyOnTime / 1000) ),0);LED_Show(5,(Period % 10),0);LED_Show(6,((Period / 10) % 10),0);LED_Show(7,((Period / 100) % 10),1);LED_Show(8,((Period / 1000) ),0);DelaymS(2000);}}interrupt void Ecap1Int_isr(void){t1 = ECap1Regs.CAP2;t2 = ECap1Regs.CAP3;t3 = ECap1Regs.CAP4;t4 = ECap1Regs.CAP1;Period = t1 + t2;DutyOnTime = t1;DutyOffTime = t2;rate = DutyOnTime/DutyOffTime;ECap1Regs.ECCLR.bit.CEVT4 = 1;ECap1Regs.ECCLR.bit.INT = 1;PieCtrlRegs.PIEACK.all = 8;实验三#include"DSP28x_Project.h"#include"LED_TM1638.h"#include"DSP2802x_Adc.h"#define ADC_usDELAY 1000Linterrupt void MyAdcInt1_isr(void); //ADCINT1void Init_Adc(void);void InitPWM4(void);void DelaymS(int tm);//初始化变量int High = 0;int Low = 0;int Derta = 0;float high = 0; float low = 0;float derta = 0;int ADCSampT = 12;void Init_Adc(void){extern void DSP28x_usDelay(Uint32 Count);EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;(*Device_cal)();EDIS;DELAY_US(ADC_usDELAY);EALLOW;AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power ADC BGAdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power referenceAdcRegs.ADCCTL1.bit.ADCPWDN = 1; // Power ADCAdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADCAdcRegs.ADCCTL1.bit.ADCREFSEL = 0; // Select interal BG使用内部参考电压EDIS;DELAY_US(ADC_usDELAY);AdcOffsetSelfCal();//自矫正DELAY_US(ADC_usDELAY);EALLOW;AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;AdcRegs.INTSEL1N2.bit.INT1CONT = 0;//不连续中断AdcRegs.INTSEL1N2.bit.INT1E = 1;//中断使能AdcRegs.INTSEL1N2.bit.INT1SEL = 7;//7次转换后结束AdcRegs.ADCSAMPLEMODE.all = 0;//顺序采样AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC0CTL.bit.CHSEL = 1;//前四个通道实现对ADA1过采样 AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;AdcRegs.ADCSOC2CTL.bit.CHSEL = 1;AdcRegs.ADCSOC3CTL.bit.CHSEL = 1;AdcRegs.ADCSOC4CTL.bit.CHSEL = 9;//后四个通道实现对ADB1过采样 AdcRegs.ADCSOC5CTL.bit.CHSEL = 9;AdcRegs.ADCSOC6CTL.bit.CHSEL = 9;AdcRegs.ADCSOC7CTL.bit.CHSEL = 9;AdcRegs.ADCSOC0CTL.bit.ACQPS = ADCSampT;//设置采样周期AdcRegs.ADCSOC1CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC2CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC3CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC4CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC5CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC6CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC7CTL.bit.ACQPS = ADCSampT;EDIS;}void InitPWM4(void){int PWMPRD,DeadTime;//周期和死区时间EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//设置epwm同步暂停EDIS;PWMPRD = 3000;DeadTime = 120;EPwm4Regs.TBPRD = PWMPRD;EPwm4Regs.TBPHS.half.TBPHS = 0;//忽略同步事件EPwm4Regs.TBCTL.bit.CLKDIV = 0;//预分频为1EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm4Regs.TBCTL.bit.PRDLD = 0;//使用映射寄存器EPwm4Regs.TBCTL.bit.CTRMODE = 2;//对称模式EPwm4Regs.TBCTL.bit.PHSEN = 0;//不从时基相位寄存器进行装载 EPwm4Regs.TBCTL.bit.SYNCOSEL = 1;//EPwm4Regs.CMPCTL.bit.SHDWAMODE = 0;//使用映射寄存器EPwm4Regs.CMPCTL.bit.SHDWBMODE = 0;EPwm4Regs.CMPCTL.bit.LOADAMODE = 2;//计数器=0或T时候装载 EPwm4Regs.CMPCTL.bit.LOADBMODE = 2;EPwm4Regs.CMPA.half.CMPA = (PWMPRD / 2);//脉冲占比50%EPwm4Regs.CMPB = (PWMPRD / 2);EPwm4Regs.AQCTLA.bit.CAU = 2;//配置动作EPwm4Regs.AQCTLA.bit.CAD = 1;EPwm4Regs.AQCTLA.bit.CBU = 0;EPwm4Regs.AQCTLA.bit.CBD = 0;EPwm4Regs.DBCTL.bit.HALFCYCLE = 0;//全周期EPwm4Regs.DBCTL.bit.IN_MODE = 0;//A是源EPwm4Regs.DBCTL.bit.POLSEL = 2;EPwm4Regs.DBCTL.bit.OUT_MODE = 3;EPwm4Regs.DBFED = DeadTime;EPwm4Regs.DBRED = DeadTime;EPwm4Regs.ETSEL.bit.SOCAEN = 1;EPwm4Regs.ETSEL.bit.SOCASEL = 1;EPwm4Regs.ETPS.bit.SOCAPRD = 1;EPwm4Regs.ETCLR.bit.SOCA = 1;EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//设置epwm同步暂停 EDIS;}void DelaymS(int tm){int i;unsigned int j;for(i = 0;i < tm ;i++){j = 60000;while(j != 0)j--;}}void main(void){High = AdcResult.ADCRESULT0 + AdcResult.ADCRESULT1;High += AdcResult.ADCRESULT2;InitSysCtrl(); //初始化系统时钟,选择内部晶振1,10MHZ,12倍频,2分频,初始化外设时钟,低速外设,4分频DINT; //关总中断IER = 0x0000; //关CPU中断使能IFR = 0x0000; //清CPU中断标志InitPieCtrl(); //关pie中断InitPieVectTable(); //清中断向量表EALLOW; //配置中断向量表PieVectTable.rsvd10_1 = &MyAdcInt1_isr;PieCtrlRegs.PIEIER10.bit.INTx1 = 1;IER |= 0x0200;EDIS;// MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); InitFlash();TM1638_Init(); //初始化LEDInit_Adc();InitPWM4();EINT;//中断总使能ERTM;while(1){}}interrupt void MyAdcInt1_isr(void) {High = AdcResult.ADCRESULT0 + AdcResult.ADCRESULT1;High += AdcResult.ADCRESULT2 + AdcResult.ADCRESULT3;Low = AdcResult.ADCRESULT4 + AdcResult.ADCRESULT5;Low += AdcResult.ADCRESULT6 + AdcResult.ADCRESULT7;Derta = High - Low;high = High/(4*4096*1.0) * 3.30;low = Low/(4*4096*1.0) * 3.30;derta = Derta/(4*4096*1.0) * 3.30;if (derta < 0){derta = -derta;}AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;PieCtrlRegs.PIEACK.all = PIEACK_GROUP10;//EPwm4Regs.ETCLR.bit.SOCA = 1;LED_Show(1,(int)(high*100)%10,0);//high即为0.037 LED_Show(2,(int)(high*10)%10,0);LED_Show(3,(int)(high*1)%10,0);LED_Show(4,(int)(low*100)%10,0);LED_Show(5,(int)(low*10)%10,0);LED_Show(6,(int)(low)%10,0);LED_Show(7,(int)(derta*10) % 10,0);LED_Show(8,(int)(derta*1) % 10,0);DelaymS(300);}实验四://homework4#include"DSP28x_Project.h"#include"LED_TM1638.h"#include"DSP2802x_Adc.h"#define ADC_usDELAY 1000Linterrupt void MyAdcInt1_isr(void); //ADCINT1void Init_Adc(void);void InitPWM4(void);void DelaymS(int tm);//初始化变量int Target = 0;int Now = 0;float target = 0; float now = 0;int ADCSampT = 12;int Derta = 0;//记录偏差int CMPA;void Init_Adc(void){extern void DSP28x_usDelay(Uint32 Count);EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;(*Device_cal)();EDIS;DELAY_US(ADC_usDELAY);EALLOW;AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power ADC BGAdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power referenceAdcRegs.ADCCTL1.bit.ADCPWDN = 1; // Power ADCAdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADCAdcRegs.ADCCTL1.bit.ADCREFSEL = 0; // Select interal BG使用内部参考电压EDIS;DELAY_US(ADC_usDELAY);AdcOffsetSelfCal();//自矫正DELAY_US(ADC_usDELAY);EALLOW;AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;AdcRegs.INTSEL1N2.bit.INT1CONT = 0;//不连续中断AdcRegs.INTSEL1N2.bit.INT1E = 1;//中断使能AdcRegs.INTSEL1N2.bit.INT1SEL = 7;//7次转换后结束AdcRegs.ADCSAMPLEMODE.all = 0;//顺序采样AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 11;AdcRegs.ADCSOC0CTL.bit.CHSEL = 1;//前四个通道实现对ADA1过采样AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;AdcRegs.ADCSOC2CTL.bit.CHSEL = 1;AdcRegs.ADCSOC3CTL.bit.CHSEL = 1;AdcRegs.ADCSOC4CTL.bit.CHSEL = 9;//后四个通道实现对ADB1过采样AdcRegs.ADCSOC5CTL.bit.CHSEL = 9;AdcRegs.ADCSOC6CTL.bit.CHSEL = 9;AdcRegs.ADCSOC7CTL.bit.CHSEL = 9;AdcRegs.ADCSOC0CTL.bit.ACQPS = ADCSampT;//设置采样周期AdcRegs.ADCSOC1CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC2CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC3CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC4CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC5CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC6CTL.bit.ACQPS = ADCSampT;AdcRegs.ADCSOC7CTL.bit.ACQPS = ADCSampT;EDIS;}//Epwm4产生ADC触发信号void InitPWM4(void){int PWMPRD,DeadTime;//周期和死区时间EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//设置epwm同步暂停 EDIS;PWMPRD = 3000;DeadTime = 120;EPwm4Regs.TBPRD = PWMPRD;EPwm4Regs.TBPHS.half.TBPHS = 0;//忽略同步事件EPwm4Regs.TBCTL.bit.CLKDIV = 0;//预分频为1EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm4Regs.TBCTL.bit.PRDLD = 0;//使用映射寄存器EPwm4Regs.TBCTL.bit.CTRMODE = 2;//对称模式EPwm4Regs.TBCTL.bit.PHSEN = 0;//不从时基相位寄存器进行装载 EPwm4Regs.TBCTL.bit.SYNCOSEL = 1;//EPwm4Regs.CMPCTL.bit.SHDWAMODE = 0;//使用映射寄存器EPwm4Regs.CMPCTL.bit.SHDWBMODE = 0;EPwm4Regs.CMPCTL.bit.LOADAMODE = 2;//计数器=0或T时候装载 EPwm4Regs.CMPCTL.bit.LOADBMODE = 2;EPwm4Regs.CMPA.half.CMPA = (PWMPRD / 2);//脉冲占比50%EPwm4Regs.CMPB = (PWMPRD / 2);EPwm4Regs.AQCTLA.bit.CAU = 2;//配置动作EPwm4Regs.AQCTLA.bit.CAD = 1;EPwm4Regs.AQCTLA.bit.CBU = 0;EPwm4Regs.AQCTLA.bit.CBD = 0;EPwm4Regs.DBCTL.bit.HALFCYCLE = 0;//全周期EPwm4Regs.DBCTL.bit.IN_MODE = 0;//A是源EPwm4Regs.DBCTL.bit.POLSEL = 2;EPwm4Regs.DBCTL.bit.OUT_MODE = 3;EPwm4Regs.DBFED = DeadTime;EPwm4Regs.DBRED = DeadTime;EPwm4Regs.ETSEL.bit.SOCAEN = 1;EPwm4Regs.ETSEL.bit.SOCASEL = 1;EPwm4Regs.ETPS.bit.SOCAPRD = 1;EPwm4Regs.ETCLR.bit.SOCA = 1;EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//设置epwm同步暂停 EDIS;}//Epwm1产生DAC 生成和target差不多的模拟信号并且void InitPWM1(void){//配置PWM输出 GPIO0EALLOW;GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; //设置为输出GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;//上拉GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;//设置外设功能GpioDataRegs.GPACLEAR.bit.GPIO0 =1;//初始化数值EDIS;int PWMPRD;//周期和死区时间EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//设置epwm同步暂停 EDIS;PWMPRD = 3000;EPwm1Regs.TBPRD = PWMPRD;EPwm1Regs.TBPHS.half.TBPHS = 0;//忽略同步事件EPwm1Regs.TBCTL.bit.CLKDIV = 0;//预分频为1EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBCTL.bit.PRDLD = 0;//使用映射寄存器EPwm1Regs.TBCTL.bit.CTRMODE = 2;//对称模式EPwm1Regs.TBCTL.bit.PHSEN = 0;//不从时基相位寄存器进行装载 EPwm1Regs.TBCTL.bit.SYNCOSEL = 1;//EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;//使用映射寄存器EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;EPwm1Regs.CMPCTL.bit.LOADAMODE = 2;//计数器=0或T时候装载EPwm1Regs.CMPCTL.bit.LOADBMODE = 2;EPwm1Regs.CMPA.half.CMPA = (int)((1-(target/3.3))*3000);//脉冲占比50% EPwm1Regs.CMPB = (int)((1-(target/3.3))*3000);;EPwm1Regs.AQCTLA.bit.CAU = 1;//配置动作EPwm1Regs.AQCTLA.bit.CAD = 2;EPwm1Regs.AQCTLA.bit.CBU = 0;EPwm1Regs.AQCTLA.bit.CBD = 0;EPwm1Regs.DBCTL.bit.HALFCYCLE = 0;//全周期EPwm1Regs.DBCTL.bit.IN_MODE = 0;//A是源EPwm1Regs.DBCTL.bit.POLSEL = 0;EPwm1Regs.DBCTL.bit.OUT_MODE = 0;//直接生成需要的模拟信号// EPwm1Regs.ETSEL.bit.INTEN = 1;// EPwm1Regs.ETSEL.bit.INTSEL = 1;// EPwm1Regs.ETPS.bit.INTPRD = 1;// EPwm1Regs.ETCLR.bit.INT = 1;EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//设置epwm同步暂停EDIS;}void DelaymS(int tm){int i;unsigned int j;for(i = 0;i < tm ;i++){j = 60000;while(j != 0)j--;}}void main(void){InitSysCtrl(); //初始化系统时钟,选择内部晶振1,10MHZ,12倍频,2分频,初始化外设时钟,低速外设,4分频DINT; //关总中断IER = 0x0000; //关CPU中断使能IFR = 0x0000; //清CPU中断标志InitPieCtrl(); //关pie中断InitPieVectTable(); //清中断向量表EALLOW; //配置中断向量表PieVectTable.rsvd10_1 = &MyAdcInt1_isr;PieCtrlRegs.PIEIER10.bit.INTx1 = 1;IER |= 0x0200;EDIS;// MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash();TM1638_Init(); //初始化LEDInit_Adc();InitPWM4();InitPWM1();EINT;//中断总使能ERTM;while(1){{// LED_Show(1,(int)(high*100)%10,0);// LED_Show(2,(int)(high*10)%10,0);// LED_Show(3,(int)(high)%10,0);//// LED_Show(4,(int)(low*100)%10,0);// LED_Show(5,(int)(low*10)%10,0);// LED_Show(6,(int)(low)%10,0);//// LED_Show(7,(int)(derta*10) % 10,0);// LED_Show(8,(int)(derta) % 10,0);}}}interrupt void MyAdcInt1_isr(void) {Target = AdcResult.ADCRESULT0 + AdcResult.ADCRESULT1;Target += AdcResult.ADCRESULT2 + AdcResult.ADCRESULT3;target = Target/(4*4096*1.0) * 3.30;Now = AdcResult.ADCRESULT4 + AdcResult.ADCRESULT5;Now += AdcResult.ADCRESULT6 + AdcResult.ADCRESULT7;now = Now/(4*4096*1.0) * 3.30;// EALLOW;// SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//设置epwm同步暂停// EDIS;Derta += (int)((((target - now) /3.3))*3000);CMPA += ((int)(0*Derta) + (int)((((target - now) /3.3))*3000));if (CMPA < 0){CMPA = 0;}else if (CMPA > 3000){CMPA = 3000;}EPwm1Regs.CMPA.half.CMPA = CMPA;//根据差值进行改变//EPwm1Regs.CMPA.half.CMPA += (int)((((target - now) /3.3))*3000);//根据差值进行改变// EALLOW;// SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//设置epwm同步暂停// EDIS;AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;PieCtrlRegs.PIEACK.all = PIEACK_GROUP10;//EPwm4Regs.ETCLR.bit.SOCA = 1;LED_Show(1,(int)(target*1000)%10,0);//LED_Show(2,(int)(target*100)%10,0);LED_Show(3,(int)(target*10)%10,0);LED_Show(4,(int)(target)%10,0);LED_Show(5,(int)(now*1000)%10,0);//LED_Show(6,(int)(now*100)%10,0);LED_Show(7,(int)(now*10)%10,0);LED_Show(8,(int)(now)%10,0);DelaymS(200);}。
dsp复习资料
一,Dsp 的硬件结构:⑴1组程序总线(PB),3组数据总线(CB,DB,EB),4组地址总线(PAB,CAB,DAB,EAB).⑵40位算术逻辑单元alu{C16=0工作在双精度算术运算方式,C16=1工作在双16位方式}ALU 溢出后状态寄存器ST0的OVM=1时,用32位最大正数007FFFFFFFH 或最大负数FF80000000H 加载累加器,溢出后溢出标志位OVA 或OVB=1直到复位!⑶1个40位桶行移位寄存器,⑷2个独立40位ACCA 和ACCB{ACCA 和ACCB 差别在于A 的31~16位可以用途乘法器的一个输入}.⑸17X17并行乘法器与40位的专用加法器相连,用于MAC 运算.⑹比较/选择/存储单元(CSSU)用于加法比较运算,⑺指数单元EXP(40位),⑻有16bit 状态寄存器ST0,ST1和工作方式状态寄存器PMST.二,存储结构:①哈佛结构(ROM 和RAM 分开),②三个独立64kb,ROM,RAM,I/O 空间,程序空间通过PMST 的MP/MC\和OVLY 控制,MP 控制使用内部存储器,MP=0,4000H-EFFFH 程序存储空间定义为外部存储器,FF00H-FEFFH 为内部,FF00H-FFFFH 为内部ROM 存储器,工作方式为微型计算机,MP=1,4000H-FFFFH 全部定义为外部存储器,工作方式为处理器模式.当OVLY=0时,0000H~3FFFH 全部定义为外部程序存储空间,程序空间不使用内部RAM,此时内部RAM 只作为数据存储器使用,OVLY=10000H~007FH 保留,程序无法使用,0080H~3FFFH 定义为内部DARAM,即内部RAM 被映射到程序存储空间和数据存储空间.③片上外设:2个通用I/O,XF(外部标志输出信号.控制外设工作)和BIO(控制分支转移信号,监测外部状态).BIO=0时执行转移指令.④定时器:4位预分频器和16位减法计数器组成,定时设定寄存器TIM(16bit)→0024H,复位/定时TIM 装入PRD(定时寄存器→0025H,存放定时常数)寄存器的值,然后减1计数,TIM 减到0后产生TINT 中断,TCR(定时控制寄存器→0026H)用来控制定时器的控制位和状态位,包括定时分频TDDR,预标定时计数器PSC,控制位TRB 和TSS 等.周期=时钟T*(TDDR+1)*(PRD+1).⑤时钟发生器:内部振荡器和锁相环PLL{⑴硬件配置PLL,通过[CLKMD1,CLKMD2,CLKMD3R 的状态,]⑵软件设置[通过16位的CLKMD →58H 控制]},⑥主机接口HPI:{控制寄存器HPIC,地址寄存器HPIA,数据锁存器HPID,HPI 内存},三,外设接口:软件等待状态寄存器SWWSR →0028H,复位时SWWSR →7FFFH,四,中断:1,可屏蔽中断{INT0-3,串行口中断,定时器中断TINT0-1,DMA 中断(DMAC4,DMAC5).HPINT(HPI 中断)}.2,非可屏蔽中断{外部中断投复位和‾NMI ‾(可用软件中断)}中断标志寄存器IFR 和中断屏蔽寄存器IMR{中断向量地址的计算[中断向量地址是由PMST 寄存器中的IPTR(中断向量指针,9bits)和左移2位后的中断向量序号(中断向量序号为0~31,左移两位后变成7位)所组成]例如INT0的中断序号为16(10H)左移两位后成40H 若IPTR=0001H,则中断地址为00C0H,复位时IPTR 全为1,所以硬件复位后程序总是从0FF80H 执行}.五,指令系统:1,寻址方式{i.立即寻址.[用于初始化(LD#80H,A)].ii.绝对寻址[①数据存储器(dmad)寻址(mvkd exam1,*ar5)②程序存储器(pmad)寻址(mvpd table,*ar2)③端口(pa)寻址(PORTR FIFO,*AR5)④*(1K)寻址(LD *(PN),A))].iii.累加器寻址{是用累加器中的数值作为地址来读写程序存储器,READA Smem,WRITASmen}.iv.直接寻址{ADD @x,A}.v.间接寻址[(寻址范围0~64kb)利用辅助寄存器内容作为地址访问存储器(C54x 有8个16bits 辅助寄存器AR0-AR7)]vi.存储器映像寄存器(MMR))寻址{LDM,MVDM,MVMD,MVMM,POPM,PSHM,STLM,STM}vii.堆栈寻址{PSHD,PSHM,POPD,POPD}.常用缩写{Smem:16位的单寻址操作数,Xmem:16位双寻址操作数,Ymem:16位双寻址操作数,PA:16位立即数,src:源累加器,dst:目的累加器,lk:16位长立即数},六,软件开发过程:.text 文本段,.data 数据段,.bss 保留空间,通常对未初始化变量保存,.sect 建立包含代码和数据的自定义段,.usect 为未初始化变量保留存储空间的自定义段,.word 用来设置一个或多个16位带符号整型常数,.int 设置无符号整型常数.title 后面是双引号的程序名,.end 结束汇编命令,汇编程序举例:㈠堆栈的使用:100单元的堆栈,size .set 100 \stack .usect “stk ”,size\STM #stack+size SP.㈡加减乘,①Z=X+Y-W,SUM:LD @x,A\ADD @y,A\SUB @w,A\STL A,@z.②y=mx+b,ld @m,t\mpy @x,A\add @b,A\stlA,@y.③y=x1*a1+x2*a2,ld @x1,t\mpy @a1,B\ld @a2,t\mpy @x2,b\stlB,@y\sth B,@y+1④y= a i 4i =1x i stm #a,ar1\stm #x,ar2\stm #2,ar3/ld *ar1+,t\mpy *ar2+,A\loopl:ld *ar1+,tMpy *ar2+,b/max A/banz loop,*ar3-㈢数组初始化x[5]=[1,2,3,4,5].data\tbl:.word 1,2,3,4,5\.sect “.vector ”\B START\.bss x,5\.text\START:stm #x,ar5\rpt #4\MVPD TBL,*AR5.㈣设计对称FIR 滤波器(N=8).title “firs5”\.mmregs\.def start\.bss y,1\x_old .usect “data1”,4\x_new .uscet “data2”,A\size .set 4\PA0 .set 0\PA1 .set 1\.data/COEF .word 1*32768/10,2*32768/10\.text/start:ld #y,dp\ssbxfrct\stm #x_new,ar2\stm #x_old+(size-1),ar3\stm #size,bk\stm #-1,ar0\POPTR PA1,#x_new\FIR5: ADD *AR2+0%,*AR3+0%,A\RPTZ B,#(size-1)\FIRS *AR2+0%,*AR3+0%,COEF\STH B,@y\MAR *+AR2(2)%\MAR *AR3+%\MVDD *AR2,*AR3+0%\BD FIR5\POPRTR PA1,*AR2\.end 用线性缓冲法和直接寻址法实现FIR 滤波器:N=5,Y(n)=a0x(n)+a1x(n-1)+a2x(n-2)+a3x(n-3)+a4x(n-4)程序:.title “fir1.asm ”\.mmrges\.def start\.bss y,1\XN .usect “XN ”,1\XNM1 .usect “XNM1”,1\XNM2 .usect “xnm2”,1\xnm3 .Usect “xnm3”,1\xnm4 .usect “xnm4”,1\a0 .usect “a0”,1\a1 .usect “a1”,1\a2 .usect “a2”,1\a3 .usect “a3”,1\a4 .usect “a4”,1\pa0 .set 0\pa1 .set 1\.data\table: .word1*32768/10\.word -3*32768/10\.word 5*32768/10\.word -3*32768/10\.word 1*32768/10\.text\start: ssbxfrct\stm #a0,ar1\rpt #4\mvpd table,ar1+\ld #xn,dp\portr pa1,@xn\fir1:ld @xnm4,t\Mpy @a4,a\ltd @xnm3\mac @a3,a\ltd @xnm2\mac @a2,a\ltd @xnm1,a\mac @a1,a\ltd @xn,a\mac @a0,a\ltha,@y\portw @y,pa0\bd fir1\portrpa1,@xn\.end 循环缓冲区和双操作数寻址方法实现:.title “firs ”\.mmregs\.def start\.bss new_data.1\.bss y,1\xn .usect “xn ”,5\a0 .usect “a0”,5\.data\tsble:.word 1*32768/10\.word 2*32768/10\.word 3*32768/10\.word 4*32768/10\.word 5*32768/10\.text\start:ssbxfrct\stm @a0,ar1\rpt #4\mvpd table,*ar1+\stm #xn+4,ar3\stm #a0+4,ar4\stm 5,bk\stm #-1,ar0\ld ##new_data\fir4:rptz a,#4\mac *ar3+0%,*ar4+0%,a\stha,@y\bd fir4\ldnew_data,bstl b,*ar3+0%\.end。
DSP复习资料
DSP最新考纲1、CPU总线结构基本概念。
2、直接寻址模式的基本寻址方法。
3、存储器映像寄存器包括的主要内容及地址。
4、CCS生成可执行文件的过程及载入可执行文件的方法。
5、片上ROM固化的内容及地址。
6、DSP系统的结构框图。
7、软件等待状态发生器的设置。
8、C语言中I/O端口的访问方法及插入汇编命令的方法。
9、自举的概念。
10、中断向量表地址的计算方法。
11、多路缓冲串口的发送和接收过程。
12、上电复位电路及手动复位电路设计方法。
13、定时器定时时间计算方法:定时周期 = CLKOUT×(TDDR+1)×(PRD+1)14、中断编程过程及方法。
15、布置的作业。
复习:1-01.数字信号处理:答:数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。
1-02.DSP系统的构成:1-03.数字信号处理器的特点:答:数字信号处理器(DSP)是一种特别适合于进行数字信号处理运算的微处理器,主要用于实时快速实现各种数字信号处理的算法。
哈弗结构;多总线结构;流水线结构;多处理单元;特殊的dsp指令;指令周期短;运算精度高;硬件配置高。
1-04.定点DSP:数据采用定点格式工作的DSP芯片。
浮点DSP:数据采用浮点格式工作的DSP芯片。
1-05.54x的特点:答:(1) 改进哈佛结构;(2) 8条总线(1条程序总线,3条数据总线,4条地址总线);(3) 高度专业指令系统;(4) 内核供电电压低。
优点:(1)功耗低;(2)高度并行性。
1-06.1. 总线结构:8条16位总线(1条程序,3条数据,4条地址)(1)PB:传送程序存储器的指令代码和操作数;(2)CB、DB:传送来自数据存储器的操作数;(3)EB传送写入数据存储器操作数;(4)PAB、CAB、DAB、EAB:传送地址信息。
DSP复习资料
第一章:DSP的实现方法:1.用专用的DSP芯片实现2.用通用的可编程DSP芯片实现3.用通用的单片机(如MCS-51、96系列等)实现4.在通用计算机系统中加上专用的加速处理机实现5.在通用的计算机(如PC)上用软件(如C语言)实现DSP系统工作过程1,对输入信号进行带限滤波和抽样;②进行A/D变换,将信号变换成数字比特流;③根据系统要求,DSP芯片对输入信号按照特定算法进行处理;④D/A转换,将处理后的数字样值转换为模拟信号;⑤平滑滤波,得到连续的模拟信号波形。
DSP系统特点:①接口方便②编程方便③稳定性好④精度高⑤可重复性好⑥集成方便DSP系统的设计1.定义系统性能指标2.采用高级语言进行性能模拟3.设计实时DSP应用系统4.借助开发工具进行软硬件调试5.系统集成与独立系统运行DSP芯片的分类按数据格式分——根据DSP芯片工作的数据格式来分类定点DSP芯片:价格较便宜、功耗较低,但运算精度稍低。
浮点DSP芯片:运算精度高,用C语言编程调试方便,但价格稍贵,功耗较大。
DSP系统的运算量1.按样点处理:即DSP算法对每一个输入样点循环一次。
2.按帧处理:针对DSP算法不是每个输入样点循环一次,而是每隔一定的时间间隔(即帧)循环一次。
第二章DSP芯片的基本结构大致分为CPU算术逻辑单元(ALU)、累加器(ACC)、乘累加单元(MAC)移位寄存器、寻址单元等存储器包括片内ROM、Flash、SARAM、DARAM等集成外设和专用硬件电路包括片内串行接口、主机接口、定时器、时钟发生器、锁相环及各种控制电路。
总线用于传送指令和数据;在CPU与存储器、集成外设和专用硬件电路等部分之间。
寻址方式1.程序寻址程序计数器PC:由程序地址产生单元产生。
例如,TMS320C54x 系列DSP芯片的PAGEN。
①包含需要取指的下一条指令所在的程序存储器地址,一般在存储器地址中按顺序产生;②当执行到子函数调用、中断时,将用相应的子函数入口地址或中断ISR入口地址来加载PC;③当执行到跳转语句时,会使用相应的跳转地址来加载PC。
dsp复习资料
dsp复习资料1.简述dsp芯⽚的主要特点。
1.哈佛结构:将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独⽴的存储器,每个存储器独⽴编址、独⽴访问。
2.多总线结构:可以保证在⼀个机器周期内可以多次访问程序空间和数据空间。
3.指令系统的流⽔线操作:DSP芯⽚⼴泛采⽤流⽔线以减少指令执⾏时间,从⽽增强了处理器的处理能⼒。
4.专⽤的硬件乘法器:DSP芯⽚中有专⽤的硬件乘法器,使得乘法累加运算能在单个周期内完成。
5:特殊的DSP指令:(例如)TMS320C54x中的FIRS和LMS指令专门⽤于系数对称的FIR滤波器和LMS 算法。
6.快速的指令周期7.硬件配置强2.结合你的专业⽅向,试举出⼀个dsp具体应⽤实例,并说明为什么要采⽤dsp.DSP芯⽚的⾼速发展,得益于集成电路技术的进步,巨⼤的市场需求信号处理:数字滤波、⾃适应滤波、FFT、频谱分析3. 请描述TMS320C54x的总线结构1个程序总线(PB) 传送从程序存储器来的指令代码和⽴即数3个数据总线(CB DB EB)连接各种元器件4个地址总线(PAB CAB DAB EAB) 传送执⾏指令所需的地址PB ⽤于装载指令代码和⽴即数CB DB ⽤于读取操作数EB ⽤于写⼊操作数地址总线负责其他地址总线的地址存储与装载4. TMS320C54x⽚内存储器⼀般包括哪些种类?如何配置TMS320C54x⽚内存储器。
TMS320C54x芯⽚有随机访问存储器(RAM)和只读存储器(ROM)RAM可分为两种:双访问RAM(DARAM)和单访问RAM(SARAM)⽚内存储空间⼀般包括:64K的程序空间,64K的数据空间和64K的I/O空间,TMS320C54x⽚内存储器可使⽤MP/MC位、OVLY位、DROM位进⾏相对应得配置。
①MP/⾮MC位:如果该位清0,则⽚内ROM映象在程序存储器空间;如果置1,则⽚内ROM不映象在程序存储器空间。
DSP复习资料
1.DSP芯片的特点:采用数据总线和程序总线分离的哈佛结构; 采用多总线结构,可同时进行取指令和多个数据存取操作; 采用流水线技术; 配有专用的硬件乘法-累加器; 具有特殊的DSP指令; 快速的指令周期; 硬件配置强; 支持多处理器结构; 省电管理和低功耗DSP芯片的分类:按基础特性:静态DSP芯片和一致性DSP芯片;按用途通用型DSP芯片和专用型DSP芯片;按数据格式定点DSP和浮点DSP;发展趋势DSP内核结构进一步改善; 存储器构架; SOC; 实时; 嵌入式的趋势2.流水线操作:概念指各条指令以机器周期为单位,相差一个时间周期而连续并行工作的情况。
六个操作阶段预取指P; 取指F;译码D;寻址A;读数R;执行X;引入的好处:减少指令执行时间,增加处理器的处理能力;产生冲突原因及解决方法:一.CPU访问DARAM会发生流水冲突的情况:同时从同一存储块中取指令和读操作数;同时对同一存储块进行写操作和读第二操作数。
CPU可通过写操作延迟一个周期,或通过插入一个空操作来解决流水线冲突;二.流水线允许CPU多条指令同时寻址CPU资源,当一个CPU资源同时被一个以上流水线级访问时,可能导致时序上的冲突,其中,有些冲突可以由CPU通过延迟寻址的方法自动解决,由些需要安排指令或者插入空操作NOP指令加以解决。
利用保护性MMR的指令,自动插入等待周期,也可以避免发生冲突。
3.程序存存储空间的划分和配置:192K字的存储空间: 程序、数据、I/O存储空间;( 1 ) 程序存储空间定义在片内还是片外是由MP\MC和OVL Y决定的。
MP\MC=1称为微处理器模式4000~FFFFH片外存贮器MP\MC=0,称为微计算机模式4000~EFFFH片外存贮器FF00~FFFFH片上存贮器OVL Y为决定0000H~3FFFH程序存贮空间的片外、片外分配控制。
OVL Y=1,0000H~007FH保留,程序无法占用,0080H~3FFFH片内DARAM.OVL Y=0,0000H~3FFFFH片外程序存贮空间。
DSP技术复习资料-完整版
即是longl1存放在AC0,……对应下去。
33.以下的汇编语句实现两个整型数的饱和加法,请编写C语言程序调用该汇编函数,实现整数20000和30000的饱和加法,并在CCS中输出和的值;(相关P209)
18.C55x支持3种类型的寻址方式,分别是绝对寻址模式、直接寻址模式和间接寻址模式;(P69)
19.什么是绝对寻址方式?C55x有几种绝对寻址方式,分别是什么?(P70)
绝对寻址方式:通过在指令中指定一个常数地址完成寻址;
有三种绝对寻址方式:(1)K16绝对寻址方式;(2)K23绝对寻址方式;
(3)I/O绝对寻址方式。
有四种间接寻址方式:(1)AR间接寻址;(2)双AR间接寻址;(3)CDP间接寻址;
(4)系数间接寻址。
22.指令MOV *abs16(#2002h), T2采用的是K16绝对寻址方式。设DPH=03h,该指令的功能是#k16=2002H,CPU从032002H处读取数据装入T2;(P81)
23.指令MOV port(@0), T2采用的是PDP直接寻址方式。设PDP=511,该指令的功能是PDP:Poffset=FF80H,CPU从FF80H读取数据进T2;
11.SATA位是寄存器ST3_55中的第5位,如果SATA=1,则执行A单元ALU的饱和模式;(P50)
12.MPNMC位是寄存器ST3_55中的第6位,该位使能或禁止片上ROM,如果MPNMC=0,则为微计算机模式,使能片上ROM;(P50)
13.VC5509A拥有160K字的片内存储器资源,其中有128K字RAM和32K字ROM。外部扩展存储空间由CE[3:0]组成,其中CE0的首字地址为0000 2000H,CE1的首字地址为00200000 H(P51~52)(P58~59)
DSP复习资料
DSP复习资料1、什么是数字信号处理器(DSP)?DSP 可以分为哪两类?a、数字信号处理器是⼀种专门⽤于实现各种数字信号处理算法的微处理器,通常可分为专⽤DSP和通⽤DSP两类。
b、⽤于实现某些特定数字信号处理功能的DSP 属于专⽤DSP。
什么是DSP?DSP:Digtal Signal Processing 数字信号处理技术典型的微处理器系统根据CPU特点,可以分为:1)通⽤单⽚机(Micro-controller) 8/16bit优点:成本低、体积⼩。
缺点:运算与扩展能⼒较弱。
编程:汇编、C语⾔。
2)PC及其兼容机(Micro-processor)缺点:成本⾼、体积⼤、实时性差。
优点:运算与扩展能⼒强,软件资源丰富。
编程:汇编及多种⾼级语⾔。
3)DSP(Digital Signal Processor)16/32bit特点:运算能⼒相当强、实时性、体积⼩、成本较低、功耗较低编程:汇编、C、C++。
4)专⽤微处理器特点:使⽤简单,灵活性差,主要⽤于⼀些批量⽣产的产品。
如家⽤电器的智能控制、⼯业控制。
DSP: Digtal Signal Processor 数字信号处理器TI公司从80代初推出了全球第⼀款“数字信号处理器”TMS320C010,从此引发了⼀场“数字信号处理”⾰命。
我们现在所说的DSP,如果没有特殊说明,⼀般均指“数字信号处理器”。
2、DSP 芯⽚的主要特点有哪些?DSP 从结构上进⾏了优化,使其更适合于哪类运算,从⽽可以⾼速实现多种不同的数字信号处理算法?DSP的特点:在⼀个指令周期内可完成⼀次乘法和⼀次加法运算程序和数据空间分开,可以同时访问指令空间和数据空间⽚内具有快速RAM,通常可通过独⽴的数据总线在两块中同时访问具有低开销或⽆开销循环及跳转的硬件⽀持快速的中断处理和硬件I/O⽀持具有在单周期内操作的多个硬件地址产⽣器可以并⾏执⾏多个操作⽀持流⽔线操作,使取指令、译码、取操作数和执⾏指令等可以重叠执⾏。
DSP复习资料
1.DSP 概念一为“digital signal processing”指数字信号处理技术,二为“digital signal processor”,指数字信号处理器。
2.数*构成及功能:输入—抗混叠滤波—A/D—数字信号处理—D/A—平滑滤波——输出。
将输入信号x(t)进行抗混叠滤波,滤掉高于折叠频率的分量,以防止信号频谱的混叠;经采样和A/D转换器,将滤波后的信号转换为数字信号x(n);数字信号处理器对x(n)进行处理,得数字信号y(n);经D/A转换器,将y(n)转换成模拟信号;经低通滤波器,滤除高频分量,得到平滑的模拟信号y(t)。
3.数*实现方法1)在通用计算机(PC机)上用软件(如Fortran、C语言)实现,但速度慢,不适合实时数字信号处理,只用于算法的模拟; 2)在通用计算机系统中加入专用的加速处理机实现,用以增强运算能力和提高运算速度。
不适合于嵌入式应用,专用性强,应用受到限制;3)用专用的DSP芯片实现,可用在要求信号处理速度极快的特殊场合,如专用于FFT、数字滤波、卷积、相关算法的DSP芯片,相应的信号处理算法由内部硬件电路实现。
用户无需编程,但专用性强,灵活性差; 4)用通用的可编程DSP芯片实现,具有可编程性和强大的处理能力,可完成复杂的数字信号处理的算法,在实时DSP领域中处于主导地位,兼顾速度和灵活性;5)用基于通用DSP核的ASIC芯片实现。
随着专用集成电路ASIC的广泛使用,可以将DSP的功能集成到ASlC中。
一般说来,DSP核是通用DSP器件中的CPU部分,再配上用户所需的存储器和外设,组成用户的ASIC,灵活性差,只适合某单一运算。
4.数*分类:按基础特性(工作时钟和指令):静态DSP芯片和一致性DSP芯片(TMS320C54x)。
按用途:通用型和专用型。
按数据格式(其精度或动态范围):定点DSP和浮点DSP。
5.哈弗结构特点是将程序和数据存储在不同的存储空间中,每个存储器独立编址,独立访问。
DSP复习资料
DSP原理与应用一、填空题1.按数据格式分类,DSP芯片可分为芯片和芯片。
2.TMS320C54X DSP中,TMS320C54X DSP有A和B两个累加器。
每个累加器的长度为位,分为、、和三部分。
3.为了达到快速进行数字信号处理的目的,DSP芯片一般具有程序和数据分开的总线结构,称为。
4.已知(80H)=10H,(81H)=40H,则先后执行指令LD 80H,16,B和ADD 81H,B两条指令后,B的内容是。
5. IMR为存储器映像寄存器,当要屏蔽某一个中断时,IMR中的相应标志位的值为。
6.HPI有和两种工作模式。
7.DSP芯片的电源分两种即为和,在无法同时加电的情况下,应先对加电。
8.直接寻址中,若CPL=0,则所寻址数据存储器的16位地址是由构成。
9.若缓冲器长度为BK=10,循环缓冲区的基地址为AR1=100h,则执行指令LD*+AR1(8)%,A;两次后,寻址的是地址单元。
二、简答题1.简述流水线操作的基本原理。
2.简述TMS320C54X DSP的堆栈的特点,并简述堆栈寻址入栈和出栈时的工作过程。
3. TMS320C54X DSP的定时器有哪几部分组成?各部分的作用是什么?4.在链接命令文件中,伪指令MEMORY和SECTIONS的作用是什么?5.右图为一个具有自动复位功能的电路,请简述其工作原理。
6. 在堆栈操作中,PC当前地址为4020h,SP当前地址为0013h后,运行PSHM AR7(1字指令)后,PC和SP的值分别是多少?并说明原因。
7. 若用DSP实现8点的FFT运算,采用*AR2+0B进行反向寻址,若初始AR2值为0000H,则AR0的低3位取值应为多少?请写出AR2值最后三位修改的顺序和修改后的AR2的值。
(填入表格的空格内)答:AR0的低3位取值应为二进制值。
8. TMS320C54X DSP的定时器中,若TDDR=0101B,PRD=0018H,试计算定时器的中断频率。
DSP技术复习资料-完整版
D S P技术复习资料-完整版-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANDSP(数字信号处理)技术复习资料1.简述数字信号处理器的主要特点(P4)。
数字信号处理(Digital Signal Processing)简称DSP。
主要特点:(1)采用哈佛结构;(2)采用多总线结构;(3)采用流水线结构;(4)配有专用的硬件乘法器-累加器;(5)具有特殊的寻址方式和指令;(6)支持并行指令操作;(7)硬件配置强,具有较强的接口功能;(8)支持多处理器结构。
2. 请给出数字信号处理器的运算速度指标(P6)。
(1)MAC时间:一次乘法和一次加法的时间;(2)FFT执行时间:运行一个N点FFT程序所需的时间;(3)MIPS:每秒执行百万条指令;(4)MOPS:每秒执行百万次操作;(5)MFLOPS:每秒执行百万次浮点操作;(6)BOPS:每秒执行十亿次操作。
(7)指令周期:执行一条指令所需的最短时间,数值等于主频的倒数;常用ns(纳秒)。
3.简述C55x的存储器配置情况(P11~12)。
(1)C55x采用统一的存储空间和I/O空间;(2)C55x的片内存储空间共有352KB(146K字),外部存储空间共有16MB(8M字);(3)存储区支持的存储器类型有异步SRAM,异步EPROM、同步DRAM 和同步突发SRAM;(4)C55x的I/O空间与程序/地址空间分开;(5)I/O空间的字地址为16位,能访问64K字地址;(6)当CPU读/写I/O空间时,在16位地址前补0来扩展成24位地址。
4.TMS320C55x的寻址空间是多少?当CPU访问程序空间和数据空间时,使用的地址是多少位(P51、P53~54)。
(1)C55x的寻址空间为16MB(24位地址,2^24 = 16777216B = 16MB)(2)CPU访问程序空间时,使用24位的地址;(3)访问数据空间时,使用23位地址,使用时23位地址左移一位将地址总线上的最低有效位(LSB)置0。
DSP复习资料
DSP复习资料1.美国德州仪器(TI)公司生产的TMS320系列芯片主推C2000系列,C5000系列,C6000系列,试分析这三种系列芯片的典型应用领域。
答:C2000系列面向工业产品控制,低价位;C5000系列面向通信类应用,性能好,低功耗,有利于便携式通信产品及其他仪器的推出;C6000系列面向高档次应用,如多媒体,图像处理及其他超高速处理场合。
2.数字信号处理的硬件实现可分为单片机实现和DSP实现,试对比分析两者各自主要的优点,缺点。
答:单片机:优点:接口性能好;缺点:总线结构是冯·诺依曼结构,系统复杂,特别是乘法运算速度慢;DSP:优点:哈佛总线结构,内部具有硬件乘法器等可以实现某些特定功能,具有很高的并行特性,专门的指令系统;缺点:灵活性差。
3.试分析冯·诺依曼结构与哈佛总线结构各自的特点。
答:冯·诺依曼结构:程序存储和数据存储共用一个存储空间。
编址依靠指令计数器提供的地址来区分是指向数据还是地址,只能串行执行,速度慢,数据吞吐量小;哈佛总线结构:程序与数据存储空间分开,各有独立的地址总线和数据总线,取指和读数可以同时进行,从而提高速度,允许直接在程序和数据之间进行信号传递,具有高速运算能力。
4.DSP区别于通用微处理器的重要标志?答:硬件乘法器。
5.简述定点DSP和浮点DSP的区别。
答:在定点DSP中,小数点的位置在一个数据字中是固定的。
而在浮点格式中,一个数据字被分成两部分,分别表示指数和底数,因此它所表示的数据的小数点随着指数的变化而浮动。
浮点格式所能表示的数据范围要比定点格式大得多,在大多数应用中都不需要特别考虑运算的溢出问题。
6. DSP中的地址产生单元-ARAU。
7.名词翻译:ARAU:辅助寄存器算术单元 Auxiliary Registers:辅助寄存器CALU:中央算术逻辑单元 Barrel shifter:桶型移位器Multiplier:硬件乘法器 Accumulator:累加器CSSU:比较、选择和存储单元8.TMS320C2000系列的内部总线结构?答:6条:其中是3条地址线,PAB程序地址总线,DRAB数据读地址总线,DWAB数据写地址总线;其他3条为PRDB程序读总线,DRDB数据读总线,DWEB数据写总线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP 复习资料 第一章:
● 数字信号处理系统组成:
x (t ) x(n ) y (n) y(t )
● DSP 芯片的特点:(1)采用哈佛结构(2)采用多总线结构(3)采用流水线结构(4)配有专用的硬件乘法——累加器(5)具有特殊的寻址方式和指令(6)支持并行指令操作(7)
硬件配置强,具有较强的接口功能(8)支持多处理器结构
● DSPD 的分类:(1)按分类标准的不同,DSP 分为定点DSP 芯片和浮点DSP 芯片(2)按照字长大小的不同,DSP 芯片划分为16位,24位,32位(3)按照生产厂家的不同,有TI 公司的TMS320系列,ADI 公司的Blackfin ,SHARC ,TigerSHARC 系列,飞思卡尔公司的MSC 系列
● TMS320C55X 芯片的组成:CPU,存储空间,片内外设
● C55XCPU 的内部总线结构:(1)程序地址总线(PAB):1组,24位 (2)程序数据总线(PB):1组,32位(3)数据读地址总线(BAB,CAB,DAB):3组,24位(4)数据读总线(BB ,CB,DB ):3组,16位(5)数据写地
址总线(EAB,FAB):2组,24位(6)数据写总线(EB,FB):2组,16位
C55X的CPU包含:指令缓冲单元(I单元),程序流单元(P单元),地址--数据流单元(A单元)数据运算单元(D单元),存储器接口单元(M 单元)和内部数据总线和数据总线
●C55X的CPU包含几个累加器:AC0--AC3每个累加器分为:低字节
(ACxL),高字节(ACxH)和8个保护位(ACxG)
39~32 31~16 15~0
AC0
AC1
AC2
AC3
●C54的兼容模式:(1)C54x兼容模式c54xcm_on和c54cm_off指
令来自C54x的代码(2)CPL模式影响直接寻址方式(3)ARMS 模式影响间接寻址模式
●C55x的寻址方式:(1)绝对寻址方式:通过在指令中指定一个常数
地址完成寻址。
(2)直接寻址方式;使用地址偏移量寻址(3)间接
寻址方式:使用指针完成寻址.
●COFF文件:COFF文件的基本单位是段,COFF目标文件有三个默认
段:(1)。
text段,通常包括可执行代码(2).data段,通常包括初始化数据(3)。
bss段,通常包括未初始化的变量保留存储空间。
●COFF为文件有两种基本类型的段:(1)初始化段:包括数据或代
码,。
text和。
data段是初始化段,以。
sect汇编指令创建的自定义初始化段也是初始化段。
(2)给未初始化的数据保留存储空
间。
.bss段是为初始化段,以。
uesct汇编指令创建的自定义段也是为初始化段。
●伪指令:是汇编语言程序的重要组成部分,包括汇编指令和连接
指令两部分,伪指令用于处理汇编和连接过程,最后产生的目标文件不包括它们
●宏指令:程序中常常包含执行多次的程序段,可以定义一个宏来
代替它,而不必重复写代码,在需要该程序段时只需引用宏(p183) ●C55x的指令流水线:(1)第一阶段为取指阶段(2)第二阶段为执
行阶段
●C55x的堆指针:(1)数据堆栈指针SP(2)系统堆栈指针SSP,(3)一
个相关的扩展寄存器SPH。
●寄存器:(1)XSP:扩展数据堆栈指针(2)SP:数据堆栈指针(3)XSSP:
扩展系统堆栈指针。
(4)SSP:系统堆栈指针(5)SPH:XSP和XSSP 的高位部分
●连接器有两条伪指令:MEMORY和SECTIONS,连接器对程序的重新
定位P177(地址重新定位和运行时间重新定位)
●COFF文件中的符号:外部符号是指在一个模块中定义,而在另一
个模块中使用,它可以用。
def,.ref,。
global来定义
(1)。
def在当前模块中定义,并可在别的模块中引用的符号。
(2)。
ref在当前模块中引用,但在别的模块中定义的符号.
(3).global可以是上面的任何一种情况。
●TMS320C55X可以使用两种指令集:助记符指令集和代数集。
●C55x指令集按操作类型可以分为6种:算术运算指令,位操作指令,
扩展辅助寄存器操作指令,逻辑运算指令,程序操作指令. (1)加法指令ADD(P121)
例题18:(1)ADD*AR3+,T0,T1;AR3间接寻址得到的内容与T0的内容想加,结果装入T1,并将AR3增1
寄存器执行前寄存器执行后
AR3
AR3
T0
T0
T1 T1
CARRY 数据存储器
数据存储器
0302
0302
(2)ADD*AR1,〈〈TO,AC1,AC0
,将AR1寻址得到的内容左移T0位与AC1想加,结果装入AC0
寄存器
执行前
寄存器
执行后 ACO
AC0 AC1
AC1 T0 T0
AR1 AR1
SXMD SXMD
M40 M40
ACOV0 CARRY CARRY
数据存储器 数据存储器 0200 0200
(2)减法指令SUB(p123)
例题19:SUB uns (*AR1),BORROW ,AC0,AC1;将CARRY 位求反,AC0减去由AR1寻址得到的内容以及 ;CARRY 的内容,并将结果装入AC1
寄存器 执行前 寄存器 执行后
AC0
AC0 AC1
AC1
AR1
数据存储器 数据存储器 0302 0302 (3)乘法指令MPYM (P125) 例题22
MPY AC1,AC0 ;AC0=AC0*AC1
执行前 执行后 AC0
AC1
AC1
M40
FART
AC0V1
(4)乘加指令MACM(P127)
例题23:(1)MACMR
*AR1,*CDP,AC2;AC2=AC2+(*AR1)
*(*CDP)执行前
执行后
AC2 AC2
AR1 AR1
CDP CDP
数据存储器数据存储器
0202
(2)MACMR uns(*AR2+),uns(*AR3+),AC3;AC3=(*AR2)*(*AR3)+AC3
;AC3=AR2+1,AR3=AR3+1 执行前 执行后 行前 执行后 AC3
AC3
AR2
AR2 AR3 AR3
M4 M4
SATD
FRCT
数据存储器 数据存储器
0202
(5)乘减指令MASM(P128)
例题24:MASR T1,AC0,AC1;AC1=AC1--AC0*T1
AC0
AC1
AC1
T1
T1
M40
ACOV1 ACOV1
FRCT FACT
●C55x软件开发流程(程序转换成可执行的程序)
C/C++C/C++编译器(。
汇编器COFF目标文件(。
obj)链接器可执行的COFF文件(.out)用户采用C/C++语言或汇编语言编写源文件(。
C或。
asm),经C或C++编辑器,汇编器生成COFF格式的目标文件(.obj),再用链接器进行链接,生成在C55x课执行的目标代码(.out)
●程序阅读题
(1)mov *AR0+,AC0
add *AR0+,AC0
mov AC0,T0
(2)mppy *AR0+,*AR1,AC0
mpym *AR0+,*AR1+,AC1
add AC1,AC0
mpym *AR0+,*AR1+,AC1
add AC1,AC0
Mov AC0,T0
注释:(1)将AR0指向的数据方向放到累加器AC0中,AC0加1 (2)将AR0指向的数据与累加器AC0相加,同时,AC0寄存器加1
(3)将累加器AC0的值写入T0寄存器
(4)将AR0和AR1指向的数据相乘放到AC0中,同时,AR0加1,AR1加1
(5)将AR0和AR1指向的数据相乘放到AC1中,同时,AR0加1,AR1加1
(6)将AC1中的数据和AC0中的数据相加放到AC0中
(7)将AR0和AR1指向的数据相乘放到AC1中,同时,AR0加1,
AR1加1
(8)将AC1中的数据与AC0中的数据相加,放到AC0中(9)将AC0中的数据放到寄存器T0中。