搜索
bottom↓
回复: 3

偶数分频和奇数分频器设计(欢迎拍砖)

[复制链接]

出0入0汤圆

发表于 2010-6-3 17:07:23 | 显示全部楼层 |阅读模式
偶数分频和奇数分频器设计
(1)偶数分频
对时钟进行偶数分频比较简单,如占空比为50%的时钟信号只要使用一个计数器,在前半段时间内高电平后半段电平内低电平这样分频出来的信号就是占空比为50%的时钟信号。废话不多说上段程序。
---------------------------偶数分频VHDL代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity clkdiv is
   generic (n:integer:=8);                        ---偶数分频,分频数可任意更改
    port(clk:in std_logic;
         outclk:out std_logic
        );
   end clkdiv;
architecture u1 of clkdiv is
signal count:integer;
begin
process(clk)
  begin
   if(clk'event and clk='1')
  then
if(count=n-1)then                                --计数周期
     count<=0;
   else count<=count+1;
   if count<(integer(n/2))
then
       outclk<='0';
else
  outclk<='1';
    end if;
   end if;
end if;
end process;
end u1;
(2)奇数分频
奇数分频相对偶数分频来说,如果不要求占空比的话是一样的,但是如果要求占空比为50%的话则计数分频必偶数分频要复杂些。其中需要使用些技巧。可以先对输入时钟的上升沿进行计数,然后让一个内部信号在前一半段时间内为低电平,后一半段时间内为高电平。同时对输入时钟的下降沿进行计数,让另一个内部信号在前半段时间内为高电平,在后半段时间内为低电平。然后让两个内部信号进行相与,得到了半个时钟的一个高电平,在让这个信号和第一个内部信号相或,就得到了占空比为50%的时钟信号了~~~
-----奇数分频VHDL代码------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity clkdiv is
   generic (n:integer:=7);                        ---偶数分频,分频数可任意更改
    port(clk:in std_logic;
         outclk:out std_logic
        );
    end clkdiv;
architecture u1 of clkdiv is
signal count1,count2:integer;
signal q,outclk1,outclk2:std_logic;
begin
     q<=outclk1 and outclk2;----两个内部信号相与
    outclk<=q or outclk1;   ----第一个信号和Q信号相或

process(clk)
  begin
   if(clk'event and clk='1')
  then
if(count1=n-1)then                                --计数周期
     count1<=0;
   else count1<=count1+1;
   if count<(integer(n/2))
then
       outclk1<='0';
else
  outclk1<='1';
    end if;
   end if;
end if;
end process;

process(clk)
  begin
   if(clk'event and clk='0')
  then
if(count2=n-1)then                                --计数周期
     count2<=0;
   else count2<=count2+1;
   if count<(integer(n/2))
then
       outclk2<='1';
else
  outclk<='0';
    end if;
   end if;
end if;
end process;
end u1;

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-11-11 17:28:53 | 显示全部楼层
奇数分频还有第二种方法,一直没想清楚
方法如网上所说如下:
对进行奇数倍n分频时钟,首先进行n/2分频(带小数,即等于(n-1)/2+0.5),然后再进行二分频得到。得到占空比为50%的奇数倍分频。下面讲讲进行小数分频的设计方法

小数分频:首先讲讲如何进行n+0.5分频,这种分频需要对输入时钟进行操作。基本的设计思想:对于进行n+0.5分频,首先进行模n的计数,在计数到n-1时,输出时钟赋为‘1’,回到计数0时,又赋为0,因此,可以知道,当计数值为n-1时,输出时钟才为1,因此,只要保持计数值n-1为半个输入时钟周期,即实现了n+0.5分频时钟,因此保持n-1为半个时钟周期即是一个难点。从中可以发现,因为计数器是通过时钟上升沿计数,因此可以在计数为n-1时对计数触发时钟进行翻转,那么时钟的下降沿变成了上升沿。即在计数值为n-1期间的时钟下降沿变成了上升沿,则计数值n-1只保持了半个时钟周期,由于时钟翻转下降沿变成上升沿,因此计数值变为0。因此,每产生一个n+0.5分频时钟的周期,触发时钟都是要翻转一次.

出0入0汤圆

发表于 2010-11-11 21:36:44 | 显示全部楼层

(原文件名:未命名.jpg)
具体分析
应该是异或吧!

出0入0汤圆

发表于 2011-7-29 13:40:17 | 显示全部楼层
学习了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 13:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表