题解 | #时钟分频(偶数)#
时钟分频(偶数)
https://www.nowcoder.com/practice/49a7277c203a4ddd956fa385e687a72e
`timescale 1ns/1ns
module even_div
(
input wire rst ,
input wire clk_in,
output wire clk_out2,
output wire clk_out4,
output wire clk_out8
);
//*************code***********//
reg [3:0]cnt;
always@(posedge clk_in or negedge rst)
if(!rst)
cnt<=0;
else begin
if(cnt==7)
cnt<=0;
else
cnt<=cnt+1;
end
reg rclk_out2;
reg rclk_out4;
reg rclk_out8;
always@(posedge clk_in or negedge rst)
if(!rst)begin
rclk_out2<=0;
rclk_out4<=0;
rclk_out8<=0;
end
else begin
case(cnt)
0:begin
rclk_out2<=1;
rclk_out4<=1;
rclk_out8<=1;
end
1:begin
rclk_out2<=0;
rclk_out4<=1;
rclk_out8<=1;
end
2:begin
rclk_out2<=1;
rclk_out4<=0;
rclk_out8<=1;
end
3:begin
rclk_out2<=0;
rclk_out4<=0;
rclk_out8<=1;
end
4:begin
rclk_out2<=1;
rclk_out4<=1;
rclk_out8<=0;
end
5:begin
rclk_out2<=0;
rclk_out4<=1;
rclk_out8<=0;
end
6:begin
rclk_out2<=1;
rclk_out4<=0;
rclk_out8<=0;
end
7:begin
rclk_out2<=0;
rclk_out4<=0;
rclk_out8<=0;
end
endcase
end
assign clk_out2=rclk_out2;
assign clk_out4=rclk_out4;
assign clk_out8=rclk_out8;
//*************code***********//
endmodule
