基于Quartus II的半整数分频器设计

  • 格式:doc
  • 大小:650.50 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA课程设计总结设计题目:基于Quartus II的半整数分频器设计

学院:理学院

专业:电子信息科学与技术

班级:二班

姓名:崔圣淋

学号:200909130228

指导教师:李岩

课程设计时间:2011-2012学年下半学期

目录

1、主要功能 (3)

2、系统设计方案 (3)

2.1小数分频的基本原理 (3)

2.2电路组成 (3)

3、系统仿真 (4)

4 分频器的RTL图 (5)

5 VHDL源程序 (5)

6 设计总结 (6)

6.1实验中的问题 (6)

6.2收获、体会和设计改进建议 (6)

1、主要功能

用VHDL语言设计一个半整数分频器,使能实现小数分频。

2、系统设计方案

2.1小数分频的基本原理

通常整数分频器可以满足大部分数字电路的设计要求,但在某些特殊场合下,我们需要采用分频系数不是整数的分频器完成某些特定的设计,这个时候需要采用小数分频器进行分频。

采用可编程逻辑器件实现小数分频器,以2.5分频为例:设计一个模3的计数器,再设计一个扣除脉冲电路,加在模3计数器输出之后,每来两个脉冲就扣除一个脉冲(实际上是使被扣除的脉冲变成很窄的脉冲,可由异或门实现),就可以得到分频系数为2.5的小数分频器。采用类似方法,可以设计分频系数为任意半整数的分频器。

小数分频的基本原理为脉冲吞吐计数法:设计两个不同分频比的整数分频器,通过控制单位时间内两种分频比出现的不同次数,从而获得所需的小数分频值。例如设计一个分频系数为10.1的分频器,可以将分频器设计成9次10分频,1次11分频,这样总的分频值为

(9×10+1×11)/(9+1) =10.1

从这种实现方法的特点可以看出,由于分频器的分频值在不断改变,因此分频后得到的信号抖动较大。

当分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,使输出为一个稳定的脉冲频率,而不是一次N分频,一次N-1分频。

2.2电路组成

设需要设计一个分频系数为N-0.5的分频器,其电路可由一个模N计数器、一个二分频器和一个异或门组成,如图1所示。在实现时,模N计数器可设计成带预置的计数器,这样就可以实现任意分频系数为N-0.5的分频器。

异或门模N计数器f

/(N-0.5)

二分频器

f

/(2N-1)

f 0

3、系统仿真

Preset=2,即分频值为1.5,仿真图如下

Preset=3,即分频值为2.5,仿真图如下

Preset=4,即分频值为3.5,仿真图如下

4 分频器的RTL图

5 VHDL源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity div_half is

port (inclk: in std_logic; --时钟源

preset: in std_logic_vector(3 DOWNTO 0); --预置分频值N

outclk1: out std_logic;

outclk2: buffer std_logic ); --输出时钟

end div_half;

architecture one of div_half is

signal clk, divide2: std_logic;

signal count:std_logic_vector(3 DOWNTO 0);

begin

clk<=inclk xor divide2; --inclk与divide2异或后作为模N计数器的时钟

outclk1<=inclk; --outclk1和inclk同步process(clk)

begin

if(clk'event and clk='1') then

if(count="0000") then

count<=preset-1; --置整数分频值N

outclk2<='1';

else

count<=count-1; --模N计数器减法计数

outclk2<='0';

end if;

end if;

end process;

process(outclk2)

begin

if(outclk2'event and outclk2='1') then

divide2<=not divide2; --输出时钟二分频

end if;

end process;

end;

6 设计总结

6.1实验中的问题

本实验主要是运用VHDL语言实现非整数分频器的设计,相对于其他的来说,本实验比较简单,但在实际做的时候还是遇到不少的问题。

①在编译时出现了许多错误,经过反复修改编译,再修改再编译最终排除了所有的错误。

②在仿真时一开始仿真时间设置的太短,只能看到一部分仿真输出结果,当把仿真时间设置时间增大时,可以看到全部仿真结果。

③在硬件测试时,时钟信号频率不能太大或太小,否过结果不好。

6.2收获、体会和设计改进建议

在老师布置好题目后,我仔细进行设计,通过查阅各参考书,最终把实验做出来了,达到了老师对本实验的要求。在这次设计中我收获颇丰,首先最直接的收获就是我巩固了这节课所学的知识,把它运用到实践中去,并且学到了许多在课本中所没有的知识,通过查阅相关知识,进一步加深对EDA的了解。其次,我们不管做什么都不能粗心,如我们在输入程序是,把字母打错了时,保存文件时命名与程序中的名称不一样时,都会导致编译错误,在此过程中虽然浪费了不少时间,但这也让我注意到在实际做设计时应该注意的问题,意识到自己的不足,对学过的知识了解不够深刻,掌握的不足够。

总的来说,这次设计还算成功,也让我明白了要把理论知识与实践结合起来,