FPGA _Verilog HDL_8位加法计数器设计实验

一、题目

8位加法计数器设计。

二、源代码

说明:本实验实现了八位加法计数器,可以用于定时1us;其中CLK,EN,RST,
LOAD,DATA作为输入信号;CLK作为时钟信号,频率为50MHz;EN为允许加载或计数信号,当EN == 1时,允许计数器计数和给计数器设置初值;LOAD信号作为允许给计数器设置初值信号,当且仅当EN == 1并且LOAD == 0时允许为计数器设置初值;可设置DATA设置计数器的初值;本实验设置计数器的初值为0,根据定时时间1us可以算出计数器的溢出值为50;COUT,DOUT作为输出信号;DOUT输出计数器的当前值;COUT输出计数器是否溢出状态,当COUT为1时,计数器溢出,反之,计数器未溢出。

//----------------------------------------------------------------------------------------
// File name:           Eight_count
// Last modified Date:  2020年5月26日10点45分
// Last Version:        V1.1
// Descriptions:        8位加法计数器设计实验   实现延时1us
//----------------------------------------------------------------------------------------
module Eighth_count(CLK,RST,EN,LOAD,COUT,DOUT,DATA);
    input CLK,EN,RST,LOAD;//时钟,时钟使能,复位,数据加载控制信号
    //EN == 1有效
    input [7:0] DATA;//八位并行加载数据
    output [7:0] DOUT;//八位计数输出
    output COUT;  //计数进位输出
    reg [7:0] Q1;reg COUT;
    assign DOUT = Q1;//将内部寄存器的计数结果输出至DOUT
    always @(posedge CLK or negedge RST)   //时序过程
        begin
        if(!RST) Q1 <= 0;   //RST=0时,对内部寄存器单元异步清0
        else if (EN)            //同步使能EN = 1;则允许加载或计数
            begin 
            if(!LOAD) Q1 <= DATA; //当LOAD == 0,向内部寄存器加载数据
            else if(Q1 < 50)  
                Q1 <= Q1 +1;//当Q1小于50时,允许累加
            else
                Q1 <= 8'B00000000;  //否则一个时钟后清0返回初值
            end 
         end
         
     always @(Q1)   //组合逻辑
        if (Q1==8'd50) 
            COUT = 1'b1;
        else
            COUT = 1'b0;
endmodule

三、仿真波形图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jasmine-Lily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值