risc-v中文社区

 找回密码
 立即注册
查看: 1700|回复: 0

[原创] verilog信号移相(2)

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2022-4-20 11:03:31 | 显示全部楼层 |阅读模式
//-----------------------------------------------------------------------------------------------
//   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
测试结果和建议
前仿真的结果如下:

前仿真结果完美。

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-20 21:18 , Processed in 0.019003 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表