
Complex Digital Hardware Design学习笔记(三)——外部并行接口
在同步模式下,处理器与同步设备(如SDRAM、FIFO和FPGA)进行通信。异步设备不依赖时钟;相反,它们在读写信号的上升沿采样数据,并在信号的下降沿发送数据。信号的持续时间根据设备的数据手册进行编程,以满足其需求。位定时的详细描述见第10章“时序分析”。
现代高性能处理器和FPGA/ASIC使用点对点差分SERDES接口(如PCI-Express、DMI或CCIX),但在管理子系统和某些DSP逻辑设计中,常需使用传统低速并行接口连接存储器芯片和外设控制器。CPU可以以不同的速率与同一总线上的不同设备通信。同步和异步设备共享地址和数据信号,但它们可能有单独的控制信号。德州仪器(TI)称其为EMIF(外部存储器接口),adi公司称其为EBIU(外部总线接口单元)。
图2.14显示了一个通用的微控制器外部接口,连接了一个同步SDRAM存储器芯片、一个FPGA和一个异步外围芯片。
FIGURE 2.14 General microcontroller external memory interface (sketch).
芯片通常使用片选信号(cs#)通知一个外围设备,它被选择通信;当总线访问进入某个地址范围时,地址范围在处理器内部已经被解码。我们可以使用小型FPGA或CPLD对总线地址进行解码,从而实现进一步的芯片选择信号。我们还可以使用FPGA隔离和分离设备之间的总线,作为总线桥。将本地总线分成两个段,一个靠近处理器,另一个在FPGA的另一边,允许近段运行得更快,而不必等待另一段上的慢速设备。FPGA总线桥接功能可以通过来自处理器芯片的片选信号、使用FPGA对地址范围进行解码和检测来选择通信下游芯片。主机接口内部始终是同步的,但外部异步设备将不接收任何时钟信号,并依赖于频闪信号的上升和下降沿,如读频闪(RD#或OE#),写频闪(WR#),或地址锁存使能(ALE#)。
-
接口类型:
- 许多微控制器,dsp和fpga具有并行单端3.3V CMOS主总线接口
- 支持同步(时钟驱动)和异步(握手)设备连接到同一总线上
- 最大总线速度:10到133MHz
-
外设连接:
- 设备种类:RAM、Flash内存、自定义FPGA功能、I/O控制器(如,NXP的SJA1000 CAN总线控制器)
- 芯片选择(CS#)信号用于通知特定外设通信
-
FPGA/CPLD的角色:
- 解码总线地址以实现更多的芯片选择信号
- 作为总线桥隔离和分离设备之间的总线
- 可使靠近处理器的总线以更快的速率运行
-
接口特点:
- 内部主接口始终同步
- 外部异步设备依赖于读脉冲(RD#)、写脉冲(WR#)、地址锁存使能(ALE#)
-
地址和数据复用:
- 一些设备要求在同一条线上复用地址和数据
- 地址锁存使能信号用于区分地址和数据阶段
-
设计注意事项:
- 不同处理器的实现差异,包括信号有效边缘和时序协议
- 设计电路板前需研究相关数据手册
同步模式–总结
在同步模式下,处理器与同步设备(如SDRAM、FIFO和FPGA)进行通信。
事务组成部分
事务涉及几个关键信号:
- 地址
- 数据
- I/O时钟
- 芯片选择(CS)
- 写使能
- 读使能
- 特定于SDRAM的控制信号
信号采样
- 每个信号在接收设备的时钟上升沿被采样。
- 一些信号在同步和异步设备之间共享,尤其是数据总线和地址总线(引脚较多)。
时钟管理
- 时钟通常由处理器提供给内存/外设芯片。
- 如果多个设备需要时钟,则使用时钟扇出缓冲器,特别是“零延迟时钟缓冲器”,通过使用相位锁定环(PLL)来消除输入输出之间的相位差,从而防止静态时序问题。
示例事务
FIGURE 2.15 Bus access protocol and handshaking on a timing diagram.
-
在示例(图2.15)中:
- 芯片选择#2被触发两次:
- 第一次是针对同步外设的读访问。
- 然后是针对同一外设的写访问。
- 芯片选择#2被触发两次:
-
第一个事务序列:
- 激活芯片选择(CS)。
- 读信号和地址在处理器的同一时钟上升沿启动。
- 设备在下一个时钟上升沿采样这些信号。
- 在某些访问延迟后,设备将读取的数据放到总线上。
- CPU在下一个时钟上升沿采样数据。
- 最后,禁用CS/RD/ADDR信号以完成事务。
异步模式–总结
异步设备不依赖时钟;相反,它们在读写信号的上升沿采样数据,并在信号的下降沿发送数据。信号的持续时间根据设备的数据手册进行编程,以满足其需求。位定时的详细描述见第10章“时序分析”。
事务流程
在同一个时序图中,可以看到第一次事务是针对异步外设。在此过程中:
- CPU 激活 CS1# 芯片选择信号并将 ALE# 信号置为低,同时将地址放到数据总线上。
- 随后,CPU 取消激活 ALE,让外设芯片可以采样地址。
- 然后稍后,CPU 移除地址并将总线设置为三态。
- 接着,CPU 激活读控制信号,这会导致外设内部获取数据并将其放到总线上。
- 此时,CPU 取消激活读信号并在同时采样数据,这使得外设停止驱动数据到总线。
- 最后,CPU 取消激活芯片选择信号以结束该事务。
地址传输
在该事务中,单独的地址总线没有被使用,因为外设没有地址引脚;相反,地址需要在数据总线上复用。
等待状态——外设与总线主控器的通信
某些外设设备可以通过发送等待信号来通知总线主控器(处理器)等待响应,因为外设需要时间来内部收集数据。这通常通过以下方式实现:
- 发送等待信号,或
- 保持就绪信号(RDY#)为高状态,直到数据可用并能够放到总线上。
现代总线处理方式
例如,现代总线如PCIe使用“延迟读取请求”来处理这种情况:
- 在短时间间隔内发送读取请求,目标设备记录该请求但同时会终止它。
- 然后,CPU必须在稍后的时间重新尝试传输(延迟读取完成),以便接收响应数据。
在请求和完成事务之间,处理器可以执行代码或与其他设备进行交互。
PCIe中的已发布写操作
PCIe中的已发布写操作类似于写事务:
- 它不会等待外设将来自I/O触发器的数据存储到其核心寄存器中,这个过程可以在总线事务之后发生。
一般情况下,传统本地外设总线的处理器被编程为等待一定的时间,因此板上没有等待信号的握手过程。
仲裁机制
当外部主设备(如其他处理器或FPGA)想要与某些外部外设通信时,它必须请求对总线的控制访问。这是通过仲裁信号来实现的。
访问流程
- 请求访问:外部主设备通过激活总线请求信号(BR#)来请求对总线的访问。
- 授权控制:
- 如果主处理器当前没有使用总线,它将通过BG#信号授予该请求,并把自己的总线引脚设置为三态。
- 结束使用:外部主设备完成操作后,取消激活BR#信号。
- 控制恢复:
- 如果主处理器希望重新获得控制权,但外部主设备仍在使用总线,则主处理器会激活BGH#信号。
此描述假设总线仲裁器集成在主处理器中。
更多推荐
所有评论(0)