对 OBUFDS 应用简单反转(NOT 函数)
Applying simple inversion (NOT function) to OBUFDS
我是菜鸟,想请教一个问题,你回答起来太简单了,我又不熟悉。
我的 BD 中有“cabletester_prbs15_bytegenerator”IP,其中有“data_out_p”和“data_out_n”连接到 OBUFDS 端口。
在我的情况下,我有一个连接到“data_out_p”的 OBUFDS,但在实现中分配给了 NEGATIVE DIFFERENTIAL LEG。目前,综合成功后,当我尝试在综合设计中将其分配给 IO_@@_N 时,它给出了错误消息“无法设置端口的 LOC 属性,差分的负端口(N 侧)对不能放在正 Pin 上
长话短说,我需要反转 OBUFDS 的极性。
cabletester_prbs15_bytegenerator IP 使用模块“prbs15_bytegenerator”,如下所示。
module cabletester_prbs15_bytegenerator_0_0 (
clk,
clk_div4,
resetb,
data_out_p,
data_out_n
);
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME clk, ASSOCIATED_RESET resetb:reset, FREQ_HZ 640000000, FREQ_TOLERANCE_HZ 0, PHASE 0.0, CLK_DOMAIN cabletester_clk_wiz_0_0_clk_320, INSERT_VIP 0" *)
(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 clk CLK" *)
input wire clk;
input wire clk_div4;
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME reset, POLARITY ACTIVE_LOW, INSERT_VIP 0" *)
(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 reset RST" *)
input wire resetb;
output wire data_out_p;
output wire data_out_n;
prbs15_bytegenerator inst (
.clk(clk),
.clk_div4(clk_div4),
.resetb(resetb),
.data_out_p(data_out_p),
.data_out_n(data_out_n)
);
endmodule
在prbs15_bytegenerator中,可以在最后看到OBUFDS相关部分
OSERDESE3 #(
.DATA_WIDTH(8),
.IS_CLKDIV_INVERTED(0),
.IS_CLK_INVERTED(0),
.IS_RST_INVERTED(1),
.SIM_DEVICE("ULTRASCALE_PLUS")
)
oserdes_inst
(
.OQ(data_out),
.CLK(clk),
.CLKDIV(clk_div4),
.D(prbsbyte),
.RST(resetb)
);
OBUFDS outputbuf
(
.I(data_out),
.O(data_out_p),
.OB(data_out_n)
);
endmodule
反转极性就像把 ~ 放在 .O(data_out_p) 前面一样简单吗?
如果有人能展示代码应该是什么样子,我将不胜感激,因为我对 Verilog 知之甚少......
非常感谢....
您的引脚分配可能有问题。您应该查看 XDC 约束文件。
或者,这里 post 您对设备部件号的限制。
您可能希望保持 OBUFDS 的极性正确定向。 P 为正端,N 为负端。相反,尝试通过进行以下调整来反转 OBUFDS 的输入。
OBUFDS outputbuf
(
.I(~data_out), // This will invert the input and cause the
.O(data_out_p), // output to logically invert.
.OB(data_out_n)
);
我是菜鸟,想请教一个问题,你回答起来太简单了,我又不熟悉。
我的 BD 中有“cabletester_prbs15_bytegenerator”IP,其中有“data_out_p”和“data_out_n”连接到 OBUFDS 端口。
在我的情况下,我有一个连接到“data_out_p”的 OBUFDS,但在实现中分配给了 NEGATIVE DIFFERENTIAL LEG。目前,综合成功后,当我尝试在综合设计中将其分配给 IO_@@_N 时,它给出了错误消息“无法设置端口的 LOC 属性,差分的负端口(N 侧)对不能放在正 Pin 上
长话短说,我需要反转 OBUFDS 的极性。
cabletester_prbs15_bytegenerator IP 使用模块“prbs15_bytegenerator”,如下所示。
module cabletester_prbs15_bytegenerator_0_0 (
clk,
clk_div4,
resetb,
data_out_p,
data_out_n
);
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME clk, ASSOCIATED_RESET resetb:reset, FREQ_HZ 640000000, FREQ_TOLERANCE_HZ 0, PHASE 0.0, CLK_DOMAIN cabletester_clk_wiz_0_0_clk_320, INSERT_VIP 0" *)
(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 clk CLK" *)
input wire clk;
input wire clk_div4;
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME reset, POLARITY ACTIVE_LOW, INSERT_VIP 0" *)
(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 reset RST" *)
input wire resetb;
output wire data_out_p;
output wire data_out_n;
prbs15_bytegenerator inst (
.clk(clk),
.clk_div4(clk_div4),
.resetb(resetb),
.data_out_p(data_out_p),
.data_out_n(data_out_n)
);
endmodule
在prbs15_bytegenerator中,可以在最后看到OBUFDS相关部分
OSERDESE3 #(
.DATA_WIDTH(8),
.IS_CLKDIV_INVERTED(0),
.IS_CLK_INVERTED(0),
.IS_RST_INVERTED(1),
.SIM_DEVICE("ULTRASCALE_PLUS")
)
oserdes_inst
(
.OQ(data_out),
.CLK(clk),
.CLKDIV(clk_div4),
.D(prbsbyte),
.RST(resetb)
);
OBUFDS outputbuf
(
.I(data_out),
.O(data_out_p),
.OB(data_out_n)
);
endmodule
反转极性就像把 ~ 放在 .O(data_out_p) 前面一样简单吗? 如果有人能展示代码应该是什么样子,我将不胜感激,因为我对 Verilog 知之甚少......
非常感谢....
您的引脚分配可能有问题。您应该查看 XDC 约束文件。 或者,这里 post 您对设备部件号的限制。
您可能希望保持 OBUFDS 的极性正确定向。 P 为正端,N 为负端。相反,尝试通过进行以下调整来反转 OBUFDS 的输入。
OBUFDS outputbuf
(
.I(~data_out), // This will invert the input and cause the
.O(data_out_p), // output to logically invert.
.OB(data_out_n)
);