如何用Verilog设计单个时钟周期的延时?就是说50MHz的外部时钟,希望在赋值的时候实现20ns的延时。。。

程序如下:moduleclk(start,clk_in,clk_out);//clk_in为输入时钟,Start为开始信号inputstart,clk_in;output... 程序如下:
module clk(start,clk_in,clk_out); //clk_in为输入时钟,Start为开始信号
input start,clk_in;
output clk_out;
reg clk_out;

always @(posedge clk_in)
begin
if(!start) clk_out<=0;
else (这里实现20ns延时) clk_out<=~clk_out;
//clk_out是clk_in的二分频输出,但是希望能延时20ns
end
endmodule

要可综合的延时,就是说不要#20这种定义的;自己尝试用计数器编过,但是仿真出来不对,求高手指教~
展开
 我来答
lvfeng308
推荐于2017-11-25 · TA获得超过779个赞
知道小有建树答主
回答量:490
采纳率:50%
帮助的人:149万
展开全部
50Mhz,时钟周期20ns,延迟一拍即可。
module clk(start,clk_in,clk_out); //clk_in为输入时钟,Start为开始信号
input start,clk_in;
output clk_out;
reg clk_out;
reg clk_out_r;

always @(posedge clk_in)
begin
if(!start)
begin
clk_out <= 0;
clk_out_r <= 0;
end
else
begin
clk_out_r <= ~clk_out_r;
clk_out <= clk_out_r;
end
end
endmodule
网友12138L6Q4
2013-01-30 · TA获得超过508个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:169万
展开全部
用D触发器打一下拍就是了,像这样
always @(clk_in)
clk_out_r <= clk_out;//D触发器的输入输出延时一个时钟周期
追问
嗯嗯,已经实现了,谢谢~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ef7728810
2013-01-30 · TA获得超过641个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:130万
展开全部
我只用过AHDL,应该是类似的。
加一个外部时钟驱动的计数器,计数开始后到1了再驱动你的clk模块即可。
追问
自己试过用计数器的办法,但是没能实现,在实现延时的同时clk_Out变成了四分频的信号。刚刚用楼下所说的方法实现了,谢谢~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式