数控分频器
EDA 课程大作业
课程名称:EDA 技术实用教程—VHDL 版
成 绩:
设计题目: 数控分频器
院 系: 电子信息与电气工程学院
姓名学号:
专业班级:
指导教师
2013年5月
摘 要:随着EDA 技术的高速发展, 以大规模和超大规模器件FPGA/CPLD
为载体、以VHDL(硬件描述语言) 为工具的电子系统设计越来越广泛。在数字逻辑电路设计中,分频器是一种基本电路。通常用来对某个给定频率进行分频,以得到所需的频率。数控分频器的功能是在输入端输入不同数据时, 对输入时钟产生不同的分频比, 使输出信号的频率为输入数据的函数。他可广泛应用于数字电子系统中。用传统的设计方法设计数控分频器时, 采用具有预置数据输入端的通用计数器芯片, 按设计要求完成设计, 其设计过程和电路都比较复杂, 尤其是当分频系数比较大时, 需用多片集成计数器和设计更复杂的控制电路来实现, 且设计成果的可修改性和可移植性都较差。基于VHDL 的数控分频器设计, 采用用软件的方法设计硬件的EDA (电子设计自动化) 技术。作为EDA 技术重要组成部分的硬件描述语言,V HDL 是一种IEEE 工业标准的建模语言。由于VHDL 具有很强的电路行为描述、系统描述能力和层次化的程序结构, 用他设计的数控分频器作为一个模块, 可移植到很多数字电路系统中, 且极易修改, 只要修改程序中的某几条语句, 就可使最大分频系数得到改变。整个设计过程简单、快捷。另外由于VHDL 具有与硬件和设计平台无关的特点, 设计结果可通过众多EDA 平台下载到各种CPLD 或FPGA 可编程器件中, 实现单片化的数字电路, 使得工作稳定、可靠。
关键词:数控分频器;计数器;信号;频率
一、设计背景
1.1EDA 技术简介
EDA 是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD )、计算机辅助制造(CAM )、
计算机辅助测试(CAT )和计算机辅助工程(CAE )的概念发展而来的,是以计算机为工具,设计者在EDA 软件平台上,用硬件描述语言VHDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA 工具软件平台上,对以硬件描述语言HDL (Hardware Description Language )为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。EDA 技术使得设计者的工作几乎仅限于利用软件的方式,即利用硬件描述语言HDL 和EDA 软件来完成对系统硬件功能的实现。
1.2Quartus Ⅱ简介
Quartus Ⅱ是Altera 提供的FPGA/CPLD开发集成环境,能够完成从原理图/HDL文本编辑到逻辑综合,再到FPGA/CPLD结构适配,最后完成时序仿真与功能仿真到FPGA/CPLD编程设计的软件。Quartus Ⅱ提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC )设计的综合性环境和SOPC 开发的基础设计工具,并为Altera DSP 开发包进行系统模型设计提供了集成综合环境,完全支持Verilog 、VHDL 的设计流程,其内部嵌有Verilog 、VHDL 逻辑综合器,可利用第三方的综合工具,并直接调用。
二、设计原理
2.1设计目的
1、学习数字分频器的原理及设计方法;
2、熟练掌握EDA 技术,能做具体应用。
2.2数控分频器原理
数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数(初始计数值)设定不同的值,计数器以此预置数为初始状态进行不同模值的计数,当计数器的状态全为1时,计数器输出溢出信号。用计数器的溢出信号作为输出信号或输出信号的控制值,使输出信号的频率受控于输入的预置数。数控分频器原理框图如图1所示:
图1 数控分频器原理框图
三、VHDL 源代码
数控分频器的VHDL 描述:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity dvf is
port(clk:in std_logic;
d:in std_logic_vector(3 downto 0);
fout:out std_logic);
end;
architecture bhv of dvf is
signal full:std_logic;
begin
p_reg:process(clk)
variable cnt8:std_logic_vector(3 downto 0);
begin
if clk'event and clk='1'
then
if cnt8="1111"
then cnt8:=d;full
else cnt8:=cnt8+1;full
end if;
end if;
end process p_reg;
p_div:process(full)
variable cnt2:std_logic;
begin
if full'event and full='1'
then cnt2:=not cnt2;
if cnt2='1'
then fout
else fout
end if;
end if;
end process p_div;
end;
四、仿真结果
对源程序进行编译仿真,得到仿真结果如下所示:
图2 程序仿真结果
随着D 的改变,输出信号FOUT 频率发生变化,在实验箱上看到LED 灯的闪动频率发生了明显的变化。对此,电路的分频的功能得到验证。
五、心得体会
本次课程设计使我懂得了理论与实践相结合是非常重要的,只有理论
知识是远远不够的,只有把所学的理论知识与实践结合起来,从理论中得出结论,才能真正掌握所学知识,提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说是困难重重,这毕竟是第一次做,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在设计中遇到了很多问题,最后在老师的正确指导下,终于艰难地完成了实验设计。觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。本次实验设计使我不仅学到了知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的各位指导老师和所有同学再次表示衷心的感谢!
本次课程设计由王立斌、马亚林、王永娇和周朝晖同学齐心协力共同讨论完成。首先根据数控分频器的工作原理写出了数控分频器的程序代码,并用Quartus Ⅱ验证了程序的正确性,完成了工程文件的仿真设计,最后四人共同完成了工程文件截图及论文的文本内容。在本次课程设计中王立斌同学大约完成作业的26%,马亚林同学大约完成了26%,周朝晖同学大约完成了26%,王永娇同学大约完成了22%。
参考文献
[1]潘松, 黄继业. EDA 技术实用教程——VHDL 版[第四版].北京:科学出版社,2010.
[2]杨刚, 龙海燕. 现代电子技术——VHDL 与数字系统设计[M].北京:电子工业出版社,2004.
[3]王彦, 方艾, 张清明. 基于FPGA 的数字波形发生器[J].机械与电子,2004.
[4]韩波, 唐广. 214GHz动态CMOS 分频器的设计[J].国外电子元器件,2006.