JOHNSON计数器,环形计数器,普通计数器

Johnson Counter/约翰逊计数器 Johnson Counter,约翰逊计数器,是一种环形计数器. 阅读详情

1.普通4bit计数器,n位计数,2^n个状态:

module top_module ();
	reg clk=0;
	always #5 clk = ~clk;  // Create clock with period=10
	initial `probe_start;   // Start the timing diagram

	`probe(clk);        // Probe signal "clk"

	// A testbench
	reg reset;
	initial begin
	 reset=0;
         #10 reset=1;
	 $display ("Hello world! The current time is (%0d ps)", $time);
         #50 $finish;            // Quit the simulation
	end

    count inst1 (.clk(clk),.reset(reset));   // Sub-modules work too.

endmodule

module count(clk, reset, out);
    output [3:0] out;
    reg [3:0] out;
    input clk,reset;
    always @(posedge clk) begin
        if (reset==0)
            out<=0;    
        else
            out<=out+1;
    end
        `probe(clk);	// Sub-modules can also have `probe()
        `probe(out);
endmodule

结果:

2.JOHNSON计数器n位计数2n个状态,相邻变化只有一位,同格雷码:

module top_module ();
	reg clk=0;
	always #5 clk = ~clk;  // Create clock with period=10
	initial `probe_start;   // Start the timing diagram

	`probe(clk);        // Probe signal "clk"

	// A testbench
    int k;
	reg reset;
    reg [3:0] out;
	initial begin
	reset=0;
        #10 reset=1;
        for(k=0;k<9;k++) begin
            $display ("out=%b timr=%g",out,$time);
            #10;
        end		
	#10 $finish;            // Quit the simulation
	end

    count inst1 (.clk(clk),.reset(reset),.out(out));   // Sub-modules work too.

endmodule

module count(clk, reset, out);
    output [3:0] out;
    reg [3:0] out;
    input clk,reset;
    always @(posedge clk) begin
        if (reset==0)
            out<=4'b0000;    
        else begin
            if (out[0]==0)//第一位为0就推进1,第一位为1就推进0
                out<={1'b1,out[3:1]};
            else
                out<={1'b0,out[3:1]};
        end
    end
        `probe(clk);	// Sub-modules can also have `probe()
        `probe(out);
endmodule

结果(见其中变化过程):

3. 环形计数器,类似独热码,n位计数n个状态:

module top_module ();
	reg clk=0;
	always #5 clk = ~clk;  // Create clock with period=10
	initial `probe_start;   // Start the timing diagram

	`probe(clk);        // Probe signal "clk"

	// A testbench
    int k;
	reg reset;
    reg [3:0] out;
	initial begin
		reset=0;
        #10 reset=1;
        for(k=0;k<9;k++) begin
            $display ("out=%b timr=%g",out,$time);
            #10;
        end		
	#10 $finish;            // Quit the simulation
	end

    count inst1 (.clk(clk),.reset(reset),.out(out));   // Sub-modules work too.

endmodule

module count(clk, reset, out);
    output [3:0] out;
    reg [3:0] out;
    input clk,reset;
    always @(posedge clk) begin
        if ((reset==0) | (out[0]==1))//or表示或门
            out<=4'b1000;    
        else 
            out<={1'b0,out[3:1]};
    end
        `probe(clk);	// Sub-modules can also have `probe()
        `probe(out);
endmodule

 输出:

Verilog实战:5分钟搞定Johnson计数器(附完整代码) 本文详细介绍了如何使用Verilog在5分钟内实现高效的Johnson计数器(约翰逊计数器),包括核心原理、Verilog代码实现、仿真测试及调试技巧。通过移位寄存器和状态机两种实现方案的对比,帮助FPGA开发者快速掌握这一高效计数器技术,优化资源利用。 阅读详情

相关推荐

Johnson Counter的Verilog实现与优化技巧

本文详细介绍了Johnson Counter(约翰逊计数器)的Verilog实现与优化技巧,包括移位寄存器和状态机两种实现方案的对比,以及参数化设计、复位方式选择等实战优化建议。通过具体代码示例和调试技巧,帮助读者掌握这一高效数字电路设计方法,提升FPGA开发效率。

weixin_28692153的博客 378

扭环形计数器

cnt的位宽是4,cnt[3:0],使用扭环形计数器可以表示8种 cnt 状态,分别是0000 1000 1100 1110 1111 0111 0011 0001 0000 1000。相邻的两个数据,高三位直接平移到第三位,最低位取反后平移到最高位。它有一个非常明显地好处,相邻两组数只有一位不同,具体如下例子所示,因此在计数过程中不会存在竞争冒险问题。从电路图可以看出,在时钟上升沿还没到前,把Q端的4bit数据分成两路处理,Q端数据的高三位(cnt[3:1])平移到。

qq_40510975的博客 3703

从D触发器到扭环计数器:时序逻辑电路设计实战(Verilog版)

本文详细介绍了从D触发器到扭环计数器的时序逻辑电路设计实战,重点讲解了Verilog实现方法。通过D触发器原理、移位寄存器设计,最终实现扭环计数器,并提供了完整的Verilog代码和Vivado2014实现步骤,适合数字电路学习者和FPGA工程师参考。

weixin_30687051的博客 214

verilog实现二进制计数器,约翰逊(Johnson)计数器,环形计数器

https://github.com/zsylov/verliog-study/blob/master/2019.5.6%E8%AE%A1%E6%95%B0%E5%99%A8.md 用verilog实现一个4bit二进制计数器。 ==== a) 异步复位 b) 同步复位 input clk, rst_n; output [3:0] o_cnt; ```verilog `timescale...

Mr.zhang的博客 1万+

verilog手撕代码5——计数器(置位、加减、环形、扭环形、格雷码计数器实现)

置位、加减、环形、扭环形、格雷码计数器实现

qq_42135020的博客 7452

johnson 计数器

johnson计数器 verilog源代码

数字集成电路 -- 各种计数器简介(环形计数器,扭环形计数器,线性反馈移位寄存器,行波计数器)

目录 数字集成电路 -- 各种计数器简介 1. 环形计数器 2. 扭环形计数器 3. 线性反馈移位寄存器 4. 行波计数器 1. 环形计数器 https://wenku.baidu.com/view/73ec140bba1aa8114431d945.html N个寄存器构成的环形计数器,状态数:N 2. 扭环形计数器 https://wenku.baidu.com/view/73ec140bba1aa8114431d945.html N个寄存器构成..

dxz44444的博客 2万+

基于Johnson计数器的流水灯Verilog/VHDL程序

基于Johnson计数器的流水灯程序: 用四个按键分别去控制4个LED指示灯进行4种状态的流水灯显示,这四种状态分别为:流水灯左移、流水灯右移、流水灯移动和流水灯停止。逻辑功能可以简单地划分为三个部分:即按键检测逻辑、键值采集和控制信号产生以及流水灯开关和方向控制。 文件中包括Verilog和VHDL的两种语言的Quartus II程序,请您参考。

计数器—verilog

各种计数器的verilog代码实现

IC小白的成长之路 2万+

约翰逊计数器

约翰逊计数器 FPGA 约翰逊计数器 FPGA 约翰逊计数器 FPGA

基于CatBoost回归模型的完整预测分析:从建模到SHAP可解释性分析

本文介绍了使用CatBoost回归模型进行完整预测分析的流程。首先导入必要的Python库并加载数据,进行数据预处理包括训练测试集划分和归一化处理。然后通过网格搜索优化CatBoost超参数,使用最优参数训练模型并评估预测性能。结果显示模型具有较高的决定系数(R²=0.9944)和较低的误差指标(RMSE=0.0696)。接着进行残差分析和正态性检验,发现残差基本服从正态分布。最后通过SHAP分析实现模型可解释性,识别关键特征影响。该方法为梯度提升树在回归问题中的应用提供了完整解决方案。

fx666_的博客 746

Verilog实战:5分钟搞定Johnson计数器(附完整代码与仿真测试)

本文详细介绍了Johnson计数器在数字电路设计中的Verilog实现方法,包括核心原理、两种实现方案对比(移位寄存器与状态机)、测试平台搭建及常见问题排查。通过完整的代码示例和仿真测试,帮助读者快速掌握这一高效计数器设计技巧,特别适合FPGA初学者和需要快速实现的工程师。

weixin_42520780的博客 200

cs188Inference in Bayes Nets(贝叶斯网络的推理)

cs188Inference in Bayes Nets贝叶斯网络的推理Question1(3 points):Bayes Net StructureQuestion2(1 points):Bayes Net ProbabilitiesQuestion 3(5 points):Join FactorsQuestion4(4 points):EliminateQuestion5(4 points):NormalizeQuestion 6(4 points):Variable EliminationQuesti

weixin_46582817的博客 1674

硬件工程师全栈实战指南

《硬件工程师全栈手册》是一本涵盖硬件设计核心领域的实用指南,内容包含元器件选型、电路设计、PCB规范、信号完整性等关键知识点。

qq_43709190的博客 6562

用STM32手搓一个体温计

市面上大多额温计、测温计精度。

m0_61687959的博客 2375

C#实现跨域访问共享文件夹的账号密码验证方案

本文详细介绍了在C#中实现跨域访问共享文件夹的账号密码验证方案。通过调用Windows API LogonUser函数,结合LOGON32_LOGON_NEW_CREDENTIALS登录类型,可安全模拟指定用户身份,有效解决工作组与域环境间的文件共享访问难题。文章提供了完整的工具类封装、多种实战场景示例及详细的错误排查指南。

pea55的博客 540

各种计数器

本篇文章参考自常见六种计数器 用D触发器搭建计数器 要求实现一个4进制的计数器,但要用D触发器来搭建,这显然不会像写Verilog实现一样容易,所以我们要用数字电路中的传统方法来设计。 4进制计数器必须有4个不同的状态,所以需要两个D触发器组成这个电路。电路的状态表如下所示: 通过状态表可以画出卡诺图,对其化简可得次态输出。 电路次态的卡诺图如下所示: 通过卡诺图化简可得 Q0* = Q0’ Q1* = Q1’Q0+Q1Q0*; C = Q1Q0; 因此RTL代码如下 01 module test( 0

spx1164376416的博客 9846

智能车竞赛独轮组信标灯系统全解析:从硬件选型到实战调试

本文全面解析了智能车竞赛独轮组信标灯系统的核心原理与实战应用。从硬件架构(灯板、灯罩、控制器)的深度剖析,到红外信号(特别是40kHz调制信号)的接收与解码策略,再到车模的灭灯机构设计与路径规划,提供了从硬件选型到软件调试的全链路指南。文章重点分享了实战调试技巧与常见问题排查方法,旨在帮助参赛队伍深入理解系统,提升车模的识别精度与比赛表现。

e4f5g6h的博客 1124

数字逻辑电路(六)

数字逻辑电路(六)

m0_51921692的博客 1万+

Inception-Resnet-v1、Inception-Resnet-v2学习笔记(附Pytorch代码)_inception-resnet-v1 代码

Reduction-B模块:输入8*8*1792,输出8*8*1792.IR-B模块*10:输入17*17*896,输出17*17*896.IR-A模块*5:输入35*35*256,输出35*35*256.IR-A模块*5:输入35*35*384,输出35*35*256.IR-B模块*10:输入17*17*896,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.

2401_89285791的博客 470

PLCopen运动控制避坑指南:单轴功能块常见报错排查(基于SM3_Basic函数库)

本文深入解析PLCopen运动控制中单轴功能块的常见报错问题,基于SM3_Basic函数库提供实用排查指南。从功能块逻辑错误与硬件报错的甄别技巧到高频报错场景的解决方案,帮助工程师快速定位并解决运动控制系统中的稳定性问题,提升工业自动化设备的运行效率。

weixin_33686714的博客 316

【数字电子电路读书笔记(六)】

1、按时钟控制分类同步时序电路:在时序电路中,所有触发器的状态变化都是在同一时钟信号控制下同时发生的,即状态改变同步完成。异步时序电路:时序电路中,各触发器不使用同一时钟信号控制,各触发器状态的转换是非同时完成的。2、按外输出与外输入的关系分类Mealy型:时序电路的输出取决于该时刻的外部输入X和当前状态Q。输出函数表示为Z=F(X,Q)。ZXQ1‾Q0‾ZXQ1​​Q0​​Moore型:时序电路的输出只取决于当前的状态Q与外部输入X无关。

weixin_42319111的博客 1103

Machine Unlearning: A Survey

机器学习已经引起了广泛的关注,并发展成为一种使能技术,用于广泛的高度成功的应用,如智能计算机视觉、语音识别、医疗诊断等。然而,由于隐私、可用性和/或被遗忘权,一些特定样本的信息需要从称为机器遗忘的模型中删除,这就产生了一种特殊的需求。这项新兴技术因其创新性和实用性而引起了学术界和工业界的极大兴趣。与此同时,这个雄心勃勃的问题导致了许多旨在应对其挑战的研究工作。据我们所知,没有任何研究分析过这一复杂的主题,也没有比较过现有的遗忘解决方案在不同场景下的可行性。因此,通过这项调查,我们旨在了解遗忘技术的关键概念。

c_cpp_csharp的专栏 1158

6.3 若干常用的时序逻辑电路

移位寄存器(Shift Register)不仅具有存储代码的功能,还具有移位功能。移位功能是指寄存器内存储的代码在移位脉冲的作用下依次左移或右移。移位寄存器不仅可以用来寄存代码,还可以实现数据的串行-并行转换、数值的运算以及数据处理等。如图6.3.1所示的电路是由边沿触发方式的D触发器组成的4位移位寄存器,其中第一个触发器FF₀的输入端接收输入信号,其余触发器输入端均与前边一个触发器的Q端相连。在时钟上升沿同时作用于所有触发器时,触发器输入端(D端)的状态尚未改变,因此FF₀按Q₀原来的状态翻转,FF₁按Q

tang7mj的博客 5241

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 全加器门级(结构级),数据流,行为级实现
下一篇: xHCI1.1-框架和数据结构
geter_CS
博客等级 码龄10年 7310粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值