在 英特尔® Arria® 10 设备的初始化阶段,用户输出引脚可能会进入意外状态。
这是因为用户逻辑和用户 I/O 引脚逐渐被激活,而不是在初始化阶段同时激活。
示例如下所示。( 示例图 )
- 用户输入引脚连接到寄存器的低活动集端口。
- 此用户输入引脚保持低功耗至用户模式。
- 寄存器中的数据输出端口连接到用户输出引脚。
用户输出引脚预计将保持高值,因为用户 I/O 引脚在配置阶段和初始化状态下处于输入三态,且向上拉动较弱,预计在用户模式下,由设置端口将寄存器设置为高。
但是,在初始化阶段,使用逻辑和用户 I/O 引脚会逐渐被激活。 当寄存器和用户输出引脚激活的速度快于输入端口且寄存器的初始状态较低时,输出引脚会低从寄存器传入,直到输入端口被激活,而寄存器的设定端口变低。
当外部设备监视英特尔 Arria 10 设备的输出时,初始化阶段的意外状态可能会影响外部设备的行为。
要解决此问题,请使用以下方法之一。
- 变通方法 1:使外部设备忽略用户输出引脚的状态,直到INIT_DONE引脚变高(变通办法图 1)
- 变通方法 2:使用外部逻辑将输入状态保持对外部设备的正确使用,直到INIT_DONE引脚变高(变通方法图 2)
- 变通方法 3:使用用户逻辑保持 Arria 10 设备的输出状态,直到内部INIT_DONE信号高(变通方法图 3)
您可以使用以下 WYSIWYG 实例化的内部INIT_DONE信号。
<< Verilog >>
twentynm_controller u1 (.initdonecore() ;
<< VHDL >>
组件twentynm_controller为
端口 ( initdonecore: out STD_LOGIC );
最终组件;
u1: twentynm_controller
端口映射 ( initdonecore => );