arm7tdmi 总线接口

Post on 18-Mar-2016

190 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

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

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 总线接口

2TM 212v05 ARM7TDMI Bus Interface

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

4TM 412v05 ARM7TDMI Bus Interface

时钟与时钟控制 MCLK – 输入

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

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

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

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

5TM 512v05 ARM7TDMI Bus Interface

MCLK

nWAIT

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

ph2Internal Clock

ECLK

ph1Internal Clock

6TM 612v05 ARM7TDMI Bus Interface

时钟控制 – 扩展 MCLK

MCLK

nWAIT

Phase 1 Phase 2 Phase 2Phase 1

ph2Internal Clock

ECLK

ph1Internal Clock

7TM 712v05 ARM7TDMI Bus Interface

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

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

字节、半字及字访问 .

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

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

8TM 812v05 ARM7TDMI Bus Interface

数据总线配置 (1)

DIN[31:0]

DOUT[31:0]

32 D[31:0]32

ARM7TDMMacrocell

EmbeddedICE

macrocell

G

DoutlatEn

bMDen

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

10TM 1012v05 ARM7TDMI Bus Interface

地址总线

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

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

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

11TM 1112v05 ARM7TDMI Bus Interface

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

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

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

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

12TM 1212v05 ARM7TDMI Bus Interface

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

ALE 和 APE 均为高

MCLK

A[31:0]

ALE

APE

Phase 2Phase 1

Address

D[31:0]

(in)Dx

13TM 1312v05 ARM7TDMI Bus Interface

APE 对地址时序的作用

MCLK

A[31:0]

ALE

APE

Phase 2Phase 1

Address

D[31:0]

(in)Dx

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 都为低时,情况一样。

15TM 1512v05 ARM7TDMI Bus Interface

总线三态控制 (2)

ABE

DBE

D[31:0](out)

A[31:0]

TBE

16TM 1612v05 ARM7TDMI Bus Interface

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

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

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

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

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

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

容许数据由小数构成。

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

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]

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

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]

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

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

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

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

25TM 2512v05 ARM7TDMI Bus Interface

周期类型

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

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

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

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

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

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

27TM 2712v05 ARM7TDMI Bus Interface

非连续周期

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

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

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 。

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.

30TM 3012v05 ARM7TDMI Bus Interface

内部周期 ( I )

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

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

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

31TM 3112v05 ARM7TDMI Bus Interface

内部( I )周期

nMREQ

A[31:0] A

MCLK

SEQ

I - Cycle

32TM 3212v05 ARM7TDMI Bus Interface

合并的 IS 周期 (1)

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

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

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

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

33TM 3312v05 ARM7TDMI Bus Interface

合并的 IS 周期 (2)

MCLK

nMREQ

SEQ

A[31:0]

D[31:0]

nRAS

nCAS

I - Cycle S - Cycle

Address

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

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; 返回到分支之后的指令.....

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

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 取得。

38TM 3812v05 ARM7TDMI Bus Interface

存储器管理信号 nOPC – 输出

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

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

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

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

39TM 3912v05 ARM7TDMI Bus Interface

存储器管理MCLK

A[31:0]

nM[4:0]

nOPC nTRANS

ABORT

Phase 1 Phase 2

40TM 4012v05 ARM7TDMI Bus Interface

ARM7TDMI 外部接口

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

41TM 4112v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号nIRQ

nFIQ

ISYNCInterrupts

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 位屏蔽。

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]

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

45TM 4512v05 ARM7TDMI Bus Interface

ARM7TDMI 外部接口

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

46TM 4612v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号

DBGRQ

BREAKPT

DBGACK

DebugInterface

ECLK

EXTERN[1:0]

DBGEN

ARM7TDMI

JTAG Interface

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)

48TM 4812v05 ARM7TDMI Bus Interface

调试 Interface (1)

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

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

49TM 4912v05 ARM7TDMI Bus Interface

调试接口 (2)

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

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

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

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

50TM 5012v05 ARM7TDMI Bus Interface

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

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

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

51TM 5112v05 ARM7TDMI Bus Interface

BREAKPT - DBGACK 时序

MCLK

BREAKPT

DBGACK

A[31:0]

D[31:0]

Breakpoint / Watchpoint

52TM 5212v05 ARM7TDMI Bus Interface

DBGRQ - DBGACK 时序

MCLK

Earliest Start of Debug Sequence

DBGRQ

DBGACK

53TM 5312v05 ARM7TDMI Bus Interface

ARM7TDMI 接口信号

nCPI, nOPC

CPB, CPACoprocessor

Interface

ARM7TDMI

54TM 5412v05 ARM7TDMI Bus Interface

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

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

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

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

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

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

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

top related