dsp复习资料1
- 格式:doc
- 大小:193.50 KB
- 文档页数:7
DSP复习要点第一章:1.DSP 技术应用非常广泛,例如:移动通信系统、VOIP 、HFC 、软件无线电、数码相机、DB DIGITAL AC-3、汽车多媒体系统、噪声消除算法、机顶盒(SET-TOP-BOX )、飞机驾驶模拟器、全球定位系统(GPS )、雷达/声纳、巡航导弹、F-117发射激光制导灵巧炸弹、图像识别、图像鉴别、医院用的B 超、CT 、核磁共振、卫星遥感遥测;天气预报,地震预报,地震探矿;风动试验;数字化士兵,数字化战争;高清晰度电视、虚拟仪器2. 主要DSP 芯片厂商有:AD 公司、AT&T 公司(现在的Lucent 公司)、 Motorola 公司、TI 公司(美国德州仪器公司)、NEC 公司。
3. 3. DSP 芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。
DSP 芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP 指令,可以用来快速的实现各种数字信号处理算法。
4.冯·诺伊曼(Von Neuman )结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
5. 哈佛(Harvard )结构该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
6. DSP 芯片的特点:7. 根据芯片工作的数据格式,按其精度或动态范围,可将通用DSP 划分为定点DSP 和浮点DSP 两类。
7. 一般来说,选择DSP 芯片时应考虑的重要因素:运算速度、价格、功耗第二章4. 改进型的哈佛结构是采用双存储空间和数条总线,即一条程序总线和多条数据总线,允许在程序空间和数据空间之间相互传送数据。
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~0AC0AC1AC2AC3●C54的兼容模式:(1)C54x兼容模式c54xcm_on和c54cm_off指令来自C54x的代码(2)CPL模式影响直接寻址方式(3)ARMS 模式影响间接寻址模式●C55x的寻址方式:(1)绝对寻址方式:通过在指令中指定一个常数地址完成寻址。
一、(1)DSP芯片设置溢出保护位(2)十进制数的截尾与舍入(3)通用DSP芯片是否提供除法指令(4)定标值与计算精度地关系(5)TMS320C54X为浮点或浮点芯片(6)TMS320C54X芯片采用的结构(7)DSP芯片的片内外设包括那些(8)移位寄存器的用途(9)TMS320C54X芯片的CPU寄存器、外设寄存器映射到那个存储空间(10)DSP芯片是否可以通过软件等待状态产生机制使得CPU可以访问慢速I/O设备(11)链接器用于定义存储器并为块分配存储位置的指令(12)当在text段中出现bss指令时,bss是否结束text段(13) 那些指令为非屏蔽中断(14)奈氏抽样定理,为保持信息不丢失,抽样频率。
(15) 16位DSP系统可以达到的精度。
(16) DSP芯片都有MAC硬件的功能(17)哈佛结构的特点(18) 对于DSP芯片的硬件地址产生器的作用(19) 下面对于JTAG标准的作用(20) 定点DSP芯片在进行算术运算中,采用何种数据类型(21) X与Y相乘的结果其定标值Q的计算(22)对于指令缓存CACHE的作用(23)TMS320C54X处理器实现定标的指令(24)影响TMS320C54X存储器结构的状态/控制位(25)DSP的并行结构及片内RAM的双重存取能力,使得CPU可以在一个机器周期内进行多少个存储器操作(26) TMS320C54X的数据总线、程序总线、地址总线有那几组(27)TMS320C54X芯片的可编程开关模块能够在访问程序或数据存储器越过存储块边界时自动插入一个周期(28)TMS320C54X芯片进行外部总线操作时,“程序写”与“数据写”都要用到的总线(29)指令RETE与RET的区别(30)浮点格式分为哪几部分(31)TMS320C54X的串行口有那些(32)一条k段流水能处理n条指令需要多少个时钟周期内。
(33)TMS320C54x的CPU包括那些单元(34)正向溢出处理和负向溢出处理后的最大值,溢出标志位。
第一章概述、第三章存储空间第四章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最新考纲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期末复习整理第⼀章绪论1.1 DSP的基本概念1.2.2 DSP芯⽚的特点1) 采⽤哈佛结构2) 采⽤多总线结构3) 采⽤流⽔线结构4) 具有专⽤的硬件乘法-累加器5) 具有特殊的寻址⽅式和指令6) ⽀持并⾏指令操作7) 硬件配置强,具有较强的借⼝功能8) ⽀持多处理器结构1.2.3 DSP芯⽚的分类1)按照数据格式的不同DSP芯⽚可以划分为:定点DSP芯⽚和浮点DSP芯⽚2)按照字长⼤⼩的不同,DSP芯⽚可以划分为:16位、24位、32位3)按照不同⽣产⼚家的产品系列划分,有TI公司的TMS320系列ADI公司的Blackfin、SHARC、TigerSHARCA系列飞思卡尔公司的MSC系列习题1.2简述DSP系统组成1.3DSP芯⽚与普通单⽚机相⽐有什么特点1.5DSP芯⽚有哪些主要特点第⼆章TMS320C55x的硬件结构2.1 TMS320C55x的总体结构2.1.1 C55x CPU内部总线结构C55x CPU含有12组内部独⽴总线,即:程序地址总线(PAB):1组,24位;程序数据总线(PB): 1组,32位;数据读地址总线(BAB、CAB、DAB):3组,24位;数据读总线(BB、CB、DB):3组,16位;数据写地址总线(EAB、FAB):2组,24位;数据写总线(EB、FB):2组,16位。
2.1.2 C55x 的CPU组成C55x的CPU包含5个功能单元:指令缓冲单元(I单元)、程序流单元(P单元)、地址-数据流单元(A单元)、数据运算单元(D单元)和存储器接⼝单元(M单元)。
I单元包括32X16位指令缓冲队列和指令译码器。
此单元主要接收程序代码并负责放⼊指令队列,由指令译码器来解释指令,然后再把指令流传给其他的⼯作单元(P单元、A单元、D单元)来执⾏这些指令P单元包括程序地址发⽣器和程序控制逻辑。
此单元产⽣所有程序空间地址,并送到PAB总线。
A单元包括数据地址产⽣电路(DAGEN)、附加的16位ALU和1组寄存器,此单元产⽣读/写数据空间地址,并送到BAB、CAB、DAB总线。
DSP复习资料一、填空题1、TMS320C54x的CPU状态控制寄存器应包括处理器工作方式控制及寄存器PMST、状态寄存器ST0和状态寄存器ST1。
P15-162、TMS320C54x系列DSP芯片的总线结构包括1条程序总线、3条数据总线和4条地址总线。
P103、试写出两种存储器映像寄存器寻址指令:POP 、LDM 。
P332-。
4、TMS320C54xDSP的Q12.3定标的最大数据精度是35、54x系列的存储空间在不扩展的情况下共可提供192kW的可寻址存储空间。
6、54X系列DSP的CPU结构单元中专用于通信Viterbi编码的是比较、选择和存储单元(CSSU)。
P147、编写命令链接文件时所用的两个命令分别是MEMORY和SECTIONS。
P1028、通用DSP芯片使用SUBC完成除法运算的限制条件是两个操作数必须为正数。
9、TMS320C54x系列芯片的存储空间在不扩展的情况下应包括64K字程序存储空间、64K字数据存储空间和64K字I/O存储空间,总共192K字可寻址存储空间。
P1710、负小数0.05在16位定点DSP的汇编语言中的正确描述是.word -5*32768/100。
P1642-。
11、TMS320C54xDSP的Q.15定标的数据范围是+1~-1,其最大数据精度是1512、TMS320C54x的地址总线访问方式中,程序读、写访问的是PAB总线。
P1013、54x系列DSP的6条独立流水线操作分别是预取指、取指、取操作数和执行指令。
P214、DSP的中断处理包括接收中断请求、中断确认和执行中断服务程序三个流程。
P237-23815、DSP芯片根据数据运算方式分为定点和浮点DSP,54x系列属于16位定点DSP。
P416、TMS320C54x系列芯片的存储空间在不扩展的情况下应包括64K字程序存储空间、64K字数据存储空间和64K字I/O存储空间。
同9题17、试写出两种寻址32位数的指令:DADD、DSUB。
基于TMS320LF240x系列DSP复习资料一、填空题1.中央算术逻辑部分主要组成包括:中央算术逻辑单元CALU,32位累加器ACC,输出定标移位器。
P222.TMS320LF240x系列DSP芯片的地址映像被组织位3个可独立选择的空间:程序存储器空间(64K字),数据存储器空间(64K字);输入/输出(I/O)空间(64K字)。
P273.数据存储器空间有3个片内的DARAM块,分别为B0,B1,B2, B0块既可配置为数据存储器,也可配置为程序存储器。
CNF=0, DARAM B0被映射到片外程序空间;CNF=1, DARAM B0 被映射到片内程序空间。
复位时,B0被配置为数据存储空间。
P28\304.TMS320LF2407系列DSP芯片,系统复位后程序指针指向0000h处,程序从该处开始执行,一般要在该处加一条跳转指令使CPU自动转入用户程序的入口。
0000h-003Fh用于存储系统的中断向量表,当有中断请求信号时,CPU从该处取出中断子程序的入口地址。
P285.0060h-007Fh为双口存储器DARAM(B2),为用户数据区。
0200h-02FFh为双口存储器DARAM(B0),当CNF=0时为用户数据区。
0300h-03FFh为双口存储器DARAM(B1),用户数据区。
0800h-0FFFh为2K字的单口存储器SARAM,为用户数据区。
P296.在使用数据存储器时,将数据存储器空间一共分为512页,每一页由128个字组成。
在程序编写用指令LDP,可加载数据页范围为0-511,使用该指令后,将影响ST0的低9位。
P627.中断屏蔽寄存器IMR和中断标志寄存器IFR存放在数据存储器的第0页,其地址分别为:0004h和0006h。
P40\438.要访问I/O 空间,可以IN 和OUT两条指令。
9.TMS320LF240x系列DSP的寻址方式有:立即寻址方式,直接寻址方式,间接寻址方式。
DSP原理与应用复习纲要一、书后习题1、简述数字信号处理器的主要特点。
1-32、TI公司DSP芯片的主要产品系列。
经典产品有:TMS320C1X、TMS320C25、TMS320C3/4X、TMS320C5X、TMS320C8X。
目前主流系列:TMS320C2000、TMS320C5000、TMS320C6000。
3、给出存储器的两种主要结构,并分析其区别。
1-44、给出数字信号处理器的运算速度指标,并给出具体含义。
1-65、TMS320C55x DSP CPU有哪些特征和优点?2-16、TMS320C55x DSP的内部结构由哪几部分组成?2-27、简述指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)和数据计算单元(D)的组成和功能。
2-38、TMS320C55x DSP有哪些片上外设?2-59、TMS320C55x的寻址空间是多少?当CPU访问程序空间和数据空间时,使用地址是多少位的?理解程序空间和数据空间的寻址方式。
2-610、符合IEEE 1149.1标准的测试/仿真接口(JTAG)的引脚有哪几个?查阅资料了解JTAG接口的功能。
2-7JTAG最初是用来对芯片进行测试的。
JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。
11、TMS320C5509A的复位(/RESET)引脚上出现何种电平会产生复位?复位后,程序入口地址是什么?12、TMS320C55x DSP支持哪三种寻址模式?3-113、查阅资料,了解.text,.bss,.data,.sect,.usect等汇编伪指令的使用方法。
附录14、查阅资料,了解链接伪指令MEMORY和SECTIONS的使用方法。
附录15、理解指令:MOV *AR3+<<#16, AC1 。
3-4指令功能是把AR3指向的地址里面的内容左移16位(二进制左移16位相当于十六进制左移四位,所以在右边补四个0),把AR3指向的地址里面的内容左移后的内容送进AC1,之后指针AC3自加一次。
1.简述dsp芯片的主要特点。
1.哈佛结构:将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。
2.多总线结构:可以保证在一个机器周期内可以多次访问程序空间和数据空间。
3.指令系统的流水线操作:DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。
4.专用的硬件乘法器:DSP芯片中有专用的硬件乘法器,使得乘法累加运算能在单个周期内完成。
5:特殊的DSP指令:(例如)TMS320C54x中的FIRS和LMS指令专门用于系数对称的FIR滤波器和LMS算法。
6.快速的指令周期7.硬件配置强1.1什么是哈佛结构和冯.诺伊曼结构,有什么区别?冯.诺伊曼结构采用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行的。
哈佛结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和采访,可对程序和数据进行独立传输。
2.结合你的专业方向,试举出一个dsp具体应用实例,并说明为什么要采用dsp.DSP芯片的高速发展,得益于集成电路技术的进步,巨大的市场需求●信号处理:数字滤波、自适应滤波、FFT、频谱分析●通信:调制解调、数据压缩/解压缩、数据加密/解密,回声消除●语音:语音合成、语音识别●图形/图像:图像处理、机器人视觉●军事:雷达、声纳、导航、制导●仪器仪表:频谱分析仪●自动控制:机器人控制、电机控制●医疗:医学超声、监护系统●家用电器:IP电话、可视电话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不映象在程序存储器空间。
②OVL Y位:如果该位置为1,则片内RAM分别映象在程序存储器空间和数据存储器空间;如果该位清0,则片内RAM只映象在数据存储器空间。
③DROM 位:如该位设置为1,则片内ROM的一部分映象在数据存储器空间;如果清0,则片内ROM 的使用取决于MP/非MC位。
5. TMS320C54x芯片的cpu包括哪些部分?其功能是什么?CPU的基本组成及功能如下:CPU状态和控制寄存器:用于设置各种工作条件和工作方式的状态以及存储器配置状态和控制信息。
40位算术逻辑单元(ALU)40位累加器A和B:两者共同完成算数运算和逻辑运算。
桶形移位寄存器:使处理器能完成数字定标,位提取,对累加器进行归一化处理等操作。
乘法器/加法器单元:在单周期内完成一次乘法累加运算。
比较,选择和存储单元(CSSU):是专门为Viterbi算法设计的加法,比较,选择操作的硬件单元。
指数编码器:用于支持单周期指令EXP的专用硬件。
6. TMS320C54x提供哪几种数据寻址方式?举例说明它们是如何寻址的?(1)立即数寻址LD #10,A(2)绝对地址寻址STL A,*(y)(3)累加器寻址READA x(4)直接寻址LD @x,A(5)间接寻址LD *AR1,A(6)存储器映射寄存器寻址LDM ST1,B(7)堆栈寻址PSHM AG7. 在循环寻址方式中,如何确定循环缓冲的起始地址?如循环缓冲大小为32,其起始地址必须从哪儿开始?循环寻址中,循环缓冲区大小寄存器用于确定循环缓冲区的大小。
大小为R的循环缓冲区必须从一个N位边界开始,其中,N是满足条件2^n>R的最小整数。
如,R=32转换为100000,即N=6,所以循环缓冲区必须从低6位为0的地址XXXX XXXX XX00 0000开始。
8. 双数据存储器操作数间接寻址使用哪几种类型?所用辅助寄存器只能是那几个?其特点是什么?双数据存储器操作数间接寻址类型为*ARx,*ARx-,*ARx+,*ARx+0%.所用辅助寄存器只能是AR2,AR3,AR4,AR5.其特点是:占用程序空间小,运行速度快,在一个机器周期内通过两个16位数据总线(C和D)读两个操作数.指令中Xmem表示从DB总线上读出的16位操作数,Ymem表示从CB总线上读出的16位操作数.9. 汇编器和链接器如何对段进行管理?汇编器对段的处理是通过段伪指令来区别各个段的,并将段名相同的语句汇编在一起。
汇编器的5条伪指令可识别汇编语言程序的各个部分:.bss 未初始化段,给变量保留空间.usect 未初始化段,如定义一个缓冲区,在一个未初始化的段中保留空间.text 已初始化段,即代码段,该段包含程序代码.data 已初始化段,一般是指常数表,该段包含已初始化的数据.sect 已初始化段,如定义一段完成某项功能的代码为一个段,可以命名。
链接器对段的处理,有两个主要任务:(1)把一个或多个COFF目标文件中的各种段作为链接器的输入,经链接后在一个可执行的COFF输出模块中建立各个输出段(2)为各个输出段选定存储器地址。
为完成以上任务,链接器有两条命令:(1)MEMORY命令用来定义目标系统的存储器配置图,包括对存储器各部分的命名,以及规定他们的起始地址和长度。
(2.)SECTION命令告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器中的什么位置。
10. 汇编程序中的伪指令有什么作用?其中段定义伪指令有哪些?初始化段和未初始化段有何区别?伪指令不生成最终代码(即不占据存储单元)但对汇编器、链接器有重要的指示作用。
包括段定义、条件汇编、文件引用、宏定义等。
段定义伪指令:.text——此段存放程序代码.data——此段存放初始化了的数据.bss——此段存入未初始化的变量.sect ‘名称’——定义一个有名段,放初始化了的数据或程序代码区别:当汇编器遇到初始化段时将停止当前段的汇编,然后将金接着的程序代码或数据汇编到指定的段中,直到再次遇到另一条这些指令为止,各个段中的数据都是连续安排到存储器中的。
当汇编器遇到未初始化段时,并不结束当前段的汇编,只是暂时从当前段脱离出来,并开始对新的段进行汇编,两伪指令可以出现在一个已初始化段的任何位置上,而不会对他的内容发生影响。
11. 链接命令文件有什么作用?如何使用MEMORY命令和SECTIONS命令?链接命令文件内容和汇编程序中段定义伪指令有联系吗?答:链接命令文件(.cmd文件)通过段定位控制命令,分配程序代码空间、数据代码空间、程序运行空间、堆栈空间。
在链接命令文件中可以使用MEMORY和SECTIONS命令来定义目标系统的存储器配置图及段的映射。
有联系。
段伪指令SECTIONS负责告诉连接器将输入文件中用.text、,data、.bss、.sect 等伪指令定义的段配置到MEMORY命令中。
12. 叙述块重复操作指令RPTB的使用。
答:块重复指令RPTB用于将一个指令块重复执行规定的次数。
使用时要先用STM指令在块重复计数器BRC中装入N值,N比块循环的次数少1,N值的范围是0到65535。
块重复起始地址是RPTB指令的下一条指令的地址。
块重复结束地址是重复块的最后一条指令的最后一个字的地址,由RPTB指令的操作数规定。
对一个数组进行初始化:X[5]={0,0,0,0,0},然后对数组X[5]中的每个元素加1。
.mmrege.def start.bss x,5.textStart:STM #x,AR1 LD #1,16,B RPT #4STL A,*AR1+LD #1,16,BSTM #4,BRCSTM #x,AR4RPTB next-1ADD *AR4,16,B,ASTH A,*AR4+next:LD #0,B.end13. 当TMS320C54xCPU接收到可屏蔽的硬件中断时,满足哪些条件才能响应中断?答:可屏蔽的硬件中断只有在以下条件满足时才能被响应:(1)优先级最高的中断。
(2)状态寄存器ST1中的INTM位是0,表示允许可屏蔽中断。
(3)中断屏蔽寄存器IMR中相应的位是1。
14. C54x的中断向量表是如何重定位的?P120重新映象中断向量地址。
C54x的中断向量表是可重定位的,即在DSP复位时,中断向量表的起始地址固定为0FF80H,复位后,此表的起始地址可由用户指定.中断向量可重新被映象到程序存储器的任何一个128字页开始的地方(除保留区域外).中断向量地址由PMST中的中断向量指针IPTR(9位)和中断向量号(0~31)左移两位后组成。
15. 定点DSP中如何表示小数?用Q15格式表示小数。
正数:乘以32768;负数:取绝对值,其绝对值部分乘以32768再取反加1.16在小数乘法中使用了置FRCT标志为1的指令,如果将该语句取消,那么例7-4和例7-5中乘法运算的结果是多少?什么时候应该设置FRCT标志?在小数乘法编程时,应事先将FRCT置位(用指令:SSBX、FRCT)。
.两个带符号位相乘,得到的乘积带有两个符号位,即产生了冗余符号位。
用双操作数指令编程计算y=∑aixi,已知其中a1=0.1,a2=0.2,a3=-0.3,a4=0.4X1=0.8,x2=0.6,x3=-0.4,x 4=-0.2.title “chef.asm”.mmregs.def start,_c_int00.bss x,4.bss a,4.bss y,1.datatable .word 1*32768/10 .word 1*32768/10.word 2*32768/10 .word -3*32768/10.word 4*32768/10.word 8*32768/10.word -4*32768/10.word -2*32768/10.text_c_int00b startnopnopstart:SSBX FRCTSTM #0,SWWSRSTM #x,AR1RPT #7MVPD table,*AR1+STM #x,AR2STM #A,AR3STM #Y,AR4RPTZ A,#3MAC *AR2+,*AR3+,ASTH A,*AR4done:B done17. 定时器由哪些部分构成?说明其工作原理。