51
1 嵌嵌嵌嵌 嵌嵌嵌 嵌嵌嵌 嵌嵌嵌嵌 嵌嵌嵌

嵌入式系统与结构 第六课 嵌入式系统的接口

  • Upload
    sydnee

  • View
    153

  • Download
    0

Embed Size (px)

DESCRIPTION

嵌入式系统与结构 第六课 嵌入式系统的接口. 主要内容. 通信基础 微处理器接口 仲裁 多级总线结构 通信协议. 1. 通信基础. 嵌入式系统的功能涵盖 处理功能 利用处理器实现 存储功能 用 Memory 实现 通信 处理器和存储器之间的数据传递 用总线来实现 称为 接口技术 interfacing. rd'/wr. Processor. Memory. enable. port. addr[0-11]. data[0-7]. bus. bus structure. 2. 通信基础: 一个简单的总线. 线 ( Wires ) : - PowerPoint PPT Presentation

Citation preview

Page 1: 嵌入式系统与结构 第六课  嵌入式系统的接口

1

  嵌入式系统与结构

第六课 嵌入式系统的接口

Page 2: 嵌入式系统与结构 第六课  嵌入式系统的接口

2

主要内容通信基础微处理器接口仲裁多级总线结构通信协议

Page 3: 嵌入式系统与结构 第六课  嵌入式系统的接口

3

嵌入式系统的功能涵盖 处理功能

利用处理器实现 存储功能

用 Memory 实现 通信

处理器和存储器之间的数据传递 用总线来实现 称为接口技术 interfacing

1. 通信基础

Page 4: 嵌入式系统与结构 第六课  嵌入式系统的接口

4

2. 通信基础:一个简单的总线

bus structure

Processor Memoryrd'/wr

enable

addr[0-11]

data[0-7]

bus

线 ( Wires ) : 单项或双向的,可以代表多条 Wire

s总线 ( Bus ); 单一功能的一组线

地址总线 , 数据总线 也可指用于通信的所有线集合

地址,数据和控制 相关协议 : 是指一组通信规则

端口 (Ports) 可以是引脚,也可是芯片内部连接

port

Page 5: 嵌入式系统与结构 第六课  嵌入式系统的接口

5

2. 通信基础 --- 总线时序图

write protocol

rd'/wr

enable

addr

data

tsetup twrite

最常用的描述通信协议的方法控制信号:高或低数据信号 : 有效或无效协议可以有子协议

称为总线周期 , 如读周期和写周期

每个总线周期由多个时钟周期组成

读操作举例

read protocol

rd'/wr

enable

addr

data

tsetup tread

Page 6: 嵌入式系统与结构 第六课  嵌入式系统的接口

6

3. 接口 --- 基本协议概念 ( 1 )

执行设备 : 主设备启动数据传输 , 从设备响应启动数据方向 : 发送者 , 接收者地址 : 一种特殊的数据类型

指定一个内存、外设或外设内寄存器的位置时分复用

多个数据部分共享一条总线 节省了线但耗费了时间

数据串行 地址 / 数据多工

Master Servantreq

data(8)

data(15:0) data(15:0)

mux demux

Master Servantreq

addr/data

req

addr/data

addr data

mux demux

addr data

req

data 15:8 7:0 addr data

Time-multiplexed data transfer

Page 7: 嵌入式系统与结构 第六课  嵌入式系统的接口

7

3. 基本协议概念:控制方法( 2 )

使能协议 握手协议

Master Servantreq

ack

req

data

Master Servant

data

req

data

taccess

req

data

ack

1. 主设备将 req 设置,以接收数据2. 从设备在时间内 taccess 将数据输出

1

2

3

4

3. 主设备接收数据,取消 req4. 从设备准备下一次请求

1

2

3

4

1. 主设备将 req 设置,以接收数据2. 从设备将数据挂上并发送 ack3. 主设备接收数据,取消 req4. 从设备准备下一次请求

Page 8: 嵌入式系统与结构 第六课  嵌入式系统的接口

8

3. 使能与握手折衷 ( 3 )

快响应方式

req

datawait

1 3

42

慢响应方式

Master Servantreq

wait

data

req

datawait

13

42

taccess taccess

5

1. 主设备将 req 设置,以接收数据2. 从设备在时间内 taccess 将数据输出3. 主设备接收数据,取消 req4. 从设备准备下一次请求

1. 主设备将 req 设置,以接收数据2. 从设备不能在时间内 taccess 将数据输出,则将 wait 线置为有效

4. 主设备接收数据,取消 req5. 从设备准备下一次请求

3. 从设备将数据输出,则将 wait 线置为无效

Page 9: 嵌入式系统与结构 第六课  嵌入式系统的接口

9

4.ISA 总线协议 – 存储器访问Microprocessor Memory I/O Device

ISA bus

ADDRESS

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE/MEMR

CHRDY

C1 C2 WAIT C3 C4

DATA

ISA: 工业标准结构 用于 80x86’s

特点 20-bit 地址 使能 / 握手折衷控制

4 总线周期 CHRDY 信号有效会导

致 额外等待周期 ( 达到 6)

memory-read bus cycle

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE/MEMW

CHRDY

C1 C2 WAIT C3 C4

DATA

ADDRESS

memory-write bus cycle

Page 10: 嵌入式系统与结构 第六课  嵌入式系统的接口

10

主要内容1. 接口基础2. 微处理器接口 2.1 I/O 寻址 2.2 中断 2.3 直接内存访问( DMA )

3. 仲裁4. 多级总线结构5. 通信协议

Page 11: 嵌入式系统与结构 第六课  嵌入式系统的接口

11

1. 微处理器接口: I/O 寻址处理器的很多引脚用于数据的 I/O 基于端口的 ( 并行 I/O)

处理器有一个或多个 N-bit 端口 软件以读写寄存器的方式读写端口 E.g., P0 = 0xFF; v = P1.2; -- P0 和 P1 是 8-bit 端口

基于总线的 I/O 处理器有一组地址、数据和控制端口对应与总线信号

线; 处理器将总线协议建在其硬件内 一条指令执行总线上的读写协议

Page 12: 嵌入式系统与结构 第六课  嵌入式系统的接口

12

并行端口的扩展并行 I/O 外设 处理器仅支持基于总线的 I/O,

但是又需要并行 I/O 时 并行 I/O 外设连接到外设内

部的寄存器,由处理器设置该寄存器对端口进行操作

扩展并行 I/O 处理器支持基于端口的 I/O ,

但是不够使用 e.g., 扩展 4 端口到 6 端口

Processor Memory

Parallel I/O peripheral

Port A

System bus

Port CPort B

Adding parallel I/O to a bus-based I/O processor

Processor

Parallel I/O peripheral

Port A Port B Port C

Port 0Port 1Port 2Port 3

Extended parallel I/O

Page 13: 嵌入式系统与结构 第六课  嵌入式系统的接口

13

基于总线类型 I/O : 内存映射 I/O 和标准 I/O

处理器用相同总线与存储器和外设进行通信,与外设之间采用两种方式: 内存映射 I/O

外设寄存器占用内存地址空间的地址 e.g., 总线有 16-bit 地址

低 32K 地址可能对应到内存 高 32k 地址可以对应到外设

标准 I/O (I/O映射 I/O) 用总线上的额外引脚 (M/IO) 来指示 是访问一个内存还是外设 e.g., 总线有 16-bit 地址

全部 64K 对应到存储器(当 M/IO 设置成 0 ) 全 64K对应到外设(当 M/IO 设置成 1 )

Page 14: 嵌入式系统与结构 第六课  嵌入式系统的接口

14

ISA bus 的标准 I/O 实例ISA 支持标准 I/O 用 /IOR 而不是 /MEMR 来对外设读

/IOW 用于外设写 16-bit I/O 地址空间 vs. 20-bit 内存地址空间 其它与内存控制协议相同

折衷的使能 / 握手控制协议

CYCLE

CLOCK

D[7-0]

A[15-0]

ALE

/IOR

CHRDY

C1 C2 WAIT C3 C4

DATA

ADDRESS

ISA I/O bus read protocol

Page 15: 嵌入式系统与结构 第六课  嵌入式系统的接口

15

实例: 8051 基本内存协议

8051 接口到外部存储器 端口 P0 和 P2支持 基于端口的 I/O 当使用外部存储器时,这些端口用于数据 / 地址总线 16-bit 地址和 8-bit 数据被时分复用 ; 必须在 ALE 信号

的帮助下锁存地址低 8 位信号

P0

P2

Q

ALE

/RD

Adr. 7..0

Adr. 15…8

Adr. 7…0

Data

8051

74373

P0

HM6264

D Q

8P2

ALE G

A<0...15>

D<0...7>

/OE

/WE

/CS

/WR

/RD

/CS1

/PSEN

CS2

27C256

/CS

A<0...14>

D<0...7>

/OE

Page 16: 嵌入式系统与结构 第六课  嵌入式系统的接口

16

实例:更复杂的存储器协议

产生控制信号来驱动流水线读取模式的 TC55V2325FF存储器芯片 Addr0 是起始地址 GO 是使能输入

Specification for a single read operation

CLK

/ADSP

/ADSC

/ADV

addr <15…0>/WE

/OE

/CS1 and /CS2

CS3

data<31…0>

ADSP=1,ADSC=1

ADV=1, OE=1, Addr = ‘Z’

ADSP=1,ADSC=0

ADV=1, OE=1, Addr = ‘Z’

ADSP=1,ADSC=1

ADV=0, OE=0, Addr = ‘Z’

GO=1

GO=0

Data is ready here!

GO=1

GO=1

GO=0

GO=0

S0 S1

S2 S3

ADSP=0,ADSC=0

ADV=0, OE=1, Addr = Addr0

GO=0

GO=1

FSM description

Page 17: 嵌入式系统与结构 第六课  嵌入式系统的接口

17

主要内容1. 接口基础2. 微处理器接口 2.1 I/O 寻址 2.2 中断 2.3 直接内存访问( DMA )

3. 仲裁4. 多级总线结构5. 通信协议

Page 18: 嵌入式系统与结构 第六课  嵌入式系统的接口

18

1. 微处理器接口: 中断当外设间歇的接收数据,必须由处理器进行处理 处理器可以周期的轮询外设检查数据是否到达–很浪

费! 外设能够在数据到达时中断处理器需要额外的一个管脚: Int 引脚 若 Int 为 1, 处理器停止当前程序,跳到中断服务子程

序( ISR ) 中断驱动的 I/O 本质上对中断引脚的轮询功能内嵌在硬件中,不需要

额外周期。

Page 19: 嵌入式系统与结构 第六课  嵌入式系统的接口

19

1. 微处理器接口:中断 ( 1 )中断地址向量 固定中断

中断地址内嵌于处理器中,不会发生改变 可以将 ISR保存在这个地址,若字节空间不够也可以

将跳转地址指令存放在中断地址中。 向量中断

外设必须提供地址 处理器的系统总线上连接了多个外设

折中 : 中断地址向量表

Page 20: 嵌入式系统与结构 第六课  嵌入式系统的接口

20

2. 使用固定 ISR 位置的中断驱动 I/O 1(a): 微处理器执行一个主程序 1(b): P1 接收数据到 0x8000.

的寄存器

2: P1 将 Int 设置为有效,请求处理器服务

3: 完成 100 的指令 , 微处理器检查出 Int 有效,则保存 PC 的当前值 100 ,并将 PC值设为 ISR 的固定地址 16

4(a): The ISR 从 0x8000 读取数据并修改将结果写回 0x8001.

5: ISR返回,恢复 PC 为 100+1=101 微处理器继续执行

4(b): 读取数据后, P1 取消 Int 信号 .

Time

Page 21: 嵌入式系统与结构 第六课  嵌入式系统的接口

21

2.固定 ISR 位置的中断驱动 I/O ( 2 )

1(a): 微处理器执行主程序

1(b): P1 用地址为 0x8000 的寄存器接收数据 .

μP

P1 P2

系统总线

Int

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PC

Page 22: 嵌入式系统与结构 第六课  嵌入式系统的接口

22

2.固定 ISR 位置的中断驱动 I/O ( 3 )

2: P1 置 Int 引脚向微处理器请求服务

μP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PC

IntInt1

Page 23: 嵌入式系统与结构 第六课  嵌入式系统的接口

23

2.固定 ISR 位置的中断驱动 I/O ( 4 )

3: 完成指令 100后,微处理器检查到 Int 引脚被置位于是保存 PC值 100, 将 PC 设置成 ISR 的固定位置 16 。

μP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主存储器

...

程序存储器

PC

Int

100100

Page 24: 嵌入式系统与结构 第六课  嵌入式系统的接口

24

μP

P1 P2

System bus

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PC

Int

2.固定 ISR 位置的中断驱动 I/O ( 4 )

4(a): The ISR 从 0x8000 读数据并修改然后写回到 0x8001.

4(b): 读完后 , P1 释放 Int 引脚 .

100

Int0

P1

System bus

P1

0x8000

P2

0x8001

Page 25: 嵌入式系统与结构 第六课  嵌入式系统的接口

25

2.固定 ISR 位置的中断驱动 I/O ( 5 )

5: ISR返回 , 然后被保存的 PC 100+1=101, 微处理器回到 101 处开始执行。 .

μP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...

...

程序存储器

PC

Int

100100+1

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

100

Page 26: 嵌入式系统与结构 第六课  嵌入式系统的接口

26

3.矢量中断驱动 I/O1(a): 微处理器执行一个主程序 . 1(b):P1 接收数据到 0x80

00 的寄存器 .

2: P1 将 Int 设置为有效,请求处理器服务3: 完成 100 的指令 , 微处理器检

查出 Int 有效,则保存 PC 的当前值 100 ,并将 Inta设置有效。 .

5(a): 微处理器跳到总线上的地址 16, ISR 从地址为 0x8000 的寄存器中读出数据,修改,然后回写到寄存器 0x8001 中。

6: ISR 返回,然后回复 PC 到100+1=101, 微处理器开始执行 。

5(b): 读取数据后, P1 取消 Int 信号

Time

4: P1 探测到 Inta 并且将中断地址向量 16放在数据总线上。

Page 27: 嵌入式系统与结构 第六课  嵌入式系统的接口

27

3.矢量中断驱动 I/OμP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PC

100

IntInta

16

1(a): 微处理器执行一个主程序1(b):P1 接收数据到 0x8000. 的寄存器 ..

Page 28: 嵌入式系统与结构 第六课  嵌入式系统的接口

28

3.矢量中断驱动 I/OμP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PC

100

Inta

16

2:P1 将 Int 设置为有效,请求处理器服务

Int1

Int

Page 29: 嵌入式系统与结构 第六课  嵌入式系统的接口

29

3.矢量中断驱动 I/O3: 完成 100 的指令 , 微处理器检查出 Int 有效,则保存 PC 的当前值 100 ,并将 Inta 设置有效。

μP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PCInt

Inta

16

100100

1Inta

Page 30: 嵌入式系统与结构 第六课  嵌入式系统的接口

30

μP

P1 P2

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PCInt

Inta

16

3.矢量中断驱动 I/O

100

4: P1 探测到 Inta 并且将中断地址向量 16放在数据总线上。 16

16

系统总线

Page 31: 嵌入式系统与结构 第六课  嵌入式系统的接口

31

3.矢量中断驱动 I/O5(a): 微处理器跳到总线上的地址 16 , ISR 从地址为 0x8000的寄存器中读出数据,修改,然后回写到寄存器 0x8001 中。

5(b): 读取数据后, P1 取消 Int 信号

μP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

程序存储器

PCInt

Inta

16

100

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

P1 P2

0x8000 0x8001

系统总线

0Int

Page 32: 嵌入式系统与结构 第六课  嵌入式系统的接口

32

3.矢量中断驱动 I/O6: ISR 返回,然后回复 PC 到 100+1=101, 微处理器开始执行。

μP

P1 P2

系统总线

数据存储器

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

程序存储器

PC

Int

100100+1

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...主程序

...

100

Page 33: 嵌入式系统与结构 第六课  嵌入式系统的接口

33

4. 中断向量表

在固定和向量中断进行折衷 一个中断引脚 内存中的表来保存 ISR 地址 ( 可以有 256 个字 )

外设不提供 ISR 地址,而只提供表内索引 外设发送更少的位 不改变外设就能移动 ISR 位置

Page 34: 嵌入式系统与结构 第六课  嵌入式系统的接口

34

5. 屏蔽和非屏蔽中断

可屏蔽中断 : 通过设置屏蔽位使处理器忽略外设产生的中

断。 在执行实时任务时很重要非屏蔽中断 一个独立的中断,不能被屏蔽 在一些突发状态使用,如断电情况下,要通知处理器在电源消失之前跳转到子程序来备份关键数据到非易失性存储器中。

Page 35: 嵌入式系统与结构 第六课  嵌入式系统的接口

35

主要内容1. 接口基础2. 微处理器接口 2.1 I/O 寻址 2.2 中断 2.3 直接内存访问( DMA )

3. 仲裁4. 多级总线结构5. 通信协议

Page 36: 嵌入式系统与结构 第六课  嵌入式系统的接口

36

1. 直接内存访问 ( DMA ) 缓冲

在处理之前在存储器中临时保存数据 在外设内积累的数据通常会被缓冲

微处理器通过 ISR 处理这些数据 保存与恢复微处理器状态造成低效率 正常的程序必须等待

DMA 控制器具有更高的效率 独立的单用途处理器- DMA 控制器 微处理器将系统总线控制权交给 DMA 控制器 微处理器能继续执行它的正常程序

不会由于 ISR调用造成低效率的存储和恢复状态 正常程序只有在需要系统总线时才会停下

哈佛结构 – 处理器能够取回并执行指令,只要它们不访问数据- 如果访问数据,就要暂停。

Page 37: 嵌入式系统与结构 第六课  嵌入式系统的接口

37

2. 外设到存储器传输(采用向量中断)

1(a): 微处理器执行一个主程序 .

1(b):P1 接收数据到 0x8000 的寄存器 .

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:

101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction

Page 38: 嵌入式系统与结构 第六课  嵌入式系统的接口

38

2. 外设到存储器传输(采用向量中断)2: P1 将 Int 设置为有效,请求处理器服务

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:

101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction 1

Int

100

Page 39: 嵌入式系统与结构 第六课  嵌入式系统的接口

39

2. 外设到存储器传输(采用向量中断)3: 完成 100 的指令 , 微处理器检查出 Int 有效,则保存 PC 的当前值 100 ,并将 Inta 设置有效。

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:

101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction

100

Inta1

100

Page 40: 嵌入式系统与结构 第六课  嵌入式系统的接口

40

2. 外设到存储器传输(采用向量中断)4: P1 探测到 Inta 并且将中断地址向量 16放在数据总线上。.

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:

101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction

100

16

16System bus

Page 41: 嵌入式系统与结构 第六课  嵌入式系统的接口

41

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:

101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

instruction

Inta

2. 外设到存储器传输(采用向量中断)5(a): 微处理器跳到总线上的地址 16 , ISR 从地址为 0x8000的寄存器中读出数据,修改,然后回写到寄存器 0x0001 中。 .

5(b): 读取数据后, P1 取消 Int 信号。

100

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19:

ISR

100:

101: instruction

...Main program

...instruction

RETI # ISR return

System bus

0x8000

P1

Data memory0x0001

Int

0

Page 42: 嵌入式系统与结构 第六课  嵌入式系统的接口

42

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:

101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

instruction

Inta

2. 外设到存储器传输(采用向量中断)6: ISR 返回,然后回复 PC 到100+1=101, 微处理器开始执行

100100+1

Page 43: 嵌入式系统与结构 第六课  嵌入式系统的接口

43

3. 外设到存储器传输(采用 DMA )1(a): μP 正执行主程序,已配置了 DMA 的控制寄存器

1(b): P1 收到输入数据放在寄存器 0x8000. 中

2: P1 设置 req 引脚有效,请求 DMA 控制器的服务

7(b): P1 将 req 无效 .

Time

3: DMA 控制器将Dreq 引脚设置为有效,请求系统总线控制权

4: 执行网指令 100后,微处理器检查到 Dreq 信号有效,交出系统总线,将 Dack 引脚有效,继续执行,只有在需要系统总线时才暂停 5: (a) DMA 控制

器将 ack 引脚设置为有效, (b) 从地址 0x8000 读数据 (c) 将数据写入存储器地址 0x0001中。 6:. DMA 将 Dreq 和 ack 无效,结束与 P1 的握手。

7(a): 微处理器将 Dack 无效,重新获得系统总线控制权。

Page 44: 嵌入式系统与结构 第六课  嵌入式系统的接口

44

3. 外设到存储器传输(采用 DMA )1(a): μP 正执行主程序,已配置了 DMA 的控制寄存器

1(b): P1 收到输入数据放在寄存器 0x8000 中

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

Page 45: 嵌入式系统与结构 第六课  嵌入式系统的接口

45

3. 外设到存储器传输(采用 DMA )2: P1 设置 req 引脚有效,请求DMA 控制器的服务.

3: DMA 控制器将 Dreq 引脚设置为有效,请求系统总线控制权

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

reqreq1

P1Dreq

1

DMA ctrl P1

Page 46: 嵌入式系统与结构 第六课  嵌入式系统的接口

46

3. 外设到存储器传输(采用 DMA )4: 执行网指令 100后,微处理器检查到 Dreq 信号有效,交出系统总线,将 Dack 引脚有效,继续执行,只有在需要系统总线时才暂停

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

Dack1

Page 47: 嵌入式系统与结构 第六课  嵌入式系统的接口

47

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

Data memory

DMA ctrl P1

System bus

0x8000

0x0000 0x0001

0x0001

0x8000

ack

req

3. 外设到存储器传输(采用 DMA )5: (a) DMA 控制器将 ack引脚设置为有效, (b) 从地址 0x8000读数据 (c) 将数据写入存储器地址 0x0001 中。

( 处理器仍然执行无需暂停)ack

1

Page 48: 嵌入式系统与结构 第六课  嵌入式系统的接口

48

3. 外设到存储器传输(采用 DMA )6: DMA 将 Dreq 和 ack 无效,结束与 P1 的握手 .

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

ack0Dreq

0

Page 49: 嵌入式系统与结构 第六课  嵌入式系统的接口

49

4. ISA 总线的 DMA 周期Processor Memory

I/O Device

ISA-Bus

DMAR

A

R A

DMA Memory-Write Bus Cycle

ADDRESS

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE

/IOR

/MEMW

CHRDY

C1 C2 C3 C4 C5 C6 C7

DATA

DMA Memory-Read Bus Cycle

ADDRESS

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE

/MEMR

/IOW

CHRDY

C1 C2 C3 C4 C5 C6 C7

DATA

Page 50: 嵌入式系统与结构 第六课  嵌入式系统的接口

50

小结 接口技术 ( 1 )

总线与端口的区别总线接口的基本控制方法总线时序图基于端口 I/O 寻址与基于总线 I/O 寻址基于中断向量表的总断响应过程在 DMA 控制器控制下的外设与存储器的数据传输

Page 51: 嵌入式系统与结构 第六课  嵌入式系统的接口

51