完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我正在使用Virtex 5和INPUTS和OUTPUTS的一些高速差分信号。 我知道我必须使用缓冲区,但我不太确定如何在Verilog中编写代码。 因此,我有两个问题: 1.我在哪里实例化IBUFDS和OBUFDS? 2.我可以将它们放在我的顶层模块中,如下所示吗? 3.IBUFDS和OBUFDS之后的符号“#”是什么? 谢谢你的帮助。 module_signals_test_top模块( 输入CLOCK_IN_P, 输入CLOCK_IN_N, 输入[15:0] DATA_IN_P, 输入[15:0] DATA_IN_P, //输出CLOCK_OUT_P, //输出CLOCK_OUT_N, 输出[15:0] DATA_IN_BUFF ) reg CLOCK_IN; reg CLOCK_OUT; reg [15:0] DATA_IN; reg [15:0] DATA_IN_BUFF; IBUFDS#( .CAPACITANCE( “DONT_CARE”), .DIFF_TERM( “FALSE”), .IBUF_DELAY_VALUE( “0”), .IFD_DELAY_VALUE( “AUTO”), .IOSTANDARD( “DEFAULT”) )IBUFDS_inst( .O(CLOCK_IN), .I(CLOCK_IN_P), .IB(CLOCK_IN_N) ); OBUFDS#( .IOSTANDARD( “DEFAULT”) )OBUFDS_inst( .O(CLOCK_OUT_P), .OB(CLOCK_OUT_N), .I(CLOCK_OUT) ); IBUFDS#( .CAPACITANCE( “DONT_CARE”), .DIFF_TERM( “FALSE”), .IBUF_DELAY_VALUE( “0”), .IFD_DELAY_VALUE( “AUTO”), .IOSTANDARD( “DEFAULT”) )IBUFDS_inst( .O(DATA_IN), .I(DATA_IN_P), .IB(DATA_IN_N) ); //发送CLOCK_OUT //在每个CLOCK_IN处将DATA_IN锁存到另一个BUFFER 总是@(posedge CLOCK_IN) 开始 DATA_IN_BUFF DATA_IN; 结束 endmodule 消息由kevintruong在03-07-2010 12:50 AM编辑 |
|
相关推荐
6个回答
|
|
欢迎来到Verilog的全新世界(如果您在大约十年前学习过Verilog,那么欢迎来到原始版本)。
从Verilog2001开始,语法“module_type#( - param_list-)module_instance_name(-port_list)”有助于缩短通常很长的defparam修饰符列表到模块。 参数用于“调整”模块中设计的方面。 #是一个标识符,告诉合成器和阅读器以下可选列表用于参数。 我通常也会在顶级实例化我的IOBUF,但我确信如果需要,你可以将它们埋在你的层次结构中更深层次,你只需要通过层次结构携带差分对。 将差异保持在顶部意味着只需要一个信号而不是一对信号。 代码中可能缺少的是引入所有16位数据的实例数组。 只需将“IBUFDS_inst”更改为“IBUFDS_inst [15:0]”,您就可以获得所有16位。 在原帖中查看解决方案 |
|
|
|
欢迎来到Verilog的全新世界(如果您在大约十年前学习过Verilog,那么欢迎来到原始版本)。
从Verilog2001开始,语法“module_type#( - param_list-)module_instance_name(-port_list)”有助于缩短通常很长的defparam修饰符列表到模块。 参数用于“调整”模块中设计的方面。 #是一个标识符,告诉合成器和阅读器以下可选列表用于参数。 我通常也会在顶级实例化我的IOBUF,但我确信如果需要,你可以将它们埋在你的层次结构中更深层次,你只需要通过层次结构携带差分对。 将差异保持在顶部意味着只需要一个信号而不是一对信号。 代码中可能缺少的是引入所有16位数据的实例数组。 只需将“IBUFDS_inst”更改为“IBUFDS_inst [15:0]”,您就可以获得所有16位。 |
|
|
|
|
|
|
|
嗨乔恩,
对此错误有任何想法:“连接到实例数组'IBUFDS_data_inst'的端口'O'必须是净左值” moduledifferential_signals_test_top( inputCLOCK_IN_P, inputCLOCK_IN_N, 输入[15:0] DATA_IN_P, 输入[15:0] DATA_IN_P, //输出CLOCK_OUT_P, //输出CLOCK_OUT_N, 输出[15:0] DATA_IN_BUFF ) regCLOCK_IN; regCLOCK_OUT; REG [15:0] DATA_IN; REG [15:0] DATA_IN_BUFF; IBUFDS#( .CAPACITANCE( “DONT_CARE”), .DIFF_TERM( “FALSE”), .IBUF_DELAY_VALUE( “0”), .IFD_DELAY_VALUE( “AUTO”), .IOSTANDARD( “DEFAULT”) )IBUFDS_inst( .O(CLOCK_IN), .I(CLOCK_IN_P), .IB(CLOCK_IN_N) ); OBUFDS#( .IOSTANDARD( “DEFAULT”) )OBUFDS_inst( .O(CLOCK_OUT_P), .OB(CLOCK_OUT_N), .I(CLOCK_OUT) ); IBUFDS#( .CAPACITANCE( “DONT_CARE”), .DIFF_TERM( “FALSE”), .IBUF_DELAY_VALUE( “0”), .IFD_DELAY_VALUE( “AUTO”), .IOSTANDARD( “DEFAULT”) )IBUFDS_data_inst [15:0]( .O(DATA_IN), .I(DATA_IN_P), .IB(DATA_IN_N) ); //发送CLOCK_OUT //在每个CLOCK_IN处将DATA_IN锁存到另一个BUFFER 总是@(posedgeCLOCK_IN) 开始 DATA_IN_BUFFDATA_IN; 结束 endmodule |
|
|
|
为什么要将CLOCK_IN,CLOCK_OUT,a和DATA_IN声明为reg值?
看起来只有DATA_IN_BUFF需要是一个寄存器,其他应该是连线,因为它们通过端口获得连续分配。 (另外,端口列表中有两个DATA_IN_P实例。) “reg”不是“净左值”,这就是错误的原因。 这些错误确实具有描述性。 - John_H |
|
|
|
多谢你们..
IBUF实例化对我有用 IBUFDS#(。CAPACITANCE(“DONT_CARE”),. DIFF_TERM(“FALSE”),. IBUF_DELAY_VALUE(“0”),. IFD_DELAY_VALUE(“AUTO”),. IOSTANDARD(“LVCMOS18”))IBUFDS_inst(.O(CNF_DONE_OT1_MFPGA_IBUF) ,.I(CNF_DONE_OT1_MFPGA),. IB()); |
|
|
|
只有小组成员才能发言,加入小组>>
2420 浏览 7 评论
2823 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2294 浏览 9 评论
3374 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2461 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1159浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
584浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
450浏览 1评论
2005浏览 0评论
729浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:10 , Processed in 1.488594 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号