基于FPGA的计数器(Verilog)

该文描述了一个用Verilog编写的计数器模块,该模块在50MHz系统时钟下工作,每秒钟产生1秒的低电平和1秒的高电平信号。为了便于仿真观察,将最大计数值CNT_MAX设定为10d9。仿真程序和波形图进一步验证了设计的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:以下是本人学习笔记,如有错误可以留言指出。

在一秒的时间内,前0.5s为低电平,后0.5s为高电平,系统时钟为50MHZ

编写程序:


module  counter_jsq
#(
  parameter CNT_MAX = 25'd2499_9999
)
  (
  input     wire     clk,   
  input     wire     rst,  
  
  output    reg      out
  ); 
  
  reg  [24:0]  cnt;

always@(posedge clk or negedge rst)     
  if(rst == 1'b0)          
    cnt <= 25'd0;
  else if(cnt == CNT_MAX)  
    cnt <= 25'd0;
  else
    cnt <= cnt + 25'd1;    
    
always@(posedge clk or negedge rst)
  if(rst == 1'b0)          
    out <= 1'b0;
  else if(cnt == CNT_MAX) 
    out <= ~out;
  else
    out <= out;            
    
  endmodule

仿真程序:

`timescale 1ns / 1ns
module  counter_jsq_tb;
  reg   clk;
  reg   rst;
  wire  out;
  
  counter_jsq   
#(
  .CNT_MAX (10'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值