02-第二章、嵌入式体系结构 嵌入式系统(浙江大学)_第1页
02-第二章、嵌入式体系结构 嵌入式系统(浙江大学)_第2页
02-第二章、嵌入式体系结构 嵌入式系统(浙江大学)_第3页
02-第二章、嵌入式体系结构 嵌入式系统(浙江大学)_第4页
02-第二章、嵌入式体系结构 嵌入式系统(浙江大学)_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章、嵌入式体系结构嵌入式指令集嵌入式CPU存储器IO设计SOC设计嵌入式系统的第一步确定指令系统,以指导选择嵌入式内核嵌入式微内核嵌入式微处理器嵌入式控制器嵌入式DSPSOC(在片系统)本章介绍微处理器(ARM),DSP(SHARC)一、计算机体系结构1、冯.诺依曼结构五大部件:ALU,Controller,Memory,Input,Output核心部件:早期是CPU,后来是Memory存储程序(storedprogram):程序以数字形式存在,可以与数据一样被读写指令执行次序:顺序跳转程序计数器ProgramCounter(PC)2、哈佛体系结构程序与数据有单独的存储器PC只能指向程序存储器目前仍然广泛应用指令cache与数据cache适用于实时信号处理(大部分的DSP)大量数据流入计算机数据必须在精确的时间内处理完成3、RISC与CISCCISC:复杂指令系统计算机RISC:精简指令系统计算机RISC一般性能比CISC高4、汇编语言种类1)堆栈型汇编PushaPushbAddPopc2)累加器型汇编LoadaAddbStorec3)通用寄存器型汇编Load$1,ALoad$2,BAdd$3,$1,$2Store$3,C二、ARM处理器属于RISC体系自己不制造VLSI设备,只提供授权ARM:只设计内核的英国公司ARM内核系列ARM720TARM720T特性Features:

32/16-bitRISCarchitecture(ARMv4T)Power-efficientthree-stagepipeline32-bitALUandhigh-performancemultiplier8KByteunifiedcacheMemoryManagementUnit(MMU)Extensivedebugfacilities:

–EmbeddedICE-RTreal-timedebugunit

–JTAGinterfaceunit

–InterfacefordirectconnectiontoEmbeddedTraceMacrocell(ETM)集成ARM内核的芯片ARM720T-CirrusLogic公司EP7312三星:应用于手持设备与网络设备Intel:StrongArm系列&Xscale系列Motorola:手持设备(由68改过来)CirrusLogic:EP7312ARM内核ARM内核被授权给数百家厂商ARM主要应用于无线局域网、3G、手机、手持设备、有线网络通讯应用形式:集成到专用芯片中作控制器ARM体系结构ARM7采用冯.诺依曼体系ARM9采用哈佛体系对汇编程序员透明ARM基本数据类型两种:32位长的字4个8bit的字节地址32位地址长度可以配置为低序或者高序

字的最低位放最低位字节(低序)

字的最低位放最高位字节(高序)2.1汇编书写模式属于通用寄存器型(GPR)汇编Load-Store结构数据必须装载到寄存器才能运算Load从内存装到寄存器Store从寄存器存储到内存ARM的寄存器16个通用寄存器r0…r15r15同时做PC1个特殊寄存器:当前程序状态寄存器CPSR在进行运算时被自动设置CPSR高四位为NZCVN:负数Z:为0C:进位V:溢出2.2数据运算1)寄存器型指令:addr0,r1,r2r1寄存器的内容加r2寄存器的内容,存到r0算术运算Add加Adc进位加Sub减Sbc进位减Rsb:逆减Rsc:进位逆减Mul:乘Mla:乘且累加逻辑运算And:按位与Orr:按位或EOR:按位异或BIC:位清除移位运算LSL:逻辑左移(添0)LSR:逻辑右移(添0)ASL:算术左移ASR:算术右移ROR:循环右移RRX:带进位位的循环右移比较指令CMP:比较CMN:比较求反TST:按位测试TEQ:按位测试求反移动指令MOV:移动MVN:移动求反内存访问指令LDR:装入STR:存储LDRH:装入半字STRH:存储半字LDRSH:装入半个带符号字LDRB:装入字节STRB:存储字节ADR:设置寄存器为地址2)立即数寻址Addr0,r1,#23)寄存器间接寻址LDRr0,[r1,#4]4)自动变址LDRr0,[r1,#16]!r1的内容加16,然后用这个新值作为地址5)后变址LDRr0,[r1],#16把r1为地址的内存数据载入到r0,然后把r1的值加入16并把新值赋值给r16)例子:x=(a+b)-c;ADRr4,aLDRr0,[r4]ADRr5,bLDRr1,[r5]ADDr3,r0,r1ADRr4,cLDRr2,[r4]SUBr3,r3,r2LDRr4,xSTRr3,[r4]2.3控制流1)B指令分支指令分支目标计算例子B#100表示当前程序计数器的值加上400。(100字长)2)条件码EQ:等于0,Z=1NE:不等于0,Z=0CS:进位置1,C=1CC:进位清除:C=0MI:负数,N=1PL:非负数:N=0VS:溢出,V=1VC:非溢出:V=0HI:无符号大于,C=1且Z=0LS:无符号小于或等于,C=0或Z=1GE:有符号小于或等于,N=VLT:有符号小于,N≠VGT:有符号大于,Z=0且N=VLE:有符号小于或等于,Z=1或N≠V3)例子:If(a>b){X=5;Y=c+d;}ElseX=c-d;ADRr4,aLDRr0,[r4]ADRr4,bLDRr1,[r4]CMPr0,r1 ;a<b?BGEfblock ;ifa>=b,goto

fblockMOVr0,#5ADRr4,xSTRr0,[r4]ADRr4,cLDRr0,[r4]ADRr4,dLDRr1,[r4]ADDr0,r0,r1 ;a+bADRr4,ySTRr0,[r4]Bafter ;branchtoendfblock:ADRr4,cLDRr0,[r4]ADRr4,dLDRr1.[r4]SUBr0,r0,r1 ;a-bADRr4,xSTRr0,[r4]after:同样c程序,用汇编可以写成不需要跳转的。如下:ADRr4,aLDRr0,[r4]ADRr4,bLDRr1,[r4]CMPr0,r1 ;a<b?MOVLTr0,#5ADRLTr4,xSTRLTr0,[r4]ADRLTr4,cLDRLTr0,[r4]ADRLTr4,dLDRLTr1,[r4]ADDLTr0,r0,r1 ;a+bADRLTr4,ySTRLTr0,[r4]ADRGEr4,cLDRGEr0,[r4]ADRGEr4,dLDRGEr1.[r4]SUBGEr0,r0,r1 ;a-bADRGEr4,xSTRGEr0,[r4]2.4函数X=a+b;Foo(x);Y=c-d;汇编:BLfoo ;分支链接分支前将当前pc值存在r14中。返回只要MOVr15,r14调用过程必须注意不覆盖r14嵌套调用上述方法不适用于嵌套调用嵌套调用时,将返回地址存堆栈Voidf1(inta){f2(a);}f1 LDRr0,[r13]STRr13!,[r14]STRr13!,[r0]BLf2SUBr13,#4LDRr13!,r15三、SHARC处理器使用哈佛结构的DSP例子:R1=DM(M0,I0),R2=PM(M8,I8); !注释LABEL: R3=R1+R2;每条指令用分号结束,!开始为注释3.1存储器结构SHARC指令48位基本数据字32位地址位32位片上带大量的存储器系列中的21061有1Mbit片上存储器存储器包括PM:程序存储器DM:数据存储器芯片外还能够加更多的存储器数据类型32位IEEE单精度浮点40位IEEE扩展精度浮点32位整数主要设计为浮点密集型运算适用DSP改进的哈佛结构程序存储器可以包含数据与指令数据可以并行取出3.2体系结构整数操作使用R0到R15,16个整数寄存器浮点操作使用F0到F15,16个浮点寄存器所有数据都是40bit,如果32位数据存储时,存在高32位三个数据功能单元一个ALU一个乘法器一个移位器三个模式寄存器算术状态(ASTAT)粘着(STKY)模式1(MODE1)3.3整数运算Rn=Rx+Ry

加Rn=Rx-Ry

减Rn=Rx+Ry+CI

进位加Rn=Rx-Ry+CI-1 借位减Rn=(Rx+Ry)/2 平均COMP(Rx,Ry) 比较Rn=Rx+CI 进位加Rn=Rx+CI-1 借位加Rn=Rx+1 加1Rn=Rx-1 减1Rn=-Rx 求反Rn=ABSRx 绝对值Rn=PASSRx 将Rx拷贝到RnRn=RxandRy

逻辑加Rn=RxorRy

逻辑或Rn=Rxxor

Ry

逻辑异或Rn=NotRx 逻辑非Rn=Min(Rx,Ry) 求最小值Rn=Max(Rx,Ry) 求最大值Rn=ClipRxbyRy

在[-Ry,Ry]范围内截取Rx溢出处理溢出导致最大范围的值不是循环3.4浮点运算Fn=Fx+FyFn=Fx-FyFn=ABS(Fx+Fy)Fn=ABS(Fx-Fy)Fn=(Fx+Fy)/2COMP(Fx,Fy)Fn=-FxFn=ABSFxFn=PassFxFn=RNDFx

舍入Fn=Scalb

FxbyRy

用Ry换算成Fx的指数Rn=Mant

Fx

提取Fx的尾数Rn=LOGBFx

把Fx的指数换算成整数Rn=FIXFx,Rn=TRUNCFx

将浮点转换成整数Rn=FLOATRxbyRy,FLOATRx将整数换成浮点Fn=RECIPSFx

为倒数创建种子Fn=RSQRTSFx

为倒数平方根创建种子Fn=FxCOPYSIGNFy

把Fy的符号拷贝到FxFn=Min(Fx,Fy)Fn=Max(Fx,Fy)Fn=ClipFxbyFy3.5SHARC的移位操作Rn=LSHIFTRxbyRy

逻辑移位Ry位Rn=RnORSHIFTRxbyRy

逻辑移位并逻辑或Rn=ASHIFTRxbyRy

算术移位Rn=RnORASHIFTRxbyRy

算术移位并逻辑或Rn=ROTRxbyRy

循环移位Ry位Rn=BCLRRxbyRy

清Rx中的一位Rn=BSETRxbyRY 设Rx中的一位Rn=BTGLRxbyRy

切换Rx中的1位BTSTRxbyRy

测试Rx中的1位Rn=FDEPRxbyRy

将Rx中的域累计进Rn中Rn=RnORFDEPRxbyRy

使用OR操作累计并符号扩展Rn=FEXTRxbyRy

提取Rx中的域Rn=EXPRx 提取指数域Rn=EXPRx(Ex) 从ALU中提取指数域Rn=LEFTZRx 提取引导0的个数Rn=LEFTORx 提取引导1的个数Rn=FPACKFx

将32位浮点数转换为16位浮点数Rn=FUNPACKRn

将16位浮点数转换为32位浮点数3.6数操作状态位ASTAT中有AZ,AU,AN,AV,AC,AI,MN,MV,MU,MI,SZ,SV,SSSTKY中溢出位AOS,MOS,MVS,MUS,MIS具体含义略3.7内存操作装入存储体系结构提供用来控制装入和存储的特殊寄存器两个数据地址发生器(DAG)一个是数据存储器一个是程序存储器DAG能够象对数组一样进行访问数据3.8DAG寻址模式1)最简单的立即值R0=DM(0x20000000)或者R0=RM(_a)或DM(_a)=R02)绝对地址3)具有更新的后修改模式R0=DM(I3,M1)DM(I2,1)=R14)基址加偏移量寻址R0=DM(M1,I0)如I0=0x20000000,M1=4将0x20000004数据装入R05)循环缓冲区6)反位寻址应用于FFT3.9程序例子X=(a+b)-cR0=DM(_a);R1=DM(_b);R3=R1+R2;R2=DM(_c);R3=R3-R2;DM(_x)=R3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论