|
如题
module divider
(
clk, rstn,
Cnt1_data,
Cnt2_data,
Data_Bin
);
input clk, rstn;
input [31:0]Cnt1_data;
input [31:0]Cnt2_data;
output [31:0]Data_Bin;
/***********************************************/
parameter Freq_50KHz = 16'd50_000; //Fs = Freq_50KHz
/***********************************************/
reg [31:0]Cnt1_in, Cnt2_in; //Ns = Cnt1_in, Nx = Cnt2_in
reg [31:0]Data_out; //Fx = Data_out
reg init_flag;
reg div_over;
always @ ( posedge clk or negedge rstn )
if( !rstn )
begin
Cnt1_in <= 32'd0;
Cnt2_in <= 32'd0;
Data_out <= 32'd0;
div_over <= 1'd0;
init_flag <= 1'd0;
end
else if( !init_flag )
begin
init_flag <= 1'd1;
Cnt1_in <= Cnt1_data;
Cnt2_in <= Cnt2_data * Freq_50KHz;
end
else if( ( Cnt2_in >= Cnt1_in ) && ( !div_over ) && init_flag )
begin
Cnt2_in <= Cnt2_in - Cnt1_in;
Data_out <= Data_out + 1'b1;
end
else if( Cnt2_in < Cnt1_in )
begin
div_over <= 1'd1;
end
/***********************************************/
assign Data_Bin = Data_out;
/***********************************************/
endmodule |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|