《计算机组成与CPU设计实验》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描述

module half_clk(
	input CLK,
	input Reset,
	output reg Q
);
always@(posedge CLK)
    begin
     if(Reset)
     	  Q<=0;
     	else
     	  Q<=~Q;
     end
endmodule

 4位二进制加法计数器

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

ef807d9e5647430d8f07f608d493f3e4.png

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

0609b5b9e90942da8fabfc45a02013c5.png

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

module upcount(
	input CLK,
	input Reset,
	output reg [3:0] Q
);
always@(posedge CLK ,posedge Reset)//异步复位
    begin
     if(Reset)
     	  Q<=0;
     	else
     	  Q<=Q+1;
     end
endmodule

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

86da5504f2d147cea7abe341630b4171.png

module downcount(
	input CLK,
	input Reset,
    input En,
	output reg [3:0] Q
);
always@(posedge CLK)
    begin
     if(Reset)
     	  Q<=0;
     	else if(En)
     	  Q<=Q-1;
        else
         Q<= Q;
     end
endmodule

计数器的应用:分频 

电路:

ef807d9e5647430d8f07f608d493f3e4.png

 波形图

001ece7d9b11423180ed0d9ea81971c5.png

  计数器的分频特性

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

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

 Q1四分频

Verilog描述 

module upcount(
	input CLK,
	input Reset,
	output reg [3:0] Q
);
always@(posedge CLK ,posedge Reset)
    begin
     if(Reset)
     	  Q<=0;
     	else
     	  Q<=Q+1;
     end
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的分频数。 

module clockdivider
#( parameter RATIO=10 )
//10分频
(
	input CLK,
	input Reset,
	output reg Q
);

reg [26:0]cnt;

always@(posedge CLK ,posedge Reset)
begin
     if(Reset)
       begin
     	   Q<=0;
     	   cnt <=0;
       	end
     else if(cnt==RATIO/2 - 1) //10分频,要50%占空比,高电平占5个周期,每5个周期翻以下
     	   Q  <= ~Q;
           cnt <= 0;
     else
     	   cnt<=cnt+1;
 end
endmodule

小结:时序逻辑电路

时序逻辑电路基本模块

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

基本功能之外的变化

复位(Reset)

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

装入(Load)

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

使能(Enable )

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

时序逻辑Verilog在线练习

练习网站:

牛客网-时序逻辑练习

4df6466c999848d78f30cc79551c3680.png

e04747e38cda4492a088862818fea6d3.png

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值