飞利浦 半导体
PDIUSBD12
usb 接口 设备 和 并行的 总线
产品 数据 rev. 08 — 20 12月 2001 7 的 35
9397 750 09238
© koninklijke 飞利浦 electronics n.v. 2001. 所有 权利 保留.
7. dma 转移
直接 记忆 地址 (dma) 准许 一个 efficient 转移 的 一个 块 的 数据 在
这 host 和 local shared 记忆. 使用 一个 DMA 控制, 数据 转移 在 这
pdiusbd12’s 主要的 endpoint (endpoint 2) 和 local shared 记忆 能 发生
autonomously 没有 local cpu intervention.
preceding 任何 dma 转移, 这 local cpu receives 从 这 host 这 需要
建制 信息 和 programs 这 dma 控制 accordingly. 典型地, 这 dma
控制 是 设置 向上 为 要求 转移 模式 和 这 字节 计数 寄存器 和 这
地址 计数器 是 编写程序 和 这 正确的 值. 在 这个 模式, transfers 出现
仅有的 当 这 pdiusbd12 requests 它们 和 是 terminated 当 这 字节 计数
寄存器 reaches 零. 之后 这 dma 控制 有 被 编写程序, 这 dma
使能 位 的 这 pdiusbd12 是 设置 用 这 local cpu 至 initiate 这 转移.
这 pdiusbd12 能 是 编写程序 为 单独的-循环 dma 或者 burst 模式 dma. 在
单独的-循环 dma, 这 dmreq 管脚 是 deactivated 为 每 单独的 acknowledgement
用 这 dmack_n 在之前 正在 re-asserted. 在 burst 模式 dma, 这 dmreq 管脚 是
保持 起作用的 为 这 号码 的 bursts 编写程序 在 这 设备 在之前 going inactive.
这个 处理 持续 直到 这 pdiusbd12 receives 一个 dma 末端 注意
通过 管脚 eot_n. 这个 将 发生 一个 中断 至 notify 这 local cpu 那 dma
运作 是 完成.
为 DMA 读 运作, 这 DMREQ 管脚 将 仅有的 是 使活动 whenever 这 缓存区 是
全部, signalling 那 这 host 有 successfully transferred 一个 小包装板盒 至 这 pdiusbd12.
和 这 翻倍 buffering scheme, 这 host 能 开始 filling 向上 这 第二 缓存区 当
这 first 缓存区 是 正在 读 输出. 这个 并行的 处理 增加 这 有效的
throughput. 当 这 host 做 不 fill 向上 这 缓存区 完全地 (较少 比 64 字节 或者
128 字节 为 单独的 方向 iso configuration), 这 dmreq 管脚 将 是 deactivated
在 这 last 字节 的 这 缓存区 regardless 的 这 电流 dma burst 计数. 它 将 是
re-asserted 在 这 next 小包装板盒 和 一个 refreshed dma burst 计数.
similarly, 为 dma 写 行动, 这 dmreq 管脚 仍然是 起作用的 whenever 这
缓存区 是 不 全部. 当 这 缓存区 是 filled 向上, 这 小包装板盒 是 sent 在 至 这 host 在 这
next 在 token 和 DMREQ 将 是 reactivated 如果 这 转移 是 successful. 也, 这
翻倍 buffering scheme here 将 改进 throughput. 为 非-isochronous 转移
(大(量) 和 中断), 这 缓存区 needs 至 是 完全地 filled 向上 用 这 dma 写
图 3. 例子 的 一个 并行的 接口 至 一个 80c51 微控制器.
PDIUSBD12
80C51
int_n
A0
数据
[
7:0
]
wr_n
rd_n
CLKOUT
cs_n
ALE
XTAL1
rd/p3.7
WR/p3.6
P
[
0.7:0.0
]
/ad
[
7:0
]
任何 i/o 端口 (e.g. p3.3)
在/p3.2
SV00870