微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请大侠看看代码(关于同步清零的)

请大侠看看代码(关于同步清零的)

时间:10-02 整理:3721RD 点击:
目的:用19.44M的晶振 产生10khz,每当clr的上升沿的时候要求10khz与之对齐,clr也就是秒脉冲
代码:module C10KHz(input clk,
     input clr,
     output reg kout);
parameter fullcnt = 1944;
parameter halfcnt = 972;
reg [12:0] cnt;
reg clrbuf;
   
always @ ( posedge clk)begin
  if(((clrbuf == 0 ) && (clr == 1)) | (cnt + 1 >= fullcnt))  begin
   cnt <= 0;
   kout <= 1;  
  end else begin
   cnt <= cnt + 1;
   kout <= cnt < halfcnt;
  end
  clrbuf <= clr;
end
endmodule
现象: 大多数时间能对齐,有时对不齐,请大家分析下,非常感谢!

连错误时刻的波形图都没有,怎么给你分析。

用示波器看的话就是大多数时候 clr的上升沿与10khz的上升沿对齐的,偶尔有几次没有对齐

仿真的时候没问题?

同步复位的概念不是说clr和clk要同一个沿出现呀,是说复位的有效是通过时钟采样来触发的,你把概念理解错了。

同意楼上,同步清零是指时钟有效沿到来时清零

楼上的理解错了,我说的不是和clr严格对齐,相差1到2个clk是可以接受的啊

所以说你不上仿真的波形图,人家怎么能理解

好,谢谢!

你的意思是要输入clr与输出的kout保持一直同步,是吗?那首先要让人知道你的clr是怎么产生的,秒脉冲的基准时钟是什么?也是19.44M的时钟吗?那你这个意思不是同步清零的概念了,而是保证两端信号同步的概念。还是先回答我问的问题吧。

clr是外部信号

既然是外部信号,那你怎么能控制他们之间对齐的关系呢?除非你内部作处理,但得到的就不是原来的clr信号了。

典型的CDC,把用来清零的信号先用时钟采样一次。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top