8 //若分频系数为奇数,则输出时钟占空比取决于输入时钟占空比和分
9 //频系数(当输入为 50%时,输出也是 50%)。
10 //--------------------------------------------------------
11 //奇数倍分频:三倍分频的时序图如下所示。
12 //123456
13 //clock |--|__|--|__|--|__|--|__|--|__|--|__|
14 //clk_p_r|_____|-----------|_____|-----------|
15 //clk_n_r---|_____|-----------|_____|---------
16 //clk_out|________|--------|________|--------|
17
18 moduleint_div(clock,clk_out);
19
20 //I/O 口声明
21 inputclock;//输入时钟
22 outputclk_out;//输出时钟
23
24 //内部寄存器
25 regclk_p_r;//上升沿输出时钟
26 regclk_n_r;//下降沿输出时钟
27 reg[F_DIV_WIDTH-1:0]count_p;//上升沿脉冲计数器
28 reg[F_DIV_WIDTH-1:0]count_n;//下降沿脉冲计数器
29
30 //参数--分频系数
31 parameterF_DIV=48000000;//分频系数<<<<-----修改这里
32 parameterF_DIV_WIDTH=32;//分频计数器宽度
33
34 wirefull_div_p;//上升沿计数满标志
35 wirehalf_div_p;//上升沿计数半满标志
36 wirefull_div_n;//下降沿计数满标志
37 wirehalf_div_n;//下降沿计数半满标志
38
39 //判断计数标志位置位与否
40 assignfull_div_p=(count_p<F_DIV-1);
41 assignhalf_div_p=(count_p<(F_DIV>>1)-1);
42 assignfull_div_n=(count_n<F_DIV-1);
43 assignhalf_div_n=(count_n<(F_DIV>>1)-1);
44
45 //时钟输出
46 assignclk_out=(F_DIV==1)?
47 clock:(F_DIV[0]?(clk_p_r&clk_n_r):clk_p_r);//F_DIV[0]用于判断奇
偶数
48
49 //上升沿脉冲计数
50 always@(posedgeclock)