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

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

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

把状态判断和赋值放入 if 的定时器里面,如:

S1:

    if( C1 == Time )

        begin 

                if( result_con )

                拿派        state <= S3

                else

                        没则state <= S2

        end

    else

        begin

                C1 <= C1 + 1'b1

                Time <= 10'd100

   枯敏棚     end

代码程序中的#10是不能被综合的,“#”常被用在Testbench中,代码中可以使用D触发器延时也就是使用“<=”进行赋值,for一般不用在verilog的代码中,因为面积可能很大,有的综合器也可能综合不了它,verilog中可以用计数器代替之。用D触发亏昌器延时一次也只能是一个时钟,也就是一个时钟周期的时间,你要长时间的延时那只能用计数器了,可以用时钟上升沿产生销芦扒计哗陆数器,计到想要的时间了给一个高电平就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12541969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存