input clkin,rst
output clkout
reg [3:0]cnt
always @(posedge clk or negedge rst)
if (!rst)
cnt<=0
elsif (cnt>=4 )
cnt<=0
else
cnt<=cnt+1
assign clkout=(cnt<3)?1:0
endmodule
给你写一个,这是5分频程序。
假设你的clk就是1s周期的时钟那么10s的应该是这么写
reg
[3:0]
cnt_10
reg
clk_10s
always
@
(posedge
rst
or
posedge
clk)
begin
if
(rst)
begin
cnt_10
<=
0
clk_10s<=
0
end
else
begin
if
(cnt_10==4)
begin
cnt_10
<=
0
clk_10s<=~clk_10s
end
else
begin
cnt_10
<=
cnt_10
+1
clk_10s<=
clk_10s
end
end
60的,cnt就在29归零,同时clk_60s反向
是在半周期反向才是占空比1:1。
使用74LS90或74ls290,
当R0(1)、R0(2)均为“1”;S9(1)、S9(2)中有“0”时,实现异步清零功能,即QD(Q3),QC(Q2),QB(Q1),QA(Q0)=0,0,0,0。
当S9(1)、S9(2)均为“1”;R0(1)、R0(2)中有“0”时,实现置9功能,即QD(Q3),QC(Q2),QB(Q1),QA(Q0)=1,0,0,1。
那么很简单了,信号接入cp1(选择5进制计数器,q3q2q1表示5进制计数器计算出来的值),同时信号也接入cp0(使q0成为二进制计数器),
当来第一次脉冲的下降沿时,74ls90的q3q2q1状态为001,q0状态为1.把q0接S9(1)、q1接S9(2).把R0(1)接地,R0(2)接地.
使第二次脉冲的下降沿时实现置9功能,此时状态QD(Q3),QC(Q2),QB(Q1),=1,0,0.观察可知按照二进制的100等于4.此时QA(Q0)=1。观察可知QD(Q3),QC(Q2),QB(Q1),QA(Q0)=1,0,0,1按照二进制的1001等于9,
第三次脉冲的下降沿时,74ls90的q3q2q1q1q0状态为0,0,0,0,(参考74ls290真值表)
那么第四个脉冲的下降沿到来时q3q2q1q0状态为0,0,1,1
第五次1001
第六次0000
第七次0011.以下以此循环.
好了,很明显每三次高电平输入cp1和cp0,q3就能输出了1次(第2次)高电平,q3刚好是三进制计数器,那么q3也就是三分频器了(注意:假设输入信号的高低电平的占空比为50%,q3输出的占空比只有33.333%,即1/3)
5分频就更简单了,把S9(1)接地、S9(2)接地.把R0(1)接地,R0(2)接地.信号接入cp1(选择5进制计数器)
很明显每5次高电平输入cp1,q3就能输出了1次(第4次)高电平,q3刚好是五进制计数器,那么q3也就是五分频器了(注意:假设输入信号高低电平的占空比为50%,q3输出的占空比只有20%,即1/5)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)