前言
写出这篇博客是因为在spartan6使用中,发现PLL产生的时钟不能直接接在通用I/O管脚上,两者之间通常会加上ODDR2缓冲来实现连接。
ODDR2模块
通过查看spartan6 selectio可知道ODDR2原语使用规则,其输入输出端口如下:
其引脚定义如下:
① D0、D1 : 输入数据;
② C0、C1 :输入时钟,C1是相对于C0的180°反相;
③ CE: 时钟使能,高电平有效;
④ R : 复位,通常设置1’b0;
⑤ S : 通常设置1’b0,R S不能同时为高;
⑥ Q : 数据输出;
模块调用
原语调用方式可以从ISE language templates中获取到:
ODDR2 #(
.DDR_ALIGNMENT(“NONE”), // Sets output alignment to “NONE”, “C0” or “C1”
.INIT(1’b0), // Sets initial state of the Q output to 1’b0 or 1’b1
.SRTYPE(“SYNC”) // Specifies “SYNC” or “ASYNC” set/reset
) ODDR2_inst (
.Q(Q), // 1-bit DDR output data
.C0(C0), // 1-bit clock input<