arm7tdmi 总线接口

56
1 TM T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D ARM7TDMI 总总总总

Upload: erno

Post on 18-Mar-2016

190 views

Category:

Documents


4 download

DESCRIPTION

ARM7TDMI 总线接口. ARM7TDMI 外部接口. 存储器接口 中断 调试接口 协处理器接口. ARM7TDMI 接口信号. A[31:0]. Data and Address. D[31:0]. BUSEN. ABE. DBE. TBE. Bus Control. APE, ALE. nENIN. ARM7TDMI. nENOUT. nMREQ, SEQ. Memory Interface. BIGEND. nRW. Memory Access Control. BL[3:0]. ECLK. MCLK. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ARM7TDMI  总线接口

1TMT H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

ARM7TDMI 总线接口

Page 2: ARM7TDMI  总线接口

2TM 212v05 ARM7TDMI Bus Interface

ARM7TDMI 外部接口

存储器接口 中断 调试接口 协处理器接口

Page 3: ARM7TDMI  总线接口

3TM 312v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号

MCLK

nWAIT

A[31:0]

D[31:0]

nMREQ, SEQ

nRW

LOCK

ABEDBE

nTRANS

ABORT

Clocks and Clock Control

MemoryManagement

MemoryInterface

Data andAddress

BusControl

MemoryAccessControl

nM[4:0]

MAS[1:0]BL[3:0]

APE, ALETBE

ECLK

TBIT

BUSEN

nENIN

BIGEND

ARM7TDMInENOUT

Page 4: ARM7TDMI  总线接口

4TM 412v05 ARM7TDMI Bus Interface

时钟与时钟控制 MCLK – 输入

处理器工作的时钟。 静态设计的 ARM 通过延长时钟周期来访问慢速的设备。

nWAIT – 输入 在 ARM 内部与 MCLK 相与。 必须在 MCKL 为低的相位阶段改变。 容许该信号从一个周期扩展到另一个周期,延长总线访问周期。

ECLK – 输出 核心逻辑的时钟的输出。 在正常和调试状态下反映内部时钟。

ph1 & ph2 – 内部信号 双相位非覆盖的内部时钟。 处理器内部工作周期。

Page 5: ARM7TDMI  总线接口

5TM 512v05 ARM7TDMI Bus Interface

MCLK

nWAIT

时钟控制 - nWAIT 控制Phase 1 Phase 2 Phase 2Phase 1

ph2Internal Clock

ECLK

ph1Internal Clock

Page 6: ARM7TDMI  总线接口

6TM 612v05 ARM7TDMI Bus Interface

时钟控制 – 扩展 MCLK

MCLK

nWAIT

Phase 1 Phase 2 Phase 2Phase 1

ph2Internal Clock

ECLK

ph1Internal Clock

Page 7: ARM7TDMI  总线接口

7TM 712v05 ARM7TDMI Bus Interface

数据总线 32 位 双或单向数据总线

BUSEN = 0 配置双向数据总线。 BUSEN = 1 配置单向数据总线。

字节、半字及字访问 .

读取数据必须有效且稳定到相位 2 结束。 写入数据在相位 1 改变,保持稳定贯穿相位 2 。 nENOUT – 输出 ( 和 nENIN – 输入 ) : 数据总线控制

如果采用片外双向数据总线的话,可以用来控制数据总线的方向。

Page 8: ARM7TDMI  总线接口

8TM 812v05 ARM7TDMI Bus Interface

数据总线配置 (1)

DIN[31:0]

DOUT[31:0]

32 D[31:0]32

ARM7TDMMacrocell

EmbeddedICE

macrocell

G

DoutlatEn

bMDen

Page 9: ARM7TDMI  总线接口

9TM 912v05 ARM7TDMI Bus Interface

数据总线配置 (2)

MCLK

DIN[31:0]

DOUT[31:0]

D[31:0]

READ WRITE READ

DIN1

DIN1

DOUT DIN2

DIN2

DOUT

Page 10: ARM7TDMI  总线接口

10TM 1012v05 ARM7TDMI Bus Interface

地址总线

32 位 (4G 字节 ) 寻址能力。 默认时序

在前一周期的相位 2 阶段变为有效,保持稳定贯穿当前周期的相位 1 阶段。 流水线地址。

地址时序可以通过 APE (或 ALE )移位。 为获得较好的系统性能,建议使用默认时序。地址可以锁存到存储器系统中。

Page 11: ARM7TDMI  总线接口

11TM 1112v05 ARM7TDMI Bus Interface

地址总线控制 APE 和 ALE – 输入

ARM 建议两个信号都为高,以便有最长的时间进行地址译码。 任何一个信号都可以连接到在数据访问期间需要稳定地址的设备。

APE: 地址流水线使能 APE = 1 – 地址是流水线的 ( 在后续的相位 2 提供 ). APE = 0 – 重新定时地址改变的时序,从 MCLK 的下降沿开始。 控制对 A[31 : 0] 的透明锁存。

ALE : 地址锁存使能 控制对 A[31 : 0] 的透明锁存。 仅用于已有的系统设计,因为它比 APE 更复杂。

Page 12: ARM7TDMI  总线接口

12TM 1212v05 ARM7TDMI Bus Interface

流水线地址时序( 推荐设置 )

ALE 和 APE 均为高

MCLK

A[31:0]

ALE

APE

Phase 2Phase 1

Address

D[31:0]

(in)Dx

Page 13: ARM7TDMI  总线接口

13TM 1312v05 ARM7TDMI Bus Interface

APE 对地址时序的作用

MCLK

A[31:0]

ALE

APE

Phase 2Phase 1

Address

D[31:0]

(in)Dx

Page 14: ARM7TDMI  总线接口

14TM 1412v05 ARM7TDMI Bus Interface

总线三态控制 (1)

ABE – 输入 : 地址总线使能 当 ABE 为低时,下面的信号处于高阻状态: A[31:0], nRW, LOCK, MAS[1:0],

nOPC, and nTRANS

DBE – 输入 : 数据总线使能 当 DBE 为低时, D[31:0] 处于高阻状态。

TBE – 输入 : 测试总线使能 当 TBE 为低时,下面的信号处于高阻状态: D[31:0], A[31:0], nRW, LOCK,

MAS[1:0], nOPC, and nTRANS 在 ABE 和 DBE 都为低时,情况一样。

Page 15: ARM7TDMI  总线接口

15TM 1512v05 ARM7TDMI Bus Interface

总线三态控制 (2)

ABE

DBE

D[31:0](out)

A[31:0]

TBE

Page 16: ARM7TDMI  总线接口

16TM 1612v05 ARM7TDMI Bus Interface

存储器访问控制 nMREQ – 输出 : 存储器请求 .

低有效,指示在接下来的周期中进行存储器访问。 SEQ – 输出 : 连续地址访问

高有效,指示在接下来的周期中地址不变或大一个操作数(字或半字) nRW – 输出 : 非读 / 写

区分存储器读写访问 LOCK – 输出 : 锁定操作

指示一条交换指令正在执行,接下来的两个处理器总线周期是不可见的。 MAS[1:0] – 输出 : 存储器访问大小

指示字、半字或字节访问。 BL[3:0] – 输入 : 数据总线上的字节区段锁存使能

容许数据由小数构成。

Page 17: ARM7TDMI  总线接口

17TM 1712v05 ARM7TDMI Bus Interface

存储器控制

nRWMAS[1:0]

MAS[1:0] 指示数据传送大小 ( 8, 16 或 32 位 )

Address

Data

A[31:0]

D[31:0]

nMREQSEQ

Cycle Type

LOCKnTRANS nOPC

MCLK

Page 18: ARM7TDMI  总线接口

18TM 1812v05 ARM7TDMI Bus Interface

字节区段锁存使能ARM7TDMI

D [7:0]

D [15:8]

31 GD[31:0] 8

8 G

BL[0]

MCLK

nWAITECLK

BL[1]

Page 19: ARM7TDMI  总线接口

19TM 1912v05 ARM7TDMI Bus Interface

32 位存储器接口

nOE

BWE[

3:0]

32

nWAI

TM

AS[1

:0]MCLK

ID[31:0]A[31:0]A[31:2] 32

BL[3

:0]

ARM7TDMIMacrocell

Memory Control

Memory32-bit

Board ASICBoard ASIC

nRW

nMRE

Q, S

EQ

Page 20: ARM7TDMI  总线接口

20TM 2012v05 ARM7TDMI Bus Interface

16 位存储器接口

16 位存储器接口x2

Board ASICBoard ASIC

nOE

BW

E[1

:0]

nWA

ITM

AS

[1:0

]MCLK

ID[15:0]

A[31:0]A[31:2] 32

BL[

3:0]

ARM7TDMIMacrocell

Memory Control

Memory16-bit

nRW

nMR

EQ

, S

EQ

3216

MU

XC

, TS

TATE

TSTA

TEA’ [1]

Page 21: ARM7TDMI  总线接口

21TM 2112v05 ARM7TDMI Bus Interface

使用字节区段锁存APE

A[31:0],MAS[1:0]

nWAIT

D[31:0]

BL[3:0]

MCLK

D[15:0] latchedD[31:16] latched

ECLK

0x3 0xC

Page 22: ARM7TDMI  总线接口

22TM 2212v05 ARM7TDMI Bus Interface

改变操作状态

T 位指示 ARM 核的状态。 高 - Thumb 状态, 低 - ARM 状态

MCLK

nMREQ, SEQ

A[31:0]

nWAIT

TBIT

D[31:0]

MAS[1:0]

ARM Instr.T Instr.

01 - Half Word 10 - Word

N-Cycle

BX Instr. Destination Address

Page 23: ARM7TDMI  总线接口

23TM 2312v05 ARM7TDMI Bus Interface

取指 在 ARM 状态,指令是字( 32 位 )

在 THUMB 状态,指令是半字( 16 位) 指令可以从 32 位数据总线的高或低半段取得。 取决于 Endian 配置和 A[1] 的状态。

Endian ConfigurationLittle

BIGEND = 0Big

BIGEND = 1

A[1] = 0

A[1] = 1

D[15:0] D[31:16]

D[15:0]D[31:16]

Thumb Instruction Fetches

Page 24: ARM7TDMI  总线接口

24TM 2412v05 ARM7TDMI Bus Interface

取数据 字数据取操作类似于 ARM 状态的指令取操作。 半字数据的取操作类似于 THUMB 状态的指令取操作。 字节数据的取操作取决于 Endian 配置和 A[1:0] 的状态。

Endian ConfigurationLittle

BIGEND = 0Big

BIGEND = 1

A[1:0] = 00 D[7:0] D[31:24]

D[23:16]D[15:8]

A[1:0] = 10 D[23:16] D[15:8]

D[7:0]D[31:24]A[1:0] = 11

A[1:0] = 01

Byte Data Fetches

Page 25: ARM7TDMI  总线接口

25TM 2512v05 ARM7TDMI Bus Interface

周期类型

非连续 (N) 在接下来的周期中的地址与前一个地址无关。

连续 (S) 在接下来的周期中的地址与前一个地址一样或大一个操作数(字或半字)。

内部 (I) 处理器正在执行一个内部操作,同时,没有有用的预取执行。

协处理器寄存器传送 (C). 处理器和协处理器之间通讯,不涉及存储器访问,但 D[31:0] 用于传送数据。

合并的内部连续 (IS) I 和 S 周期的特殊组合,容许优化存储器访问。

Page 26: ARM7TDMI  总线接口

26TM 2612v05 ARM7TDMI Bus Interface

周期类型

nMREQ SEQ Cycle Type 0 0 Non-sequential 0 1 Sequential 1 0 Internal 1 1 Coprocessor register transfer

nMREQ SEQ Cycle Type0 0 Non-sequential0 1 Sequential1 0 Internal1 1 Coprocessor register transfer

Page 27: ARM7TDMI  总线接口

27TM 2712v05 ARM7TDMI Bus Interface

非连续周期

在接下来的周期中 (nMREQ = 0) 且 (SEQ = 0) 下一个周期将是非连续访问。 指令译码 nMREQ and SEQ 条件提前一个周期建立。 A[31:0] 在接下来的周期的相位 2 阶段有效。 对于读操作, D[31:0] 必须在相位 2 结束时有效。

典型地 对于基于 DRAM 的系统的初始的行访问, N 周期要占用更长的时间。 处理器停下来(通过停止时钟)一个或更多的完整的时钟周期(等待状态),以便容许较长的访问时间。

Page 28: ARM7TDMI  总线接口

28TM 2812v05 ARM7TDMI Bus Interface

典型的 N 周期MCLK

nMREQ

SEQ

A[31:0]

D[31:0]

nRAS

nCAS

N - Cycle

(DRAM Row Address Strobe)

(DRAM Column Address Strobe)

MCLK 可以扩展,通过停止 MCLK 或者声明 nWAIT 。

Page 29: ARM7TDMI  总线接口

29TM 2912v05 ARM7TDMI Bus Interface

典型的 NS 周期

Destination address (A) A + 4

MCLK

nMREQ

SEQ

A[31:0]

D[31:0]

nRAS

nCAS

N - Cycle S - Cycle

ARM state.

Page 30: ARM7TDMI  总线接口

30TM 3012v05 ARM7TDMI Bus Interface

内部周期 ( I )

处理器在下一个周期中执行内部操作。 例子有乘、寄存器特定的移位操作、在从存储器加载数据之后的回写操作。 nMREQ 和 SEQ 先于内部( I )周期一个周期的时间有效。

nMREQ = 1 指示处理器没有存储器访问操作执行。 A[31:0] 在跟着内部( I )周期的下一个周期的相位 2 阶段有效。

数据总线不驱动。 地址总线驱动。

Page 31: ARM7TDMI  总线接口

31TM 3112v05 ARM7TDMI Bus Interface

内部( I )周期

nMREQ

A[31:0] A

MCLK

SEQ

I - Cycle

Page 32: ARM7TDMI  总线接口

32TM 3212v05 ARM7TDMI Bus Interface

合并的 IS 周期 (1)

处理器执行内部操作。 下一条指令的取指地址出现在地址总线上,容许提前译码。 nMREQ 和 SEQ 先于存储器访问周期一个周期的时间有效。

存储器系统可以设计成识别 IS 情况。 可以在内部周期期间启动对在内部周期期间的地址位置的访问。

例如,对于非连续的 DRAM 的访问,建立和声明 nRAS 。 在连续 (S) 周期期间,访问可以结束。

例如, nCAS 完成访问。 D[31:0] 可以变为有效,直到连续( S )周期的结束( MCLK 的下降沿),而不增加等待状态。

Page 33: ARM7TDMI  总线接口

33TM 3312v05 ARM7TDMI Bus Interface

合并的 IS 周期 (2)

MCLK

nMREQ

SEQ

A[31:0]

D[31:0]

nRAS

nCAS

I - Cycle S - Cycle

Address

Page 34: ARM7TDMI  总线接口

34TM 3412v05 ARM7TDMI Bus Interface

存储器周期状态机

Busy Wait

N S

IS

ICPRT

0,1

0,0

1,0

0,1

0,0

0,1

1,01,1

0,0

1,0

1,10,0

1,0

0,0 0,1nMREQ,SEQ =

1,1

C

Page 35: ARM7TDMI  总线接口

35TM 3512v05 ARM7TDMI Bus Interface

代码序列

BL label ;带连接跳转到“ label” ; 将 PC-4 存入 R14 ;x ; ARM7TDMI 是三级流水,该条指令执行时, PC 指向“ XX”XX.....

label LDR R2, [R0] ; 从存储在 R0 中的地址取数,加载到 R2 SUB R2, R2, R3; R2 的内容减 R3 ,结果存入 R2ORR R2, R2, R4; R2 与 R4 逻辑或操作,结果存入 R2MOV PC, R14; 返回到分支之后的指令.....

Page 36: ARM7TDMI  总线接口

36TM 3612v05 ARM7TDMI Bus Interface

流水线及总线动作

Ab+ 4

F EDF D

FF

BLXXXLDRSUBORR

1 2 3 4

B

Ab Ab+ 8

X XX LDR

S S N

ECLK

SEQ

A[31:0]

D[31:0]

E DataDF

5 6 7

Ai+ 4 Ai+ 8 Ad

SUB ORR Data

S N

WriteBackE

E

8 9

D

10

Ai+ 12 Ai+ 16

MOV ....

I IS S

D

S

nMREQ

FDMOV

Ai

F

Page 37: ARM7TDMI  总线接口

37TM 3712v05 ARM7TDMI Bus Interface

流水线及总线动作 周期 1-3

分支指令及后续指令取自地址 Ab, Ab+4, Ab+8 。 BL 指令译码和执行在周期 2 和 3中完成。

周期 4-6 LDR 从非连续地址 Ai 取得, SUB 和 ORR 从连续地址 Ai+4, Ai+8 取得。 LDR

指令在周期 5 和 6 译码执行。 周期 7-8

在周期 7 中,非连续地从存储器位置 Ad 加载,在周期 8 中,将这个数据写入R2 中,由此可见,在内部( I )周期中,下一条指令的地址 Ai+12 放在了 A[31:0] 上。

周期 9-10 周期 9 是一个合并的 IS 周期,在周期 10 的连续访问中,下一条指令 MOV 从地

址 Ai+12 取得。

Page 38: ARM7TDMI  总线接口

38TM 3812v05 ARM7TDMI Bus Interface

存储器管理信号 nOPC – 输出

低有效,指示处理器正在从存储器取指。 nTRANS – 输出

低有效,指示处理器处于 ‘ user mode’.

nM[4:0] – 输出 当前操作模式,即 User, FIQ, IRQ, Supervisor, Abort, System or Undefined.

ABORT – 输入 指示请求的访问不容许。 既用于指令预取,又用于 Data abort 。

Page 39: ARM7TDMI  总线接口

39TM 3912v05 ARM7TDMI Bus Interface

存储器管理MCLK

A[31:0]

nM[4:0]

nOPC nTRANS

ABORT

Phase 1 Phase 2

Page 40: ARM7TDMI  总线接口

40TM 4012v05 ARM7TDMI Bus Interface

ARM7TDMI 外部接口

存储器接口 中断 调试接口 协处理器接口

Page 41: ARM7TDMI  总线接口

41TM 4112v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号nIRQ

nFIQ

ISYNCInterrupts

ARM7TDMI

Page 42: ARM7TDMI  总线接口

42TM 4212v05 ARM7TDMI Bus Interface

中断 2 个中断源 : nIRQ and nFIQ – 输入

nFIQ 比 nIRQ 优先级高。 FIQ 代码可以在进入中断后直接访问执行。 可以选择 (ISYNC – 输入 ) 同步或异步时序。

异步时序 (ISYNC = 0) 损失一个周期的同步。

同步时序 (ISYNC = 1) nIRQ 和 nFIQ 必须在 MCLK 的下降沿的时候已经建立且保持。

nFIQ 和 nIRQ 中断可以通过设置 CPSR 寄存器中的 F 和 I 位屏蔽。

Page 43: ARM7TDMI  总线接口

43TM 4312v05 ARM7TDMI Bus Interface

异步时序ISYNC = 0

Earliest Start of Interrupt Sequence

Instruction from Interrupt vector

Interrupt Vector Address

MCLK

nFIQ/nIRQ

A[31:0]

D[31:0]

Page 44: ARM7TDMI  总线接口

44TM 4412v05 ARM7TDMI Bus Interface

同步时序ISYNC = 1

Earliest Start of Interrupt Sequence

vector

MCLK

nFIQ/nIRQ

A[31:0]

D[31:0]

Interrupt Vector Address Instruction from Interrupt

Page 45: ARM7TDMI  总线接口

45TM 4512v05 ARM7TDMI Bus Interface

ARM7TDMI 外部接口

存储器接口 中断 调试接口 协处理器接口

Page 46: ARM7TDMI  总线接口

46TM 4612v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号

DBGRQ

BREAKPT

DBGACK

DebugInterface

ECLK

EXTERN[1:0]

DBGEN

ARM7TDMI

JTAG Interface

Page 47: ARM7TDMI  总线接口

47TM 4712v05 ARM7TDMI Bus Interface

JTAG 信号

TDI - Input - Test Data In

TDO - Output - Test Data Out

TMS - Input - Test Mode Select

TCK - Input - Test Clock

nTRST - Input - Test Reset (active low)

Page 48: ARM7TDMI  总线接口

48TM 4812v05 ARM7TDMI Bus Interface

调试 Interface (1)

DBGEN – 输入 (DEBUG ENABLE) 必须保持高电平,以容许 ARM7TDMI 的软件调试。

EXTERN[1:0] – 输入 输入到 EmbeddedICE 宏单元,容许基于外部条件的断点。

Page 49: ARM7TDMI  总线接口

49TM 4912v05 ARM7TDMI Bus Interface

调试接口 (2)

下面的信号仅用于扩展外部调试。 Multi-ICE 不使用这些信号。

BREAKPT – 输入 (BREAK POINT) 在指令上标志断点。 在数据上标志观察点。 如果不用,保持低电平。

DBGRQ – 输入 (DEBUG REQUEST) 强制 ARM7TDMI 核进入调试状态,高有效。 如果不用,保持低电平。

DBGACK – 输出 (DEBUG ACKNOWLEDGE) ARM7TDMI 进入调试状态的响应信号。高电平指示 ARM7TDMI 核已进入调试状态。

Page 50: ARM7TDMI  总线接口

50TM 5012v05 ARM7TDMI Bus Interface

ARM7TDMI 增加的扫描链 TAP 信号容许增加额外的链

SCREG[3:0] - 输出 当前选择的扫描链 IR[3:0] - 输出 当前已加载的指令 TAPSM[3:0] - 输出 TAP 状态机状态 SDINBS - 输出 扫描链串行数据输入 SDOUTBS - 输入 扫描链串行数据输出

所需其它的移位、捕获时钟及多路复用器或选择线。

Page 51: ARM7TDMI  总线接口

51TM 5112v05 ARM7TDMI Bus Interface

BREAKPT - DBGACK 时序

MCLK

BREAKPT

DBGACK

A[31:0]

D[31:0]

Breakpoint / Watchpoint

Page 52: ARM7TDMI  总线接口

52TM 5212v05 ARM7TDMI Bus Interface

DBGRQ - DBGACK 时序

MCLK

Earliest Start of Debug Sequence

DBGRQ

DBGACK

Page 53: ARM7TDMI  总线接口

53TM 5312v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号

nCPI, nOPC

CPB, CPACoprocessor

Interface

ARM7TDMI

Page 54: ARM7TDMI  总线接口

54TM 5412v05 ARM7TDMI Bus Interface

协处理器接口 可以支持多达 16 个协处理器。 nOPC – 输出 : 取操作码

低有效,指示正在取指令。 使能协处理器跟踪处理器指令流水线。

nCPI – 输出 : 协处理器指令 低有效,指示当前正在执行的指令是一条协处理器指令,且该指令应该执行。

CPA – 输入 : 协处理器缺少 高有效,当能够执行所要求的协处理器操作的协处理器存在时变低。

CPB – 输入 : 协处理器忙 高有效,当协处理器准备好要执行要求的协处理器操作时变低。

如果没有连接外部协处理器的话,将 CPA 和 CPB 拉高。

Page 55: ARM7TDMI  总线接口

55TM 5512v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号

MCLK

nWAIT

A[31:0]

D[31:0]

nMREQ, SEQ

nRW

LOCK

nIRQ

nFIQ

ISYNCABEDBE

DBGRQ

BREAKPT

DBGACK

nTRANS

ABORT

nCPI, nOPC

CPB, CPA

Clocks and Clock Control

Interrupts

DebugInterface

MemoryManagement

MemoryInterface

CoprocessorInterface

Data andAddress

BusControl

MemoryAccessControl

nM[4:0]

MAS[1:0]BL[3:0]

APE, ALETBE

ECLK

TBIT

EXTERN[1:0]

BUSEN

nENIN

DBGEN BIGEND

ARM7TDMI

JTAG Interface

nENOUT

Page 56: ARM7TDMI  总线接口