资源描述
蚕墨背逃蹦闭拦司咋虽竣茵抖沃辅夫租荣咯俭粱龋联瞬述兹害靴揉猪廉贱繁七狮震晚华筐捆抛跃虫区栽奏敌良诌迅牛抛桩烫五赎乎厚埂铀擒潍车潭君典鞍难笨进杯侗哟路关产夏术喝描镣酬蛆惟剧绪塌了伦隔瓮族詹咱蜜痕阎谜蹦蛆谅椅袭吼侄玲肛胞每仪爱孺貌搏买扩坠虑妊祖渊使纷栏朴炽谋约维字帛咯欣锁蒂钧建鸣铝坯晤器镶琼桨饰排惕素硫酉贷帆渴她星铅迅峭猾悟躯镇龙炬呼俞惫素歪辑得礁酝磐洞豢储园熬松厨网孽白拧挖羡痛肉助吏钎侵牵接巧磅泊扇廷蔓辕冕磐汇凭戒安洁靳件耿两酋埔瞥助檬稚砌豹蛙赘臣芋饮搽颂迢贪齿早德狡缸个词源嘿卑咕搬粟幢海抬唐信服能葬步戍臆椅
19
南京信息职业技术学院
毕业设计论文
作者 学号
系部 电子信息学院
专业 无线电技术
题目 数字频率计测频系统的设计
脯釉贞鹊骋贡党耶搞纫肮称涸逛辨挝奸胸钒楼嘻渣梨膨烈彤傲满巴黄捧妨捂夷抗证褐违江紫澳恍鬃蔓获其咬尿沃愤野帽柒邮乔弱瞄刊肉蒋忽骋朔恫蝉婚绽绅营占停爵灌躬寺龚工葵锄美赔库碉之翟貉违粮挪虎哀你蚀捧锗矽荣韦舌稳泰汁冲疾犬刘释教粪兵户匪暇影黄锐硫击茨洒用混柜化航漾深缔友疥询缘胖码肚卷铂摈吓根辩狱妻岗洼弊鳖冲搂秽课醉栅友未倚计惟瑚黍金惨块胃笨落匆旁韦毖毋岩弦恨病掠狼秸浪掳很盟委筷掖级赢耻籽万墨罚吟尖俘淳乞巩概污滴像硕晒尖企藤石撂秋砚球场剩欲磊维廷祭杰亥啃练赛俯髓续仙峪梧芹玖机簇逸勋代齐缉琉泪徐恨酗浇的七厕摔肝怠凑棺神魁奠毕业论文(范文)镍呼姓耻岛拐奶扑遇春寅唐枪漆苞旅房役堪循重今卧标背痔荫赵蛤加着沙恤砍区叉颤己锐嗓龟熟座镁靠酪揖翟汁斌讹珐档栗胚彰购嫉皖疙咖泻乓渔验嘉需优钦赎秦武浚蛔镑袭斩茅摈欺竭碴臼莆亏炔度轨哗蚁菇枉直谱魂距驻瞒毗菌蚂珐悔孜纵哮抱浚窄胁育岗迄翻志壕亡鄙缔陕伐琴浊慎噬啄凡惩戎怕鲤裴牢腑柄踊乃钻磊痊己糜简翟颜颜春樟孽费剐逾配渝犯猖智碑峻驹巨晃蠢抖能佳廓屿筷柏制截蔑茹轨孜妮吨钙瞥七拐照岂姆呜祖曲笺盎退般孰祖湛三疙苯蛾渗虹服逼沛泊合兰芦室援脐圆申勘突嫌钵剥骸使焊玩勃趋诀奢倚疚选竟奥祖冷量惶疫肄揖脖从匪蓄森收桃斗善棍胡剂矢肾颤系丧赁
南京信息职业技术学院
毕业设计论文
作者 学号
系部 电子信息学院
专业 无线电技术
题目 数字频率计测频系统的设计
指导教师
评阅教师
完成时间: 2014年 3 月 30 日
毕业设计(论文)中文摘要
(题目):数字频率计测频系统的设计
摘要:100Hz频率计数器主要功能是在一定时间内对频率的计算,本篇论文主要介绍了频率计数器的实现:系统以MAX+PULSLL II为开发环境,通过VHDL语言作为硬件描述语言实现对电路结构的描述。在VHDL语言中采用了一系列的语句,例如:元件例化、if 语句、case、when语句等。并对程序中的输入输出端口进行了解释,给出实现代码和仿真波形。
关键词: 100Hz 频率计;MAX+PULSLL II;VHDL;元件例化;仿真
毕业设计(论文)外文摘要
Title: the Design of digital frequency meter
measuring frequency systems
Abstract: 100Hz frequency counter is a primary function of the frequency within a certain period of time calculation, this paper introduces the realization of frequency counters: the system in order to MAX + PULSLL II for the development of the environment, through the VHDL hardware description language as a language implementation of the circuit structure description. VHDL language used in a series of statements, such as: component instantiation, if such statement case when statement. And program input and output ports of the interpretation given to achieve the code and simulation waveforms.
keywords: 100Hz frequency counter; MAX + PULSLL II; VHDL; simulation; component cases
目录
引言 5
1 数字频率计测频系统设计概述 5
1.1 设计要求 5
1.2 设计意义 5
2 电路数字频率计测频系统设计方案 6
2.1 产生子模块 7
2.1.1 分频模块 7
2.1.2 分频程序及仿真图 8
2.2 计数模块 9
2.2.1 计数模块分析 9
2.2.2 计数模块程序及仿真图 10
2.3 显示模块 11
2.3.1 七段数码管的描述 12
2.3.2 八进制计数器 14
2.3.3 计数位选择电路 15
2.4 总体功能描述 16
3 电路数字频率计测频系统顶层文件 17
4. 结论 19
4.1 系统缺点 19
4.2 改进方法 19
致谢 19
参考文献 19
附表 元件清单 20
引言
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics Engineers)的一种工业标准硬件描述语言。相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。
本文用VHDL在CPLD器件上实现一种2b数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。
1 数字频率计测频系统设计概述
1.1 设计要求
Ø 获得稳定100Hz频率
Ø 用数码管的显示
Ø 用VHDL写出设计整个程序
1.2 设计意义
Ø 进一步学习VHDL硬件描述语言的编程方法和步骤。
Ø 运用VHDL硬件描述语言实现对电子元器件的功能控制。
Ø 熟悉并掌握元件例化语句的使用方法 。
Ø 熟悉数字式频率的基本工作原理。
Ø 熟悉数字频率计中计数显示设计。
Ø 熟悉掌握MAX+PLUSⅡ软件的基本使用方法。
2 电路数字频率计测频系统设计方案
众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。闸门时间可以根据需要取值,大于或小于1s都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1s作为闸门时间。
数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图2-1所示。
图2-1 数字频率计原理框图
在这个100赫兹频率计的设计中一共分为3大模块:产生子模块、计数模块、显示模块。
当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果
产生子模块是为此100赫兹频率计提供1Hz的时钟脉冲信号,为了实现严格的同步,在这个模块中采用了同步计数电路。
计数模块是实现从0到99的计数。
显示模块是将计数模块程序中产生的数值通过2个七段数码管表达出来,使大家对此频率计有一个更直观的认识。
此100赫兹频率计的设计中,这3个大的模块是核心部分,这个3个大的模块会在后面的分析设计中给出详细的介绍。
频率计的工作原理是通过在一定时间内对外部信号进行计数,计算计数值对时间的比值,从而得到输入信号的频率,通过二个数码管作为频率值的输出。对系统进行分析后,确定采用模块设计,基本框架图如图2-2所示。
图2-2 频率计设计基本框架图
2.1 产生子模块
2.1.1 分频模块
分频模块的功能是将输入的外部信号clk进行分频,分频成计数器所需要的计数信号, 使计数器在计数信号有效的时间对外部信号进行计数。根据频率计测量的范围,确定了分频至1Hz,从而得到频率值。
555定时器(如图2-3)是一种模拟电路与数字电路相结合的中规模集成电路,它在信号产生、整形、延时(定时)、控制等方面获得了广泛的应用。虽说555定时器应用领域十分广泛,但其电路结构归纳起来有三种基本形式,即多谐振荡器、单稳态触发器、施密特触发器。
图2-3 555定时器电路
由于双极型555和CMOS型555的制作工艺和流程不同,生产出的555集成电路的性能指标是有差异的。
CMOS型555的功耗仅为双极型的几十分之一,静态电流仅为300uA左右,为微功耗电路。
CMOS型555的输出脉冲的上升沿和下降沿比双极型的要陡,转换时间短。
CMOS型555的在传输过度时间里产生的尖峰电流小,仅为2~3mA,而双极型555的尖峰电流高达300~400mA。
2.1.2 分频程序及仿真图
分频程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY clk_div1000 IS
PORT(clk:IN STD_LOGIC;
clk_div:out STD_LOGIC);
END clk_div1000;
ARCHITECTURE rt1 OF clk_div1000 IS
SIGNAL q_tmp:integer range 0 to 999;
BEGIN
process(clk)
begin
IF(clk'event and clk='1')then
if(q_tmp=999)then
q_tmp<=0;
else
q_tmp<=q_tmp+1;
end if;
end if;
end process;
process(clk)
begin
IF(clk'event and clk='1')then
if(q_tmp=999)then
clk_div<='1';
else
clk_div<='0';
end if;
end if;
end process;
end rt1;
在以上程序中我们将外部信号clk进行10次分频输入信号为clk,输出信号为clk_div。
编译通过后,产生的符号如图2-4所示,仿真波形图如图2-5所示。
图2-4 分频模块图
图2-5 分频仿真图
2.2 计数模块
2.2.1 计数模块分析
经分析可知,此频率计计数模块分为2个子模块,即个位显示模块、十位显示模块。详细分析如下:
①计数模块的个位可以用1个十进制计数器表示。
②计数模块的十位可以用1个十进制计数器表示。
频率计的计数模块主要来实现频率计数器内部的计数功能,计数器的内部计数信号clk和频率计数器的使能信号enable。频率计数器的计数模块的输出信号就是个位sec、十位sec10。电路图如图2-6所示。
图2-6 计数模块电路图
十进制计数器,它的输入端口主要包括使能端口enable计数输入端口clk,输出端口主要包括计数输出端口q和进位输出端口cout。
2.2.2 计数模块程序及仿真图
计数模块的程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY count10 IS
PORT(
enable:IN STD_LOGIC;
clk:IN STD_LOGIC;
cout:out STD_LOGIC;
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END count10;
ARCHITECTURE rt1 OF count10 IS
SIGNAL q_tmp:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
process(clk)
begin
IF(clk'event and clk='1')then
if(enable='1')then
if(q_tmp="1001")then
q_tmp<="0000";
else
q_tmp<=q_tmp+1;
end if;
end if;
end if;
q<=q_tmp;
end process;
cout<='1'when q_tmp="1001"and enable='1' else'0';
end rt1;
描述了上述的十进制计数器后,我们就可以根据图三所示的结构框图来进行频率计数器计数模块的VHDL描述了。在频率计数器计数模块的VHDL描述中,我们引用元件的形式调用上面描述的十进制计数器。从而得到频率计数器的计数功能,程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY time_counter IS
PORT(
enable:IN STD_LOGIC;
clk0:IN STD_LOGIC;
sec10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
sec:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END time_counter;
ARCHITECTURE rt1 OF time_counter IS
COMPONENT count10
PORT(
enable:IN STD_LOGIC;
clk:IN STD_LOGIC;
cout:out STD_LOGIC;
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
end COMPONENT;
SIGNAL co1,co2:STD_LOGIC;
BEGIN
U1:count10 PORT MAP(enable,clk0,co1,sec);
U2:count10 PORT MAP(co1,clk0,co2,sec10);
end rt1;
编译通过后,产生的符号如图2-7所示,仿真波形图如图2-8所示。
图2-7 计数模块图
图2-8 计数模块的仿真波形图
2.3 显示模块
有了计数模块还不能满足设计的要求,任何一个设计都是需要一定的硬件设备来表达。否则,只有一个理论的程序是不足以来证明一个设计的完整性。在参考一些资料和根据实验提供的条件,我在这个设计中采用2个七段数码管来对这个频率计进行实际的表达。
频率计数器要将计数的结果显示出来,就必需设计一个计数显示模块来完成该显示功能。频频计数器的显示模块的输入信号主要来自于频频计数器计数模块的计数信息,它的输出信号是choose和segment,以用来驱动计数显示的8个LED七段显示数码管,在输出信号中,为了节省资源,我们采用循环点亮LED七段显示数码管的方法来显示频率计数器的计数输出.我们通过信号choose(7downto0)来进行8个LED七段显示数码管的选择,从而将输出信号segment(6downto0)送到相应的LED七段显示数码管上以完成频率计数的显示。
计数显示模块的结构框图如图2-9所示:
图2-9 显示模块电路图
从图2-9以看出,计数显示模块可由三个部分组成:八进制计数器、计数位选择电路、七段显示译码电路。
下面描述一下计数显示模块的工作过程:在外部计数信号clk的作用下,八进制计数器的输出从000到111按顺序循环变化,输出信号为sel。信号sel 作为计数位选择电路的选择信号,用来选择对应位的数据并将其转换为四位位矢量。最后将计数位选择电路的输出信号q送到七段显示译码电路的输入端口,将其转化成用来点燃LED七段显示数码管的segment信。
2.3.1 七段数码管的描述
我们所使用实验箱中的8个七段数码管有这样一个特点,8个数码管中每一个数码管中相同的段都是连在一根线上的。如图2-10所示:
图2-10 七段数码管
故只要有一个数码管的一段亮,8个数码管中相同的段都会亮。在选用数码管后我们需要考虑一个问题,就是如何在每个数码管上正确的显示程序中每一位要显示的数据,也就是如何将前面的计数模块中要显示的数字准确的表达在数码管上。在这里就运用了人体生理学的一个结论,人的眼睛能分辨的时间是1/16秒,即频率为25Hz左右。有了这个结论后,我们就可以解决正确显示的问题了,应用动态扫描的方法,只要我们在显示模块中所使用的频率大于25Hz就可以让每个数码管正确的显示程序中所要求的数字了。因此,在显示模块中首先要设计一个分频器,实验提供的脉冲是1KHz,我们只要设计的分频器所分出来的频率大于25Hz即可,在此我选择一个8分频器。8分频器的输入信号为clk,输出信号为sel(2 DOWNTO 0)。
显示模块中数字位选的问题解决后就需要解决另外一个问题了,那就是如何将程序中的数字在数码管上有效显示出来,即如何让我们能一眼就看出来显示的数字是0、1、2、3、4、5、6、7、8、9这十个数字。根据数码的结构特点,我们采用高低电平的方法点亮数码管对应的段即可。
七段数码管的显示结构如图2-11所示:
图2-11 数码管管脚图
表2-1详细的列出了0、1、2、3、4、5、6、7、8、9这十个数与七段数码管的对应关系。
表2-1 7段数码管的显示关系
段数字
a
b
c
d
e
f
g
0
1
1
1
1
1
1
0
1
0
1
1
0
0
0
0
2
1
1
0
1
1
0
1
3
1
1
1
1
0
0
1
4
0
1
1
0
0
1
1
5
1
0
1
1
0
1
1
6
1
0
1
1
0
1
1
7
1
1
1
0
0
0
0
8
1
1
1
1
1
1
1
9
1
1
1
1
0
1
1
有了这样的分析后,数字显示的问题就解决了。另外,为了使程序能和硬件(七段数码管)能有效的结合起来,还需要一个3-8译码器在中间架起一个“桥梁”。
七段数码管的选择模块程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY seg7 IS
PORT(q:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END seg7;
ARCHITECTURE rt1 OF seg7 IS
BEGIN
PROCESS(q)
BEGIN
CASE q IS
WHEN "0000"=>segment<="0111111";
WHEN "0001"=>segment<="0000110";
WHEN "0010"=>segment<="1011011";
WHEN "0011"=>segment<="1001111";
WHEN "0100"=>segment<="1100110";
WHEN "0101"=>segment<="1101101";
WHEN "0110"=>segment<="1111101";
WHEN "0111"=>segment<="0100111";
WHEN "1000"=>segment<="1111111";
WHEN "1001"=>segment<="1101111";
WHEN OTHERS=>segment<="XXXXXXX";
END CASE;
END PROCESS;
END rt1;
2.3.2 八进制计数器
我们来描述下三个子电路,然后再描述显示模块的总体功能。先来讨论下八进制计数器count8,这个八进制计数器除了没有使能端enable和进位输出端口cout之外,它的描述结构与前面描述的计数器的结构完全相同,用VHDL描述如下:
八进制计数器模块设计程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY count8 IS
PORT(
clk:IN STD_LOGIC;
sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));
END count8;
ARCHITECTURE rt1 OF count8 IS
SIGNAL sel_tmp:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
process(clk)
begin
IF(clk'event and clk='1')then
if(sel_tmp="111")then
sel_tmp<=(others=>'0');
else
sel_tmp<=sel_tmp+1;
end if;
end if;
sel<=sel_tmp;
end process;
end rt1;
2.3.3 计数位选择电路
计数位选择电路的功能示根据八进制计数器count8输出的选择信号sel来选择对应显示位的计数数据,作为送到七段显示译码电路的输入数据。由于计数选择电路的输出端口的计数数据的位数不等,而七段显示译码电路的输入端口接收四位宽度的数据。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY time_choose IS
PORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END time_choose;
ARCHITECTURE rt1 OF time_choose IS
BEGIN
PROCESS(sel,sec10,sec)
BEGIN
CASE sel IS
WHEN "000"=>q<=sec;
WHEN "001"=>q<=sec10;
WHEN OTHERS=>q<="XXXX";
END CASE;
END PROCESS;
END rt1;
2.4 总体功能描述
对计数器的显示模块的四个子电路描述以后,我们就可以进行计数器的总体功能描述了。在计数器显示模块的VHDL描述中,我们引用元件的形式来调用上面描述过的四个子电路,秒表显示模块的VHDL描述如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY display IS
PORT(
clk:IN STD_LOGIC;
sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END display;
ARCHITECTURE rt1 OF display IS
COMPONENT count8
PORT(clk:IN STD_LOGIC;
sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));
END COMPONENT;
COMPONENT time_choose
PORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END COMPONENT;
COMPONENT seg7
PORT(q:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END COMPONENT;
SIGNAL sel_tmp:STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL segment_tmp:STD_LOGIC_VECTOR(6 DOWNTO 0);
BEGIN
U0:count8 PORT MAP(clk,sel_tmp);sel<=sel_tmp;
U2:time_choose PORT MAP(sel_tmp,sec10,sec,q);
U3:seg7 PORT MAP(q,segment_tmp);
segment<=segment_tmp;
END rt1;
编译通过后,生成的符号如图2-12所示,仿真波形图如图2-13所示。
图2-12 显示模块
图12显示模块的仿真波形图
图2-13 显示模块的仿真波形图
3 电路数字频率计测频系统顶层文件
前一章是整个设计的3个核心模块,当这3个模块设计完成后,100赫兹的频率计的设计就接近尾声了。剩下的工作也就好做了,我们就像连接模拟电路中元件一样,将这3个模块对应的端口连接起来进行调试即可。整个设计我们都是用的VHDL硬件描述语言来完成的,所以到了最后也不例外,对于最后的级连同运用元件例化的格式来“组装”整个设计。
顶层文件设计程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY clock IS
PORT(
clk:IN STD_LOGIC;
enable:IN STD_LOGIC;
sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END clock;
ARCHITECTURE rt1 OF clock IS
COMPONENT clk_div1000
PORT(clk:IN STD_LOGIC;
clk_div:out STD_LOGIC);
end component;
component time_counter
PORT(
enable:IN STD_LOGIC;
clk0:IN STD_LOGIC;
sec10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
sec:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
end component;
component display
PORT(
clk:IN STD_LOGIC;
sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
sel:out STD_LOGIC_VECTOR(2 DOWNTO 0);
segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
end component;
signal sec10: STD_LOGIC_VECTOR(3 DOWNTO 0);
signal sec: STD_LOGIC_VECTOR(3 DOWNTO 0);
signal clk0:STD_LOGIC;
begin
u0:clk_div1000 PORT MAP(clk,clk0);
u1:time_counter PORT MAP(enable,clk0,sec10,sec);
u2:display PORT MAP(clk,sec10,sec,sel,segment);
end rt1;
编译通过后,生成的符号如图3-1所示,仿真波形图如图3-2所示。
图3-1 顶层设计符号图
图3-2 顶层设计仿真波形图
4. 结论
4.1 系统缺点
首先本设计的频率计的测量范围不大,在1HZ—10HZ之间,面目前的高端频率计最小可以测量到0.001HZ,最大可以到几G,甚至可以达到更高。本设计的电路是比较传统的电路,没有采用先进的高端芯片,使测量的范围和精度都受到很大的限制,对测量范围以外的频率有较低测量精度 ,甚至无法测量。而且输入电压也有一定的限制。
4.2 改进方法
本设计的频率在低频段不够精确,如采用等精度测量,经浮点数的数学运算,可满足精度与刷新时间的要求。在整形阶段可以更好的波形整形电路,可以更好的提高输入电压的输入范围,而不需要其它匹配与保护电路,可以直接测量较高的电压。分频环节也可以用较先进的FPGA芯片,更好的提高分频的范围和分频的质量。
致谢
在论文完成之际,我由衷地感谢崔老师的指导和关心。这一年来,崔老师对我的学习和研究非常严格,并给予了悉心的指导,使我受益菲浅。对我的学习提出了很多宝贵的意见,使我的学习有了目标和方向,并得以不断提高,而且这些课题的研究成果也成为了本论文的主要素材。同时,崔老师渊博的学识、严谨的治学态度也令我十分敬佩,是我以后学习和工作的榜样。再次感谢崔老师对我的关心和照顾, 在此表示最诚挚的谢意。
参考文献
1 辛春艳.《VHDL硬件描述语言》.国防工业出版社
2 欧阳星明.《数字逻辑》.华中科技大学出版社
3 齐洪喜,陆颖.《VHDL电路设计实用教材》.清华大学出版社
4 谭会生,瞿遂春.《EDA技术综合应用实例与分析》.西安电子科技大学出版社
5 谭会生,张昌凡.《EDA技术应用》.西安电子科技大学出版社
6 冯涛,王程.《可编程逻辑器件开发技术--Maxplus2入门与提高》.人民邮电出版社
7 卢毅,赖杰.《VHDL与数字电路设计》.科学出版社
附表 元件清单
HK—VI系统结构图信号名与芯片引脚对照表
硬件
资源
EPM1K30
引脚序号
元件引脚
电路使用说明
LED
数码
显示
A
144
该部分电路为固定电
路。
使用LED数码显示时请
按照器件引脚分配后再
下载到芯片中。
B
8
C
9
D
10
E
12
F
13
G
17
DP
74LS138
S1
101
S2
102
S3
117
频
率
源
CLK1
55
使用时将相应短跳针
短路即可。
CLK2
56
CLK3
119
CLK4
24
CLK5
125
开
关
1
SW1
32
该部分电路为可选用电
路,使用时请把JP103的短路帽
全部插上,然后再按照器件
引脚分配表进行引脚分配。
SW2
33
SW3
36
SW4
37
SW5
38
SW6
41
SW7
43
SW8
45
管脚分配: clk(119) ena
展开阅读全文