《八位十进制数字频率计的设计.doc》由会员分享,可在线阅读,更多相关《八位十进制数字频率计的设计.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date八位十进制数字频率计的设计_x0001_ 20122013学年 第二学期数字系统设计课 程 设 计 报 告 题 目: 数字频率计的设计 班 级: 10电子信息(1) 姓 名: 鲍学贵 李闯 王群 卢军 张力 付世敏 凌玲 尹凡 指导教师: 周珍艮 电气工程系2013年6月-数字系统设计任务书课题名称数字频率计的设计指导教师周珍艮 执行时间20122013学年第二学期
2、第 14 周学生姓名学号承担任务评分鲍学贵1009121003系统方案设计及协调李闯 1009121037硬件电路设计(1)王群1009121061 硬件电路设计(2)张力1009121089软件设计(1)卢军1009121047软件设计(2)付世敏1009121105 课程设计的撰写 (1)凌玲 1009121109 课程设计的撰写(2)尹凡 1009121081 课程设计方案的检查 设计要求设计一个8位10进制数字频率计,能测量最大值小于5V的正弦波、三角波、方波或其他周期性波形的频率,用数码管显示结果。摘 要数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性
3、变化的信号。数字频率计广泛应用于科研机构、学校、实验室、企业生产车间等场所。研究数字频率计的设计和开发,有助于频率计功能的不断完善、性价比的提高和实用性的加强。 本文介绍了一种自顶向下分层设计多功能数字频率计的设计方法。该频率计采用 VHDL 硬件描述语言编程,以 QuartusII为开发环境,极大地减少了硬件资源的占用。数字频率计模块划分的设计具有相对独立性,可以对模块单独进行设计、调试和修改,缩短了设计周期。所设计的VHDL语言通过仿真能够较好的测出所给频率并且满足数字频率计的自动清零和自动测试的功能要求,具有理论与实践意义。关键词:VHDL ;数字频率计; EDA; QuartusII目
4、 录第一章 绪论11.1 设计背景11.2 设计意义11.3 本文的主要工作2第二章 数字频率计的系统分析32.1 8位十进制数字频率计系统设计的原理32.1.1 数字频率计的基本原理32.1.2 系统总体框架图32.2 8位十进制数字频率计设计任务与要求42.3 目标芯片FLEX10K4第三章 各功能模块基于VHDL的设计与仿真63.1 8位十进制数字频率计的电路逻辑图63.2 测频控制信号发生器的功能模块及仿真63.3系统时钟分频的功能模块及仿真83.4 32位锁存器的功能模块及仿真93.4.1 锁存器93.4.2 锁存器的功能模块及仿真93.5 数码管扫描的功能模块及仿真103.6 数码
5、管译码显示的功能模块及仿真123.7 十进制计数器的功能模块及仿真143.7.1 计数器143.7.2 十进制计数器的功能模块及仿真143.8 8位十进制数字频率计的仿真16第四章 结束语23参考文献24答辩记录及评分表.25第一章 绪 论1.1设计背景 数字频率计 1是电子测量与仪表技术最基础的电子仪表类别之一,数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,而且它是数字电压必不可少的部件。当今数字频率计不仅是作为电压表,计算机,天线电广播通讯设备,工艺过程自动化装置、多种仪表仪器与家庭电器等许多电子产品中的数据信息输出显示器反映到人们眼帘。集成数字频率计由于所用元件
6、少、投资少、体积小、功耗低,且可靠性高、功能强、易于设计和研发,使得它具有技术上的实用性和应用的广泛性。不论从我们用的彩色电视机、电冰箱、DVD还有我们现在家庭常用到的数字电压表数字万用表等等都包含有频率计。现在频率计已是向数字智能方向发展,即可以很精确的读数也精巧易于控制。数字频率计已是现在频率计发展的方向,它不仅可以很方便的读数。而且还可以使频率的测量范围和测量准确度上都比较先进.而且频率计的使用已设计到很多的方面,数字卫星,数字通讯等高科技的领域都有应用,今天数字频率计的发展已经不仅仅是一个小电子产品的发展也是整个民族乃至整个国家的发展,所以频率计的发展是一个整体的趋势。而从民族产业上来
7、说,我们在这种产业中还落后于西方发达国家,这将会关系到民族产业的兴衰。所以我们必须很重视当前的情况,学习发达国家的先进技术来发展本国的电子信息产业。1.2设计意义 我国的频率计其实不是落后发达国家太多的,我国在这个领域的发展是极其迅速的,现在的技术实际已是多年来见证。我国现阶段电子产品的市场特点,电子数字化发展很快。在我国和发达国家的发展情况是趋于一致的,数字频率计已经应用于高科技等产品上面,可以不无夸张的说没有不包含有频率计的电子产品。我国的CD、VCD、DVD和数字音响广播等新技术已开始大量进入市场。而在今天这些行业中都必须用到频率计。频率计已开始并正在向智能,精细方向的发展。国外的发展比
8、我国要早,所以在这些行业中还领先于我们,我国还是缺少开发和研发的资金投入,很多的电子企业都不太乐意去花大量的时间,资金和精力去研究和开发,这也就使得我国在这方面的人力和资金都不充足,也就无法于发达国家相比,不能够形成一个量产的效果。从而很多的企业没有竞争力,这也和我国其他的民族产业存在相同的情况,这也正是我国在高速发展后的今天很少有自己的民族品牌的原因,所以我国应该大力的支持自己的民族品牌,不仅仅是要在资金和人才的投入,还要有具体的实际行动并起到一定的保护作用。1.3本文的主要工作本文的主要工作为:(1)首先分析了8位十进制数字频率计的基本原理。(2)对设计工具Quartus II进行了介绍,
9、对设计中使用的VHDL语言2-3进行介绍。(3)对数字频率计的各个模块功能的分析,进行了功能仿真测试,得出仿真波形图。本文的安排如下:第一章介绍数字频率计的设计背景,设计意义,第二章介绍EDA技术原理与概述,本论文是以EDA技术为基础编写的所以对EDA技术的要求比较高,对VHDL语言的编写以及QuartusII的运用都要比较熟练。介绍了可编程逻辑器件FPGA和硬件描述语言,第三章是对数字频率计的基本原理以及对设计的要求进行概述,对目标芯片的介绍等,第四章介绍各个功能模块的基本功能以及VHDL语言的分析,将各部分进行仿真并对其进行仿真分析,测出所给频率。对该设计的数字频率计的仿真进行理论值与实验
10、值的验证,第五章是本文的结束语。第二章 数字频率计的系统分析2.1 8位十进制数字频率计系统设计的原理2.1.1数字频率计的基本原理数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。数字频率计的主要功能是测量周期信号的频率。频率是单位时间(1S)内信号发生周期变化的次数。如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信
11、号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。2.1.2 系统总体框架图 图 2.1 系统总体框架图总体框图设计思路:由50MHz系统时钟分频得到0.5Hz的基准时钟。在基准时钟的1S 高电平期间计被测频率的脉冲个数,1S高电平结束时计数结束,所记录的脉冲个数是被测信号的频率,为了在数码管上显示计数结果需要锁存器将所计的数锁存,因此,在基准时钟下降沿来的时候锁存器实现锁存功能。为了下次计数必须将本次计数的结果清零,所以在基准时钟低电平
12、期间对计数器清零。被测频率从计数器的是中端输入实现频率的测试。将锁存器锁存的数据输入扫描器,通过译码器将锁存的二进制数译成十进制然后显示到数码管上,最终被读出来。2.2 8位十进制数字频率计设计任务及要求用测频法设计一个八位十进制的数字频率器,测频范围是1HZ到49999999HZ。(1)测量范围信号:方波、正弦波;幅度:0.5V5V;频率:1Hz4999999HZ。(2)测量范围信号:脉冲波;幅度:0.5V5V;脉冲宽度100s.测量误差1%。(3)显示器:十进制数字显示,显示刷新时间110秒连续可调,对上述三种测量功能分别用不同颜色的发光二极管指示。(4)具有自校功能,时标信号频率为1Hz
13、。2.3 目标芯片FLEX10K 目标芯片11选用Altera公司生产的FPGA产品FLEX10K系列9中的LC84-4,FLEX10K是ALTERA公司研制的第一个嵌入式的PLD可编程逻辑器件系列。它具有高密度、低成本、低功率等特点,利用FLEX10K系列CPLD可编程逻辑器件的EAB可在系统中实现逻辑功能和存贮功能。FLEX10K是ALTERA公司研制的第一个嵌入式的PLD,它具有高密度、低成本、低功率等特点,是当今ALTERA CPLD中应用前景最好的器件系列之一。它采用了重复可构造的CMOS SRAM工艺,并把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时可结合众多可编程器件来完
14、成普通门阵列的宏功能。每一个FLEX10K器件均包括一个嵌入式阵列和一个逻辑阵列,因而设计人员可轻松地开发集存贮器、数字信号处理器及特殊逻辑等强大功能于一身的芯片。 FPGA采用可编程的查找表LUT(Look Up Table)结构。LUT是可编程的最小逻辑单元,大部分FPGA采用基于SRAM的查找表逻辑形式结构,用SRAM来构成逻辑函数发生器。FLEX内部结构如图3.2所示。图2.2 FLEX内部芯片结构第三章 各功能模块基于VHDL的设计与仿真3.1 8位十进制数字频率计的电路逻辑图 8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器C
15、NT10、一个32位锁存器REG32B 8组成。以下分别叙述频率计各逻辑模块的功能与设计方法。8位十进制数字频率计的电路逻辑如图4.18所示。图3.1 8位十进制数字频率计的电路逻辑图3.2 测频控制信号发生器的功能模块及仿真(1)测频控制信号发生器的功能模块如图4.2所示。图3.2 测频控制信号发生器的功能模块图(2)源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL IS PORT(CLK:IN STD_LOGIC; -1 Hz测频控制时钟 TSTEN:
16、OUT STD_LOGIC; -计数器时钟使能 CLR_CNT:OUT STD_LOGIC; -计数器清零 LOAD:OUT STD_LOGIC); -输出锁存信号END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL IS SIGNAL DIV2CLK :STD_LOGIC;BEGINPROCESS ( CLK ) IS BEGINIF CLKEVENT AND CLK= 1 THEN -1HZ 时钟二分频 DIV2CLK=NOT DIV2CLK;END IF ;END PROCESS;PROCESS ( CLK,DIV2CLK ) ISBEGIN IF
17、 CLK= 0 AND DIV2CLK = 0 THEN -产生计数器清零信号 CLR_CNT= 1; ELSE CLR_CNT= 0 ; END IF; END PROCESS; LOAD=NOT DIV2CLK; TSTEN=DIV2CLK;END ARCHITECTURE ART;频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。控制时钟信号CLK取为1Hz,2分频后即可产生一个脉宽为1秒的时钟TSTEN,以此作为计数闸门信号。当TSTEN为高电平时,允许计数;当TSTEN由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次T
18、STEN上升沿到哦来之前产生零信号CLEAR,将计数器清零,为下次计数作准备,如图3.3所示为测频控制信号仿真图。图3.3 测频控制信号仿真图3.3系统时钟分频的功能模块及仿真(1)系统时钟分频的分频功能模块如图3.4所以。图3.4 系统时钟分频的功能模块图(2)源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY div1hz IS PORT(CLK:IN STD_LOGIC; CLOCK:OUT STD_LOGIC); END div1hz; ARCHITECTUR
19、E BEHAV OF div1hz IS SIGNAL COUNT:INTEGER RANGE 0 TO 500000; SIGNAL CLK_DATA:STD_LOGIC; BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF COUNT=500 THEN COUNT=0; CLK_DATA=NOT CLK_DATA; ELSE COUNT=COUNT+1; END IF; END IF; CLOCK=CLK_DATA; END PROCESS; END BEHAV;该模块由系统时钟分频模块12为TESTCTL的计数能使信号TSTEN产
20、生一个1S 脉宽的周期信号,并对频率计中的 32 位十进制计数器CNT10的 ENA 使能端进行同步控制。TSTEN高电平时允许计数;当低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,从仿真图3.5中可以看出,一个锁存信号LOAD 的上跳沿将计数器在前一秒的计数值锁存进锁REG32B中,并由外部的十进制 7 段数码管显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。锁存信号后,必须有一个清零信号 CLR_CNT对计数器进行清零,为下一秒的计数操作做准备。图3.5 系统时钟分频的分频功能仿真图3.4 32位锁存器的功能模块及仿真3.4.1锁存器13锁存器(L
21、atch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制其与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。3.4.2锁存器的功能模块及仿真(1)32位锁存器的功能模块如图3.6所示。图3.6 锁存器的功能模块图(2)源程序如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT(LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VE
22、CTOR(31 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END ENTITY REG32B;ARCHITECTURE ART OF REG32B IS BEGIN PROCESS ( LOAD, DIN ) IS BEGINIF LOAD EVENT AND LOAD= 1 THEN DOUT=DIN; -锁存输入数据END IF;END PROCESS;END ARCHITECTURE ART;仿真图3.7的LOAD 信号上升沿到来时将对输入到内部的 CNT10 计数信号进行锁存,并将结果输出给SELTIME。当输入信号上升到时就会
23、产生锁存,否则,不进行锁存,该仿真在上升沿的时候,将其锁存起来,直到下个上升沿才会改变锁存的数据,如仿真在“1”的时候上升,则对“1”进行锁存。 图3.7 锁存器的功能仿真3.5 数码管扫描的功能模块及仿真(1)数码管扫描8的功能模块如图4.8所示。图3.8 数码管扫描的功能模块(2)源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SELTIME IS PORT( CLK : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(31 DOW
24、NTO 0); DAOUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END SELTIME; ARCHITECTURE behav OF SELTIME ISSIGNAL SEC : STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK=1) THEN IF(SEC=111) THEN SEC=000; ELSE SECDAOUTDAOUTDAOUTDAOUTDAOUTDAOUTDAOUTD
25、AOUTNULL; END CASE;END PROCESS; SELDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTNULL; END CASE;END PROCESS; END ARCHITECTURE behav;数码译码14主要是用来完成各种码制之间的转换。例如可用来完成BCD十进制数、十进制数BCD之间数制的转换。从图3.11仿真图可知,当LED的输入为“0X7E”数码管就会显示为“0”,当LED的输入为“0X06”数码管就会显示为“1”。图3.11为数码管译码显示仿真图。图3.11 数码管译码显示仿真图
26、3.7 十进制计数器的功能模块及仿真3.7.1计数器计数是一种最简单基本的运算,计数器15就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示
27、产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。很显然,3位数的计数器最大可以显示到999,4位数的最大可以显示到9999。3.7.2十进制计数器的功能模块及仿真(1)十进制计数器的功能模块如图3.12所示。 图3.12十进制计数器的功能模块(2)源程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK:IN STD_LOGIC; -计数时钟信号 CLR:IN STD_LOGIC; -清零信号 ENA:IN STD_LOGIC; -计数使能信号 CQ:OUT IN
28、TEGER RANGE 0 TO 15;-4位计数结果输出 CARRY_OUT:OUT STD_LOGIC); -计数进位END ENTITY CNT10; ARCHITECTURE ART OF CNT10 IS SIGNAL CQI :INTEGER RANGE 0 TO 15; BEGIN PROCESS(CLK,CLR,ENA)IS BEGIN IF CLR= 1 THEN CQI= 0; -计数器异步清零 ELSIF CLKEVENT AND CLK= 1 THEN IF ENA=1 THEN IF CQI9 THEN CQI=CQI+1; ELSE CQI=0; END IF; -
29、等于9,则计数器清零 END IF; END IF; END PROCESS; PROCESS (CQI) IS BEGIN IF CQI=9 THEN CARRY_OUT= 1; -进位输出 ELSE CARRY_OUT= 0;END IF; END PROCESS; CQ=CQI;END ARCHITECTURE ART;该仿真的作用是实现十进制计数功能。从仿真图3.13中可以得出,当第一个CNT10计数输出 CQ=9 时,下一秒时钟上升沿到来时,将产生一个CARRY_OUT信号作为下一个CNT10 的时钟信号,同时CQ 清零,依次递推到8个CNT10。图3.13 十进制计数器仿真图3.8
30、 8位十进制数字频率计的功能仿真及电路图LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK:IN STD_LOGIC; -计数时钟信号 CLR:IN STD_LOGIC; -清零信号 ENA:IN STD_LOGIC; -计数使能信号 CQ:OUT INTEGER RANGE 0 TO 15;-4位计数结果输出 CARRY_OUT:OUT STD_LOGIC); -计数进位END ENTITY CNT10;ARCHITECTURE ART OF CNT10 IS SIGNAL CQI :INTEGER RANG
31、E 0 TO 15; BEGIN PROCESS(CLK,CLR,ENA)IS BEGIN IF CLR= 1 THEN CQI= 0; -计数器异步清零 ELSIF CLKEVENT AND CLK= 1 THEN IF ENA=1 THEN IF CQI9 THEN CQI=CQI+1; ELSE CQI=0; END IF; -等于9,则计数器清零 END IF; END IF; END PROCESS; PROCESS (CQI) IS BEGIN IF CQI=9 THEN CARRY_OUT= 1; -进位输出 ELSE CARRY_OUT= 0;END IF; END PROCE
32、SS; CQ=CQI;END ARCHITECTURE ART;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT(LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END ENTITY REG32B;ARCHITECTURE ART OF REG32B IS BEGINPROCESS ( LOAD, DIN ) ISBEGINIF LOAD EVENT AND LOAD= 1
33、THEN DOUT=DIN; -锁存输入数据 END IF;END PROCESS;END ARCHITECTURE ART;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL IS PORT(CLK:IN STD_LOGIC; -1 Hz测频控制时钟 TSTEN:OUT STD_LOGIC; -计数器时钟使能 CLR_CNT:OUT STD_LOGIC; -计数器清零 LOAD:OUT STD_LOGIC); -输出锁存信号END ENTITY TESTCTL;ARC
34、HITECTURE ART OF TESTCTL IS SIGNAL DIV2CLK :STD_LOGIC;BEGINPROCESS ( CLK ) IS BEGINIF CLKEVENT AND CLK= 1 THEN -1 HZ时钟二分频DIV2CLK=NOT DIV2CLK;END IF ;END PROCESS;PROCESS ( CLK,DIV2CLK ) ISBEGIN IF CLK= 0 AND DIV2CLK = 0 THEN -产生计数器清零信号 CLR_CNT= 1; ELSE CLR_CNT= 0 ; END IF; END PROCESS; LOAD=NOT DIV2CLK; TSTENCLK,TSTEN=SE, CLR_CNT=SC,LOAD=SL);U1:CNT10 P