joe 发表于 2022-4-20 11:03:31

verilog信号移相(2)

//-----------------------------------------------------------------------------------------------
//   Copyright         :      
//   Author            :      Luk.wj
//   File Name         :      clk_90
//   Module Name       :      clk_90
//   Create            :      2021.12.09
//   Revise            :      
//   Fuction         :      
//-----------------------------------------------------------------------------------------------

module CLK_90 (
    input clk_256,
    input rst_n,
    output reg clk_out
);

wire clk_128;
assign clk_256_inv = ~clk_256;
Div#(
    .cnt_width ( 2 ),
    .fre_div   ( 2 )
)u_Div(
    .rst_n   ( rst_n   ),
    .clk_in    ( clk_256   ),
    .clk_out   ( clk_128   )
);

always @(posedge clk_256_inv or negedge rst_n) begin
   if(!rst_n) clk_out <= 1'b0;
   else       clk_out <= clk_128;
end

endmodule
测试结果和建议
前仿真的结果如下:
https://img-blog.csdnimg.cn/f0c80e28a1144846a2886d501806da76.png#pic_center
前仿真结果完美。

后仿真因为布局布线的问题,得到相移信号会有所延迟,我在FPGA上面验证了一下,比理想情况延迟了0.2ns,这对我的设计是无法接受的。另外,这次设计是把时钟信号当普通信号去采,理论上是可以的,实际上要斟酌考虑一下,延迟也是另一个问题,而且做数字IC中,这样的时序约束也是比较困难的,故不太建议采用这样的办法。个人建议还是用IP实现,或者用延迟门在底层布局布线来实现精准的时钟相移,这就需要模拟IC的知识了。
————————————————
版权声明:本文为CSDN博主「小火子Velsuked」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42446721/article/details/121843271


页: [1]
查看完整版本: verilog信号移相(2)