【牛客网刷题系列 之 Verilog进阶挑战】~ Johnson Counter =【扭环形计数器】=【约翰逊计数器】

0. 前言

对于学过数电的小伙伴来说可能听说过这种计数器,下边我们介绍一下涉及到的知识点以及笔试面试过程中的一些高频考试题。

0.1 知识点一

关于什么是 扭环形计数器、环形计数器、m 序列线性反馈移位寄存器 ?

(1)扭环形计数器,每次状态变化时仅有一个触发器发生翻转,译码不存在竞争冒险,在n(n≥3)位计数器中,使用2n个状态,有2^n-2n个状态未使用;
在这里插入图片描述

(2)环形计数器,正常工作时所有触发器中只有一个是1(或0)状态,计n个数需要n个触发器,状态利用率低;
在这里插入图片描述

(3)n个寄存器的线性反馈移位寄存器LFSR可以产生的最长的随机序列是2^n−1长度(即m序列)。LFSR常被用来生成m序列,也可产生和校验 CRC。

关于CRC的文章,可以参考一下这个CRC

0.2 牛刀小试

  1. 移位寄存器由 8 级触发器组成,用它构成的扭环形计数器具有______种有效状态;用它构成的环形计数器具有______种有效状态,构成线性反馈移位寄存器具有______种有效状态。

A. 16,8,511

B. 4, 8,15

C. 16,8,255

D. 8,16,127

答案:C
解析:参见0.1知识点讲解。

1. VL55 Johnson Counter

1.1 题目描述

请用Verilog实现4位约翰逊计数器(扭环形计数器),计数器的循环状态如下。

1.1.1 信号示意图

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

1.1.2 波形示意图

1.1.3 输入描述

input clk ,
input rst_n

1.1.4 输出描述

output reg [3:0] Q

1.2 解题思路

由文章刚开始可以知道,扭环形计数器的思想如下:
1. 除了最低位以外,输出等于输入
2. 最低位比较特殊,输出取反给输入
根据这两点可以写出代码。

1.3 代码实现

`timescale 1ns/1ns

module JC_counter(
   input                clk ,
   input                rst_n,
 
   output reg [3:0]     Q  
);
    /*
    扭环形计数器:
    1. 除了最低位以外,输出等于输入
    2. 最低位比较特殊,输出取反给输入
    */
    always @ (posedge clk or negedge rst_n) begin
        if(!rst_n) begin
           Q <= 4'd0; 
        end
        else begin
            Q <= {~Q[0], Q[3:1]};
        end
    end
endmodule

1.4 测试文件

待更新。。。

1.5 仿真波形

待更新。。。

参考文献

1. 知识点1

声明

本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!

本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!

如果觉得对你有用的话,记得收藏+评论!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值