首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

编译预处理语句 if-else语句 03

编译预处理语句 if-else语句 03

11: 奇分频

实现奇数(N)分频,分别用上升沿计数到(N-1)/2,再计数到N-1;用下降沿计数到(N-1)/2,再计数到N-1,得到两个波形,然后把它们相或即可得到N分频。代码如下:

module fp_odd(clk_out,clk_p,clk_n,clk_in,rst);

output clk_out;

output clk_p,clk_n;

input clk_in,rst;

reg [2:0] cnt_p,cnt_n;

reg clk_p,clk_n;

parameter N=5;

always @ (posedge clk_in or negedge rst)

begin

       if(!rst)     cnt_p<= 0;

       else  if(cnt_p==N-1)    cnt_p<=0;

                elsecnt_p <= cnt_p + 1;

end

always @ (posedge clk_in or negedge rst)

begin

    if(!rst) clk_p <= 0;

    else if(cnt_p==(N-1)/2)

               clk_p<= !clk_p;

       else if(cnt_p==N-1)

               clk_p<= !clk_p;

end

always @ (negedge clk_in or negedge rst)

begin

       if(!rst)     cnt_n<= 0;

       else  if(cnt_n==N-1)    cnt_n<=0;

                elsecnt_n <= cnt_n + 1;

end

always @ (negedge clk_in or negedge rst)

begin

    if(!rst) clk_n <= 0;

    else if(cnt_n==(N-1)/2)

               clk_n<= !clk_n;

       else if(cnt_n==N-1)

               clk_n<= !clk_n;

end

assign clk_out = clk_p | clk_n;

endmodule


返回列表