《计算机组成与CPU设计实验》实验5 计数器与分频器实验

实验目的

  • 熟悉计数器的功能特性和分频器应用
  • 用HDL语言设计二进制计数器和时钟分频器。

实验原理

时钟

数字系统中的重要信号

  • 决定时序逻辑中何时更新存储元件的状态

具有固定周期,在高电平和低电平之间不停振荡的信号

  • 时钟周期是一个完整的高低电平振荡的时间,它的倒数是时钟频率

计数

        存储特定事件发生的次数,通常与时钟有关

分频

        根据需要,把输入时钟的频率f_{in}进行处理,获得f_{out}=\frac{f_{in}}{n} ,n是分频数

计数电路always_ff block中的组合部分

四位加法器

组合逻辑部分 

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第1张图片

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第2张图片

 时序逻辑部分

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第3张图片

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第4张图片

 应用计数器实现分频的Verilog设计

计数器2^{n}分频

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第5张图片

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第6张图片

 触发器串联实现2^{n}分频

 一个触发器实现2分频、2个触发器实现4分频,依次类推

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第7张图片

 偶数分频

增加计数值判断

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第8张图片

计数器在CPU中的作用

 程序计数器Program Counter:保存指令所在的存储单元地址

例子:

32位RISC-V指令集

  • 每条指令占4个字节
  • 顺序执行时PC的地址每次更新为PC+4,再送到指令存储器取指令。

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第9张图片

实验内容和要求

让流水灯的移动间隔变成1秒钟

        一个分频器,对10MHz输入时钟进行分频,分频后的时钟频率为1Hz。使用分频后的时钟作为移位寄存器的时钟,使LED灯每隔1秒移动一位。

《计算机组成与CPU设计实验》实验5 计数器与分频器实验_第10张图片

        由于系统时钟的频率比较高(CLOCK信号的频率是10MHz,超过80hz,人眼就看不出来闪烁),如果直接用它作为移位寄存器的时钟,人的肉眼将无法分辨出LED灯的移动。所以需要设计一个分频器将时钟频率降下来。

10M分频

  • 输入时钟10MHz
  • 需要10^{6}分频,产生1Hz的时钟信号
  • (1000000(D) =1111_0100_0010_0100_0000(B) 32位二进制)

设计分频

  • 2^{n}分频不适用
  • 使用偶数分频

 Verilog描述

module clock_divider
#(parameter RATIO=1000000)
(
	input CLK,
	input Reset,
	output reg [7:0] Q
);
 
 reg clk;
 reg [31:0]cnt;
 //1000000分频
 always@(poseedge CLK or negedge Reset )
 			if(Reset)
	  	  cnt<=0;
 		  else if(cnt==RATIO/2-1)
 		     clk<=~clk;
             cnt<=0;
 		  else
 		    cnt <=cnt+1;

//流水灯
always@(poseedge clk or negedge Reset)
	if(Reset)
	   Q <= 8'b0000_0001;
	end
 else
        Q<={Q[0],Q[7:1]};
endmodule

你可能感兴趣的:(Verilog,Verilog)