首页 > 其他分享 >HDLBits-Verilog:Counter 1000

HDLBits-Verilog:Counter 1000

时间:2025-01-13 23:30:31浏览次数:3  
标签:enable output Counter module 计数器 Verilog d9 input 1000

从 1000 Hz 时钟中,得出一个 1 Hz 信号,称为 OneHertz,该信号可用于驱动一组小时/分钟/秒计数器的启用信号,以创建数字挂钟。由于我们希望 clock 每秒计数一次,因此 OneHertz 信号必须每秒正好置位一个周期。使用 modulo-10 (BCD) 计数器和尽可能少的其他门构建分频器。此外,还输出您使用的每个 BCD 计数器的使能信号(c_enable[0] 表示最快的计数器,c_enable[2] 表示最慢的计数器)。

为您提供以下 BCD 计数器。Enable 必须为高电平,计数器才能运行。reset 是同步的,并设置为高电平以强制 counter 为零。电路中的所有计数器必须直接使用相同的 1000 Hz 信号。

module bcdcount (
	input clk,
	input reset,
	input enable,
	output reg [3:0] Q
);

 错误代码:

module top_module (
    input clk,
    input reset,
    output OneHertz,
    output [2:0] c_enable
); //

    reg [2:0]Q0,Q1,Q2;
    assign c_enable=3'b001;//我在这里赋值,犯了c语言的逻辑错误
//assign会持续组合逻辑赋值,它会和always时序逻辑赋值产生冲突
//这也是为什么这段代码的结果显示c_enable一直为001
    always@(*)begin
        if(Q0==4'd9)begin
        	c_enable=3'b011;
            if(Q1==4'd9)begin
        		c_enable=3'b111;
        	end
    	end
        
        if(Q2==4'd9 && Q1==4'd9 && Q0==4'd9)begin
        	OneHertz<=1;
        end
        else begin
            OneHertz<=0;
        end
    end
            
    bcdcount counter0 (
        .clk(clk), 
        .reset(reset), 
        .enable(c_enable[0]),
        .Q(Q0)
    );
    bcdcount counter1 (
        .clk(clk), 
        .reset(reset), 
        .enable(c_enable[1]),
        .Q(Q1)
    );
    bcdcount counter2 (
        .clk(clk), 
        .reset(reset), 
        .enable(c_enable[2]),
        .Q(Q2)
    );
endmodule

正确代码: 

module top_module (
    input clk,//1000hz的时钟
    input reset,
    output OneHertz,
    output [2:0] c_enable
); //
    reg [3:0]Q0,Q1,Q2;//Q1,Q2,Q3分别代表个位,十位,百位的计数器输出

    always@(*) begin
                c_enable<=3'b001;//在always块内,三个赋值的地位相同,不会冲突
                if(Q0==4'd9)begin
        			c_enable<=3'b011;
            		if(Q1==4'd9)begin
        				c_enable<=3'b111;
        			end
    			end
                if(Q2==4'd9 && Q1==4'd9 && Q0==4'd9)begin
        			OneHertz<=1;
        		end
        		else begin
           			OneHertz<=0;
        		end 
    end
    bcdcount counter0 (
        .clk(clk), 
        .reset(reset), 
        .enable(c_enable[0]),
        .Q(Q0)
    );
    bcdcount counter1 (
        .clk(clk), 
        .reset(reset), 
        .enable(c_enable[1]),
        .Q(Q1)
    );
    bcdcount counter2 (
        .clk(clk), 
        .reset(reset), 
        .enable(c_enable[2]),
        .Q(Q2)
    );
 
endmodule

标签:enable,output,Counter,module,计数器,Verilog,d9,input,1000
From: https://blog.csdn.net/m0_63352623/article/details/145125709

相关文章

  • svn检出has encountered a problem cannot checkout
    报错信息:"svn检出hasencounteredaproblemCannotcheckout"表示Subversion(SVN)在尝试检出(即下载)版本控制仓库的时候遇到了问题。解释:这个错误通常意味着SVN客户端无法完成检出操作,可能的原因有多种,包括网络问题、权限问题、URL错误、服务器不可达或者客户端与服务器版本不......
  • 【Verilog实例】1_LCD字符串显示
    功能描述:  通过写入指令或数据,控制内部的驱动芯片,从而实现在LCD显示屏上显示字符串:I_❤L......
  • as-v1000视频监控平台导入导出功能,在平台迁移时快速导入设备信息
    目录一、背景说明二、导出操作三、导入操作四、视频播放五、在平台迁移中的应用    1、快速部署    2、减少错误    3、保持连续性六、总结一、背景说明        在视频监控领域,随着技术的不断进步和应用场景的不断拓展,系统升级与......
  • 基于FPGA的直接数字频率合成器verilog实现,包含testbench
    1.算法运行效果图预览(完整程序运行后无水印)  2.算法运行软件版本vivado2019.2 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)//sin,cos相位累加器的控制always@(posedgei_clk)//时钟上边沿触发beginif(i_rst)//系统复位 begin o_sin_......
  • 基于FPGA的SVM支持向量机二分类系统实现之Verilog编程设计
    实现基于FPGA的SVM(支持向量机)二分类系统是一项复杂而有前景的任务,尤其是在需要快速决策和低功耗的场景中。以下是对此主题的详细介绍。1.简介支持向量机(SVM)是一种常用于分类和回归分析的监督学习模型。通过使用核函数,SVM可以有效地处理线性不可分问题。在FPGA上实现SVM二......
  • 原生的Three.js Cesium.js的 开源案例 已获近1000Star
    纯原生threecesium案例由于前端得发展,three.js和cesium.js越来越被越来越多得前端接触到,由于其学习路线比较复杂,且官网案例覆盖不全,因此在今年我们共同搭建了一个免费得three和cesium案例学习平台,未来将免费逐步的更新案例。主要侧重于开发者的技术交流......
  • 纯原生 three cesium 案例 已获近 1000Star
    纯原生threecesium案例由于前端得发展,three.js和cesium.js越来越被越来越多得前端接触到,由于其学习路线比较复杂,且官网案例覆盖不全,因此在今年我们共同搭建了一个免费得three和cesium案例学习平台,未来将免费逐步的更新案例。主要侧重于开发者的技术交流......
  • Simulink开发项1000例实战专栏--实例63:基于Simulink开发一个离网逆变器控制系
    目录基于Simulink的离网逆变器(Off-GridInverter)太阳能光伏发电(Photovoltaic,PV)项目实例介绍1.项目背景2.系统架构2.1主电路设计2.2控制器设计3.代码实现3.1MPPT控制器3.2电池充放电控制器3.3PI控制器3.4PWM控制器4.仿真与优化4.1运行仿真4.2参数优......
  • 基于FPGA的变步长LMS自适应滤波器verilog实现,包括testbench
    1.算法仿真效果vivado2022a仿真结果如下(完整代码运行后无水印):   仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要       自适应滤波器一般由两个主要部分组成:一是可调整的数字滤波器,其系数可以根据输入信号和期望信号进行调整;二是自适应算法,......
  • ISO 31000风险管理体系认证:构筑组织风险管理防线
    在当今充满竞争与不确定性的商业环境中,风险管理已成为企业稳定发展的关键因素之一。风险管理体系认证,作为验证企业风险管理能力的重要手段,不仅有助于提升企业的竞争力,还能够确保企业在面对各种风险时能够做出及时、有效的应对。风险管理体系认证是指依据国际标准化组织(ISO)发......