当前位置:   article > 正文

《计算机组成与CPU设计实验》4 时序逻辑(三)_模4计数器

模4计数器

本篇内容来源于中国大学mooc《计算机组成与CPU设计实验》 (江苏大学)中的课程视频、PPT等相关资料。

本篇内容为《计算机组成与CPU设计实验》——计数器

参考视频:

 计算机组成与CPU设计实验_江苏大学_中国大学MOOC(慕课) (icourse163.org)

计数器

逻辑功能

  • 对输入时钟脉冲进行计数
  • 也可用于分频、定时、产生节拍脉冲等

分类

  • 按时钟输入方式,分为同步和异步计数器
  • 按进位体制,分为二进制、十进制和任意进制计数器
  • 按计数方向,分为加法、减法和可逆计数器

计数器的“模”(Modulo)

        计数器运行时,依次遍历规定的各状态后完成一次循环,它所经过的状态总数称为计数器的“模”,通常用M表示。

例子:

        一个2位的二进制计数器循环输出00、01、10和11,称为模4计数器。

        同理,3位的二进制计数器的M=8。

        模2计数器的输出是?0 1

1位二进制计数器(模2)

 1位二进制计数器电路

0419e7575e3441b0bc39c8fa12e8c26d.png

 1位二进制计数器功能

        在Reset信号无效时,每当CLK上升沿到来时,触发器状态Q翻转一次。

        输出信号Q的频率正好是CLK频率的二分之一,故称该电路为2分频电路。

 1位二进制计数器波形图 

19c5c6e76d644a3c8a725c53451bac3e.png

 1位二进制计数Verilog描述

  1. module half_clk(
  2. input CLK,
  3. input Reset,
  4. output reg Q
  5. );
  6. always@(posedge CLK)
  7. begin
  8. if(Reset)
  9. Q<=0;
  10. else
  11. Q<=~Q;
  12. end
  13. endmodule

 4位二进制加法计数器

  4位二进制加法计数器电路

ef807d9e5647430d8f07f608d493f3e4.png

  4位二进制加法计数器波形图 

0609b5b9e90942da8fabfc45a02013c5.png

   4位二进制加法计数器Verilog描述

  1. module upcount(
  2. input CLK,
  3. input Reset,
  4. output reg [3:0] Q
  5. );
  6. always@(posedge CLK ,posedge Reset)//异步复位
  7. begin
  8. if(Reset)
  9. Q<=0;
  10. else
  11. Q<=Q+1;
  12. end
  13. endmodule

具有使能控制的 8 位减法计数器

86da5504f2d147cea7abe341630b4171.png

  1. module downcount(
  2. input CLK,
  3. input Reset,
  4. input En,
  5. output reg [3:0] Q
  6. );
  7. always@(posedge CLK)
  8. begin
  9. if(Reset)
  10. Q<=0;
  11. else if(En)
  12. Q<=Q-1;
  13. else
  14. Q<= Q;
  15. end
  16. endmodule

计数器的应用:分频 

电路:

ef807d9e5647430d8f07f608d493f3e4.png

 波形图

001ece7d9b11423180ed0d9ea81971c5.png

  计数器的分频特性

  • Q0:2分频
  • Q1:4分频
  • Q2: 8分频
  • Q3: 16分频

 问题:如果CLK是10MHz,希望得到2.5MHz的时钟,应采用哪个输出? 

 Q1四分频

Verilog描述 

  1. module upcount(
  2. input CLK,
  3. input Reset,
  4. output reg [3:0] Q
  5. );
  6. always@(posedge CLK ,posedge Reset)
  7. begin
  8. if(Reset)
  9. Q<=0;
  10. else
  11. Q<=Q+1;
  12. end
  13. endmodule

n位二进制计数器(模gif.latex?2%5E%7Bn%7D),可实现gif.latex?2%5E%7Bn%7D分频

占空比为50%的偶数分频器 

占空比:在一个脉冲周期内,高电平时间相对于总时间所占的比例。

17c71e9d83fb44f0b233d2797cb8a1e5.png

 定义RATIO为分频数:应大于等于2且为偶数;可取值6、10等,实现非gif.latex?2%5E%7Bn%7D的分频数。 

  1. module clockdivider
  2. #( parameter RATIO=10 )
  3. //10分频
  4. (
  5. input CLK,
  6. input Reset,
  7. output reg Q
  8. );
  9. reg [26:0]cnt;
  10. always@(posedge CLK ,posedge Reset)
  11. begin
  12. if(Reset)
  13. begin
  14. Q<=0;
  15. cnt <=0;
  16. end
  17. else if(cnt==RATIO/2 - 1) //10分频,要50%占空比,高电平占5个周期,每5个周期翻以下
  18. Q <= ~Q;
  19. cnt <= 0;
  20. else
  21. cnt<=cnt+1;
  22. end
  23. endmodule

小结:时序逻辑电路

时序逻辑电路基本模块

  • 触发器/寄存器
  • 移位寄存器
  • 计数器

基本功能之外的变化

复位(Reset)

  • 系统复位的时候,装入一个初值。
  • 有同步复位、异步复位。

装入(Load)

  • 并行数据
  • 在工作过程当中,如果需要,可以装入一个数据
  • 移位寄存器、计数器等,都可以设计装入
  • 同步   不能写入敏感列表

使能(Enable )

  • 使能信号主要针对功能来说
  • 对于移位寄存器,使能是控制是否允许移位
  • 对于计数器,使能是控制是否计数
  • 触发器/寄存器的使能即 “装入 ”
  • 同步  不能写入敏感列表

时序逻辑Verilog在线练习

练习网站:

牛客网-时序逻辑练习

4df6466c999848d78f30cc79551c3680.png

e04747e38cda4492a088862818fea6d3.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/607836
推荐阅读
相关标签
  

闽ICP备14008679号