主时钟clk的分频信号 能在always中 作为被检测的时钟么? 下面是我遇到的问题

2019-03-25 09:52发布

module music(clk,ret,fm,fm1,fm2);
  input clk;
  input ret;
  output fm,fm1,fm2;
  reg clk1;
  reg clk2;
  reg h,fm;
  reg [9:0] cnt;
  reg [5:0] cnt1;
  reg [2:0] cnt2;
  reg [2:0]  cnt3;
  reg  [5:0] div;
  parameter a=6'd50,
            b=6'd40,
            c=6'd30,
            d=6'd20,
            e=6'd10,
            f=6'd5;
 
 
  always @(posedge clk or posedge ret)
  if(!ret)
    begin
      clk1<=0;
      cnt1<=0;
    end
  else
    if(cnt1==6'b111111)
      begin
        clk1<=~clk1;
        cnt1<=0;
      end
    else
      cnt1<=cnt1+1;
    
    
     always @(posedge clk or posedge ret)
     if(!ret)
       begin
          clk2<=0;
          cnt2<=0;
       end
     else
       if(cnt2==3'b111)
         begin
           clk2<=~clk2;
           cnt2<=0;
           end
      else
        cnt2<=cnt2+1;
       
       
   always @(posedge clk1  or posedge ret)
    if(!ret)
      begin
        fm<=0;
        cnt<=0;
      end
    else if(cnt==10)
       begin
         fm<=~fm;
         cnt<=0;
       end
     else
       cnt<=cnt+1;
     
      
      
 /* always @( posedge clk2 or posedge ret)
    begin
      if(!ret)
          begin
           cnt3<=0;
          end
      else
          if(cnt3==3'b101)
            cnt3<=0;
          else
            cnt3<=cnt3+1;
            case(cnt3)
              0: div=a;
              1: div=b;
              2: div=c;
              3: div=d;
              4: div=e;
              5: div=f;
              default : div=0;
            endcase
    end */
             
       
         
      assign fm1=clk1;
      assign fm2=clk2;
     // assign fm=h;
     
     
   endmodule   整个程序中 为什么 红 {MOD}的部分 我用clk产生的分频信号 clk1 去做被检测的时钟  fm 就没有输出; 而如果 我把 clk1 换成 clk 输出就是正常的  求教 !! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
jjkwz
1楼-- · 2019-03-25 15:26
< / 在你的程序里clk1只是对clk进行二分频,在fm1对于clk1的输出,应该不会有问题。
eeleader
2楼-- · 2019-03-25 19:05

这个就是跨时钟域问题。

为了避免亚稳态出现和传递,在FPGA系统设计采用系统时钟触发。而不能用门控时钟触发!

leomeng
3楼-- · 2019-03-25 23:59
我找到了问题的关键原因:我always中检测的是ret 的上升沿; 但是下面的 if()中用的ret;矛盾了;
这里你提到跨时钟域问题,我想学习一下在,
门控时钟?   是指的ret么? 不同步的时钟都是门控时钟么?

题外话:
南京华为 这周叫我去面试 自己说想做逻辑设计 但是 依照现在我这水平 心里没底啊!!我做到什么样子 能很自信的 去找一份满意的工作呢
418478935
4楼-- · 2019-03-26 00:47
 精彩回答 2  元偷偷看……

一周热门 更多>