《eda课程设计-简易数字频率计设计(18页).doc》由会员分享,可在线阅读,更多相关《eda课程设计-简易数字频率计设计(18页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-eda课程设计-简易数字频率计设计-第 12 页唐 山 学 院 EDA技术 课 程 设 计 题 目 简易数字频率计设计 系 (部) 智能与信息工程学院 班 级 姓 名 学 号 指导教师 郭耀华 王墨琪 戴彦 2016 年 6 月 29 日至 7 月 1 日 共 1 周2016年 7 月 1 日 EDA技术 课程设计任务书一、设计题目、内容及要求设计题目:简易数字频率计设计设计内容:(1)设计四位十进制的简易数字频率计,对1HZ-10MHZ的方波信号进行测量;(2)测量的方波频率值要在4位数码管上进行显示; (3) 根据不同的待测方波信号,频率计分为4个量程进行测量,四个量程分别为乘1,乘10
2、,乘100,乘1000量程。(4)此频率计要设有一个整体复位控制;设计要求:(1)根据任务要求确定状态关系,画出状态转换图; (2)写出设计程序;(3)给出时序仿真结果; (4)最后要有设计总结;二、设计原始资料Quartus软件;EDA实验箱;计算机一台;三、要求的设计成果(课程设计说明书、设计实物、图纸等)课程设计说明书1份,不少于2000字,应包含设计原理分析、相关软件介绍、仿真波形分析,实验箱下载验证等。四、进程安排周1-周4: 查阅资料,上机编写并调试程序周5: 课程设计答辩并交设计说明书五、主要参考资料1.Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,
3、2008.52.潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2005.23.焦素敏.EDA应用技术.清华大学出版社,2002.4指导教师(签名):教研室主任(签名):课程设计成绩评定表出勤情况出勤天数 缺勤天数成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)设计成果(60分)总成绩(100分)提问(答辩)问题情况综合评定 指导教师签名: 年 月 日目录1 引言12应用工具简介22.1 EDA技术介绍22.2 VHDL语言介绍23总体设计33.1设计内容33.2设计要求33.3设计原理33.4设计思路33.5模块的设计33.5.1分频模块设计33.5.2频率测量模块设计53
4、.5.3锁存与倍率分辨模块设计63.5.4译码模块设计73.6模块连接84系统仿真及下载94.1系统仿真94.2系统下载94.3结果分析95总结及体会10参考文献11附 录121 引言所谓频率,就是周期性信号在单位时间(1s)里变化的次数。本频率计设计测量频率的基本原理是,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用LED数码显示管显示出来。根据数字频率计的基本原理,本文设计方案的基本思想是分为五个模块来实现其功能,即整个数字频率计系统分为分频模块、控制模块、计数模块、译码模块和量程自动切
5、换模块等几个单元,并且分别用VHDL对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。本频率计设计还可以测量周期性信号,其基本原理与测量频率的基本原理基本一样,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把被测信号一个周期内标准基准信号的脉冲计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用LED数码显示管显示出来,显示管的读数就是被测信号以标准信号的周期为单位乘积的周期。2应用工具简介2.1 EDA技术介绍EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能
6、化技术的最新成果,进行电子产品的自动设计。EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。2.2 VHDL语言介绍电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路。VHDL 硬件描述语言在电子设计自动化中扮演着重要
7、的角色,他是EDA 技术研究的重点之一。VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。硬件描述语言是EDA 技术的重要组成部分,VHDL 是作为电子设计主流硬件描述语言。因此,VHDL成为硬件描述语言的业界标准之一。一个完整的VHDL程序包括以下几个基本组成部分:实体(En
8、tity),结构体(Architecture),程序包(Package),库(Library)。其中,实体是一个VHDL程序的基本单元,由实体说明和结构体两部分组成,实体说明用于描述设计系统的外部接口信号;结构体用于描述系统的行为,系统数据的流程或系统组织结构形式。程序包存放各设计模块能共享的数据类型,常数,子程序等。库用于存放已编译的实体,机构体,程序包及配置。VHDL 语言的编译环境有不同的版本,我们应用的是Altera 公司的Maxplus 软件,它的操作顺序如下:使用TEXTEDITOR 编写VHDL 程序使用COMPILER 编译VHDL 程序;使用WAVE2FORMEDITOR,S
9、IMULAROT 仿真实验;使用TIMINGANALTZER 进行芯片的时序分析;用FLOORPLANEDITOR 锁定芯片管脚位置;使用PROGRAMMER 将编译好的VHDL 程序下载到芯片中。3总体设计3.1设计内容(1)设计四位十进制的简易数字频率计,对1HZ-10MHZ的方波信号进行测量;(2)测量的方波频率值要在4位数码管上进行显示; (3) 根据不同的待测方波信号,频率计分为4个量程进行测量,四个量程分别为乘1,乘10,乘100,乘1000量程。 (4)此频率计要设有一个整体复位控制;3.2设计要求(1)根据任务要求确定状态关系,画出状态转换图; (2)写出设计程序;(3)给出时
10、序仿真结果; (4)最后要有设计总结;3.3设计原理根据设计要求,系统的输入信号:基准时钟脉冲clk,待测信号clkin,复位信号rst,输出信号:显示倍率bei,显示频率y0y3。在复位信号ret=0时显示该时刻输入频率,rst=1时显示0。3.4设计思路整个设计由分频模块、频率测量模块、锁存与倍率分辨模块、译码模块四个部分组成。其中分频模块是把clk分成100个周期的脉冲的mile_clk与8个或9个周期的cost_clk;计程模块是用来计算行驶里程;计费是用来显示行驶费用。系统结构框图如图3-1所示:3.5模块的设计模块列化是EDA设计常用手段,将一个复杂系统分块设计使其变得简单,具体方
11、法是将一个小系统用VHDL语言或者硬件连接的方式表示出来然后生成一个新的具有特殊功能的元件。本设计中采用了4个经列化的元件,具体如下所示。3.5.1分频模块设计clk为基准脉冲5MHZ通过分频模块分成4个不同频率与占空比的脉冲,clk1用来作为1秒脉宽的测频基准信号其高电平保持1秒低电平保持10个基准脉宽,频率测量模块锁存与倍率分辨模块译码模块分频模块基准时钟脉冲待测频率信号复位信号数码管显示图3-1 系统结构框图clkf用来在下一次测频前将前一秒的数据清零其保持1秒加9个基准脉冲的低电平与1个基准脉冲的高电平,clk1与clkf频率为5000010HZ。clk5为2.5MHZ的锁存器扫描频率
12、,clk100位1000HZ的数码管扫描频率。分频模块如图3-2所示: 图3-2 分频模块图分频模块仿真图如图3-3所示图3-3 分频模块仿真图3.5.2频率测量模块设计当复位信号rst为低电平时,在clk高电平期间clkin每来一个上升沿,测频器低位i1就自增1,当i1满9时,i1清零,i2自增1,i2满9时,i2清零,直至i7计满9全部清零。因此测频器的测频范围是09999999Hz,满量程后自动归零。在下一个clk高电平到来之前clk配合clkf将前一个高电平所计值清零。测频模块图3-4如下:图3-4 测频模块图测频模块仿真图如图3-5所示图3-5 测频模块图3.5.3锁存与倍率分辨模块
13、设计本模块共有11个输入端口其中包括7位测频器输入,一个扫描端口,一个复位端口,clk与clkf两个端口同时控制其读取与锁存测频器输入信号;5个输出端口分别是最高非零4位测频器输入值与一位倍率值,其4位测频器输入值送入译码器再送至数码管译码显示;倍率值直接输出至二极管。计费模块如图3-4所示:图3-6 锁存与倍率模块图 计费模块仿真图如图3-7所示图3-7 锁存与倍率模块仿真图3.5.4译码模块设计本系统最终由8段数码管显示但系统运算皆使用bcd码,所以要对将要显示的数进行译码处理,由于实验室提供4位共阴极动态显示模块,对频率值四位译码。译码器模块如图3-8所示:图3-8 译码模块图三位译码模
14、块仿真图如图3-9所示图3-9 译码模块仿真图3.6模块连接由于该系统使用元件列化制作最后使用原理图连接的方式将其连接在一起。系统整体元件连接图如图3-10所示图3-10 整体元件连接图4系统仿真及下载4.1系统仿真系统仿真是在实际系统上进行实验研究比较困难时适用的必不可少的工具,它是指通过系统模型实验去研究一个已经存在或正在设计的系统的过程。程序输入完成后进行编译,编译完成后,可以对所进行的设计进行仿真,本课程设计的仿真平台是QuartusII软件,通过对VHDL源程序进行编译检错,然后创建波形文件(后缀名为.scf),加入输入输出变量,选择适用的芯片以及设定仿真结束时间,设置好输入初值进行
15、仿真。系统仿真图如图4-1所示:图4-1系统仿真图4.2系统下载b、wx、y为输出,分别表示倍率、位码和段码,用实验箱上的动态数码管显示,clk为5MHz的脉冲信号,in为待测脉冲信号,rst表示复位,用实验箱上的拨码开关L1代替实现其功能。硬件引脚锁定如图4-4所示:图4-2引脚锁定图4.3结果分析 下载完成后,rst初始置为0。在一秒后显示输入频率,改变输入频率显示值也相应延时改变符合要求。5总结及体会通过这学期学的EDA技术,再加上这几天边查资料边请教老师,终于理清了头绪,完成了此次课程设计。刚开始拿到本次程序设计题的时候确实有点儿兴奋,心想着尽量要独立快速而又高质量的完成这次课程设计。
16、但是大概思路有了,觉得特别复杂,我害怕了,一阵慌乱后,终于定下心来了终于找到了一个比较类似的VHDL程序的简易数字频率计设计。这也使得我今天的程序颇有类同的感觉。看了几遍课题设计要求和书上给的源程序后对如何写这一方面的程序有了一定的了解,于是就尝试着自己开始作起了这个系统的总体框图。平时觉得老师讲课时都特别简单清楚,但是现在自己拿到一个设计要求时,乱阵脚了,但是经过努力,先把封装图画了出来,最终把原理框图画出来了。时间过得真快,马上到周三了,要进实验室做仿真和下载的时候了,刚开始在实验室有点着急,但是老师的新要求提出时,我冷静了,修改程序,做调试,在最后终于成功的完成了符合设计要求的程序,下载
17、后仍有点小问题需要修改。但是毕竟得到了老师的肯定,我的信心更足了。下午又重新整理了自己的思路,功夫不负有心人,终于把问题都解决了。通过这次EDA课程设计,我对课堂上所学到的理论知识的理解加深了许多, 自己动脑、动手设计的能力也得到了较大提高。在这次课程设计的过程中,我对 VHDL 语言有了更深的认识。通过查阅相关资料和动手设计我发现我以前对 VHDL 语言的认识太过肤浅,认为 VHDL 语言只能用于设计小型的电路系统。但有了更深刻的认识之后我发现学好 VHDL 语言可以设计出大规模的、功能复杂的电路系统。我发现了动手实践的重要性。动手实践是理论知识得以灵活运用的必要前提,也是今后走上工作岗位之
18、后能够很好的完成设计工作的技术保证。只有遇到实际问题并根据自己对课堂上获得的专业知识的理解来解决才能真正的提高自己的能力。这也提醒我在平时的学习生活中不能一味埋头于课本知识,当今社会竞争越来越激烈,社会对人才的要求越来越全面,只有理论知识是远远不够的,必须靠实践作支撑,想要有更大的发展,更深入的研究,还需要更多的努力与实践。参考文献1 Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,2008.52 潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2005.23 焦素敏.EDA应用技术.清华大学出版社,2002.44 张昌凡等.可编程逻辑器件及VHDL设计技术
19、M.广州:华南理工大学出版社,20015 曾繁泰,陈美金.VHDL程序设计M.北京:清华大学出版社,2001附 录分频模块源程序library ieee;use ieee.std_logic_1164.all;entity fp is port(clk:in std_logic; clkout1:out std_logic; clkout5:out std_logic; clkout100:out std_logic; clkoutf:out std_logic);end;architecture bhv of fp is begin process(clk) variable temp,te
20、mp1,temp2,temp3:integer range 0 to 10000000; variable c1,c2,c3,c4:std_logic; begin if clkevent and clk=1 then temp:=temp+1;temp1:=temp1+1;temp2:=temp2+1;temp3:=temp3+1; if(temp50000)then c1:=1; end if; if(temp=50000)then c1:=0; end if; if(temp=50010)then temp:=0; end if; if(temp150009)then c2:=0; en
21、d if; if(temp1=50010)then c2:=1; temp1:=0; end if; if(temp2=1)then c3:=not c3; temp2:=0; end if; if(temp3=50)then c4:=not c4; temp3:=0; end if; end if; clkout1=c1; clkout5=c3; clkout100=c4; clkoutf=c2; end process; end bhv; 测频模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.
22、all;use ieee.std_logic_arith.all;entity beice isport(clk,ql,clkin,rst:in std_logic; i1,i2,i3,i4,i5,i6,i7:out std_logic_vector(3 downto 0);end beice;architecture bhv of beice issignal clk1:std_logic;beginprocess(clk,clkin)beginclk1=clkin and clk;end process;process(rst,clk1,clk)variable a1,a2,a3,a4,a
23、5,a6,a7: std_logic_vector(3 downto 0);beginif rst=1 or ql=1 thena1:=0000;a2:=0000;a3:=0000;a4:=0000;a5:=0000;a6:=0000;a7:=0000;elsif clk1event and clk1=1 thenif a1=1001then a1:=0000; if a2=1001then a2:=0000; if a3=1001then a3:=0000; if a4=1001then a4:=0000; if a5=1001then a5:=0000; if a6=1001then a6
24、:=0000; if a7=1001then a7:=0000; else a7:=a7+1; end if; else a6:=a6+1; end if; else a5:=a5+1; end if; else a4:=a4+1; end if; else a3:=a3+1; end if; else a2:=a2+1; end if;else a1:=a1+1;end if;end if;i1=a1;i2=a2;i3=a3;i4=a4;i5=a5;i6=a6;i7=a7;end process;end bhv;锁存与倍率分辨模块源程序library ieee;use ieee.std_lo
25、gic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity suocun isport(clk,clk1,clkf,rst:in std_logic; a1,a2,a3,a4,a5,a6,a7:in std_logic_vector(3 downto 0); bei:out std_logic_vector(3 downto 0); bcd1,bcd2,bcd3,bcd4:out std_logic_vector(3 downto 0);end suocun;architecture bhv
26、of suocun isbeginprocess(clk1) variable sel,b1,b2,b3,b4:std_logic_vector(3 downto 0);beginif rst=1thenbcd4=0000;bcd3=0000;bcd2=0000;bcd10000 then b4:=a7;b3:=a6;b2:=a5;b1:=a4;sel:=1000;elsif a60000 then b4:=a6;b3:=a5;b2:=a4;b1:=a3;sel:=0100;elsif a50000 then b4:=a5;b3:=a4;b2:=a3;b1:=a2;sel:=0010;else
27、 b4:=a4;b3:=a3;b2:=a2;b1:=a1;sel:=0001;end if;end if;end if;bei=sel;bcd1=b1;bcd2=b2;bcd3=b3;bcd4=b4;end process;end bhv;译码模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity yima isport(clk:in std_logic; bcd1,bcd2,bcd3,bcd4:in std_logic_v
28、ector(3 downto 0); wx:out std_logic_vector(3 downto 0); y:out std_logic_vector(7 downto 0);end yima;architecture bhv of yima issignal bcd: std_logic_vector(3 downto 0);beginprocess(clk) variable ys:integer range 0 to 5;beginif clkevent and clk=1thenys:=ys+1;if ys=1 then bcd=bcd4;wx=1000;elsif ys=2 then bcd=bcd3;wx=0100;elsif ys=3 then bcd=bcd2;wx=0010;elsif ys=4 then bcd=bcd1;wxy(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)y(7 downto 0)=00000000;end case;end process;end bhv;