微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > Verilog编写代码问题,求教!

Verilog编写代码问题,求教!

时间:10-02 整理:3721RD 点击:
一个方波信号如图所示,[attach]639621[/attach]在高电平期间计数

图挂了。

图就是一个方波,只有一个高电平,其他都是低电平

  1. reg H2L_F1;
  2.          reg H2L_F2;
  3.          reg L2H_F1;
  4.          reg L2H_F2;
  5.        
  6.         always @ ( posedge clk or negedge rst )
  7.           if( !rst)
  8.        begin
  9.             H2L_F1 <= 1'b1;
  10.             H2L_F2 <= 1'b1;
  11.             L2H_F1 <= 1'b0;
  12.             L2H_F2 <= 1'b0;
  13.             end
  14.          else
  15.             begin
  16.             H2L_F1 <= enable;  
  17.             H2L_F2 <= H2L_F1;
  18.        L2H_F1 <= enable;
  19.        L2H_F2 <= L2H_F1;
  20.          end
  21.          assign H2L_Sig = H2L_F2 & !H2L_F1;
  22.          assign L2H_Sig =!L2H_F2 & L2H_F1;
  23.        
  24.         /////////////////
  25.        
  26.         reg [7:0]  count1;
  27.         reg [7:0]  mycount1;
  28.         always @ ( posedge clk or negedge rst )
  29.         begin
  30.            if(!rst)
  31.                  count1<=8'd0;
  32.                 else
  33.                           begin
  34.                                                  if(L2H_Sig)
  35.                                  
  36.                                                   count1<=count1+1'b1;
  37.                                                          
  38.                                                  else if(H2L_Sig)         
  39.                                      mycount1<= count1;
  40.                 end                                                                       
  41.    end

复制代码


这是我写得,最后mycount1赋值那边好像错了,帮我看一下

L2H_Sig 只有一个周期宽度,计数器+1之后就停了



   那应该怎么写呢

如果只是高电平期间累加计数的话,就没必要检测上升沿。
if(enable)

if(enable)   count1 <= count1+1;



    你可以改成L2H_Sig作为开始计时的使能信号,用H2L_Sig作为计时结束的使能信号,
always@(posedge clk or negedge rst)
if(!rst)
count1<=0;
else if(L2H_Sig)
      count1<=0;
else if(enable)
      count1<=count1+1;
else if(H2L_Sig)
     mycount<=count;

小编是在做按键的去抖设计吗?


谢谢啦,不是按键消抖

H2L_F1 <= enable;  
            H2L_F2 <= H2L_F1;
       L2H_F1 <= enable;
       L2H_F2 <= L2H_F1;
这段没问题吗? 都是enable?

counter变量定义你不会是写错了吧,不会定义成1位的把。



    其实这段他写的多余了,其实只要写一个就可以了

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

网站地图

Top