太原建站建设,怎么样做推广,建设网站合同,网站设计师培训中心概述#xff1a; 内容
1. 时钟缓冲
2. 输入时钟缓冲
3. ODDR2作为输出时钟缓冲
1. 输入时钟缓冲 BUFGP
verilog c代码#xff0c;clk作为触发器的边沿触发#xff0c;会自动将clk综合成时钟信号。
module primitive1(input clk,input a,output reg y);
always (posed…概述 内容
1. 时钟缓冲
2. 输入时钟缓冲
3. ODDR2作为输出时钟缓冲
1. 输入时钟缓冲 BUFGP
verilog c代码clk作为触发器的边沿触发会自动将clk综合成时钟信号。
module primitive1(input clk,input a,output reg y);
always (posedge clk)y a;endmodule
verilog原语代码 module primitive1 (clk, a, y
);input clk;input a;output y;wire a_IBUF_1;wire clk_BUFGP_3;wire y_OBUF_5;FD y_1 (.C(clk_BUFGP_3),.D(a_IBUF_1),.Q(y_OBUF_5));IBUF a_IBUF (.I(a),.O(a_IBUF_1));OBUF y_OBUF (.I(y_OBUF_5),.O(y));BUFGP clk_BUFGP (.I(clk),.O(clk_BUFGP_3));
endmodule时钟信号可以去驱动触发器时钟信号需要走时钟线路通过一个BUFGP或者IBUFG进入时钟线路。通过时钟缓冲后就可以去驱动触发器FD的时钟.C端口了。
RTL结构图这是一个简单的时钟驱动触发器fd的示例 技术原理图 2. 输入时钟缓冲 IBUFG
原语代码 module primitive1 (clk, a, y
);input clk;input a;output y;wire a_IBUF_1;wire clk_BUFGP_3;wire y_OBUF_5;FD y_1 (.C(clk_BUFGP_3),.D(a_IBUF_1),.Q(y_OBUF_5));IBUF a_IBUF (.I(a),.O(a_IBUF_1));OBUF y_OBUF (.I(y_OBUF_5),.O(y));IBUFG clk_BUFGP (.I(clk),.O(clk_BUFGP_3));
endmodule
技术原理图在输入端口除了可以用BUFGP外还可以使用IBUFG 3. 输出时钟缓冲 ODDR2
ODDR2的工作原理 代码
module primitive1(input clk,output clk_o);ODDR2 #(.DDR_ALIGNMENT(NONE), // Sets output alignment to NONE, C0 or C1 .INIT(1b0), // Sets initial state of the Q output to 1b0 or 1b1.SRTYPE(SYNC) // Specifies SYNC or ASYNC set/reset) ODDR2_inst (.Q(clk_o), // 1-bit DDR output data.C0(clk), // 1-bit clock input.C1(~clk), // 1-bit clock input.CE(1b1), // 1-bit clock enable input.D0(1b1), // 1-bit data input (associated with C0).D1(1b0), // 1-bit data input (associated with C1).R(1b0), // 1-bit reset input.S(1b0) // 1-bit set input);endmodule
原语代码使用GND原语产生一个地线使用VCC原语产生一个电源线用于绑定固定点位输入端口。ODDR2有两个输入数据端口两个时钟端口时钟端口有180度相位差。时钟同时作为选择器输入端口分别将两个触发器的输出选择输出出去。在输出端口就可以看到双速率输出的数据这里把双速率输出的数据作为方波时钟使用。 module primitive1 (clk, clk_o
);input clk;output clk_o;wire N0;wire N1;wire ODDR2_inst_not0000;wire clk_BUFGP_4;wire clk_o_OBUF_6;GND XST_GND (.G(N0));VCC XST_VCC (.P(N1));ODDR2 #(.DDR_ALIGNMENT ( NONE ),.SRTYPE ( SYNC ),.INIT ( 1b0 ))ODDR2_inst (.D0(N1),.D1(N0),.C0(clk_BUFGP_4),.C1(ODDR2_inst_not0000),.CE(N1),.R(N0),.S(N0),.Q(clk_o_OBUF_6));OBUF clk_o_OBUF (.I(clk_o_OBUF_6),.O(clk_o));BUFGP clk_BUFGP (.I(clk),.O(clk_BUFGP_4));INV ODDR2_inst_not00001_INV_0 (.I(clk_BUFGP_4),.O(ODDR2_inst_not0000));
endmoduleRTL结构图使用了一个ODDR2原语模块。 技术原理图 4. 总结
1. 时钟原语包含输入时钟原语与输出时钟原语其中输出时钟原语使用ODDR2作为输出官方说这个性能更加优越
2. 时钟用于驱动触发器的时钟他需要走专门的时钟线通过时钟缓冲输入到时钟线中。