计数器 波形仿真 signaltap

计数器代码 与74161不同,不用其他的管脚,只要计数哦那个计数功能就好。所以可以把2个使能端,同步/异步清零端,数据段都去掉,只留下时钟端。还有输出数据段和溢出端。

计数器代码如下

module conter(
  CLK   ,  //xia jiang yan    
  CNTVAL, // 输出的计数值信号
  OV    );// 计数溢出信号,计数值为最大值时该信号为1
input CLK   ;
output [3:0] CNTVAL;
output OV;   
reg [3:0] CNTVAL, cnt_next;
reg OV;
// 电路编译参数,最大计数值
parameter CNT_MAX_VAL = 9;
always @(posedge CLK) begin
if(CNTVAL < CNT_MAX_VAL) // 未计数到最大值, 下一值加1
          CNTVAL = CNTVAL + 1'b1;
        else// 计数到最大值,下一计数值为0
          CNTVAL = 0;
end
// 组合逻辑,生成OV
always @ (CNTVAL) begin
  if(CNTVAL == CNT_MAX_VAL) 
    OV = 1;
  else
    OV = 0;
end

endmodule







这个是时钟下降沿有效,但是不知道为什么。



用SignalTap 观测数据  新建一个SignalTap文件 

时钟

   


下载



右键,添加 Add Nodes


左边单步  右边连续自动




0-17计数器

module conter(
  CLK   ,  //xia jiang yan 
  CNTVAL, // 输出的计数值信号
  OV    );// 计数溢出信号,计数值为最大值时该信号为1


input CLK   ;
output [4:0] CNTVAL;
output OV;   


reg [4:0] CNTVAL ;
reg OV;
// 电路编译参数,最大计数值
parameter CNT_MAX_VAL = 17;


always @(posedge CLK) begin
if(CNTVAL < CNT_MAX_VAL) // 未计数到最大值, 下一值加1
          CNTVAL = CNTVAL + 1'b1;
        else// 计数到最大值,下一计数值为0
          CNTVAL = 0;
end




// 组合逻辑,生成OV
always @ (CNTVAL) begin
  if(CNTVAL == CNT_MAX_VAL) 
    OV = 1;
  else
    OV = 0;
end


endmodule






LED闪烁




由于OUT2由1变0   比   OUT3由0变1慢了很多,导致出现了12 出现毛刺

时钟周期为1/50MHZ=0.02ns  

这个灯相当于亮9*0.02ns  暗0.02*9  暗的时间太短 看不出来  这样就可以实现延时



module conter(
  CLK   ,  //xia jiang yan 
  //CNTVAL, // 输出的计数值信号
  OV    );// 计数溢出信号,计数值为最大值时该信号为1


input CLK   ;
//output [30:0] CNTVAL;
output OV;   


//reg [30:0] CNTVAL ;
integer  CNTVAL=0 ;
reg OV;
// 电路编译参数,最大计数值
parameter CNT_MAX_VAL = 100_000000;


always @(posedge CLK) begin
if(CNTVAL < CNT_MAX_VAL) // 未计数到最大值, 下一值加1
          CNTVAL = CNTVAL + 1;
        else// 计数到最大值,下一计数值为0
          CNTVAL = 0;
end




// 组合逻辑,生成OV
always @ (CLK) begin
  if(CNTVAL <50000000) 
    OV = 0;
  else
    OV = 1;
end


endmodule




integer 相当于c语言的int 32位

时钟5*1000000次暗,5*1000000亮,折算是一秒,实现准确计时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值