Verilog编写代码问题,求教!
时间:10-02
整理:3721RD
点击:
一个方波信号如图所示,[attach]639621[/attach]在高电平期间计数
这是我写得,最后mycount1赋值那边好像错了,帮我看一下
图挂了。
图就是一个方波,只有一个高电平,其他都是低电平
- reg H2L_F1;
- reg H2L_F2;
- reg L2H_F1;
- reg L2H_F2;
-
- always @ ( posedge clk or negedge rst )
- if( !rst)
- begin
- H2L_F1 <= 1'b1;
- H2L_F2 <= 1'b1;
- L2H_F1 <= 1'b0;
- L2H_F2 <= 1'b0;
- end
- else
- begin
- H2L_F1 <= enable;
- H2L_F2 <= H2L_F1;
- L2H_F1 <= enable;
- L2H_F2 <= L2H_F1;
- end
- assign H2L_Sig = H2L_F2 & !H2L_F1;
- assign L2H_Sig =!L2H_F2 & L2H_F1;
-
- /////////////////
-
- reg [7:0] count1;
- reg [7:0] mycount1;
- always @ ( posedge clk or negedge rst )
- begin
- if(!rst)
- count1<=8'd0;
- else
- begin
- if(L2H_Sig)
-
- count1<=count1+1'b1;
-
- else if(H2L_Sig)
- mycount1<= count1;
- end
- 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位的把。
其实这段他写的多余了,其实只要写一个就可以了
