小数分频器vhdl实现_小数分频VHDL代码

本文详细介绍了小数分频的基本原理,并提供了一位小数分频器的VHDL源代码,适用于0-15的整数部分分频系数。通过交替进行N分频和(N+1)分频,实现精确的小数分频,减少相位变化影响。
摘要由CSDN通过智能技术生成

小数分频

基本原理,

以及基于此原理的一位小

数分频器的源代码,

受数据位宽的影响,

本文给出的代码系数整数部分的范围为

0-15

,如需更大数值可自行修改代码。

一、原理介绍:

假设分频系数为

N.X,

N*(10-X)+(N+1)*X=10*N-N*X+N*X+X=10*N+X=N.X*10

由上式可见只要满足输出

十个脉冲的时间内输入脉冲为

10*N+X

就可实现

N.X

分频

.

可对输入时钟进行

(10-X)

N

分频和

X

(N+1)

分频实现

,

由于先进行

(10-X)

次分频后进行

X

(N+1)

分频会造成相位有很大变化

,

可采用

N

分频和

(N+1)

分频交替进行的方法来改善

相伴变化

.

实现原理不再过多介绍

,

请参看

sel

部分源代码。

二、源代码

1

NdotXfd

,顶层文件

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity NdotXfd is

port (

clock   : in std_logic;

n    : in std_logic_vector(3 downto 0);

x           : in std_logic_vector(3 downto 0);

clock_out   : out std_logic

);

end entity;

architecture arch of NdotXfd is

component number

port(

n   : in std_logic_vector(3 downto 0);

number0 : out std_logic_vector(3 downto 0);

number1 : out std_logic_vector(3 downto 0)

);

end component;

component fdn

port(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值