xilinx原语详解及仿真——ODDR
供稿:hz-xin.com 日期:2025-01-08
ODDR位于OLOGIC中,负责将单沿传输的数据转换为双沿传输的数据。讲解ODDR功能之前,需先了解OLOGIC结构与功能。
OLOGIC位于IOB内部,FPGA内部信号输出到管脚必须经过OLOGIC。OLOGIC类型为OLOGICE2或OLOGICE3,功能结构相同,统称为OLOGIC。图1展示了OLOGIC结构,分为上下两部分,下部配置输出数据路径,上部配置三态控制路径,实现数据与三态信号的单沿转双沿功能,共享时钟CLK,但使能信号不同。
若不使用ODDR,信号通过图1红线路径传输;使用ODDR功能,则信号从D1输入,沿绿色路径传输。使用ODDR时,D1、D2沿蓝色路径传输,将单沿信号转换为双沿信号。
图2为FPGA中OLOGIC实际布局,电路还可配置为OSERDESE2,比图1多出信号端口。
ODDR原语框图如图3所示,与IDDR类似,不支持同时复位和置位。表1、表2分别列出ODDR端口信号与参数,信号与参数相对简单,与IDDR相似,不再详述。ODDR有两种工作模式,少于IDDR,以下进行讲解。
图4展示OPPOSITE_EDGE模式时序图,在上升沿采集D1信号D1A,在上升沿输出。下降沿采集D2信号D2A,在下降沿输出。此模式操作较为复杂,一般不使用。
图5展示SAME_EDGE模式时序图,在上升沿同时采集D1、D2数据,在上升沿输出D1,在下降沿输出D2。此模式实现简单,属于常用模式。
ODDR模式仿真如下:设计文件对应代码,din0在内部触发器打一拍得到dout0输出,din0通过OLOGIC内部触发器打一拍得到dout1输出。将单沿输入信号din1、din2转化为单沿信号dout2,代码如下。
对应Test Bench代码如下,对OPPOSITE_EDGE模式进行仿真,结果如图6所示。结果与图4一致,不再详述。
对SAME_EDGE模式进行仿真,设计文件如下,TestBench代码如下,仿真结果如图7所示。结果与图5基本一致,不再解释。图8为模式下时钟使能无效时仿真结果,输出信号保持不变。
以上仿真与理论一致,将工程信号引脚分配,对工程编译,查看走线图。
OLOGIC中触发器使用方式,图9为din0至dout0信号走线图,红框为寄存器位置,白线为信号路径。dout0信号未使用OLOGIC触发器和ODDR功能,图10为dou0信号经过OLOGIC路径图,与前文一致,直接输出。
图11为dout1信号在FPGA内部走向,路径上有两个触发器,其中一个位于OLOGIC中。将OLOGIC放大,可知dout1触发器位于OLOGIC中。图13为dout2信号走向,din1和din2输入FPGA后,通过OLOGIC单沿转双沿信号,通过dout2管脚输出。
图12为对应的OLOGIC放大图,实现ODDR功能,路径与前文一致。
综上,OLOGIC与ILOGIC功能相似,主要讲解ODDR工作模式与仿真,同时说明OLOGIC使用方式。掌握ODDR使用的同时,了解如何使用OLOGIC触发器功能与位置。OLOGIC触发器靠近管脚,输出路径固定,利于多bit数据输出对齐。需要工程文件的用户,请在公众号后台回复“ODDR”获取。
OLOGIC位于IOB内部,FPGA内部信号输出到管脚必须经过OLOGIC。OLOGIC类型为OLOGICE2或OLOGICE3,功能结构相同,统称为OLOGIC。图1展示了OLOGIC结构,分为上下两部分,下部配置输出数据路径,上部配置三态控制路径,实现数据与三态信号的单沿转双沿功能,共享时钟CLK,但使能信号不同。
若不使用ODDR,信号通过图1红线路径传输;使用ODDR功能,则信号从D1输入,沿绿色路径传输。使用ODDR时,D1、D2沿蓝色路径传输,将单沿信号转换为双沿信号。
图2为FPGA中OLOGIC实际布局,电路还可配置为OSERDESE2,比图1多出信号端口。
ODDR原语框图如图3所示,与IDDR类似,不支持同时复位和置位。表1、表2分别列出ODDR端口信号与参数,信号与参数相对简单,与IDDR相似,不再详述。ODDR有两种工作模式,少于IDDR,以下进行讲解。
图4展示OPPOSITE_EDGE模式时序图,在上升沿采集D1信号D1A,在上升沿输出。下降沿采集D2信号D2A,在下降沿输出。此模式操作较为复杂,一般不使用。
图5展示SAME_EDGE模式时序图,在上升沿同时采集D1、D2数据,在上升沿输出D1,在下降沿输出D2。此模式实现简单,属于常用模式。
ODDR模式仿真如下:设计文件对应代码,din0在内部触发器打一拍得到dout0输出,din0通过OLOGIC内部触发器打一拍得到dout1输出。将单沿输入信号din1、din2转化为单沿信号dout2,代码如下。
对应Test Bench代码如下,对OPPOSITE_EDGE模式进行仿真,结果如图6所示。结果与图4一致,不再详述。
对SAME_EDGE模式进行仿真,设计文件如下,TestBench代码如下,仿真结果如图7所示。结果与图5基本一致,不再解释。图8为模式下时钟使能无效时仿真结果,输出信号保持不变。
以上仿真与理论一致,将工程信号引脚分配,对工程编译,查看走线图。
OLOGIC中触发器使用方式,图9为din0至dout0信号走线图,红框为寄存器位置,白线为信号路径。dout0信号未使用OLOGIC触发器和ODDR功能,图10为dou0信号经过OLOGIC路径图,与前文一致,直接输出。
图11为dout1信号在FPGA内部走向,路径上有两个触发器,其中一个位于OLOGIC中。将OLOGIC放大,可知dout1触发器位于OLOGIC中。图13为dout2信号走向,din1和din2输入FPGA后,通过OLOGIC单沿转双沿信号,通过dout2管脚输出。
图12为对应的OLOGIC放大图,实现ODDR功能,路径与前文一致。
综上,OLOGIC与ILOGIC功能相似,主要讲解ODDR工作模式与仿真,同时说明OLOGIC使用方式。掌握ODDR使用的同时,了解如何使用OLOGIC触发器功能与位置。OLOGIC触发器靠近管脚,输出路径固定,利于多bit数据输出对齐。需要工程文件的用户,请在公众号后台回复“ODDR”获取。