Chinaunix首页 | 论坛 | 博客
  • 博客访问: 133527
  • 博文数量: 55
  • 博客积分: 1870
  • 博客等级: 上尉
  • 技术积分: 540
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-21 20:51
文章分类

全部博文(55)

文章存档

2011年(27)

2009年(3)

2008年(25)

我的朋友

分类:

2009-05-22 23:03:08

本实验要实现奇数分频功能,运用错位“异或”法。

module clk_div_3(clk_in,rst_n,clk_out);
input clk_in
;
input rst_n
;
output clk_out
;

parameter N
= 7; //N is odd.
parameter M = (N-1)/2;

reg
[2:0] cnt,cnt1;
reg clk_p
,clk_n;

always @
(posedge clk_in) begin
    
if(!rst_n) begin
        cnt
<= 0;
        clk_p
<= 0;
    end
    
else begin
        
if(cnt < M) begin
            clk_p
<= 1;
            cnt
<= cnt + 1;
        end
        
else if(cnt >=M && cnt < N-1) begin
            clk_p
<= 0;
            cnt
= cnt + 1;
        end
        
else cnt = 0;
    end
end

always @
(negedge clk_in) begin
    
if(!rst_n) begin
        cnt1
<= 0;
        clk_n
<= 0;
    end
    
else begin
    
if(cnt1 < M) begin
            clk_n
<= 1;
            cnt1
<= cnt1 + 1;
    end
    
else if(cnt1 >=M && cnt1 < N-1) begin
            clk_n
<= 0;
            cnt1
= cnt1 + 1;
        end
        
else cnt1 = 0;
    end
end

assign clk_out
= clk_p | clk_n; //错位相或


endmodule


仿真结果:
阅读(748) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-11-22 19:15:04

好,非常感谢!