网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> EDA >> HDL >> 文章正文
  分频器和32位计数器           ★★★ 【字体:
分频器和32位计数器
作者:Free    文章来源:Free    点击数:    更新时间:2007-12-30    
module df(clk,reset,cs,write,read,adder,data,c,clk1);
input clk,reset,cs,write,read,adder;  //输入信号
inout data;//计数值
output c,clk1;//输出时钟与计数进位信号
wire[15:0] data_reg,data;//计数值的高16位数和低16位
reg c,clk1;
reg[15:0] accuh,accul;
reg[6:0] i;
assign data_reg=(adder)?accuh:accul;
/*地址信号为高,缓存计数值的高16位数,否则缓存计数值的低16位数*/
assign data=(!(cs|read))?data_reg:16'hz;//有片选和读信号,输出计数值
 always@(posedge clk)
   begin
    if(!reset)//复位信号,从零开始计数
     begin
      accuh<=0;accul<=0; clk1<=0;
      c<=0;i<=0;
     end
    else//没有复位信号,从给定计数初值计数
      begin
        if(!write)//有写信号,读进给定的计数初始值
         begin
          if(!cs)//有片选信号
            begin
              if(adder)
              accuh<=data;
              else
              accul<=data;//读进初始值的低16位
            end
          end
          if(i>=119)//对输入时钟进行120分频
            begin
              i<=0;
              clk1<=~clk1;//得到分频后系统所需时钟
                if(accul<16'hffff)//对分频得到的时钟计数
                accul<=accul+1;
                else
                  begin
                   accuh<=accuh+1;
                   accul<=0;
                  end
                  if((accuh==16'hffff)&&(accul==16'hffff))//如果计满则进位
                  c<=1;
                  else
                  c<=0;
            end
         else
        i<=i+1;
      end
   end
endmodule
               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    使用基于图形的物理综合软件…
    分频器的硬件描述语言设计
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号