一、oddr概述及使用方法oddr(output double data rate,输出双倍数据速率):
在ddr接口中,oddr用于发送时钟和数据;
在sdr接口中,oddr转发时钟(仍在时钟树内),输出端要直连到输出port,不可加逻辑,连接方式:输出时钟连接oddr的c引脚,d1固定值1'b1, d2固定值1'b0,ce固定值1’b1,oddr的输出q连接到obuf;
时钟输入有限制,需要从srcc或者mrcc专用时钟输入引脚输入,时钟输出可以在任何引脚上输出。当输出时钟时,即使使用的是时钟专用输入管脚去输出时钟,也等同于使用普通的gpio管脚输出时钟。
输出时钟的最佳方法是使用oddr来转发时钟 (假设输出的时钟是一个专用时钟网络上的时钟)。每个iob(io bank)都具有oddr功能。
这样做时,内部时钟一直停留在专用的时钟网络上,直到oddr,永远不需要进入一般的路由结构。不建议直接将时钟带到obuf,因为这需要内部时钟离开专用时钟网络,通过一般的fabric路由线路路由到obuf。
对spartan6里面,必须用oddr寄存器输出。
二、时钟配置加入oddr代码,d1接高电平,d2接低电平,c接时钟,q输出。
wire user_clk;ibufds ibufds_inst_user_clk( .o(user_clk), // buffer output .i(usrclk_p_i), // diff_p buffer input .ib(usrclk_n_i) // diff_n buffer input); wire user_clk_bufg;bufg bufg_inst_user_clk ( .o(user_clk_bufg), // 1-bit output: clock output .i(user_clk));wire user_clk_bufg_oddr;oddr #( .ddr_clk_edge(opposite_edge), //opposite_edge or same_edge .init(1'b0), // initial value of q: 1'b0 or 1'b1 .srtype(sync) // set/reset type: sync or async ) oddr_out_clock_inst_user_clock ( .q(user_clk_bufg_oddr), // 1-bit ddr output .c(user_clk_bufg), // 1-bit clock input .ce(1'b1), // 1-bit clock enable input .d1(1'b1), // 1-bit data input (positive edge) .d2(1'b0), // 1-bit data input (negative edge) .r(), // 1-bit reset .s() // 1-bit set); obufds obufds_inst_user_clock ( .o (user_sma_clock_p_o .ob(user_sma_clock_n_o), // diff_n output .i (user_clk_bufg_oddr) // buffer input )不加oddr,布局布线后rtl图如下:
加oddr,布局布线后rtl图如下:
布局布线的资源中,下图左侧显示没有加oddr的,右侧是加入了oddr,可见右侧输出时钟经bufg后先到输出引脚附近的oddr(蓝线和紫线交汇处),经oddr转发后到pad管脚输出。
三、性能对比按照xilinx和网上的一些说法,加入oddr后输出时钟的质量会更好。
输出ddr可以转发一个时钟副本到输出。这对于传播具有相同延迟的时钟和ddr数据、以及生成多个时钟(其中每个时钟负载都有惟一的时钟驱动)非常有用。这是通过将oddr的d1输入高电平并且d2输入低电平来实现的。xilinx建议使用这种方案将时钟从fpga逻辑转发到输出引脚。
如下图所示是加入oddr前后的时序裕量和资源消耗对比,可以看到,对 wns (worst negative slack,最差负时序裕量)和 whs (worst hold slack,最差保持时序裕量)、资源使用在加入前后没有明显的区别。实测加入oddr前后误码率基本一致,眼图扫描结果也一致。
按照xilinx的推荐,在输出时钟时最好还是把oddr加上 。这个测试用例没有体现出oddr的优势,也许在资源使用较多、时钟频率更高时才能体现。另外,这里只是输出了时钟,没有输出使用该时钟的数据。
很多人说时钟直接从bufg输出到管脚会报错,必须加约束或者oddr,目前我在zynq7045上没有发现此问题。
oddr****的使用场景还在于 oserdes、 fpga 的源同步的系统设计 ,用 oddr使得随路时钟和数据在输出时是严格同步的,保证严格的相位对齐关系 。
瑞士推出能量三倍于锂电池的可充电锌氧电池
基于飞兆半导体FAN100控制的LED照明系统设计
蓝牙信标人员定位系统的组成
夏普计划从二季度开始在中国台湾市场销售120英寸8K电视
自制简易无线调频话筒电路图
Xilinx高质量时钟输出ODDR原语的概述及使用方法
LG G Pad 5注册商标曝光,采用10.1英寸的全高清显示屏
DARPA开启了DRC计划 开放给各种机器人企业
国网福建电力正在全面推进三型两网建设
Intel CEO直言:英特尔做错了三件事
三、可调角度移相电路
致钛科技推出了两款SSD硬盘,比三星等厂商的SSD高出10%以上
如何开发直播平台:直播源码推拉流技术的实现(二)
易控智驾与中关村科技租赁达成战略合作
【教程】yolov5训练部署全链路教程
诺基亚首席技术官详细讲述6G的可能性
汽车网关Gateway知识介绍
百大案例|北京银行联合华为夯实应用网络一体化运维底座,护航金融业务极致用网体验
高速电流沿着电感最小路径前进
如何处理电源箱的散热