基于vhdl的频率计设计

合集下载

基于VHDL语言的数字频率计的设计方案

基于VHDL语言的数字频率计的设计方案

基于VHDL语言的数字频率计的设计方案
1.引言数字频率计是通讯设备、计算机、电子产品等生产领域不
可缺少的测量仪器。

由于硬件设计的器件增加,使设计更加复杂,可靠性变差,延迟增加,测量误差变大。

通过使用EDA技术对系统功能进行描述,运用VHDL语言,使系统简化,提高整体的性能和可靠性。

采用VHDL编程设计的数字频率计,除了被测信号的整形部分,键输入和数码显示以外,其他都在一片FPGA上实现,从而让整个系统非常精简,让其具有灵活的现场更改性,在不改变硬件电路的基础上,进一步改进提高系统的性能,使数字频率计具有高速,精确度高,可靠性强,抗干扰等优点,为数字系统进一步的集成创造了条件。

2.数字频率计的工作原理
频率测量方法中,常用的有直接测频法、倍频法和等精度测频法。

中直接测频法是依据频率的含义把被测频率信号加到闸门的输入端,只有在闸门开通时间T(以ls计)内,被测(计数)的脉冲送到十进制计数器进行计数。

直接测频法比其他两个方案更加简单方便可行,直接测频法虽然在低频段测量时误差较大,但在低频段我们可以采用直接测周法加测量,这样就可以提高测量精度了。

直接周期测量法是用被测周期信号直接控制计数门控电路,使主门开放时间等于Tx,时标为Ts的脉冲在主门开放时间进入计数器。

设在Tx期间计数值为N,可以根据Tx=N乘以Ts来算得被测信号周期。

因此本文采用低频测周,高频测频的方法来提高精度,减小误差。

3.主要功能模块的实现
该系统设计的控制器是由状态机实现,通过在不同测量档位,选择合理的时基信号频率降低误差,确定各状态转移条件和状态名,采用低频档位测周,。

基于VHDL设计的频率计

基于VHDL设计的频率计

基于VHDL设计的频率计专业:信息工程学号:姓名:一、实验任务及要求1、设计一个可测频率的数字式频率计,测量范围为1Hz~12MHz。

该频率计的逻辑图如图所示。

2、用层次化设计方法设计该电路,编写各个功能模块的程序。

3、仿真各功能模块,通过观察有关波形确认电路设计是否正确。

4、完成电路设计后,用实验系统下载验证设计的正确性。

二、设计说明与提示由上图可知8位十进制数字频率计,由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。

1、测频控制信号发生器设计要求。

频率测量的基本原理是计算每秒种内待测信号的脉冲个数。

这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同不控制。

当TSTEN高电平时允许计数、低电平时停止计数,并保持其所计的数。

在停止计数期间,首先需要一个锁存信号Load的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。

设置锁存器的好处是为了显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作做准备。

测频控制信号发生器的工作时序如下图。

为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时使其值翻转。

其中控制信号时钟CLK的频率1Hz,那么信号TSTEN的脉宽恰好为1秒,可以用作闸门信号。

然后根据测频的时序要求,可得出信号Load和CLR_CNT 的逻辑描述。

由图可见,在计数完成后,即计数使能信号TSTEN在1秒的高电平后,利用其反相值的上跳沿产生一个锁存信号Load,0.5秒后,CLR_CNT产生一个清零信号上跳沿。

高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMING SIMULATION),防止可能产生的毛剌。

基于VHDL语言的数字频率计设计

基于VHDL语言的数字频率计设计

数 码 管显示 ,最 大 读 数分 别 为 9 9 Hz 9 9k 、 . 9k 、9 . Hz 9 9k , 9 Hz 小数 点 随量 程 变 换 自动 移 位 ) ,量 程 自动 转
换 规则 :
硬件 描述语 言对 高层 次的 系统行 为进 行描述 ,在 系统

级 进行验 证 ,最 后再 用逻 辑综合 优 化工具 生成 具体
摘 要 介 绍 了 VHD L语 言在 数 字频 率 计 设 计 中的 具 体 应 甩 ,说 明 了 实现 电子 电路 设 计 的 自动 化 ( A)过 程 和 ED
E A 技 术在 现 代 数 字 系统 设 计 中的 重要 地 位 和 作 用 。 D 关 键 词 VH E A 自下 至上 自上 至 下 综 合 编 程 下载 DL D
M od f M u tme a ds or li di Pr s nt ton e e a i wih t U S r e
[ ] 94 2 7 23 C ,1 9 , 5 ~ 7
5 Pr b k r n,B, gh v n, a ha a a Ra a a S V.Sy hr nia i n nc o z to
的 门级逻辑 电路 的 网表 ,其 对应 的物理 实 现是专 用集 成 电路 ( I 。 AS C)
( )读数 大 于 9 9时 ( 1 9 不考虑 小数 点 ,下同 ) ,频 率计 处 于超 量程 状态 ,此时显 示器 发 出溢 出指示 ( 显
示 F F ,下次 测量 ,量 程 自动增 大一档 。 F )
设 计一个 3位 十进 制 数字 频率 计 ,其 测量范 围 为
1MH , 程分 1 Hz 0 Hz z三档 ( 位 z量 0k 、1 0k 、1MH 3

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

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

目录第一章概述 (1)1.1 设计概述 (1)1.2设计内容 (1)1.3 设计原理 (1)1.4 设计功能 (2)第二章技术与开发工具 (3)2.1 VHDL简介 (3)2.1.1简介 (3)2.1.2 VHDL程序组成部分 (4)2.1.3 VHDL系统优势 (4)2.2 MAX+PLUSⅡ (5)2.2.1 软件简介 (5)2.2.2 软件组成 (6)2.2.3设计流程 (7)第三章系统分析 (8)3.1数字频率计的设计任务及要求 (8)3.2 模块的划分 (8)3.3设计分析 (9)第四章各功能模块基于VHDL的设计 (10)4.1 时基产生与测频时序控制电路模块的VHDL源程序 (10)4.2 待测信号脉冲计数电路模块的VHDL源程序 (11)4.2.1 十进制加法计数器的VHDL源程序 (11)4.2.2待测信号脉冲计数器的VHDL源程序 (12)4.3 锁存与译码显示控制电路模块的VHDL源程序 (13)4.3.1 译码显示电路的VHDL源程序 (13)4.3.2 锁存与译码显示控制模块的VHDL源程序 (14)4.4 顶层电路的VHDL源程序 (16)第五章数字频率计波形仿真 (18)5.1 时基产生与测频时序控制电路模块的仿真 (18)5.2 待测信号脉冲计数电路模块的仿真 (18)5.2.1 十进制加法计数器的仿真 (18)5.2.2待测信号脉冲计数器的仿真 (19)5.3 锁存与译码显示控制电路模块的仿真 (19)5.3.1 译码显示电路的仿真 (19)5.3.2 锁存与译码显示控制模块的仿真 (20)5.4 数字频率计系统的仿真 (20)结论 (22)参考文献 (23)摘要本文介绍了一种自顶向下分层设计多功能数字频率计的设计方法。

该频率计采用VHDL硬件描述语言编程以MAX+PLUSⅡ为开发环境,极大地减少了硬件资源的占用。

数字频率计模块划分的设计具有相对独立性,可以对模块单独进行设计、调试和修改,缩短了设计周期。

基于VHDL的等精度频率计设计—毕业设计论文

基于VHDL的等精度频率计设计—毕业设计论文

摘要基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,本设计采用单片机AT89C51作为主要的控制单元,用来完成电路的信号测试控制、数据运算处理、键盘扫描和控制数码管显示等功能,待测信号经过LM358放大后又经过74HC14形成系统需要的矩形波,然后送入复杂可编程逻辑器件(CPLD),最后由可编程逻辑器件CPLD进行各种时序控制及计数测频功能,并用8位8段LED进行显示。

关键词单片机可编程逻辑器件频率计AbstractBased on the traditional principle of measuring the frequency of the frequency of measurement accuracy will be tested with thefrequency and reduce the decline in the more practical limitations.SCM AT89C51 use this design as the main control unit, the signals used to complete the circuit test control, data processing, keyboard scanning and digital control of the show, and other functions, under test signal LM358 Larger then after a 74 HC14 system needs Rectangular waves, and then into the complex programmable logic devices (CPLD), programmable logic devices by the end CPLD various control and timing count frequency measurement functions, and with eight 8 of the LED display.Keywords: SCMC CPLD Cymometer目录1 引言 (1)1.1课题分析 (1)1.2等精度频率计在国内外发展概况 (1)1.3M AX+P LUS II简介及VHDL语言简介 (3)1.4课题要求 (6)2 等精度频率计的方案选择及原理分析 (7)2.1等精度频率计测频原理 (7)2.2系统原理框图 (9)2.3周期测量 (9)2.4脉冲宽度测量 (10)2.5周期脉冲信号占空比的测量 (10)3 等精度频率计硬件设计 (11)3.1键盘控制模块 (11)3.2显示模块 (12)3.3主控模块 (13)3.4信号输入放大和整形模块 (16)3.5音频输出电路 (17)3.6CPLD功能模块描述 (18)4 等精度频率计软件设计方案 (19)4.1VHDL语言 (19)4.2VHDL软件设计方案 (21)4.3所需VHDL文件及波形仿真结果 (22)4.4单片机的汇编语言编程 (24)5 电路系统调试 (28)6 结论 (29)致谢 (33)附录一:元器件清单 (34)附录二:程序清单 (36)附录三:原理图 (36)1 引言1.1 课题分析在现代电子系统中,数字系统所占的比例越来越大。

基于VHDL的十进制频率计设计

基于VHDL的十进制频率计设计

基于VHDL语言的十进制数字频率计设计霍艳艳( 临沂大学物理系)摘要:文中运用VHDL语言,采用Top To Down的方法,实现6位数字频率计,并利用QuartusII软件集成开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,经实际电路测试,该系统系统性能实现。

关键词:EDA;VHDL;数字频率计;波形仿真;功能仿镇;CPLD1、引言VHDL是超高速集成电路硬件描述语言(Very High Speed Integrated Circuit Hardware Description Language)的缩写,在美国国防部支持下于1985年成功开发的一种快速设计电路的工具,是目前标准化流程最高的硬件描述语言。

IEEE(The Institute of Electrical and Electronics Engineers)于1987年将VHDL采纳为IEEE1067标准。

VHDL经过20多年的发展、应用和完善,以其强大的系统描述能力、规范的程序设计结构、灵活的语言表达风格和多层的仿真测试手段,在电子领域受到了普遍的认同和广泛的接触。

相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。

从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。

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

随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL 语言。

基于VHDL频率计的设计

基于VHDL频率计的设计

频率计一、实验目的1.学习并熟悉使用max+plusⅡ软件。

2.掌握各频率计各逻辑模块的功能与设计方法。

二、实验原理频率测量基本原理是计算每秒钟内待测信号的脉冲个数。

要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。

当TSTEN为高电平时,允许计数;为低电频时停止计数,并保持其所计的脉冲信号。

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒的计数值锁存进32位锁存器REG32B中,并由周期性的清零信号并不断闪烁。

所存信号之后,必需有一清零信号CLR_CNT 对计数器进行清零,为下一秒的计数做准备。

测试控制信号发生器的工作时序如图。

为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。

三、实验内容和代码—————————————cnt10——————————————LIBRARY 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;CARRY_OUT :OUT STD_LOGIC );END CNT10;ARCHITECTURE behav OF CNT10 ISSIGNAL CQI: INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK, CLR, ENA)BEGINIF 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)BEGINIF CQI = 9 THEN CARRY_OUT <= '1';ELSE CARRY_OUT <= '0'; END IF;END PROCESS;CQ <= CQI;END behav;——————————————REG32GB——————————LIBRARY 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 REG32B;ARCHITECTURE behav OF REG32B ISBEGINPROCESS(Load, DIN)BEGINIF Load'EVENT AND Load='1' THEN DOUT <=DIN;END IF;END PROCESS;END behav; ——————————————TESTCTL——————————LIBRARY 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 TESTCTL;ARCHITECTURE behav OF TESTCTL ISSIGNAL Div2CLK : STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '1' THENDiv2CLK <= NOT Div2CLK;END IF;END PROCESS;PROCESS(CLK, Div2CLK)BEGINIF CLK = '0' AND Div2CLK ='0' THEN CLR_CNT <= '1';ELSE CLR_CNT <= '0'; END IF;END PROCESS;Load <= NOT Div2CLK; TSTEN <= Div2CLK;END behav;——————————FREQTEST——————————LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQTEST ISPORT(CLK : IN STD_LOGIC;FSIN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END FREQTEST;ARCHITECTURE struc OF FREQTEST ISCOMPONENT TESTCTLPORT(CLK : IN STD_LOGIC ; TSTEN : OUT STD_LOGIC ;CLR_CNT : OUT STD_LOGIC ; Load : OUT STD_LOGIC );END COMPONENT;COMPONENT CNT10PORT(CLK : IN STD_LOGIC ; CLR : IN STD_LOGIC ; ENA : IN STD_LOGIC ;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT : OUT STD_LOGIC);END COMPONENT;COMPONENT REG32BPORT( Load : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END COMPONENT ;SIGNAL Load1,TSTEN1,CLR_CNT1: STD_LOGIC;SIGNAL DTO1 : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL CARRY_OUT1: STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINU1 : TESTCTL PORT MAP(CLK => CLK, TSTEN =>TSTEN1,CLR_CNT => CLR_CNT1, Load => Load1 );U2 : REG32B PORT MAP(Load => Load1, DIN => DTO1, DOUT => DOUT );U3 : CNT10 PORT MAP(CLK => FSIN ,CLR => CLR_CNT1, ENA => TSTEN1,CQ => DTO1(3 DOWNTO 0), CARRY_OUT => CARRY_OUT1(0) ); U4 : CNT10 PORT MAP(CLK => CARRY_OUT1(0), CLR => CLR_CNT1,ENA => TSTEN1, CQ => DTO1(7 DOWNTO 4),CARRY_OUT => CARRY_OUT1(1) );U5 : CNT10 PORT MAP(CLK => CARRY_OUT1(1), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(11 DOWNTO 8),CARRY_OUT => CARRY_OUT1(2) );U6 : CNT10 PORT MAP(CLK => CARRY_OUT1(2), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(15 DOWNTO 12),CARRY_OUT => CARRY_OUT1(3) );U7 : CNT10 PORT MAP(CLK => CARRY_OUT1(3), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(19 DOWNTO 16),CARRY_OUT => CARRY_OUT1(4) );U8 : CNT10 PORT MAP(CLK => CARRY_OUT1(4), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(23 DOWNTO 20),CARRY_OUT => CARRY_OUT1(5) );U9 : CNT10 PORT MAP(CLK => CARRY_OUT1(5), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(27 DOWNTO 24),CARRY_OUT => CARRY_OUT1(6) );U10 : CNT10 PORT MAP(CLK => CARRY_OUT1(6), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(31 DOWNTO 28) ); END struc;四、实验原理图:五、实验仿真波形:本次设计我们采用GW48 EDA实验箱,选择芯片EP1K30TC144-1,选择模式0,引七、编程下载在实验箱上选择CLOCK2输入为1Hz,模式选择模式0,引脚映射如上表所示。

基于vhdl数字频率计设计说明书

基于vhdl数字频率计设计说明书

一、设计功能与要求设计数字频率计,满足如下功能:(1)用VHDL语言完成数字频率计的设计及仿真。

(2)频率测量范围:1∼10KHz,分成两个频段,即1∼999Hz,1KHz∼10KHz,用三位数码管显示测量频率,且用LED(发光二极管)来表示所显示单位,我们这里定义亮绿灯表示以Hz为单位,亮红灯表示以KHz为单位。

(3)具有自动校验和测量两种功能,即既能用于标准时钟的校验,同时也可以用于未知信号频率的测量。

(4)具有超量程报警功能,在超出目前所选量程档的测量范围时,会发出音响报警信号。

二、设计思路通过计算已知单位时间内待测信号的脉冲个数来计算被测信号的频率,同时通过动态扫描方式在三个数码管上显示出测得频率值。

如下图1的系统框图所示,计数器对CP信号进行计数,在1秒定时结束后,将计数器结果送锁存器锁存,并通过时钟下降沿将不再变化的测量值送至数码管显示。

在下一个计数时钟信号上升沿到来时,再次重新计数。

图1 系统设计框架图系统各个模块介绍如下:(1)测量/校验选择模块:输入信号:选择信号selin,被测信号measure,标准校验信号test;输出信号:CP;当selin=0时,为测量状态,CP=measure;当selin=1时,为校验状态,CP=test。

校验与测量共用一个电路,只是被测信号CP不同而已。

(2)测频控制信号发生器(二分频):输入信号:1Hz时钟信号clk;输出信号:1秒钟高电平基准信号clk1(周期为2秒);(3)四级十进制计数器模块(带进位C):输入信号:clk1、CP,用于计数开始、清零、锁存。

输出信号:q4~q1设置超出量程档测量范围示警信号alert。

若被测信号频率小于1KHz(K=0),则计数器只进行三级十进制计数,最大显示值为999.Hz,如果被测信号频率超过此范围,示警信号扬声器报警;若被测信号为1KHz~10KHz (K=1),计数器进行四位十进制计数,取高三位显示,最大显示值为9.99KHz,如果被测信号频率超过此范围, 示警信号扬声器报警。

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

课程论文(设计)题目基于quartus的频率计的设计院系电子与信息工程学院
专业电子与通信工程
学生姓名
学号
指导教师
二O一四年元月三日
一、频率计的说明 (3)
二、顶层原理图 (4)
三、底层模块设计 (4)
3.1十进制加法计数器CNT10 (4)
3.2十二进制加法计数器CNT12 (5)
3.3控制模块CODE (6)
3.4锁存器LOCK (7)
四、底层模块的仿真 (7)
4.1LOCK模块的仿真结果 (7)
4.2CNT12的仿真结果 (8)
4.3CNT10模块的仿真结果 (8)
4.4CODE模块的仿真结果 (8)
五、频率计顶层原理图的输入 (9)
六、频率计仿真结果 (9)
总结 (10)
一、频率计的说明
频率就是周期性信号在单位时间(1S )内的变化次数。

频率计的作用就是测量输入信号的频率,我设计的频率计的原理是若在一定1S 的时间间隔内测得这个周期性信号的重复变化次数为N ,则其频率可表示为:f=N 。

如下图1.1所示,通过定义闸门信号为1s 后,通过统计下该时间内有多少次脉冲即可得到相应的频率。

图1.1系统测量频率的原理
系统的框图如下图1.2所示,首先由时基电路产生基准信号,通过控制电路产生出1s 的闸门信号,闸门电路把1s 内截取的检测信号传递给计数器,通过计数器计数就可以得到需要测量的频率。

锁存器的作用就是为了保存当前的频率交给显示电路显示。

计数器
锁存器
显示电路
闸门电路
计数脉冲
控制电路
锁存信号
清零信号闸门信号
时基
电路被测信号
图1.2系统原理框图
二、顶层原理图
如下图2.1所示,系统顶层原理图包括CNT12、CODE 、CNT10、LOCK 、CODE 模块。

其中CNT10和CNT12分别为10和12进制计数器,CODE 则为控制模块输出清零、锁存、和闸门信号,LOCK 则为锁存模块,负责将采集的频率数值锁存起来方便显示,CODE 模块则是将二进制转换成十进制的模块。

系统中的clk1为为我们为测试时候的输入闸门信号,通过CNT12信号后模拟1s 的闸门的信号,系统输出的端口为4个QQ[3..0],这样方便系统仿真,也可以减少系统的复杂程度。

CNT10CLK CLR
CS ]0QQ[3..CO CNT10CLK CLR
CS
]0QQ[3..CO CNT10CLK CLR
CS ]0QQ[3..CO CNT10CLK CLR CS
]
0QQ[3..CO
LOCK
]
0DD[3..]
0QQ[3..LOCK
]
0DD[3..]
0QQ[3..LOCK
]
0DD[3..]0QQ[3..LOCK
]
0DD[3..]
0QQ[3..CODE LOCK
CLR CS ]0DD[T12
CLK
]
0QQ[3..CLK CLK CLK CLK (被测信号))
(8Hz CLK1 f CLKIN
DECODER
]
0AK[3..g a ~]0LED1[6..]0LED2[6..]0LED3[6..]0LED4[6..DECODER
DECODER
DECODER
]
0AK[3..]
0AK[3..]
0AK[3..g a ~g
a ~g a ~
三、底层模块设计
3.1十进制加法计数器CNT10
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity cnt10 is
port(clk:in std_logic;
clr:in std_logic;
cs :in std_logic;
qq :buffer std_logic_vector(3 downto 0);
co :out std_logic);
end cnt10;
architecture one of cnt10 is
begin
process(clk,clr,cs)
begin
if (clr='1') then
qq<="0000";
elsif (clk'event and clk='1') then
if (cs='1') then
if (qq=9) then
qq<="0000";
else
qq<=qq+1;
end if;
end if;
end if;
end process;
process(qq)
begin
if (qq=9) then
co<='0';
else
co<='1';
end if;
end process;
end;
3.2十二进制加法计数器CNT12
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt12 is
port(clk: in std_logic;
qq : buffer std_logic_vector(3 downto 0)); end cnt12;
architecture one of cnt12 is
begin
begin
if (clk'event and clk='1') then
if (qq=11) then
qq<="0000";
else
qq<=qq+1;
end if;
end if;
end process;
end one;
3.3控制模块CODE
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity code is
port(
dd : in std_logic_vector(3 downto 0);
cs : out std_logic;
clr : out std_logic;
lock: out std_logic
);
end code;
architecture one of code is
begin
process(dd)
begin
if (dd=0) then
clr<='1';
else
clr<='0';
end if;
if (dd=11) then
lock<='1';
else
lock<='0';
end if;
if ( (dd > 0 ) and (dd < 9 )) then
cs<='1';
else
cs<='0';
end if;
end one;
3.4锁存器LOCK
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lock is
port(
clk: in std_logic;
dd : in std_logic_vector(3 downto 0);
qq : out std_logic_vector(3 downto 0)
);
end lock;
architecture one of lock is
begin
process(clk,dd)
begin
if (clk'event and clk='1') then
qq<=dd;
end if;
end process;
end one;
四、底层模块的仿真
4.1LOCK模块的仿真结果
4.2CNT12的仿真结果
4.3CNT10模块的仿真结果
4.4CODE模块的仿真结果
五、频率计顶层原理图的输入和硬件电路
六、频率计仿真结果
通过仿真图可以通过aa、bb、cc、dd读出此时的频率为140hz,由于1s的
闸门信号仿真起来会很慢,所以我们使用很小的一个闸门信号以方便仿真,相应的频率显示可能会有些偏差。

总结
通过这次EDA的系统设计,我重拾了专科期间学习的知识,同时也把软件从原来的maxplus2升级到了quartus2。

一开始我不太情愿使用quartus2,因为很多的功能都不太会使用,遇到了很多的问题,后来通过查阅资料和同学讨论等途径硬着头皮解决了些问题,最终也是在quartus里实现了频率计的系统,在这里要真心地向我们的指导老师刘老师感谢,在他的课堂上我学到了很多,对我以后的硬件和数字处理有太大的帮助,真心的感谢您。

相关文档
最新文档