根据题目中波形可以看出,周期为7,高电平和低电平分别持续3.5个周期。继续观察波形,输出信号拉高时和输入时钟下降沿对齐,拉低时和输入时钟上升沿对齐。由于同一个信号不能同时和上升沿和下降沿对齐。因此可以推断其是由两个信号进行组合逻辑得来,其中一个信号与上升沿对齐,另一个信号与下降沿对齐。由于手画的波形太丑,这里放一张题解中的波形。
`timescale 1ns/1ns
module odo_div_or
(
input wire rst ,
input wire clk_in,
output wire clk_out7
);
//*************code***********//
reg clk_pos ;
reg clk_neg ;
reg [2:0] cyc_cnt ;
always @(posedge clk_in or negedge rst) begin
if(!rst)
cyc_cnt <= 'd0 ;
else begin
if(cyc_cnt == 6)
cyc_cnt <= 0 ;
else
cyc_cnt <= cyc_cnt + 1 ;
end
end
always @(posedge clk_in or negedge rst) begin
if(!rst)
clk_pos <= 1'b0 ;
else if(cyc_cnt == 3)
clk_pos <= 1'b1 ;
else if(cyc_cnt == 6)
clk_pos <= 1'b0 ;
else
clk_pos <= clk_pos ;
end
always @(negedge clk_in or negedge rst) begin
if(!rst)
clk_neg <= 1'b0 ;
else if(cyc_cnt == 3)
clk_neg <= 1'b1 ;
else if(cyc_cnt == 6)
clk_neg <= 1'b0 ;
else
clk_neg <= clk_neg ;
end
assign clk_out7 = clk_pos | clk_neg ;
//*************code***********//
endmodule
标签:分频,wire,进阶,波形,clk,对齐,rst,占空比,reg
From: https://www.cnblogs.com/icwangpu/p/17035598.html