嵌入式体系结构_第1页
嵌入式体系结构_第2页
嵌入式体系结构_第3页
嵌入式体系结构_第4页
嵌入式体系结构_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式体系结构设计嵌入式系统的第一步确定指令系统,以指导选择嵌入式内核嵌入式微内核嵌入式微处理器嵌入式控制器嵌入式DSPSOC(在片系统)本章介绍微处理器(ARM),DSP(SHARC)一、计算机体系结构1、冯.诺依曼结构五大部件:ALU,Controller, Memory, Input,Output核心部件:早期是CPU,后来是Memory存储程序(stored program):程序以数字形式存在,可以与数据一样被读写指令执行次序:顺序跳转程序计数器Program Counter(PC)2、哈佛体系结构程序与数据有单独的存储器PC只能指向程序存储器目前仍然广泛应用指令cache与数据ca

2、che适用于实时信号处理(大部分的DSP)大量数据流入计算机数据必须在精确的时间内处理完成3、RISC与CISCCISC:复杂指令系统计算机RISC:精简指令系统计算机RISC一般性能比CISC高4、汇编语言种类1)堆栈型汇编Push aPush bAddPop c2)累加器型汇编Load aAdd bStore c3)通用寄存器型汇编Load $1, ALoad $2, BAdd $3, $1, $2Store $3, C二、ARM处理器属于RISC体系自己不制造VLSI设备,只提供授权ARM:只设计内核的英国公司ARM内核系列 ARM720TARM720T特性 Features: 32/1

3、6-bit RISC architecture (ARMv4T) Power-efficient three-stage pipeline 32-bit ALU and high-performance multiplier 8 KByte unified cache Memory Management Unit (MMU) Extensive debug facilities: Embedded ICE-RT real-time debug unit JTAG interface unit Interface for direct connection to Embedded Trace M

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

5、低位放最低位字节(低序) 字的最低位放最高位字节(高序)2.1 汇编书写模式属于通用寄存器型(GPR)汇编LoadStore结构数据必须装载到寄存器才能运算Load从内存装到寄存器Store从寄存器存储到内存ARM的寄存器16个通用寄存器r0r15r15 同时做PC1个特殊寄存器:当前程序状态寄存器CPSR在进行运算时被自动设置CPSR高四位为NZCVN:负数Z:为0C:进位V:溢出数据运算1)寄存器型指令:add r0, r1, r2r1寄存器的内容加r2寄存器的内容,存到r0算术运算Add加Adc进位加Sub减Sbc进位减Rsb:逆减Rsc:进位逆减Mul:乘Mla:乘且累加逻辑运算And

6、:按位与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)立即数寻址Add r0, r1, #23)寄存器间接寻址LDR r0, r1, #44)自动变址LDR r0,r1, #16!r1的内容加16,然

7、后用这个新值作为地址5)后变址LDR r0, r1, #16把r1为地址的内存数据载入到r0,然后把r1的值加入16并把新值赋值给r16)例子:x=(a+b)-c;ADR r4, aLDR r0, r4ADR r5, bLDR r1, r5ADD r3, r0, r1ADR r4, cLDR r2, r4SUB r3, r3, r2LDR r4, xSTR r3, r42.3 控制流1)B指令分支指令分支目标计算例子B 100表示当前程序计数器的值加上400。(100字长)2)条件码EQ:等于0,Z1NE:不等于0,Z0CS:进位置1,C1CC:进位清除:C0MI:负数,N1PL:非负数:N0

8、VS:溢出,V1VC:非溢出:V0HI:无符号大于,C1且Z0LS:无符号小于或等于,C0或Z1GE:有符号小于或等于,NVLT:有符号小于,NVGT:有符号大于,Z0且NVLE:有符号小于或等于,Z1或NV3)例子:If ( a b )X=5;Y=c+d;ElseX=c-d;ADR r4, aLDR r0, r4ADR r4, bLDR r1, r4CMP r0, r1;a=b, goto fblockMOV r0, #5ADR r4, xSTR r0, r4ADR r4, cLDR r0, r4ADR r4, dLDR r1, r4ADD r0, r0, r1;a+bADR r4, yST

9、R r0, r4B after;branch to endfblock: ADR r4, cLDR r0, r4ADR r4, dLDR r1. r4SUB r0, r0, r1;a-bADR r4, xSTR r0,r4after:同样c程序,用汇编可以写成不需要跳转的。如下:ADR r4, aLDR r0, r4ADR r4, bLDR r1, r4CMP r0, r1;ab?MOVLT r0, #5ADRLT r4, xSTRLT r0, r4ADRLT r4, cLDRLT r0, r4ADRLT r4, dLDRLT r1, r4ADDLT r0, r0, r1;a+bADRLT r

10、4, ySTRLT r0, r4ADRGE r4, cLDRGE r0, r4ADRGE r4, dLDRGE r1. r4SUBGE r0, r0, r1;a-bADRGE r4, xSTRGE r0,r42.4 函数X=a+b;Foo(x);Y=c-d;汇编:BL foo;分支链接分支前将当前pc值存在r14中。返回只要MOV r15, r14调用过程必须注意不覆盖r14嵌套调用上述方法不适用于嵌套调用嵌套调用时,将返回地址存堆栈Void f1(int a)f2 (a);f1 LDR r0, r13STR r13!, r14STR r13!, r0BL f2SUB r13, #4LDR r

11、13!, r15三、SHARC处理器使用哈佛结构的DSP例子:R1=DM(M0,I0), R2=PM(M8,I8);!注释LABEL: R3=R1+R2;每条指令用分号结束,!开始为注释存储器结构SHARC指令48位基本数据字32位地址位32位片上带大量的存储器系列中的21061有1Mbit片上存储器存储器包括PM:程序存储器DM:数据存储器芯片外还能够加更多的存储器数据类型32位IEEE单精度浮点40位IEEE扩展精度浮点32位整数主要设计为浮点密集型运算适用DSP改进的哈佛结构程序存储器可以包含数据与指令数据可以并行取出3.2 体系结构整数操作使用R0到R15,16个整数寄存器浮点操作使用

12、F0到F15,16个浮点寄存器所有数据都是40bit,如果32位数据存储时,存在高32位三个数据功能单元一个ALU一个乘法器一个移位器三个模式寄存器算术状态(ASTAT)粘着(STKY)模式1(MODE 1)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=ABS Rx绝对值Rn=PASS Rx将Rx拷贝到RnRn=Rx and Ry 逻辑加Rn=Rx or Ry

13、逻辑或Rn=Rx xor Ry逻辑异或Rn=Not Rx逻辑非Rn=Min(Rx, Ry)求最小值Rn=Max(Rx, Ry)求最大值Rn=Clip Rx by Ry在-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=ABS FxFn=Pass FxFn=RND Fx舍入Fn=Scalb Fx by Ry 用Ry换算成Fx的指数Rn=Mant Fx提取Fx的尾数Rn=LOGB Fx把Fx的指数换算成整数Rn=FIX F

14、x, Rn= TRUNC Fx 将浮点转换成整数Rn=FLOAT Rx by Ry, FLOAT Rx 将整数换成浮点Fn=RECIPS Fx为倒数创建种子Fn=RSQRTS Fx为倒数平方根创建种子Fn=Fx COPYSIGN Fy把Fy的符号拷贝到FxFn=Min(Fx, Fy)Fn=Max(Fx, Fy)Fn=Clip Fx by Fy3.5 SHARC的移位操作Rn=LSHIFT Rx by Ry逻辑移位Ry位Rn=Rn OR SHIFT Rx by Ry逻辑移位并逻辑或Rn=ASHIFT Rx by Ry算术移位Rn=Rn OR ASHIFT Rx by Ry算术移位并逻辑或Rn=R

15、OT Rx by Ry循环移位Ry位Rn=BCLR Rx by Ry清Rx中的一位Rn=BSET Rx by RY 设Rx中的一位Rn=BTGL Rx by Ry 切换Rx中的1位BTST Rx by Ry测试Rx中的1位Rn=FDEP Rx by Ry将Rx中的域累计进Rn中Rn=Rn OR FDEP Rx by Ry 使用OR操作累计并符号扩展Rn=FEXT Rx by Ry 提取Rx中的域Rn=EXP Rx提取指数域Rn=EXP Rx (Ex)从ALU中提取指数域Rn=LEFTZ Rx 提取引导0的个数Rn=LEFTO Rx 提取引导1的个数Rn=FPACK Fx 将32位浮点数转换为1

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

温馨提示

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

评论

0/150

提交评论