Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1023824
  • 博文数量: 159
  • 博客积分: 4079
  • 博客等级: 上校
  • 技术积分: 2373
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-24 13:35
个人简介

诚实守信!

文章分类

全部博文(159)

文章存档

2015年(2)

2014年(18)

2013年(9)

2012年(57)

2011年(31)

2009年(42)

分类:

2009-09-08 14:47:21

module my_reg(
                clk,        //时钟输入,48MHz,连接到时钟输入
                reset,                                    //复位输入,低电平有效
                D,        //输入由开关决定,0:按下,1:未按下
                Q,            //输出,0:点亮,1:熄灭
 
                clk_flag       //时钟标志,;LED点亮表示内部时钟高电平,便于观察
 );
input   clk;      //输入输出定义
input   reset;     //用于复位clk_div的时钟
input   D;  
  
output  Q;
output  clk_flag;
 
reg    Q;    //寄存器说明
wire                    clk_out;
 
assign clk_flag = ~clk_out;  //由于LED 低电平点亮,所以要反相
 
always @(posedge clk_out)  //D 触发器描述
begin
 Q <= D;
end
clk_div clk_div_0(  //分配得到2S的时钟,便于观察
    .clk(clk),    //时钟输入,48M
 .reset(reset),  //异步复位输入,高电平复位
 
 .clk_out(clk_out)  //分频时钟输出
    );
 
endmodule
 
 
module clk_div
 (
 clk,        //时钟输入,48M
 reset,       //异步复位输入,高电平复位
 clk_out      //分频时钟输出
 );
parameter   cnt_top=26'd48000000; //分频系数
input   clk;      //端口定义
input   reset;
output   clk_out;
reg     clk_out;      //寄存器定义
reg   [25:0] clk_cnt;
always @(posedge clk or negedge reset) 
begin
 if(!reset)       //复位
 begin
  clk_out <= 1'b0;
  clk_cnt <= 0;
 end
 else
 begin
  if(clk_cnt==cnt_top-1)
  begin
   clk_out <= ~clk_out;   //分频输出
   clk_cnt <= 0;
  end
  else
   clk_cnt <= clk_cnt+1'b1; //计数器加1
 end
end
endmodule
阅读(750) | 评论(0) | 转发(0) |
0

上一篇:数据分配器

下一篇:译码器

给主人留下些什么吧!~~