1 / 56

ARM7TDMI 总线接口

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.

erno
Download Presentation

ARM7TDMI 总线接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ARM7TDMI 总线接口

  2. ARM7TDMI 外部接口 • 存储器接口 • 中断 • 调试接口 • 协处理器接口

  3. 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 MAS[1:0] Clocks and Clock Control LOCK nWAIT TBIT nTRANS Memory Management nM[4:0] ABORT

  4. 时钟与时钟控制 • MCLK –输入 • 处理器工作的时钟。 • 静态设计的ARM通过延长时钟周期来访问慢速的设备。 • nWAIT –输入 • 在ARM内部与MCLK相与。 • 必须在MCKL为低的相位阶段改变。 • 容许该信号从一个周期扩展到另一个周期,延长总线访问周期。 • ECLK –输出 • 核心逻辑的时钟的输出。 • 在正常和调试状态下反映内部时钟。 • ph1 & ph2 –内部信号 • 双相位非覆盖的内部时钟。 • 处理器内部工作周期。

  5. 时钟控制 - nWAIT 控制 Phase 1 Phase 2 Phase 1 Phase 2 MCLK nWAIT ph1 Internal Clock ph2 Internal Clock ECLK

  6. 时钟控制 – 扩展 MCLK Phase 1 Phase 2 Phase 1 Phase 2 MCLK nWAIT ph1 Internal Clock ph2 Internal Clock ECLK

  7. 数据总线 • 32 位双或单向数据总线 • BUSEN = 0 配置双向数据总线。 • BUSEN = 1 配置单向数据总线。 • 字节、半字及字访问. • 读取数据必须有效且稳定到相位2结束。 • 写入数据在相位1改变,保持稳定贯穿相位2。 • nENOUT – 输出 (和 nENIN –输入) : 数据总线控制 • 如果采用片外双向数据总线的话,可以用来控制数据总线的方向。

  8. 数据总线配置 (1) EmbeddedICE macrocell DIN[31:0] ARM7TDM Macrocell 32 32 D[31:0] bMDen DOUT[31:0] G DoutlatEn

  9. 数据总线配置 (2) MCLK DIN2 D[31:0] DIN1 DOUT DIN2 DIN1 DIN[31:0] DOUT DOUT[31:0] READ WRITE READ

  10. 地址总线 • 32 位 (4G字节) 寻址能力。 • 默认时序 • 在前一周期的相位2阶段变为有效,保持稳定贯穿当前周期的相位1阶段。 • 流水线地址。 • 地址时序可以通过APE(或ALE)移位。 • 为获得较好的系统性能,建议使用默认时序。地址可以锁存到存储器系统中。

  11. 地址总线控制 • APE 和 ALE – 输入 • ARM 建议两个信号都为高,以便有最长的时间进行地址译码。 • 任何一个信号都可以连接到在数据访问期间需要稳定地址的设备。 • APE: 地址流水线使能 • APE = 1 – 地址是流水线的 (在后续的相位2提供). • APE = 0 – 重新定时地址改变的时序,从MCLK的下降沿开始。 • 控制对A[31:0]的透明锁存。 • ALE : 地址锁存使能 • 控制对A[31:0]的透明锁存。 • 仅用于已有的系统设计,因为它比APE更复杂。

  12. 流水线地址时序(推荐设置) • ALE 和 APE 均为高 Phase 1 Phase 2 MCLK ALE APE A[31:0] Address D[31:0] Dx (in)

  13. APE对地址时序的作用 Phase 1 Phase 2 MCLK ALE APE A[31:0] Address D[31:0] Dx (in)

  14. 总线三态控制 (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都为低时,情况一样。

  15. 总线三态控制 (2) ABE DBE TBE A[31:0] D[31:0] (out)

  16. 存储器访问控制 • nMREQ – 输出 : 存储器请求. • 低有效,指示在接下来的周期中进行存储器访问。 • SEQ – 输出 : 连续地址访问 • 高有效,指示在接下来的周期中地址不变或大一个操作数(字或半字) • nRW – 输出 : 非读/写 • 区分存储器读写访问 • LOCK – 输出 : 锁定操作 • 指示一条交换指令正在执行,接下来的两个处理器总线周期是不可见的。 • MAS[1:0] – 输出 : 存储器访问大小 • 指示字、半字或字节访问。 • BL[3:0] – 输入 : 数据总线上的字节区段锁存使能 • 容许数据由小数构成。

  17. 存储器控制 • MAS[1:0] 指示数据传送大小( 8, 16 或 32 位 ) MCLK nMREQ SEQ Cycle Type Address A[31:0] nRW MAS[1:0] LOCK nTRANS nOPC Data D[31:0]

  18. 字节区段锁存使能 ARM7TDMI nWAIT ECLK MCLK BL[0] 31 8 G D[31:0] D [7:0] BL[1] 8 G D [15:8]

  19. 32 位存储器接口 Memory Control MCLK BWE[3:0] MAS[1:0] nMREQ, SEQ BL[3:0] nOE nWAIT nRW Memory 32-bit ARM7TDMI Macrocell A[31:0] A[31:2] 32 ID[31:0] 32 Board ASIC

  20. 16 位存储器接口 • 16位存储器接口 Memory Control MCLK MAS[1:0] BWE[1:0] BL[3:0] nMREQ, SEQ nWAIT nRW nOE TSTATE MUXC, TSTATE A’ [1] Memory 16-bit ARM7TDMI Macrocell A[31:2] A[31:0] 32 ID[15:0] 32 16 x2 Board ASIC

  21. 使用字节区段锁存 MCLK APE A[31:0], MAS[1:0] nWAIT ECLK D[31:0] 0x3 0xC BL[3:0] D[15:0] latched D[31:16] latched

  22. 改变操作状态 • T位指示ARM核的状态。 • 高 - Thumb 状态, 低 - ARM 状态 MCLK nMREQ, SEQ N-Cycle BX Instr. Destination Address A[31:0] nWAIT TBIT MAS[1:0] 01 - Half Word 10 - Word T Instr. ARM Instr. D[31:0]

  23. 取指 • 在ARM状态,指令是字( 32位 ) • 在THUMB状态,指令是半字(16位) • 指令可以从32位数据总线的高或低半段取得。 • 取决于Endian配置和 A[1]的状态。 Endian Configuration Little BIGEND = 0 Big BIGEND = 1 D[31:16] D[15:0] A[1] = 0 A[1] = 1 D[31:16] D[15:0] Thumb Instruction Fetches

  24. 取数据 • 字数据取操作类似于ARM状态的指令取操作。 • 半字数据的取操作类似于THUMB状态的指令取操作。 • 字节数据的取操作取决于Endian 配置和A[1:0]的状态。 Endian Configuration Little BIGEND = 0 Big BIGEND = 1 D[31:24] D[7:0] A[1:0] = 00 D[23:16] A[1:0] = 01 D[15:8] A[1:0] = 10 D[15:8] D[23:16] A[1:0] = 11 D[7:0] D[31:24] Byte Data Fetches

  25. 周期类型 • 非连续 (N) • 在接下来的周期中的地址与前一个地址无关。 • 连续 (S) • 在接下来的周期中的地址与前一个地址一样或大一个操作数(字或半字)。 • 内部 (I) • 处理器正在执行一个内部操作,同时,没有有用的预取执行。 • 协处理器寄存器传送 (C). • 处理器和协处理器之间通讯,不涉及存储器访问,但 D[31:0] 用于传送数据。 • 合并的内部连续 (IS) • I和S周期的特殊组合,容许优化存储器访问。

  26. 周期类型 nMREQ SEQ Cycle Type 0 0 Non-sequential 0 1 Sequential 1 0 Internal 1 1 Coprocessor register transfer

  27. 非连续周期 • 在接下来的周期中(nMREQ = 0) 且 (SEQ = 0) • 下一个周期将是非连续访问。 • 指令译码 nMREQ and SEQ 条件提前一个周期建立。 • A[31:0] 在接下来的周期的相位2阶段有效。 • 对于读操作,D[31:0] 必须在相位2结束时有效。 • 典型地 • 对于基于DRAM的系统的初始的行访问,N 周期要占用更长的时间。 • 处理器停下来(通过停止时钟)一个或更多的完整的时钟周期(等待状态),以便容许较长的访问时间。

  28. 典型的 N 周期 • MCLK 可以扩展,通过停止MCLK 或者声明nWAIT。 N - Cycle MCLK nMREQ SEQ A[31:0] D[31:0] nRAS (DRAM Row Address Strobe) nCAS (DRAM Column Address Strobe)

  29. 典型的 NS 周期 N - Cycle S - Cycle MCLK nMREQ SEQ Destination address (A) A + 4 A[31:0] D[31:0] nRAS nCAS • ARM state.

  30. 内部周期 (I) • 处理器在下一个周期中执行内部操作。 • 例子有乘、寄存器特定的移位操作、在从存储器加载数据之后的回写操作。 • nMREQ 和 SEQ 先于内部(I)周期一个周期的时间有效。 • nMREQ = 1 指示处理器没有存储器访问操作执行。 • A[31:0] 在跟着内部(I)周期的下一个周期的相位2阶段有效。 • 数据总线不驱动。 • 地址总线驱动。

  31. 内部(I )周期 I - Cycle MCLK nMREQ SEQ A A[31:0]

  32. 合并的 IS 周期 (1) • 处理器执行内部操作。 • 下一条指令的取指地址出现在地址总线上,容许提前译码。 • nMREQ和SEQ先于存储器访问周期一个周期的时间有效。 • 存储器系统可以设计成识别IS情况。 • 可以在内部周期期间启动对在内部周期期间的地址位置的访问。 • 例如,对于非连续的DRAM的访问,建立和声明 nRAS。 • 在连续 (S) 周期期间,访问可以结束。 • 例如, nCAS 完成访问。 • D[31:0] 可以变为有效,直到连续(S)周期的结束(MCLK的下降沿),而不增加等待状态。

  33. 合并的 IS 周期 (2) I - Cycle S - Cycle MCLK nMREQ SEQ Address A[31:0] D[31:0] nRAS nCAS

  34. 存储器周期状态机 C

  35. 代码序列 BL label ;带连接跳转到“label”; 将PC-4存入R14; x ; ARM7TDMI是三级流水,该条指令执行时,PC指向“XX” XX ..... label LDR R2, [R0] ; 从存储在R0中的地址取数,加载到 R2 SUB R2, R2, R3; R2的内容减R3,结果存入R2 ORR R2, R2, R4; R2与R4逻辑或操作,结果存入 R2 MOV PC, R14; 返回到分支之后的指令 .....

  36. 流水线及总线动作 1 2 3 4 5 6 7 8 9 10 BL F D E F D X F XX E F D Data WriteBack LDR E F D SUB D E F ORR D F MOV S S N S S N I IS S ECLK nMREQ SEQ Ab Ab+ 4 Ab+ 8 Ai+ 4 Ai+ 8 Ad Ai+ 16 Ai+ 12 Ai A[31:0] B X XX LDR SUB ORR MOV .... D[31:0] Data

  37. 流水线及总线动作 • 周期 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 取得。

  38. 存储器管理信号 • nOPC – 输出 • 低有效,指示处理器正在从存储器取指。 • nTRANS – 输出 • 低有效,指示处理器处于 ‘user mode’. • nM[4:0] – 输出 • 当前操作模式,即 User, FIQ, IRQ, Supervisor, Abort, System or Undefined. • ABORT – 输入 • 指示请求的访问不容许。 • 既用于指令预取,又用于Data abort。

  39. 存储器管理 Phase 1 Phase 2 MCLK A[31:0] nOPC nTRANS nM[4:0] ABORT

  40. ARM7TDMI 外部接口 • 存储器接口 • 中断 • 调试接口 • 协处理器接口

  41. ARM7TDMI 接口信号 nIRQ nFIQ Interrupts ISYNC ARM7TDMI

  42. 中断 • 2 个中断源 : nIRQ and nFIQ – 输入 • nFIQ 比nIRQ 优先级高。 • FIQ 代码可以在进入中断后直接访问执行。 • 可以选择 (ISYNC – 输入) 同步或异步时序。 • 异步时序 (ISYNC = 0) • 损失一个周期的同步。 • 同步时序 (ISYNC = 1) • nIRQ 和 nFIQ 必须在MCLK的下降沿的时候已经建立且保持。 • nFIQ 和 nIRQ 中断可以通过设置CPSR寄存器中的 F 和 I 位屏蔽。

  43. 异步时序 ISYNC = 0 Earliest Start of Interrupt Sequence MCLK nFIQ/nIRQ A[31:0] D[31:0] Interrupt Vector Address Instruction from Interrupt vector

  44. 同步时序 ISYNC = 1 Earliest Start of Interrupt Sequence MCLK nFIQ/nIRQ A[31:0] D[31:0] Instruction from Interrupt Interrupt Vector Address vector

  45. ARM7TDMI 外部接口 • 存储器接口 • 中断 • 调试接口 • 协处理器接口

  46. ARM7TDMI 接口信号 JTAG Interface ARM7TDMI EXTERN[1:0] DBGRQ Debug Interface BREAKPT DBGACK DBGEN ECLK

  47. 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)

  48. 调试 Interface (1) • DBGEN – 输入(DEBUG ENABLE) • 必须保持高电平,以容许ARM7TDMI的软件调试。 • EXTERN[1:0] – 输入 • 输入到 EmbeddedICE 宏单元,容许基于外部条件的断点。

  49. 调试接口 (2) 下面的信号仅用于扩展外部调试。 • Multi-ICE 不使用这些信号。 • BREAKPT – 输入(BREAK POINT) • 在指令上标志断点。 • 在数据上标志观察点。 • 如果不用,保持低电平。 • DBGRQ – 输入(DEBUG REQUEST) • 强制ARM7TDMI核进入调试状态,高有效。 • 如果不用,保持低电平。 • DBGACK – 输出(DEBUG ACKNOWLEDGE) • ARM7TDMI进入调试状态的响应信号。高电平指示ARM7TDMI核已进入调试状态。

  50. ARM7TDMI增加的扫描链 • TAP信号容许增加额外的链 • SCREG[3:0] -输出 当前选择的扫描链 • IR[3:0] -输出 当前已加载的指令 • TAPSM[3:0] -输出 TAP 状态机状态 • SDINBS -输出扫描链串行数据输入 • SDOUTBS -输入 扫描链串行数据输出 • 所需其它的移位、捕获时钟及多路复用器或选择线。

More Related