基于QUARTUS的EDA课程设计数字频率计的仿真

合集下载

基于QUARTUS的EDA课程设计数字频率计的仿真

基于QUARTUS的EDA课程设计数字频率计的仿真

成绩评定表课程设计任务书目录1.设计要求 (2)2、设计目的 (2)3.总体设计思路及解决方案 (2)3.1相关知识 (2)3.3、设计思路及解决方案 (4)4.分层次方案设计及代码描述 (5)4.1.底层程序源码 (5)4.2顶层程序源码 (10)5.各模块的时序仿真结果 (12)6.设计心得 (15)数字频率计课程设计1.设计要求设计一个四位十进制的数字频率计。

要求具有以下功能:(1)测量范围:1HZ~10HZ。

(2) 测量误差≤1/(3)响应时间≤15s。

(4)显示时间不小于1s。

(5)具有记忆显示的功能。

即在测量过程中不刷新数据。

等数据过程结束后才显示测量结果。

给出待测信号的频率值。

并保存到下一次测量结束。

(6)包括时基产生与测评时序控制电路模块。

以及待测信号脉冲计数电路模块和锁存与译码显示控制电路。

2、设计目的通过综合性课程设计题目的完成过程,运用所学EDA知识,解决生活中遇到的实际问题,达到活学活用,所学为所用的目的,进一步理解EDA的学习目的,提高实际应用水平。

本次设计的数字频率计具有精度高、使用方便、测量迅速、便于实现测量过程自动化等优点,是频率测量的重要手段之一。

数字频率计主要包括时基产生与测评时序控制电路模块、待测信号脉冲计数电路、译码显示与锁存控制电路模块。

3.总体设计思路及解决方案3.1相关知识Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

简述基于QuartusⅡ设计的频率计

简述基于QuartusⅡ设计的频率计

重庆师范大学期末考核提交材料课程名称: EDA原理及应用院系:物理与电子工程学院时间: 2012—2013学年度第2学期专业:电子信息科学与技术(职教师资)年级: 2011级培养层次:本科学生姓名:学号:成绩:基于QuartusⅡ设计的频率计摘要:计数器在数字电路中有着广泛的应用,现提出一种计数器设计穿插在电子电路设计的教学方法,使学生能够快速地根据现有的数字电路知识转化到EDA 的应用。

关键词频率计;电子设计自动化;Verilog0 引言:随着EDA技术的发展和应用领域的扩大,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。

同时,随着技术市场对EDA技术需求的不断提高,产品的市场效率和技术要求也必然会反映到数学和科研领域中来。

以最近的十届全国大学生电子设计竞赛为例,涉及EDA技术的赛题从未缺席过。

对诸如斯坦福大学、麻省理工学院等美国一些著名院校的电子与计算机实验室建设情况的调研表明,其EDA技术的教学与实践的内容也十分密集;在其本科和研究生教学中有两个明显的特点:其一,各专业中EDA教学实验课程的普及率和渗透率极高;其二,几乎所有实验项目都部分或全部地融入了EDA技术,其中包括数字电路、计算机组成与设计、计算机接口技术、数字通信技术、嵌入式系统、DSP等实验内容,并且更多地注重创新性实验。

这显然是科技发展和市场需求双重影响下自然产生的结果。

1.QuartusⅡ简介:QuartusⅡ是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大的可编程逻辑器件供应商之一。

QuartusⅡ在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plusⅡ的更新换代产品,其界面友好,使用便捷。

2.计数器设计这里首先设计测频用的、含时钟使能控制的2位十进制计数器。

2.1:设计电路原理图。

频率计的核心元件之一是含有时钟使能及进位扩展输出的十进制计数器。

EDA报告(数字频率计)

EDA报告(数字频率计)

课程设计说明书课程设计名称:EDA技术课程设计题目:学生姓名:专业:学号:指导教师:胡兵日期:2009年 6月 20 日成绩1 前言1.1序言在电子工程,资源勘探,仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具。

频率测量也是电子测量技术中最基本最常见的测量之一。

不少物理量的测量,如转速、振动频率等的测量都涉及到或可以转化为频率的测量。

目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。

为适应实际工作的需要,本文在简述频率测量的基本原理和方法的基础上,提供一种基于FPGA的数字频率计的设计和实现过程,本方案不但切实可行,而且具有成本低廉、小巧轻便、便于携带等特点。

1.2 设计背景在eda(电子设计自动化)在电子设计中起着越来越重要的作用的时候,我们进行EDA课程设计,以增强我们的动手和综合能力。

我们选择了数字频率计设计这个课题,因为数字频率计的应用范围很广。

数字频率计在测量其他物理量如转速、振动频率等方面也获得广泛应用。

数字频率计的设计方法也有多种,如模拟数字方法,单片机设计,基于fpga用verilog设计方法。

由于Verilog HDL设计有诸多优点,所以我们选择了Verilogs设计方法。

1.3 数字频率计分类国际上数字频率计的分类很多。

按功能分类,因计数式频率计的测量功能很多,用途很广。

所以根据仪器具有的功能,电子计数器有通用和专用之分。

(1)通用型计数器:是一种具有多种测量功能、多种用途的万能计数器。

它可测量频率、周期、多周期平均值、时间间隔、累加计数、计时等;若配上相应插件,就可测相位、电压、电流、功率、电阻等电量;配上适当的传感器,还可进行长度、重量、压力、温度、速度等非电量的测量。

(2)专用计数器:指专门用来测量某种单一功能的计数器。

如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。

EDA课程设计报告,数字频率计

EDA课程设计报告,数字频率计

. I目录前言01. 总体设计方案11.1总体设计方案12. 单元模块设计12.1十进制计数器设计12.1.1 十进制计数器原件t10设计12.1.2 位十进制计数器的顶层设计22.2闸门控制模块EDA设计32.2.1 定时信号模块Timer32.2.2 控制信号发生器模块T_con42.3译码显示模块42.3.1 显示存放器设计42.3.2 译码扫描显示电路52.3.3 译码显示模块的顶层电路设计73. 软件测试83.1测试的环境83.2调试和器件编程84. 设计总结85. 参考文献9前言在电子技术高度开展的今天,各种电子产品层出不穷,而频率作为设计的最根本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程的自动化等优点。

数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,它的根本功能是测量正弦信号、方波信号、尖脉冲信号以及其它各种单位时间变化的物理量。

当今国外厂家生产的数字频率计在功能和性能方面都比拟优良,而且还在不断开展中,但其构造比拟复杂,价位也比拟高,在测量精准度要求比拟低的测量场合,使用这些数字频率计就不够经济合算。

我所设计的这款数字频率计能够可靠实现频率显示功能,原理及构造也比拟简单本次所做的课程设计就是一个数字频率计,能测量1HZ~9999HZ的矩形波信号,并正确地显示所测信号的频率值。

数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比拟复杂,而且会产生比拟大的延时,造成测量误差、可靠性差。

随着现场可编程门阵列FPGA 的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。

采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在Quartus‖仿真平台上编译、仿真、调试,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量各种常用的波形信号的频率,而且还能对其他多种物理量进展测量。

EDA数字频率计实验报告

EDA数字频率计实验报告

实验四:数字频率计的设计1.实验目的(1)熟悉Quartus Ⅱ/ISE Suite/ispLEVER软件的基本使用方法。

(2)熟悉GW48-CK或其他EDA实验开发系统的基本使用方法。

(3)学习VHDL基本逻辑电路的综合设计应用。

2.实验内容设计并调试好8位十进制数字频率计,并用GW48-CK或其他EDA实验开发系统(事先应选定拟采用的实验芯片的型号)进行硬件验证。

3.实验要求(1)画出系统的原理图,说明系统中各主要组成部分的功能。

(2)编写各个VHDL源程序。

(3)根据系统的功能,选好测试用例,画出测试输入信号波形或编号测试程序。

(4)根据选用的EDA实验开发装置编好用于硬件验证的管脚锁定表格或文件。

(5)记录系统仿真、逻辑综合及硬件验证结果。

(6)记录实验过程中出现的问题及解决办法。

4.实验条件(1)开发条件:Quartus Ⅱ 8.0。

(2)实验设备:GW48-CK实验开发系统。

(3)拟用芯片:EP3C5F484C8N。

5.实验设计1)系统原理图本设计8位数字频率计,它由1个CLKGEN分频模块,1个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、1个32位锁存器REG32B,动态信号产生模块CTRLS、数据动态显示模块DISPLAY组成。

6个模块按照图4.1所示的原理图构成顶层电路dtFREQ。

图4.1分频、测频、锁存模块图 4.2 dtFREQ电路原理图2)VHDL程序数字频率计FREQ的底层和顶层电路均采用VHDL文本输入,有关VHDL程CNT10的VHDL源程序:--CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK: IN STD_LOGIC;CLR: IN STD_LOGIC;ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO: OUT STD_LOGIC );END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK, CLR, ENA) ISBEGINIF CLR='1' THEN CQI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENIF CQI="1001" THENCQI<="0000";ELSECQI<=CQI+'1';END IF;END IF;END IF;END PROCESS;PROCESS(CLK, CQI) ISBEGINIF CLK'EVENT AND CLK='1' THENIF CQI<"1001" THENCO<='0';ELSECO<='1';END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;REG32B的VHDL源程序:--REG32B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT(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 ISBEGINPROCESS(LOAD,DIN) ISBEGINIF(LOAD'EVENT AND LOAD='1')THENDOUT<=DIN;END IF;END PROCESS;END ARCHITECTURE ART;TESTCTL的VHDL源程序:--TESTCTL.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(CLK: IN STD_LOGIC;TSTEN: OUT STD_LOGIC;CLR_CNT: OUT STD_LOGIC;LOAD: OUT STD_LOGIC);END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL ISSIGNAL DIV2CLK: STD_LOGIC;BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENDIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS(CLK, DIV2CLK) ISBEGINIF CLK='0' AND DIV2CLK='0' THENCLR_CNT<='1';ELSE CLR_CNT<='0';END IF;END PROCESS;LOAD<=NOT DIV2CLK;TSTEN<=DIV2CLK;END ARCHITECTURE ART;CLKGEN的VHDL源程序:--CLKGEN.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CLKGEN ISPORT(CLK_IN: IN STD_LOGIC;RESET: IN STD_LOGIC;CLK_OUT: OUT STD_LOGIC );END ENTITY CLKGEN;ARCHITECTURE ART OF CLKGEN ISCONSTANT DIVIDE_PERIOD:INTEGER:=50000000; --50MHZ TO 1HZ BEGINPROCESS(CLK_IN,RESET) ISVARIABLE CNT:INTEGER RANGE 0 TO 49999999;BEGINIF(RESET='1')THENCNT :=0;CLK_OUT<='0';ELSIF RISING_EDGE(CLK_IN) THENIF(CNT<(DIVIDE_PERIOD/2)) THENCLK_OUT<='1';CNT:=CNT+1;ELSIF(CNT<(DIVIDE_PERIOD-1)) THENCLK_OUT<='0';CNT:=CNT+1;ELSECNT:=0;END IF;END IF;END PROCESS DIVIDE_CLK;END ARCHITECTURE ART;CTRLS的VHDL源程序--CTRLS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CTRLS ISPORT(CLK: IN STD_LOGIC;SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END ENTITY CTRLS;ARCHITECTURE ART OF CTRLS ISSIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENIF CNT="111" THENCNT<="000";ELSECNT<=CNT+'1';END IF;END IF;END PROCESS;SEL<=CNT;END ARCHITECTURE ART;DISPLAY的VHDL源程序--DISPLAY.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY ISPORT( SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0); DATAIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0); COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY DISPLAY;ARCHITECTURE ART OF DISPLAY ISSIGNAL DATA: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINP1:PROCESS(SEL) ISBEGINCASE SEL ISWHEN"000"=>COM<="11111110";WHEN"001"=>COM<="11111101";WHEN"010"=>COM<="11111011";WHEN"011"=>COM<="11110111";WHEN"100"=>COM<="11101111";WHEN"101"=>COM<="11011111";WHEN"110"=>COM<="10111111";WHEN"111"=>COM<="01111111";WHEN OTHERS=>COM<="11111111";END CASE;END PROCESS P1;P2:PROCESS(SEL)BEGINCASE SEL ISWHEN"000"=>DATA<=DATAIN(3 DOWNTO 0); WHEN"001"=>DATA<=DATAIN(7 DOWNTO 4); WHEN"010"=>DATA<=DATAIN(11 DOWNTO 8); WHEN"011"=>DATA<=DATAIN(15 DOWNTO 12); WHEN"100"=>DATA<=DATAIN(19 DOWNTO 16);WHEN"101"=>DATA<=DATAIN(23 DOWNTO 20); WHEN"110"=>DATA<=DATAIN(27 DOWNTO 24); WHEN"111"=>DATA<=DATAIN(31 DOWNTO 28); WHEN OTHERS=>DATA<="0000";END CASE;CASE DATA ISWHEN"0000"=>SEG<="00111111";WHEN"0001"=>SEG<="00000110";WHEN"0010"=>SEG<="01011011";WHEN"0011"=>SEG<="01001111";WHEN"0100"=>SEG<="01100110";WHEN"0101"=>SEG<="01101101";WHEN"0110"=>SEG<="01111101";WHEN"0111"=>SEG<="00000111";WHEN"1000"=>SEG<="01111111";WHEN"1001"=>SEG<="01101111";WHEN OTHERS=>SEG<="00000000";END CASE;END PROCESS P2;END ARCHITECTURE ART;dtFREQ的VHDL源程序:--dtFREQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dtFREQ ISPORT(FSIN: IN STD_LOGIC;CLK: IN STD_LOGIC;CLK2:IN STD_LOGIC;RESET: IN STD_LOGIC;SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY dtFREQ;ARCHITECTURE ART OF dtFREQ IS--CNT10COMPONENT CNT10 ISPORT(CLK, CLR, ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO: OUT STD_LOGIC);END COMPONENT CNT10;--REG32BCOMPONENT REG32B ISPORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT REG32B;--TESTCTLCOMPONENT TESTCTL ISPORT(CLK: IN STD_LOGIC;TSTEN: OUT STD_LOGIC;CLR_CNT: OUT STD_LOGIC;LOAD: OUT STD_LOGIC);END COMPONENT TESTCTL;--CLKGENCOMPONENT CLKGEN ISPORT(CLK_IN: IN STD_LOGIC;RESET: IN STD_LOGIC;CLK_OUT: OUT STD_LOGIC );END COMPONENT CLKGEN;--CTRLSCOMPONENT CTRLS ISPORT(CLK: IN STD_LOGIC;SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT CTRLS;--DISPLAYCOMPONENT DISPLAY ISPORT(SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DATAIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0); COM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT DISPLAY;SIGNAL SE,SC,SL,CLK1:STD_LOGIC;SIGNAL S0,S1,S2,S3,S4,S5,S6,S7,S8:STD_LOGIC;SIGNAL SD,DOUT:STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL SEL:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINU0:CLKGEN PORT MAP(CLK,RESET,CLK1);U1:TESTCTL PORT MAP(CLK=>CLK1,TSTEN=>SE, CLR_CNT=>SC, LOAD=>SL); U2:CNT10 PORT MAP(CLK=>FSIN, CLR=>SC, ENA=>SE, CQ=>SD(3 DOWNTO 0),CO=>S1);U3:CNT10 PORT MAP(CLK=>S1, CLR=>SC, ENA=>SE, CQ=>SD(7 DOWNTO 4),CO=>S2);U4:CNT10 PORT MAP(S2, SC, SE, SD(11 DOWNTO 8),S3);U5:CNT10 PORT MAP(S3, SC, SE, SD(15 DOWNTO 12),S4);U6:CNT10 PORT MAP(S4, SC, SE, SD(19 DOWNTO 16),S5);U7:CNT10 PORT MAP(S5, SC, SE, SD(23 DOWNTO 20),S6);U8:CNT10 PORT MAP(S6, SC, SE, SD(27 DOWNTO 24),S7);U9:CNT10 PORT MAP(S7, SC, SE, SD(31 DOWNTO 28),S8);U10:REG32B PORT MAP(LOAD=>SL, DIN=>SD, DOUT=>DOUT);U11:CTRLS PORT MAP(CLK2,SEL);U12:DISPLAY PORT MAP(SEL,DOUT,COM(7 DOWNTO 0),SEG(7 DOWNTO 0));END ARCHITECTURE ART;3)仿真波形设置本设计包括三个层次,因此先进行底层的测频信号发生器TESTCTL、计数器CNT10、锁存器REG32B,分频器CLKGEN,动态信号产生模块CTRLS,数据动态显示模块DISPLAY的仿真,再进行顶层dtFREQ的仿真。

eda数字频率计课程设计

eda数字频率计课程设计

eda数字频率计课程设计一、课程目标知识目标:1. 让学生理解数字频率计的基本原理,掌握EDA工具的使用方法;2. 使学生掌握数字频率计的电路设计,包括计数器、时钟分频器等关键部分;3. 让学生掌握数字频率计的仿真与调试方法,了解其在实际应用中的限制和改进措施。

技能目标:1. 培养学生运用EDA工具进行数字电路设计和仿真的能力;2. 培养学生独立分析问题、解决问题的能力,能够根据实际需求调整和优化数字频率计的设计;3. 培养学生团队合作意识,提高沟通与协作能力。

情感态度价值观目标:1. 激发学生对电子设计的兴趣,培养创新意识和探索精神;2. 培养学生严谨的科学态度,注重实验数据的真实性,遵循实验操作规范;3. 引导学生关注我国电子产业的发展,增强民族自豪感和使命感。

课程性质:本课程为实践性较强的电子设计课程,旨在通过数字频率计的设计与实现,让学生掌握电子设计的基本方法和技能。

学生特点:学生已具备一定的电子基础知识,具有较强的学习能力和动手能力,但对EDA工具的使用和数字电路设计尚较陌生。

教学要求:教师需结合学生特点,注重理论与实践相结合,引导学生主动参与课堂讨论和实践活动,培养其独立思考和解决问题的能力。

通过课程学习,使学生能够达到预定的学习成果,为后续相关课程的学习打下坚实基础。

二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 数字频率计原理介绍:使学生了解数字频率计的工作原理,掌握频率测量的基本方法。

- 相关教材章节:第五章“数字频率计”- 内容列举:频率计的基本原理、计数器原理、时钟分频器原理等。

2. EDA工具使用:培养学生运用EDA工具进行电路设计与仿真的能力。

- 相关教材章节:第三章“EDA工具的使用”- 内容列举:EDA工具的基本操作、原理图绘制、电路仿真等。

3. 数字频率计电路设计:使学生掌握数字频率计的电路设计方法,包括计数器、时钟分频器等关键部分。

- 相关教材章节:第四章“数字电路设计”- 内容列举:计数器设计、时钟分频器设计、数字频率计整体电路设计等。

基于EDA软件QuartusII的数字频率计的设计

基于EDA软件QuartusII的数字频率计的设计

基于E D A软件Q u a r t u s I I 的 数字频 率计的设计
钱 虹 凌
( 大同大学 T程实 圳『 f l 心. 1 J 人 I 0 3 7 0 ( } 3 )
摘 要 : 介 绍 了 基 于 Al t e r a公 司 开 发 的 Q L 1  ̄ . I r l us l I EI ) A 软 件 , 该 软 件 是 片 上 可 编 程 系 统 设 计 的 综
CI KS TAD( 5 M) 连 接 到 7段 译 码 器 稳 定 显 示 输 入
时钟 信 号 . 为了使 得稳 定 显示功 能 实现 . 该 5 M 信 被 分 频为 3 0 0 Hz信 . 本 系 统 通 过 加 法 汁 数 器 来 产 , l : 该 3 0 0 H z信 号 , 并 且 由它 来 产 生 位 选 信 号 , 具 体 程 序 及分 析 见下 文 。选 取 3 0 0 Hz信 号 足 闪 为 扫 描
牛 器 TES r r CTI , 八 个 十进 制 汁数 器 【 、 NT1 0:, 一 个 3 2位 锁 存 器 RE G3 2 B, 7段 译 码 器 输 f { = { 选 择 、
效果 . 而 H . 显 示 也小闪烁 。当时 钟信 号 为 5 M Hz 时. 最 后 每 个 示 扫 描 信 频 率 为 : 3 0 0 / 6— 5 0> 2 4 Hz , 所 以 会 有 闪 烁 情 形 产 生 。
合 性 环境 , 以数 字 频 率 计 的 设 计 为 例 . 介 绍该 软件 的层 次化 设计 使 用方 法 。 关键 词 : Qu a r l us I I ; EI ) A; VH DI ; 层次化 设计 ; 数 字 频 率 计
中 图分类 号 : TP3 文献 标 识码 : A 文章 编号 : l ( ) ( ) 7

eda课程设计数字频率计的设计

eda课程设计数字频率计的设计

VHDL与数字系统设计设计说明书数字频率计的设计起止日期:2010年12 月14 日至2010年12 月26 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院2010 年12 月26 日附件:附件1、设计图形元件原理图:附件2、程序源代码:1、频率产生器:library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 isport(clock: in std_logic ;q: out std_logic_vector (26 downto 0));end lpm_counter0;architecture syn of lpm_counter0 issignal sub_wire0 : std_logic_vector (26 downto 0);component lpm_countergeneric (lpm_direction : string;lpm_port_updown : string;lpm_type : string;lpm_width : natural);port(clock : in std_logic ;q : out std_logic_vector (26 downto 0));end component;beginq <= sub_wire0(26 downto 0);lpm_counter_component : lpm_countergeneric map (lpm_direction => "up",lpm_port_updown => "port_unused",lpm_type => "lpm_counter",lpm_width => 27)port map (clock => clock,q => sub_wire0);end syn;2、测频控制信号发生器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl isport(clk:in std_logic;--1Hz信号tsten:out std_logic;--计数器使能信号clr_cnt:out std_logic;--计数器清零信号load:out std_logic);--锁存器输出控制信号end testpl;architecture art of testpl issignal div2clk:std_logic;beginprocess(clk)beginif clk'event and clk='1'thendiv2clk<=not div2clk; --div2clk为2Hzend if ;end process;process (clk ,div2clk)beginif( clk='0'and div2clk='0')thenclr_cnt<='1'; --当div2clk与clk同时为零时计数器清零 else clr_cnt<='0'; --当div2clk处于的高电平时计数器计数end if;end process;load<=not div2clk; --锁存器输出与计数器使能信号反相tsten<=div2clk;end art;3、有时钟使能的十进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,clr,en: in std_logic;--clk:计数器时钟,clr:清零信号,en:计数使能信号q: out std_logic_vector(3 downto 0);--q:4位计数结果输出 c10: out std_logic);--计数进位end cnt10;architecture art of cnt10 issignal cqi: std_logic_vector(3 downto 0);beginprocess (clk,clr)beginif clr='1' then cqi<="0000";--当输入的clr_cnt为低电平0时清零elsif clk'event and clk='1' thenif en='1' then--当输入的tesen为高电平1时允许计数if (cqi<9) then cqi<=cqi+1;else cqi<="0000"; --等于9则计数器清零end if;--当输入的tesen为低电平0时禁止计数,锁定计数值end if;end if;end process;--产生进位process(cqi)beginif cqi="1001" then c10<='1'; --当加的9时产生进位输出 else c10<='0';end if;end process;q<=cqi;end art;4、16位锁存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b isport (load: in std_logic;--输出锁存控制信号din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;architecture art of reg16b isbeginprocess(load,din)beginif load'event and load='1'then--load为高电平时teten为低电平,计数器禁止dout<=din; --锁存输入的数据end if;end process;end art;5、数码管控制器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom isport(clk:in std_logic; --数码管扫描频率datain: in std_logic_vector(15 downto 0);--锁存器输入的16位信号 dataout: out std_logic_vector(3 downto 0);-输出至译码器的4位信号 com: out std_logic_vector(3 downto 0));--输出数码管选择信号end ledcom;architecture art of ledcom issignal comclk: std_logic_vector(1 downto 0);begin--comclk同扫描频率clk循环变化process(clk)beginif rising_edge(clk) thenif comclk>=3 thencomclk <="00";else comclk<=comclk+1;end if;end if;end process;--数码管选择process(comclk)begincase comclk iswhen "00" => com<="1000";when "01" => com<="0100";when "10" => com<="0010";when "11" => com<="0001";when others =>NULL;end case;end process;--对应数码管的输出process(comclk,datain)begincase comclk iswhen "11"=> dataout<=datain(3 downto 0);when "10"=> dataout<=datain(7 downto 4);when "01"=> dataout<=datain(11 downto 8);when "00"=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art;6、七段数码管的译码器library IEEE;use IEEE.std_logic_1164.all;entity ymq isport(d_in: in std_logic_vector(3 downto 0);--数码管控制器输入四位信号d_out: out std_logic_vector(7 downto 0)); --输出8位信号end ymq;--第8位d_out[7]为逗号architecture art of ymq isbeginprocess(d_in)begincase d_in is --第8位为1高电平逗号不显示when "0000" => d_out<="11000000"; --0when "0001" => d_out<="11111001"; --1when "0010" => d_out<="10100100"; --2when "0011" => d_out<="10110000"; --3when "0100" => d_out<="10011001"; --4when "0101" => d_out<="10010010"; --5when "0110" => d_out<="10000010"; --6when "0111" => d_out<="11111000"; --7when "1000" => d_out<="10000000"; --8when "1001" => d_out<="10010000"; --9when others =>NULL;end case;end process;end art;7、元件声明及例化将各个元器件依据设计相连library ieee;use ieee.std_logic_1164.all;entity lx isport(clk: in std_logic;led: out std_logic_vector(7 downto 0);ledc: out std_logic_vector(3 downto 0));end lx;architecture art of lx iscomponent lpm_counter0 --待调用的频率生成器端口定义PORT(clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (26 DOWNTO 0) );end component;--十进制计数器component cnt10 --待调用的有时钟使能的十进制计数器端口定义port(clk,clr,en: in std_logic;q: out std_logic_vector(3 downto 0);c10: out std_logic);end component;--16位锁存器component reg16b --待调用的32位锁存器端口定义port (load: in std_logic;din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end component;--测频控制器component testpl --待调用的测频控制信号发生器端口定义 port(clk:in std_logic;tsten:out std_logic;clr_cnt:out std_logic;load:out std_logic);end component;--数码管选择器component ledcom --待调用的数码管选择器端口定义port(clk:in std_logic;datain: in std_logic_vector(15 downto 0);dataout: out std_logic_vector(3 downto 0);com: out std_logic_vector(3 downto 0));end component;--译码器component ymq --待调用的译码器端口定义port(d_in: in std_logic_vector(3 downto 0);d_out: out std_logic_vector(7 downto 0));end component;signal clk1,clk2,clk3: std_logic;--clk1为1Hz信号,clk2为被测信号,clk3为数码管扫描信号signal tsten,clr,load: std_logic;signal c1,c2,c3,c4: std_logic;signal qout,rout: std_logic_vector(15 downto 0);signal datao: std_logic_vector(3 downto 0);beginu0:testpl port map(clk1,tsten,clr,load);u1:cnt10 port map(clk2,clr,tsten,qout(3 downto 0),c1);u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2);u3:cnt10 port map(c2,clr,tsten,qout(11 downto 8),c3);u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4);u5:reg16b port map(load,qout(15 downto 0),rout);u6:ledcom port map(clk3,rout,datao,ledc);u8:ymq port map(datao,led);u9:lpm_counter0 port map(clk,q(25)=>clk1,q(15)=>clk2,q(17)=>clk3); end art;。

基于EDA的数字频率计的设计

基于EDA的数字频率计的设计
2.1.1十进制计数器元件的设计
十进制计数器的程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jishu10 is
port(clk,rst,en:in std_logic;
cq:out std_logic_vector(3 downto 0);
4位十进制计数器的顶层原理图图5
完成4位十进制计数器的原理图编辑以后,即可进行仿真测试和波形分析,其仿真输出波形如图所示,当RST=0、EN=1是其计数值在0到9999之间循环变化,COUT为计数进位输出信号,作为后面的量程自动切换模块的输入脉冲。
脉冲图图6
因此仿真结果正确无误,可将以上设计的4位十进制计数器设置成可调用的元件jishu10_4.sym,以备高层设计中使用,其元件符号图如下图所示。
基于EDA的数字频率计的设计

数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信号的频率,而且还可以测量它们的周期。经过改装,可以测量脉冲宽度,做成数字式脉宽测量仪;可以测量电容做成数字式电容测量仪;在电路中增加传感器,还可以做成数字脉搏仪、计价器等。因此数字频率计在测量物理量方面应用广泛。本毕业设计用VHDL在CPLD器件上实现数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。

基于某QUARTUS地EDA课程设计数字频率计地仿真

基于某QUARTUS地EDA课程设计数字频率计地仿真

成绩评定表课程设计任务书目录1.设计要求 (2)2、设计目的 (2)3.总体设计思路及解决方案 (2)3.1相关知识 (2)3.3、设计思路及解决方案 (4)4.分层次方案设计及代码描述 (5)4.1.底层程序源码 (5)4.2顶层程序源码 (10)5.各模块的时序仿真结果 (12)6.设计心得 (15)数字频率计课程设计1.设计要求设计一个四位十进制的数字频率计。

要求具有以下功能:(1)测量围:1HZ~10HZ。

(2) 测量误差≤1/(3)响应时间≤15s。

(4)显示时间不小于1s。

(5)具有记忆显示的功能。

即在测量过程中不刷新数据。

等数据过程结束后才显示测量结果。

给出待测信号的频率值。

并保存到下一次测量结束。

(6)包括时基产生与测评时序控制电路模块。

以及待测信号脉冲计数电路模块和锁存与译码显示控制电路。

2、设计目的通过综合性课程设计题目的完成过程,运用所学EDA知识,解决生活中遇到的实际问题,达到活学活用,所学为所用的目的,进一步理解EDA的学习目的,提高实际应用水平。

本次设计的数字频率计具有精度高、使用方便、测量迅速、便于实现测量过程自动化等优点,是频率测量的重要手段之一。

数字频率计主要包括时基产生与测评时序控制电路模块、待测信号脉冲计数电路、译码显示与锁存控制电路模块。

3.总体设计思路及解决方案3.1相关知识Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

EDA课程设计——数字频率计的设计

EDA课程设计——数字频率计的设计

《电子设计自动化(EDA)技术》课程设计报告书题目: 数字频率计的VHDL设计姓名:院系:专业:学号:指导教师:完成时间: 年月日课程设计题目、内容、要求目录1 课程设计题目、内容与要求……………………………………1.1 设计内容……………………………………………………1.2 具体要求……………………………………………………2 系统设计…………………………………………………………2.1 设计思路……………………………………………………2.2 系统原理与设计说明3 系统实现…………………………………………………………4 系统仿真…………………………………………………………5 硬件验证(操作)说明…………………………………………6 总结……………………………………………………………7 参考书目………………………………………………………1 课程设计题目、内容与要求1.1课程设计的题目:数字频率计设计1.2课程设计内容:(1)设计一个能测量方波信号的频率计;(2)测量范围是0-999999Hz;(3)结果用十进制数显示。

2 系统设计2.1设计思路:2.1.1 数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器.它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。

本数字频率计采用自顶向下的设计思想,通过闸门提供的1s闸门时间对被测信号进行计数及测出的被测信号的频率,测出的频率再通过译码器译码后输出给显示器显示。

根据系统设计的要求,数字频率计的电路原理框图如下:2.2 系统原理与设计说明系统各个模块的功能如下:2.2.1标准时钟发生电路模块借用实验板上标准时钟发生电路,为计数闸门控制电路提供一个标准8Hz信号。

2.2.2 计数器闸门控制电路模块计数器闸门控制电路就是产生三个控制信号,即计数器复位信号、4位十进制计数器允许计数信号、锁存信号。

2.2.3锁存电路模块锁存电路就是为了让LED数码管在信号来临之前保持计数值不变。

EDA实验四数字频率计实验报告

EDA实验四数字频率计实验报告

EDA技术与应用实验报告学院:电气与信息工程学院班级:指导老师:谭会生老师姓名:学号:实验四:数字频率计的设计一.实验目的(1)熟悉artus I/ISE Suite/ispLEVNRI软件的基本使用方法。

(2)熟悉和掌握GW48-CK或其他EDA实验开发系统的使用。

(3)学习VHDL程序中数据对象、数据类型、顺序语句和并行语句的综合使用。

二.实验条件与要求(1)开发软件:Quartus II 9.0(2)实验设备:PC、GW48-CK EDA实验开发系统。

(3)画出系统的原理框图,说明系统中各个主要功能、编写各个VHDL源程序。

画出输入信号波形并调试和仿真。

三.实验内容设计并调试好八位十进制数字频率计,用GW48-CK实验开发系统进行硬件验证(实现应选择拟采用的实验芯片的型号)进行硬件验证。

四.实验设计(1)VHDL源程序1、8位可自加载加法计数器的源程序CNT10.VHD如下--CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA:IN STD_LOGIC;CQ:OUT INTEGER RANGE 0 TO 15;CO:OUT STD_LOGIC);END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI:INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,CLR,ENA) ISBEGINIF CLR='1'THEN CQI<=0;ELSIF CLK'EVENT AND CLK='1'THENIF ENA='1'THENIF CQI<9 THEN CQI<=CQI+1;ELSE CQI<=0;END IF;END IF;END IF;END PROCESS; PROCESS(CQI) ISBEGINIF CQI=9 THEN CO<='1'; ELSE CO<='0';END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;(3).完成设计文件输入后,保存文件,对文件进行编译和仿真。

eda课程设计数字频率计的设计[1]

eda课程设计数字频率计的设计[1]

VHDL与数字系统设计设计说明书数字频率计的设计起止日期:2010年12 月14 日至2010年12 月26 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院2010 年12 月26 日附件:附件1、设计图形元件原理图:附件2、程序源代码:1、频率产生器:library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 isport(clock: in std_logic ;q: out std_logic_vector (26 downto 0));end lpm_counter0;architecture syn of lpm_counter0 issignal sub_wire0 : std_logic_vector (26 downto 0);component lpm_countergeneric (lpm_direction : string;lpm_port_updown : string;lpm_type : string;lpm_width : natural);port(clock : in std_logic ;q : out std_logic_vector (26 downto 0));end component;beginq <= sub_wire0(26 downto 0);lpm_counter_component : lpm_countergeneric map (lpm_direction => "up",lpm_port_updown => "port_unused",lpm_type => "lpm_counter",lpm_width => 27)port map (clock => clock,q => sub_wire0);end syn;2、测频控制信号发生器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl isport(clk:in std_logic;--1Hz信号tsten:out std_logic;--计数器使能信号clr_cnt:out std_logic;--计数器清零信号load:out std_logic);--锁存器输出控制信号end testpl;architecture art of testpl issignal div2clk:std_logic;beginprocess(clk)beginif clk'event and clk='1'thendiv2clk<=not div2clk; --div2clk为2Hzend if ;end process;process (clk ,div2clk)beginif( clk='0'and div2clk='0')thenclr_cnt<='1'; --当div2clk与clk同时为零时计数器清零 else clr_cnt<='0'; --当div2clk处于的高电平时计数器计数end if;end process;load<=not div2clk; --锁存器输出与计数器使能信号反相tsten<=div2clk;end art;3、有时钟使能的十进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,clr,en: in std_logic;--clk:计数器时钟,clr:清零信号,en:计数使能信号q: out std_logic_vector(3 downto 0);--q:4位计数结果输出 c10: out std_logic);--计数进位end cnt10;architecture art of cnt10 issignal cqi: std_logic_vector(3 downto 0);beginprocess (clk,clr)beginif clr='1' then cqi<="0000";--当输入的clr_cnt为低电平0时清零elsif clk'event and clk='1' thenif en='1' then--当输入的tesen为高电平1时允许计数if (cqi<9) then cqi<=cqi+1;else cqi<="0000"; --等于9则计数器清零end if;--当输入的tesen为低电平0时禁止计数,锁定计数值end if;end if;end process;--产生进位process(cqi)beginif cqi="1001" then c10<='1'; --当加的9时产生进位输出 else c10<='0';end if;end process;q<=cqi;end art;4、16位锁存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b isport (load: in std_logic;--输出锁存控制信号din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;architecture art of reg16b isbeginprocess(load,din)beginif load'event and load='1'then--load为高电平时teten为低电平,计数器禁止dout<=din; --锁存输入的数据end if;end process;end art;5、数码管控制器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom isport(clk:in std_logic; --数码管扫描频率datain: in std_logic_vector(15 downto 0);--锁存器输入的16位信号 dataout: out std_logic_vector(3 downto 0);-输出至译码器的4位信号 com: out std_logic_vector(3 downto 0));--输出数码管选择信号end ledcom;architecture art of ledcom issignal comclk: std_logic_vector(1 downto 0);begin--comclk同扫描频率clk循环变化process(clk)beginif rising_edge(clk) thenif comclk>=3 thencomclk <="00";else comclk<=comclk+1;end if;end if;end process;--数码管选择process(comclk)begincase comclk iswhen "00" => com<="1000";when "01" => com<="0100";when "10" => com<="0010";when "11" => com<="0001";when others =>NULL;end case;end process;--对应数码管的输出process(comclk,datain)begincase comclk iswhen "11"=> dataout<=datain(3 downto 0);when "10"=> dataout<=datain(7 downto 4);when "01"=> dataout<=datain(11 downto 8);when "00"=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art;6、七段数码管的译码器library IEEE;use IEEE.std_logic_1164.all;entity ymq isport(d_in: in std_logic_vector(3 downto 0);--数码管控制器输入四位信号d_out: out std_logic_vector(7 downto 0)); --输出8位信号end ymq;--第8位d_out[7]为逗号architecture art of ymq isbeginprocess(d_in)begincase d_in is --第8位为1高电平逗号不显示when "0000" => d_out<="11000000"; --0when "0001" => d_out<="11111001"; --1when "0010" => d_out<="10100100"; --2when "0011" => d_out<="10110000"; --3when "0100" => d_out<="10011001"; --4when "0101" => d_out<="10010010"; --5when "0110" => d_out<="10000010"; --6when "0111" => d_out<="11111000"; --7when "1000" => d_out<="10000000"; --8when "1001" => d_out<="10010000"; --9 when others =>NULL;end case;end process;end art;。

基于EDA的数字频率计电路设计

基于EDA的数字频率计电路设计

基于EDA的数字频率计电路设计数字频率计是一种用于测量信号频率的电子测量仪器。

它可以将模拟信号转化为数字信号,并通过计算来获得信号的频率。

基于EDA的数字频率计电路设计使用EDA软件和模块来设计和模拟电路。

下面是关于基于EDA的数字频率计电路设计的详细介绍。

设计目标数字频率计主要是用于测量频率,因此设计目标是设计出一个稳定可靠的数字频率计电路,能够准确地测量信号的频率,并输出该信号的频率值。

设计流程1. 确定测量范围在设计数字频率计电路时,首先要确定测量的信号频率范围。

这些参数包括:频率的最低和最高值、测量的精度和分辨率。

2. 选取计数器器件基于EDA的数字频率计电路设计,需要使用一个高速、稳定、计数能力强的计数器器件。

在目前的技术条件下,常用的计数器器件有CD4040、CD4060、CD4024等,这些器件均具有高频率响应、易于使用、可编程等优点。

3. 选取稳压、滤波器件为了保证测试结果的稳定和准确,设计中需要使用稳压器件来消除电源电压的波动对仪器的影响,同时还需使用滤波器件来消除高频干扰带来的影响。

4. 连接计数器并程序设计计数器的连接应根据数据手册来实现,连通后还需要进行程序设计。

程序的设计可以使用模块化思想来进行,将输入、处理、输出等模块化。

5. 仿真验证设计在完成设计后,需要进行仿真验证,检查电路设计是否能够满足设计要求。

6. PCB绘制和电路调试如果仿真验证通过,则需要进行PCB绘制和电路调试。

PCB的设计和制作应根据原理图来完成,完成之后还需进行电路调试,确保电路能够正常工作。

总结基于EDA的数字频率计电路设计,是一项先进的电子技术,它能够利用EDA软件和模块来快速、准确地设计和模拟电路。

在设计电路时,需要考虑到测量的范围、器件的选取、程序的设计、仿真验证和PCB绘制以及电路调试等问题。

该电路的设计和制作过程较为复杂,需要有一定的电子知识和技能才能完成。

EDA课程设计--数字频率计

EDA课程设计--数字频率计

EDA《数字频率计》课程设计报告专业:电子信息工程班级:08电信姓名:刘冰学号: F指导教师:任苹年月日一课程设计目的1)课程设计题:数字频率计2)任务及要求1、设计一个能测量方波信号的频率的频率计。

2、测量的频率范围是0 Hz。

3、结果用十进制数显示。

4、按要求写好设计报告(设计报告内容包括:引言,方案设计与论证,总体设计,各模块设计,调试与数据分析,总结)。

3)教学提示1、脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。

所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。

2、被测频率信号取自实验箱晶体振荡器输出信号,加到主控门的输入端。

3、再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。

4、时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。

5f=N/T,改变时基信号的周期T,即可得到不同的测频范围。

5、当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新的一次采样做好准备。

6、改变量程时,小数点能自动移位。

4)设计报告要求1、说明设计作品的功能、特点、应用范围;2、方案对比,确定方案。

3、电路工作原理、操作方法;4、编程方法、程序框图及关键程序清单。

5、课程设计总结。

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

它是一种用十进制数字,显示被测信号频率的数字测量仪器。

它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率计。

二、设计方案论证、结果以及分析1 原理图编译成功后其波形图如下:2、信号发生器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sele isport(clk: in std_logic;jian: in std_logic_vector(1 downto 0);oclk: out std_logic);end;architecture s_1 of sele issignal full : std_logic;signal t :integer range 0 to ;beginP1:process(jian,t)begincase jian iswhen "00" => t <= ; --产生时基脉冲1swhen "01" => t <= ; --产生时基脉冲100mswhen "10" => t <= 59999; --产生时基脉冲10ms when "11" => t <= 5999; --产生时基脉冲1ms when others => null;end case;end process P1;P2: process(clk,t)variable s : integer range 0 to ;beginif (clk'event and clk = '1') thenif s < t thens := s +1;else s := 0 ;end if;end if;if s = t then full <= '1';else full <= '0';end if;end process P2;P3: process(full)variable c : std_logic; beginif full'event and full = '1' then c := not c;if c = '1' thenoclk <= '1';else oclk <='0';end if;end if;end process P3;end;其仿真波形为:3、测频library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity cp isport(clkk: in std_logic;en,rst,load: out std_logic); end;architecture cp_1 of cp issignal div2: std_logic;beginprocess(clkk)beginif(clkk'event and clkk='1') thendiv2 <= not div2;end if;end process;process(clkk,div2)beginif (clkk='0' and div2='0') thenrst <='1';else rst <='0';end if;end process;load <= not div2;en <= div2;end;其仿真波形为:4、计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jishu isport(rst,en,clk: in std_logic;Q: out std_logic_vector(3 downto 0); cout: out std_logic);end;architecture cnt of jishu issignal cnt: std_logic_vector(3 downto 0);beginprocess(rst,en,clk)beginif rst='1' then cnt <= "0000";elsif(clk'event and clk='1') and en = '1' thenif cnt = "1001" thencnt <= "0000"; cout <= '1';elsecnt <= cnt + 1;cout <= '0';end if;end if;end process;Q <= cnt;end;在源程序中COUT是计数器的进位输出;Q[3..0]是计数器的状态输出;CLK是时钟输入端;RST是复位控制端;当RST=1时,Q[3..0]=0,EN是使能控制输入端,当EN=1时,计数器计数,当EN=0时,计数器保持状态不变。

基于Protues数字频率计的设计与仿真

基于Protues数字频率计的设计与仿真

基于Proteus的数字频率计设计与仿真摘要:本文主要论述了利用单片机AT89C51进行频率、周期、时间间隔、占空比测量的设计过程。

该频率计采用测量N个信号波形周期的算法,充分利用单片机AT89C51中三个可编程定时/计数器,结合部分中规模数字电路,克服了基于传统测频原理的频率计的测量精度随被测信号频率的下降而降低的缺点,实现了频率、周期、时间差、占空比的高精度测量,结果的显示。

该数字频率计的硬件系统电路由前置整形电路、分频电路、基准信号源、单片机电路和数字显示电路构成。

其中单片机电路又由单片机、数据选择器、键盘、状态指示电路构成。

软件系统由主程序、键盘子程序、显示子程序、测量子程序、脉冲高、低电平宽度测量子程序构成,由汇编语言编写。

通过硬件系统和软件系统的相互配合,成功的实现了频率、周期、时间差、占空比的高精度测量,系统的自校和测量结果的显示。

关键词:数字频率计;周期;单片机Digital Frequency Measure Design and Simulation Based on ProteusAbstract:This article mainly discusses the design process of us ing single-chip AT89C51to measure frequency, cycle, time interval and duty cycle. U s ing the algorithm of measur ing N signal cycle, mak ing full use of the three programmable timer / counter of single-chip AT89C51, combined with some digital circuits, t he frequency meter overcome s the shortcomings of the measurement accuracy reduces with the reduction of the frequency of the measured signal by t he frequency meter based on the principle of traditional measurement of frequency , achieves high-precision measurements of the frequency, cycle, time difference and duty cycle, displays the results. The hardware system circuit s of the digital frequency meter is made up of the pre-shaping circuit, sub-frequency circuit, reference signal source, single-chip circuit, digital display circuit and DC power supply regulator circuit. Of it, the s ingle-chip circuit consists of single-chip, data selector and keyboards. The s oftware system is made up of main program, keyboard s ubroutine, display subroutine, measurement subroutine, pulse high and low level width measurement subroutine, prepared by the assembly language. T hrough the cooperat ion with each other of the h ardware system and software system,t he frequency meter successfully achieves high-precision measurements of frequency,cycle, time difference, and duty cycle, finishes s ystem calibration and the display of measurement results.Keywords:d igital frequency meter;cycle; single-chip1绪论·1.1课题研究的意义随着科学技术的发展,尤其是单片机技术和半导体技术的高速发展,频率计的研究及应用越来越受到重视,这样对频率测量设备的要求也越来越高。

[精品]EDA课程的设计简易频率计的设计

[精品]EDA课程的设计简易频率计的设计

目录摘要 (1)一、简易数字频率计设计原理 (2)1.1基本原理 (2)1.2原理框图 (2)二、各模块程序及仿真 (4)2.1信号处理模块_verilog: (4)2.2计数器模块: (5)2.3信号显示处理 (7)三、仿真结果分析 (10)总结与致谢 (13)参考文献 (14)摘要EDA技术是以硬件语言为主要的描述方式,以EDA软件为主要的设计软件,以大规模课编程逻辑器件为载体的数字电路的设计过程。

其设计的灵活性使得EDA技术得以快速发展和广泛应用。

本设计以QuartusⅡ软件为设计平台,采用Verilog HDL语言现数字频率计的整体设计。

电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域,电子设计自动化是一种实现电子系统或电子产品自动化设计的技术,它与电子技术,微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。

EDA的一个重要特征就是使用硬件描述语言(HDL)来完成的设计文件,在电子设计领域受到了广泛的接受。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,有硬件描述语言Verilog HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作,最终形成集成电子系统或专业集成芯片的一门新技术。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

关键词:EDA;QuartusⅡ;Verilog HDL一、简易数字频率计设计原理1.1基本原理数字频率计的主要功能是测量周期信号的频率。

频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。

频率是单位时间(1秒)内方波信号发生周期变化的次数。

在给定的1秒时间内对方波信号波形计数,并将所计数值显示出来,就能读取被测信号的频率。

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

成绩评定表课程设计任务书目录1.设计要求 (2)2、设计目的 (2)3.总体设计思路及解决方案 (2)3.1相关知识 (2)3.3、设计思路及解决方案 (5)4.分层次方案设计及代码描述 (5)4.1.底层程序源码 (6)4.2顶层程序源码 (13)5.各模块的时序仿真结果 (16)6.设计心得 (19)数字频率计课程设计1.设计要求设计一个四位十进制的数字频率计。

要求具有以下功能:(1)测量围:1HZ~10HZ。

(2) 测量误差≤1/(3)响应时间≤15s。

(4)显示时间不小于1s。

(5)具有记忆显示的功能。

即在测量过程中不刷新数据。

等数据过程结束后才显示测量结果。

给出待测信号的频率值。

并保存到下一次测量结束。

(6)包括时基产生与测评时序控制电路模块。

以及待测信号脉冲计数电路模块和锁存与译码显示控制电路。

2、设计目的通过综合性课程设计题目的完成过程,运用所学EDA知识,解决生活中遇到的实际问题,达到活学活用,所学为所用的目的,进一步理解EDA的学习目的,提高实际应用水平。

本次设计的数字频率计具有精度高、使用方便、测量迅速、便于实现测量过程自动化等优点,是频率测量的重要手段之一。

数字频率计主要包括时基产生与测评时序控制电路模块、待测信号脉冲计数电路、译码显示与锁存控制电路模块。

3.总体设计思路及解决方案3.1相关知识Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。

此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。

Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。

Quartus 平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

3.2 设计思路及原理图数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器.它的基本功能是测量方波信号及其他各种单位时间变化的物理量。

本数字频率计采用自顶向下的设计思想,通过闸门提供的1s闸门时间对被测信号进行计数及测出的被测信号的频率,测出的频率再通过译码器译码后输出给显示器显示。

根据系统设计的要求,数字频率计的电路原理框图如下:图3.1 数字频率计的电路原理框图3.3、设计思路及解决方案设计方案自顶向下设计,底层模块分时基产生与测评时序控制电路模块、待测信号脉冲计数电路模块、译码显示与锁存控制电路模块。

(1)时基产生与测评时序控制电路模块:设计频率记得关键是设计一个测频率控制信号发生器(即时基产生与测评时序控制电路模块),产生测量频率控制时序。

控制时钟信号clk取为1Hz,二分频后即可产生一个脉宽为1s的时钟control-en ,以此作为计数闸门信号。

当control-en为高电平时,允许计数;当control-en的下降沿时,应产生一个锁存信号,将计数值保存起来;锁存数据后,在下一个control-en上升沿到来之前对计数器清零,为下次计数做准备。

(2)待测信号脉冲计数电路模块待测信号脉冲计数电路模块就是计数器,计数器以待测信号作为时钟,在清零信号clr到来时,异步清零;使能信号en为高电平时允许计数,为低电平时禁止计数。

(3)锁存与译码显示控制电路模块锁存器在control-en下降沿到来时,将计数器的计数值锁存,这样就不会因为周期性的清零信号而不断闪烁了。

译码显示电路将计数器测得的BCD码数字转换为七段晶体管LED显示(0——9),显示出十进制的数字结果。

4.分层次方案设计及代码描述4.1.底层程序源码1、时基产生与测频时序控制电路模块的VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control isport (clk:in std_logic; --定义输入rst,ena: out std_logic); --定义输出end control;architecture behv of control isbeginprocess (clk) --clk为敏感信号variable cqi :std_logic_vector(2 downto 0);beginif clk'event and clk='1' then --时钟上升沿if cqi <1 then cqi:=cqi+1;ena<='1';rst<='0';elsif cqi=1 thencqi :=(others =>'0');ena<='0';rst<='1';end if;end if;end process; --进程结束end behv;2、待测信号脉冲计数电路模块的VHDL源程序(1)10进制计数器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entityt10 isport (rst,fx,ena:in std_logic; --rst,fx,ena为输入端口cout: out std_logic;outy :out std_logic_vector(3 downto 0));endt10;architecture behv oft10 isbeginprocess (rst,ena,fx) --rst,fx,ena为敏感信号variable cqi :std_logic_vector(3 downto 0);beginif rst='1' then cqi :=(others =>'0'); --执行清零elsif fx'event and fx='1' then --fx上升沿if ena ='1' then --如果使能信号为1if cqi < 9 then cqi:=cqi+1;cout<='0';elsif cqi=9 thencqi :=(others =>'0');cout<='1';end if;elsif ena='0' then cqi:=(others =>'0'); --使能信号为0 end if;end if;outy <=cqi;end process; --进程结束end behv;(2)4位10进计数器:library ieee;use ieee.std_logic_1164.all;entityt10_4 isport(fx,rst,ena:in std_logic; --定义输入d:out std_logic_vector(15 downto 0)); --定义输出end entity;architecture one oft10_4 iscomponentt10port (rst,fx,ena:in std_logic;cout: out std_logic;outy :out std_logic_vector(3 downto 0));end component;signal e:std_logic_vector(3 downto 0);begin --元件例化u1:cnt10 port map(fx=>fx,rst=>rst,ena=>ena,cout=>e(0),outy=>d(3 downto 0));u2:cnt10 port map(fx=>e(0),rst=>rst,ena=>ena,cout=>e(1),outy=>d(7 downto 4));u3:cnt10 port map(fx=>e(1),rst=>rst,ena=>ena,cout=>e(2),outy=>d(11 downto 8));u4:cnt10 port map(fx=>e(2),rst=>rst,ena=>ena,cout=>e(3),outy=>d(15 downto 12));end architecture one;(3)锁存器的VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity latch4 isport(d:in std_logic_vector(15 downto 0); --d,ena,clk为锁存器输入ena,clk:in std_logic;q:out std_logic_vector(15 downto 0)); --q为锁存器输出end latch4;architecture one of latch4 isbeginprocess(clk,ena,d) --ck,d,,ena为敏感信号variable cqi:std_logic_vector(15 downto 0);beginif ena='0' then cqi:=cqi;elsif clk'event and clk='1' then cqi:=d;end if;q<=cqi;end process; --进程结束end one;(4)译码显示电路的VHDL源程序library ieee ;use ieee.std_logic_1164.all;entity led_controller isport (d:in std_logic_vector(3 downto 0);a: out std_logic_vector( 6 downto 0));end led_controller;architecture art of led_controller isbeginprocess(d)variable s: std_logic_vector ( 3 downto 0); begins:=d(3)&d(2)&d(1)&d(0);case s iswhen "0000"=>a<="1111110";when "0001"=>a<="0110000";when "0010"=>a<="1101101";when "0011"=>a<="1111001";when "0100"=>a<="0110011";when "0101"=>a<="1011011";when "0110"=>a<="0011111";when "0111"=>a<="1110000";when "1000"=>a<="1111111";when "1001"=>a<="1110011";when "1010"=>a<="0001101";when "1011"=>a<="0011001";when "1100"=>a<="0100011";when "1101"=>a<="1001011";when "1110"=>a<="0001111";when "1111"=>a<="0000000";end case;end process;end ;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity latch4 isport(d:in std_logic_vector(15 downto 0); --d,ena,clk为锁存器输入ena,clk:in std_logic;q:out std_logic_vector(15 downto 0)); --q为锁存器输出end latch4;architecture one of latch4 isbeginprocess(clk,ena,d) --ck,d,,ena为敏感信号variable cqi:std_logic_vector(15 downto 0);beginif ena='0' then cqi:=cqi;elsif clk'event and clk='1' then cqi:=d;end if;q<=cqi;end process; --进程结束end one;4.2顶层程序源码总体例化语句:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entitytf isport(rset,clk:in std_logic;fx:in std_logic;ledout:out std_logic_vector(27 downto 0));end entity;architecture one oftf iscomponent control --时基产生与测评时序控制部分port (clk:in std_logic;rst,ena: out std_logic);end component;componentt10_4 --4位十进制计数器部分port(fx,rst,ena:in std_logic;d:out std_logic_vector(15 downto 0));end component;component latch4 --锁存器部分port(d:in std_logic_vector(15 downto 0);ena,clk:in std_logic;q:out std_logic_vector(15 downto 0));end component;component led_controller --BCD码输入转LED显示部分port(d:in std_logic_vector(3 downto 0);a:out std_logic_vector(6 downto 0));end component;signal x,z:std_logic;signal g,h:std_logic_vector(15 downto 0);signal leds:std_logic_vector(27 downto 0);begin --元件例化u1: control port map(clk=>clk,ena=>x,rst=>z);u2:t10_4 port map(fx=>fx,rst=>z,ena=>x,d=>g);u3: latch4 port map(clk=>clk,ena=>x,d=>g,q=>h);u4: led_controller port map(d(3 downto 0)=>h(3 downto 0),a(6 downto 0)=>leds(6 downto 0));u5: led_controller port map(d(3 downto 0)=>h(7 downto 4),a(6 downto 0)=>leds(13 downto 7));u6: led_controller port map(d(3 downto 0)=>h(11 downto 8),a(6 downto 0)=>leds(20 downto 14));u7: led_controller port map(d(3 downto 0)=>h(15 downto 12),a(6 downto 0)=>leds(27 downto 21));ledout<=leds;end; --结束5.各模块的时序仿真结果图5.1时基产生与测频时序控制电路模块的仿真结果图5.2 10进制计数器的仿真结果图5.3 4位10进计数器的仿真结果图5.4 锁存器的仿真结果图5.5 译码显示电路的仿真结果图5.6 总体例化的仿真结果6.设计心得本课设给出了利用VHDL设计数字频率计的方法。

相关文档
最新文档