赞
踩
本篇内容来源于中国大学mooc《计算机组成与CPU设计实验》 (江苏大学)中的课程视频、PPT等相关资料。
本篇内容为《计算机组成与CPU设计实验》——计数器
参考视频:
计数器运行时,依次遍历规定的各状态后完成一次循环,它所经过的状态总数称为计数器的“模”,通常用M表示。
例子:
一个2位的二进制计数器循环输出00、01、10和11,称为模4计数器。
同理,3位的二进制计数器的M=8。
模2计数器的输出是?0 1
在Reset信号无效时,每当CLK上升沿到来时,触发器状态Q翻转一次。
输出信号Q的频率正好是CLK频率的二分之一,故称该电路为2分频电路。
- module half_clk(
- input CLK,
- input Reset,
- output reg Q
- );
- always@(posedge CLK)
- begin
- if(Reset)
- Q<=0;
- else
- Q<=~Q;
- end
- endmodule
- 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
- 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
电路:
波形图
计数器的分频特性
问题:如果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位二进制计数器(模),可实现分频
占空比:在一个脉冲周期内,高电平时间相对于总时间所占的比例。
定义RATIO为分频数:应大于等于2且为偶数;可取值6、10等,实现非的分频数。
- 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
练习网站:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。