verilog 如何檢測時鐘信號消失
时间:10-02
整理:3721RD
点击:
請問verilog 如何檢測時鐘信號消失
目的: 自動檢測外部時鐘信號有無,並自動切換不同模式
現況: 現偵測10個 ex_clock做計數, count=10, 切入模式A
問題: 當ex_clock消失如何自動退出模式A
always@(posedge ex_clcok)
begin
if(~reset)
count<=8'd0;
mode_A_en<=1'b0;
else
bigin
if(count==8'd10)
begin
count<=8'd10;
mode_A_en<=1'b1; //切換模式A
end
else
count<=count+8'd1;
end
目的: 自動檢測外部時鐘信號有無,並自動切換不同模式
現況: 現偵測10個 ex_clock做計數, count=10, 切入模式A
問題: 當ex_clock消失如何自動退出模式A
always@(posedge ex_clcok)
begin
if(~reset)
count<=8'd0;
mode_A_en<=1'b0;
else
bigin
if(count==8'd10)
begin
count<=8'd10;
mode_A_en<=1'b1; //切換模式A
end
else
count<=count+8'd1;
end
有个思路:
1. 如果是FPGA的话,可以用FPGA搭一个free running的clock,然后用这个clock来采样输入的ex_clock,把它当作数据来处理。
2. 另外一个思路是或许可以接一个PLL。如果没有lock输出,那么表示ex_clock丢失了。不过clock丢失了,退出A模式后如何操作就是个问题了。
lz的这种方式不太推荐,因为严格来说,这种信号不是标准的时钟,使用这种建模方式不妥。
acgoal的思路1 ok,lz可以用这种方式去实现,简单也可靠
思路2适用性比较有限一些,因为DCM/PLL输入频率范围受限
供参考!
