机电之家资源网
单片机首页|单片机基础|单片机应用|单片机开发|单片机文案|软件资料下载|音响制作|电路图下载 |嵌入式开发
培训信息
赞助商
一种多时钟系统的设计源程序
一种多时钟系统的设计源程序
 更新时间:2010-1-11 16:11:34  点击数:0
【字体: 字体颜色

以下是笔者用AHDL Altera HDL语言写的关于外部PLL控制器,50%占空比的5分频和50%占空比的3分频模块的源程序及其生成的模块图,程序中文字部分为注释。

AHDL Altera 公司的硬件逻辑描述语言的简称,其特点是非常易学易用,学过高级语言的人可以在很短的时间(如几周)内掌握AHDL。它的缺点是移植性不好,通常只用于ALTERA自己的开发系统。

    由于我们研发的系统采用“自顶向下”层次化设计的思想,这里提供的只是各个模块的源程序,在实际设计中采用以下源程序生成各个相应的模块,然后在顶层文件中加以组合,以完成相应的功能。

----------------------------------------------------------------------------------------------------------------------

--该程序为外部PLL系数控制源程序

SUBDESIGN Pll_control      -- 设计实体名;

(

         gear_v[1..0]: INPUT;     --定义一个模4计数器的输出值作为该控制器的输入;       --4计数器用于记录切换按键的脉冲,每按一次按键,计数器加1

       v[8..0],r[6..0],s[2..0]: OUTPUT;

)

BEGIN

  TABLE

       gear_v[1..0]=> v[8..0],r[6..0],s[2..0];

        0       => B"001111000",B"0010111",B"100";

        1       => B"100000000",B"0010111",B"100";

        2       => B"010101011",B"0010111",B"100";

           3       => B"100001000",B"0010111",B"100";

  END TABLE;

END;

----------------------------------------------------------------------------------------------------------------------

 

-----------------------------------------------------------------------------------------------------------------------

--该程序为50%占空比5分频模块源程序

SUBDESIGN clk_divider_5      -- 设计实体名;

(

    Clock, en         : INPUT;

    Divide_Clk       : OUTPUT;

)

VARIABLE

    Interior_Clk          : Node; -- 建立一个内部时钟;

    Divide_DFF[1..0]      : DFF;  -- 说明一个 D 触发组;

    Result_DFF          : DFF;  -- 建立一个输出 D 触发器;

BEGIN

    IF en THEN

      Interior_Clk       = Clock $ Result_DFF;   -- 输入时钟异或结果触发器值;    

      Divide_DFF[].Clk  = Interior_Clk;            -- D 触发器的时钟连接;

      IF Divide_DFF[] = = 2  THEN  --D 触发器的输入端处理;

         Divide_DFF[].D = 0;         

      ELSE

         Divide_DFF[].D = Divide_DFF[] + 1;  

      END IF;

    -- 计数器计满一次,结果触发器翻转一次;

      Result_DFF.Clk = Divide_DFF[1];

      Result_DFF.D  = !Result_DFF;             

      Divide_Clk     =  Result_DFF;  -- 分频信号输出;

    END IF;

END;

-----------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------

--该程序为50%占空比3分频模块源程序

SUBDESIGN clk_divider_3      -- 设计实体名;

(

    Clock, en         : INPUT;

    Divide_Clk       : OUTPUT;

)

VARIABLE

    Interior_Clk         : Node; -- 建立一个内部时钟;

    Divide_DFF         : DFF;  -- 说明一个 D 触发器;

    Result_DFF         : DFF;  -- 建立一个输出 D 触发器;

BEGIN

    IF en THEN

      Interior_Clk       = Clock $ Result_DFF;   -- 输入时钟异或结果触发器值;    

      Divide_DFF[].Clk  = Interior_Clk;            -- D 触发器的时钟连接;

      IF Divide_DFF[] = = 1  THEN  --D 触发器的输入端处理;

         Divide_DFF[].D = 0;          

      ELSE

         Divide_DFF[].D = Divide_DFF[] + 1;  

      END IF;

    -- 计数器计满一次,结果触发器翻转一次;

      Result_DFF.Clk  = Divide_DFF;

      Result_DFF.D   = !Result_DFF;             

      Divide_Clk     =  Result_DFF;  -- 分频信号输出;

    END IF;

END;

-------------------------------------------------------------------------------------------------------------------

 对于模10分频器,因为是偶数倍分频,可直接调用Quartus II开发工具中参数化计数器来实现。为确保占空比为50%,先进行5分频,然后进行2分频实现。具体如下图所示:

  • 上一篇: 一种基于PCI IP核的码流接收卡的设计
  • 下一篇: 没有了
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    关于我们 | 联系我们 | 广告合作 | 付款方式 | 使用帮助 | 机电之家 | 会员助手 | 免费链接

    点击这里给我发消息66821730(技术支持)点击这里给我发消息66821730(广告投放) 点击这里给我发消息41031197(编辑) 点击这里给我发消息58733127(审核)
    本站提供的机电设备,机电供求等信息由机电企业自行提供,该企业负责信息内容的真实性、准确性和合法性。
    机电之家对此不承担任何保证责任,有侵犯您利益的地方请联系机电之家,机电之家将及时作出处理。
    Copyright 2007 机电之家 Inc All Rights Reserved.机电之家-由机电一体化网更名-声明
    电话:0571-87774297 传真:0571-87774298
    杭州滨兴科技有限公司提供技术支持

    主办:杭州市高新区(滨江)机电一体化学会
    中国行业电子商务100强网站

    网站经营许可证:浙B2-20080178-1