目录:
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 牛刀小试
- 移位寄存器由 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 仿真波形
待更新。。。
参考文献
声明
本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!
本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!
如果觉得对你有用的话,记得收藏+评论!!!