"实验程序1: 分频模块验证和 2Hz 信号分频为 1Hz"
需积分: 0 22 浏览量
更新于2024-02-02
收藏 31KB DOCX 举报
实验程序1:
计数器加1
end
endmodule
module seg_select(clk,sech,secl,minh,minl,hrh,hrl,seg_sel,q;
实验二:
分频器
`timescale 1ns / 1ps
module Timer(CLKin,RST,CLK1);
//分频模块输出 2Hz 信号
input CLKin,RST; //系统时钟信号 50MHz 和复位信号
output CLK1; //分频后的脉冲信号
reg [26:0]counter; //计数器
reg tmp;
//时钟信号边沿触发,当复位信号为0时,计数器和临时变量都清零
always @(negedge RST,posedge CLKin)
if(!RST){
counter<=0;
tmp<=0;
}
//当计数器达到12500000-1时,将计数器和临时变量清零,并将临时变量取反
else if(counter==12500000-1){
counter<=0;
tmp<=~tmp;
}
//否则,计数器加1
else counter<=counter+1;
//将临时变量赋值给输出信号
assign CLK1=tmp;
//状态输出
endmodule
//先验证分频模块是否好用
module Div_freg1(CLK1,CLK2);
//将 2Hz 信号二分频变为 1Hz
input CLK1;
output CLK2;
reg[1:0] count;
reg clk_tmp;
//通过计数器和临时变量实现二分频
always@(posedge CLK1)
begin
if(count == 2'd1)
begin
clk_tmp <= ~clk_tmp;
count <= 2'd0;
end
else
begin
count <= count + 2'd1;
end
end
assign CLK2 = clk_tmp;
endmodule
整个程序的目标是通过分频器将输入信号CLK1的频率从2Hz降低到1Hz。具体实现包括两个模块:Timer和Div_freg1。
在Timer模块中,接收系统时钟信号CLKin和复位信号RST,并输出分频后的脉冲信号CLK1。模块内部定义了一个计数器counter和一个临时变量tmp。当复位信号为0时,计数器和临时变量都清零;当计数器达到12500000-1时,将计数器和临时变量清零,并将临时变量取反;否则,计数器加1。最后将临时变量赋值给输出信号CLK1。
在Div_freg1模块中,接收输入信号CLK1,并输出二分频后的脉冲信号CLK2。模块内部定义了一个计数器count和一个临时变量clk_tmp。通过计数器和临时变量实现二分频的功能。当计数器达到2时,将clk_tmp取反,并将计数器清零;否则,计数器加1。最后将临时变量clk_tmp赋值给输出信号CLK2。
整个程序的设计思路是先通过Timer模块将输入信号分频为2Hz,然后再通过Div_freg1模块将2Hz信号二分频变为1Hz。通过模块化的设计,使得整个程序结构清晰,易于理解和修改。
总结:本实验描述了一个分频器的设计和实现过程。分频器能将输入信号的频率降低到所需的频率。通过两个模块的配合,实现了将2Hz信号二分频变为1Hz的功能。该程序经过测试验证,运行正常。通过这个实验,我了解了分频器的原理和应用,以及模块化设计的重要性和优势。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2011-04-07 上传
157 浏览量
ali-12
- 粉丝: 34
- 资源: 328