题目:
描述
设计一个同时输出7分频的时钟分频器,占空比要求为50%
注意rst为低电平复位
信号示意图:
波形示意图:
输入描述:
输入信号 clk_in rst
类型 wire
输出描述:
输出信号 clk_out7
类型 wire
提交代码:
第一反应是写一个双边沿触发的计数器,参考HD Dualedge思路
题解给的思路更好,加了一个计数器,解决问题(画一下波形图易得)
`timescale 1ns/1ns
module odo_div_or
(
input wire rst ,
input wire clk_in,
output wire clk_out7
);
//*************code***********//
reg [2:0]cnt;
reg p, n;
always@(negedge rst, posedge clk_in)begin
if (~rst)
p <= 0;
else if(cnt == 3)
p <= 1;
else if(cnt == 6)
p <= 0;
end
always@(negedge rst, negedge clk_in)begin
if (~rst)
n <= 0;
else if(cnt == 3)
n <= 1;
else if(cnt == 6)
n <= 0;
end
assign clk_out7 = p || n;
always@(negedge rst, posedge clk_in)begin
if(~rst)
cnt <= 0;
else
cnt <= cnt == 6 ? 0 : cnt + 1;
end
// always@(negedge rst, posedge clk_in)begin
// if(~rst)
// clk_out7 <= 0;
// else
// clk_out7 <= ~clk_out7;
// end
//*************code***********//
endmodule