I/O Structure & Features --I/O结构(1)
IOEs支持许多特性,包括:
■ 差分和单端I/O标准
■ 3.3V、64和32位、66和33MHZ PCI规范
■ 支持联合测试行动组(JTAG)边际扫描测试(BST)
■ 输出驱动强度控制
■ 配置过程中的弱上拉电阻
■ 三态缓冲器
■ 总线保持电路
■ 用户模式下可编程上拉电阻
■ 可编程输入输出延迟
■ 开漏输出
■ DQ和DQS I/O管脚
■ VREF 管脚
Cyclone II器件的IOEs包含一个双向I/O缓冲器和三个寄存器,以实现完整的嵌入式双向单数据率传输。图2-20给出了Cyclone II IOE的结构。IOE包含一个输入寄存器,一个输出寄存器,和一个输出使能寄存器。你可以用输入寄存器来保存快速设置时间,用输出寄存器来保存快速时钟到输出时间。另外,你可以用输出使能寄存器(OE)保存快速时钟到输出使能时序。Quartus II软件自动重复一个单一OE寄存器,用以控制多个输出或双向引脚。IOEs可以用作输入、输出或者双向引脚。
note:(1)、组合或寄存输入到逻辑阵列有两条可能路径,每条路径包含一个独特的可编程延迟链。
IOEs位于Cyclone II器件外围周围的I/O块中,每个行I/O块有多达5个IOEs,每个列I/O块有多达4个IOEs(列I/O块跨过了两列)。行I/O块驱动行、列(只有C4互连)或者直接链连互连,列I/O块驱动列互连。
图2-21 展示了一个列I/O块如何连接到逻辑阵列, 图2-22展示了一个列I/O块如何连接到逻辑阵列。
Notes:
(1) 35个数据和控制信号包括:五线数据输出—io_dataout[4..0],五位输出使能—io_coe[4..0],五位输入时钟使能—io_cce_in[4..0],五位输出时钟使能—io_cce_out[4..0],五个时钟—i0_cclk[4..0],五个异步清零信号—io_caclr[4..0],和五个同步清零信号—io_csclr[4..0]。
(2) 行I/O块中5个IOEs中每一个可以有两组io_datain输入(组合或寄存的)。
Notes:
(1) 28个数据和控制信号包括:四线数据输出—io_dataout[3..0],四个输出使能-- io_coe[3..0],四位输入时钟使能—io_cce_in[3..0],四位输出时钟使能—io_cce_out[3..0],四个时钟—i0_cclk[3..0],四个异步清零信号—io_caclr[3..0],和四个同步清零信号—io_csclr[3..0]。
(2) 列I/O块中4个IOEs中每一个可以有两组io_datain输入(组合或寄存的)。
管脚的datain信号可以驱动逻辑块。逻辑阵列提供了灵活的路由资源以驱动控制和数据信号。行或列IOE时钟—io_clk[5..0]—为低偏移的高速时钟提供了一个专用的路由资源。全局时钟网络产生进入到行或列I/O区域的IOE时钟。
图2-23说明了通过I/O块的信号路径
每个IOE有独立的控制信号选择器,已选择以下控制信号:oe, ce_in, ce_out, aclr/preset, sclr/preset, clk_in, clk_out.
图2-24给出了控制信号的选择机制
在普通双向操作时,你可以把输入寄存器用作要求快速建立时间的数据输入,输入寄存器可以有它自己的时钟输入和时钟使能以来区分OE和输出寄存器。你可以把输出寄存器用作要求快速时钟到输出性能的数据输出。OE寄存器可用于快速时钟到输出时序。OE和输出寄存器可以共享来自相关LAB局部互连、专用I/O时钟或者列和行互连的同样的时钟资源和时钟使能资源。所有寄存器共用sclr和aclr信号,但是每个寄存器可以独立屏蔽这两个信号。
图2-25 给出了双向配置中的IOE
Cyclone II器件的IOE包含可编程延迟,以保证零保持时间、最小建立时间或者增加时钟到输出时间。管脚直接驱动一个寄存器这一路径可能要求一个可编程延迟来保证零保持时间,而通过组合逻辑驱动寄存器则不需要延迟。可编程延迟减少了输入引脚到逻辑阵列和IOE输入寄存器延迟。Quartus II 编译器可以编程这些延迟来自动最小化建立时间,同时提供零保持时间。可编程延迟可以增加输出寄存器的寄存器到管脚延迟。
表2-13展示了Cyclone II器件的可编程延迟
IOE内有两条输入到逻辑阵列的路径,每条都可以有不同的延迟。这就允许你可以调整从管脚到内部LE寄存器的延迟,寄存器位于器件的两个不同区域。在Quartus II 软件的Input delay from pin to internal cells logic选项下,你可以对这两条路径选择不同的延迟来设置这两个组合输入延迟。但是,如果管脚使用了输入寄存器,那么其中一个延迟就会被寄存,因为IOE只有两条到内部逻辑的路径。如果用到输入寄存器,那么IOE只用一条输入路径,另外一条就用于组合路径,且只用到一个输入延迟分配。
每个I/O块中的IOE寄存器共享相同的清零和预置数资源。你可以对每个独立的IOE的预置数或清零编程,但不可以同时编程。在完成配置后可以把寄存器编程为上电为高或低,为低时,一个异步清零信号就控制寄存器;相反,则有异步预置数信号控制。这一特性可以防止在上电时意外激活另一器件的低电平有效的输入。如果IOE中的一个寄存器使用了一个预置数或清零信号,那么这个IOE中的所有寄存器必须使用相同的信号,如果它们需要预置数或清零。另外,有一个同步复位信号可用于IOE中的寄存器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?