1第一章1、DSP特点:(1)哈佛总线结构,将程序存储器和数据存储器分离开,各有独立的地址总线和数据总线,可同时进行指令的读取和数据运算,加快了数据处理和运算速度。(2)流水线技术,将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。程序中的指令仍是一条条顺序执行,但可以预先取若干条指令,并在当前指令尚未执行完时,提前启动后续指令的另一些操作步骤,加速程序的运行过程。(3)片内多总线并行技术(4)软、硬件等待功能(5)独立的乘法器和加法器(6)低功耗体积小价格低(7)DMA通道和通信口,有一组或多组独立的DMA总线,与CPU的程序、数据总线并行工作,实现了指令的读取和数据的运算等独立进行,互不干扰,大大加快了运算速度。(8)中断和定时器2、我们实验室现在做的是有源电力滤波器(APF),就是通过这个装置产生相反无功功率,有效的补偿电网和其他一些用电设备的无功功率和谐波,使电网质量得到提高。其中最核心的地方就在于用DSP编程采集控制主电路中的电流指令,通过电流的有效检测,来产生实时准确的补偿无功功率。我们采用了TMS320LF2812芯片,它有高级仿真特性:分析和设置断点;提供实时硬件调试,即在处理器运行过程中修改存储器、外设和寄存器的内容;ANSIC/C++编译器/汇编程序/连接器,且C语言的编译效率非常高。(1)、FPGA(FieldProgrammableGateArray),现场可编程门阵列:FPGA采用逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。FPGA具体芯片(APA150)应用如下:如上图所示,是以APA150为核心器件设计的CAN总线复接系统。CAN2(ControllerArewNetwork,控制器局域网)是一种多主方式的串行通讯总线,在工业系统中具有广泛的应用。但是它的直接通信距离和通信速率是一对矛盾。本系统借助FPGA/VHDL技术,把15路125kbps的CAN信号复接成2.048Mbps的E1信号,从而利用现有的时分复用通信线路或光纤实现了高速、远距离传输。PCA82C250是CAN总线的物理接口芯片。(2)、ASSP(applicationspecificstandardproduct),应用专用标准产品:ASSP的优势是是用一个可重复使用的低成本系统提供高性能模拟、低成本数字控制以及缩短上市进程。这些ASSP提供可配置的混合信号模拟功能作为优化的外设模块,器件的其余部分作为许多平台共享可重复使用的模块。快闪微控制器(MCU)是实现共享功能的晶核(host)。单个ASSP除了全部补充有计时器与串行端121等数字外设之外,现在还可集成高精度模数转换器(ADC)、数模转换器(DAC)、运算放大器(Oa)、电源电压监控器(SVS)以及液晶显示驱动器。ASSP具体应用实例:可编程的ASSP系列器件——MercuyMercury器件将高速收发器ASSP功能与高性能PLD内核集成在一起,可支持最基本和高带宽、高速数据传输速率的应用。(3)、ASIC(applicationspecificintegratedcircuit),专用集成电路:是指应特定用户要求和特定电子系统的要求而设计制造的集成电路,具有可编程性和设计的方便性。有两种ASIC,并且每种有它自己的优点--门阵列和标准单元。每种都有各自的结构。这些不同的结构导致了不同的制造工艺,不同的成本,不同的研发时间。ASIC具体应用实例:STR22ASIC串行通信在STR22电子脱扣器中采用了ASIC芯片,实现了电子脱扣器电路方面的所有功能,包括信号检测、电流设定、脱扣报警、串行通信等功能。通过串行通信可以对ASIC的寄存器、内部RAM进行读写操作,设定参数等。下图为单片机实习IPC-ASIC置信原理3第二章1.请查找资料选择合适的RAM芯片,完成扩展RAM的原理图:要求有完整的芯片引脚连接关系,并提供该芯片型号及关键参数资料。思考当1片RAM容量64k时,如何进行扩展。答:选用CY7C1021V(SRAM)进行扩展,其容量为64K16bit的。扩展后的原理图如附件所示。CY7C1021V参数如下:•3.3Voperation(3.0V–3.6V)•Highspeed—tAA=10/12/15ns•CMOSforoptimumspeed/power•LowActivePower(Lversion)—576mW(max.)•LowCMOSStandbyPower(Lversion)—1.80mW(max.)•Automaticpower-downwhendeselected•Independentcontrolofupperandlowerbits•Availablein44-pinTSOPIIand400-milSOJ•Availableina48-BallMiniBGApackage当1片RAM容量64k时,则所需地址线少于16根,用译码器等芯片即可。将DSP芯片多余的地址线接到译码器的输入端,如将A15,A14.A13分别接到一个38译码器的输入端,将其一个输出接到需要扩展的RAM上,就可以将RAM扩展成16K或32K。2.在进行RAM扩展或外部IO访问时,如果外部设备(外部RAM或IO设备)较慢,插入内部等待状态后仍无法实现时序配合,如何解决这个问题?答:对于此类问题,可以通过软件建立握手信号来解决。在DSP和外设之间连接一根握手信号线。DSP不断检测外设的Ready信号,当检测到Ready信号以后就对外设进行访问;或者用中断方式,当外设做好被访问的准备以后,给DSP一个中断信号,DSP响应中断,访问外设。3、TMS320LF240x指令集采用3种基本的存储器寻址方式:立即寻址方式、直式和间接寻址方式。立即寻址:指令使用的常数立即操作数,立即操作数前需要加符号#为前缀#49直接寻址:将数据区64k分成512个页,寻址时页地址存于页指针DP,指供7位偏移量完成寻址。LDP#32;设置页指针=32LACC10h;将当前页偏移16位置的存储器的值装入累加器间接寻址:通过8个辅助寄存器进行寻址,16位存储器地址可直接存放在器中。如以下语句将地址1010h的数据装入aCCSLARAR0,#1010h;将长立即数1010h装入辅助寄存器AR0MAR*,AR0;指定AR0为当前辅助寄存器LACC*;将当前辅助寄存器内容送入累加器。任何支持间接寻址操作数的指令都可修改辅助寄存器。4第三章1、主程序中:外设事件的中断使能为被使能,CPU内核级的6个可屏蔽中断中,相应中断也被使能。在外设事件发生时,首先将其在外设中断控制器中的标志位置1,从而引起CPU内核的INT1—INT6中的一个产生中断。开中断,进入等待中断发生的状态。子程序中:中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器1会引起INT2中断),在相应GISR子程序中,取出PIVR的值,根据其值再转向相应的SISR;SISR程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。例如:下面以通用定时器的中断程序进行说明:#include2407c.hioportunsignedintport000c;#defineT1MS0x9c3f/*9c3fH=40000-1*/voidinterruptgptime1(void);/*中断服务程序,定时器计数T1MS次时中断调用*/主程序设置:voidgp_init(void);/*定时器初始化*/unsignedintuWork,nCount,uWork1;int*pf;intj=0;main(){inti;nCount=0;asm(setcINTM);/*关中断,进行关键设置时不允许发生中断,以免干扰*/*WDCR=0x6f;*WDKEY=0x5555;*WDKEY=0xaaaa;/*关闭看门狗中断*/*SCSR1=0x81fe;/*设置DSP运行频率40m*/(*MCRB)=0;uWork=(*MCRC);/*将PWM12/IOPE6设置成通用I/O口,以控制实验箱上指示灯*/uWork&=0x0ffbf;(*MCRC)=uWork;gp_init();/*设置定时器*/*IMR=0x2;/*使能定时器中断(INT2)*/5*IFR=0xffff;/*清除中断标志*/asm(clrcINTM);/*开中断*/while(1){}}中断服务子程序定义:voidinterruptgptime1(void)/*中断服务程序定义,须使用interrupt声*/{uWork=(*PIVR);/*读外设中断向量寄存器*/switch(uWork){case0x27/*T1PINT,0x27为定时器1的周期中断的向量值*/{(*EVAIFRA)=0x80;/*清除中断标志T1PINT*/nCount++;if(nCount=100)/*计数100此100ms=0.1秒*/{uWork=(*PEDATDIR);/*设置指示灯状态翻转一次*/uWork|=0x4000;uWork^=0x0040;(*PEDATDIR)=uWork;j=!j;(*PCDATDIR)=j+0x100;port000c=uWork1++;uWork1%=0x100;nCount=0;}break;}}}voidgp_init(void){*EVAIMRA=0x80;/*使能T1PINT即通用定时器1周期中断*/*EVAIFRA=0xffff;/*清除中断标志*/*GPTCONA=0x0000;6*T1PR=T1MS;/*周期寄存器=40000*/*T1CNT=0;/*计数初值=0*/*T1CON=0x1040;/*启动计数器*/}2、通常情况下复位和NMI中断处理程序应该进行哪些工作?答:当有复位信号时,系统将回到主程序开始地址处开始执行。在访问无效的地址时,不可屏蔽中断NMI就发出请求,程序转到不可屏蔽中断向量入口地址0024H处,没有与NMI相对应的控制寄存器。7第四章1.编写完整的程序,包括链接命令文件,实现从x1,X2,x3,x4中找出最大值。答:补充程序如下:main(){intx1,x2,x3,x4,max;initial();if(x1=x2)max=x1;elsemax=x2;if(max=x3)max=x3;if(max=x4)max=x4;}2.编写完整的程序,包括链接命令文件,实现y=a1*x1+a2*x2+a3*x3+a4*x4答:补充程序如下:main(){intx1,x2,x3,x4,max;initial();y=a1*x1+a2*x2+a3*x3+a4*x4}3.编写完整的程序,驱动IO端口A,循环输出0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80答:main(){unsignedintuWork;inta={0X01,0X02,