目录

一:实验要求

二:程序源代码

2.1   CLKGEN的VHDL源程序及分析

2.2  REG32B的VHDL源程序及分析

2.3  TESTCTL的VHDL源程序及分析

2.4  FREQ的VHDL源程序及分析

三:硬件实验现象

四:对实验步骤详细分析

4.1   RTL图

4.2 引脚锁定

4.3  TESTCTL波形仿真

4.4   FREQ波形仿真

4.5 测频测试结果


一:实验要求

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

                        图1: 实验电路

设计思路:数字频率计数器其实就是对数字秒表的进一步深入,其功能是测出某个频率的大小

要测出某个频率的大小那就是设定一秒钟周期,周期内测试的频率的脉冲上升沿多少。

频率 =  上升沿脉冲个数 /  T 当T等于1s时候,则  频率=上升沿脉冲个数。

为了能够在数码管上显示依旧需要加CTRLS(动态扫描)和DISPLAY(动态显示),而1S的周期哪来的呢,这是可以设定由内部产生或者外部产生,这里我设置为内部产生,通过一个分配器的操作来达到输出的周期时间为1S。

为了能够测量多次频率,那么就需要对前面一次频率进行一个保存,当前面频率保存的时候,计数器不工作,并且给一个清零信号将前一次测频的结果清除。

二:程序源代码

对于上篇文章一致的代码不再讲述,大家可以进行一个移植操作。

2.1   CLKGEN的VHDL源程序及分析

其中CLKGEN分析在前一篇文章有详细说明,这里注意的是我选择的时钟是内部时钟50M,为了产生1s的时钟周期,我需要对其进行5M分频,但是为了能够波形仿真,所以还使用了一个分频常数小的分频器。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CLKGEN IS
PORT(CLK: IN STD_LOGIC;NEWCLK: OUT STD_LOGIC);
END ENTITY CLKGEN;
ARCHITECTURE ART OF CLKGEN IS
--SIGNAL CNT: INTEGER RANGE 0 TO 10#49999999#;
SIGNAL CNT: INTEGER RANGE 0 TO 10#1#;
BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THEN--IF CNT=10#49999999# THEN CNT<=0;IF CNT=10#1# THEN CNT<=0;ELSE CNT<=CNT+1;END IF;END IF;
END PROCESS;
PROCESS(CNT) ISBEGIN--IF CNT=10#49999999# THEN NEWCLK<='1';IF CNT=10#1# THEN NEWCLK<='1';ELSENEWCLK<='0';END IF;END PROCESS;END ARCHITECTURE ART;

2.2  REG32B的VHDL源程序及分析

锁存器的工作原理就是将前一次测评的结果进行保存,并且传输到动态显示端,由于要将前一次测评结果清零所以锁存器的效果能够防止硬件不稳定的现象。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG32B ISPORT(LOAD:IN STD_LOGIC;    --为1时候代表锁存器工作DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);  --DIN是计数结果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;

2.3  TESTCTL的VHDL源程序及分析

由于是多次测评,所以需要对程序进行一个整体的控制,测评控制模块非常重要,控制计数器何时工作,控制锁存器何时工作,对测评结果何时清零。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TESTCTL IS
--其中clk信号由分配器产生PORT(CLK:     IN STD_LOGIC;TSTEN:   OUT STD_LOGIC; --输出时钟信号,用于控制计数器CLR_CNT: OUT STD_LOGIC;  --清零信号,用于清除计数器数据LOAD:    OUT STD_LOGIC); --用于发送给寄存器用于存储数据,其中电平波形于TSTEN相反
END ENTITY TESTCTL;
ARCHITECTURE ART OF TESTCTL ISSIGNAL DIV2CLK : STD_LOGIC;  --2分频时钟信号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;

2.4  FREQ的VHDL源程序及分析

这是数字频率计的顶层文件,利用元件例化语句,将各模块进行一个连接。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; --六号口为被测频率口,8号口为动态扫描的端口
ENTITY FREQ ISPORT(FSIN:IN STD_LOGIC;CLK:IN STD_LOGIC;CLK2:IN STD_LOGIC;DOUT:BUFFER STD_LOGIC_VECTOR(31 DOWNTO 0);COM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY FREQ;
ARCHITECTURE ART OF FREQ ISCOMPONENT 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 COMPONENT CNT10;COMPONENT 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;COMPONENT TESTCTL ISPORT(CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END COMPONENT TESTCTL;COMPONENT CLKGEN IS
PORT(CLK: IN STD_LOGIC;NEWCLK: OUT STD_LOGIC);
END COMPONENT CLKGEN;COMPONENT CTRLS ISPORT(CLK:IN STD_LOGIC;SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT CTRLS;COMPONENT 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 SD:STD_LOGIC_VECTOR(31 DOWNTO 0);--SIGNAL DOUT:STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL S0,S1,S2,S3,S4,S5,S6,S7,S8,SC,SE,SL:STD_LOGIC;SIGNAL S9:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINU0:CLKGEN PORT MAP(CLK=>CLK,NEWCLK=>S0);U1:TESTCTL PORT MAP(CLK=>S0,TSTEN=>SE,CLR_CNT=>SC,LOAD=>SL);U2:CNT10 PORT MAP(FSIN,SC,SE,SD(3 DOWNTO 0),S1);U3:CNT10 PORT MAP(S1,SC,SE,SD(7 DOWNTO 4),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(SL,SD(31 DOWNTO 0),DOUT);U11:CTRLS PORT MAP(CLK2,S9);U12:DISPLAY PORT MAP(S9,DOUT,COM,SEG);
END ARCHITECTURE ART;

三:硬件实验现象

测频器硬件现象

四:对实验步骤详细分析

4.1   RTL图

从图中可以看到整体的模块连接,和设计的原理图相一致,并且大家仔细观察:其中的线条粗细是不一样的,对于信号线和一般的连接线相比是粗一些,其中的原理应该是信号传输的特性。

4.2 引脚锁定

对于数码管的显示端和驱动和第一篇DTCNT9999设置一致,具体分析在第一篇文章

其中不同的是,我使用了内部时钟PIN_T1。将测频的引脚设置为6号引脚,8号引脚为动态扫描端口,本实验不需要使用按键。

4.3  TESTCTL波形仿真

可以看出,TSTEN和LOAD的波形是相反的,由于计数器在工作的时候锁存器并不工作,而计数器不工作的时候,LOAD为1代表锁存器开始工作,也可以看到CLR清零信号在TSTEN和CLK为0的时候来到一个上朓沿,代表进行清零,其中CLK有部分时间的延迟证明了信号的延迟特性。

4.4   FREQ波形仿真

为了能够让波形能够显示出来,除了将DOUT设为可读之外,还需要将分频常数减小,为了达到测评的效果,将测试频率FSIN设置为俩种不同的频率,通过GOUT得出被测频率的大小,其中COM为数码管的公共端,依次动态点亮,其中DOUT的数值对应SEG中数码管的八段管显示。

4.5 测频测试结果

可以看出测试结果与被测频率之间有一定的误差,其主要原因是硬件存在信号的传输,所以有一定的延迟特性。

最后:如果需要人数较多,我会对项目进行一个开源,如果对你有用,请给一个点赞,多谢!

EDA实验:数字频率计(FREQ)设计(VHDL)相关推荐

  1. [EDA]实验2A:设计M=12的计数器

    [EDA]实验2A:设计M=12的计数器 一.实验内容 用161计数器芯片,设计一个M=12的计数器 上电后,对CLK信号,从0顺序计数到11,然后回绕到0 当计数值为11的CLK周期,溢出信号OV输 ...

  2. VHDL数字频率计的设计

    一.实验目的 二.实验内容 三.实验设计 四.实验步骤 五.实验结果 一.目的 1.学习Quartus Ⅱ/ISE Design Suite软件的基本使用方法. 2.熟悉GW48系列或其他EDA实验开 ...

  3. 计算机组成 vhdl cpu 实验 西安交大,基于FPGA的VHDL计算机组成实验平台的设计与实现...

    摘要: <计算机组成原理>是计算机系的一门核心课程.但是它涉及的知识面非常广,内容包括中央处理器,指令系统,存储系统,总线和输入输出系统等方面,学生在学习该课程时,普遍觉得内容抽象难于理解 ...

  4. VHDL实现数字频率计的设计

    VHDL实现数字频率计的设计 一.设计要求 二.设计原理 三.代码实现 1.CLKOUT.VHD 2.MUX.VHD 3.TELTCL.VHD 4.CNT10.VHD 5.SEG32B.VHD 6.D ...

  5. EDA实验二 数字秒表的设计

    一.实验目的 1.学习Quartus Ⅱ/ISE Design Suite软件的基本使用方法. 2.熟悉GW48系列或其他EDA实验开发系统的基本使用方法. 3.学习VHDL基本逻辑电路的综合设计应用 ...

  6. 正弦信号发生器设计——VHDL

    一.实验目的 (1)学习并掌握Quartus II的使用方法 (2)学习简单时序电路的设计和硬件测试. (3)学习使用VHDL 语言方法进行逻辑设计输入 (4)进一步熟悉QuartusⅡ及其 LPM_ ...

  7. 基于matlab的数字频率计设计 --毕业论文,等精度数字频率计的设计和分析开题报告_毕业论文范文网-论文范文...

    毕业论文范文题目:等精度数字频率计的设计和分析开题报告(一),论文范文关键词:等精度数字频率计的设计和分析开题报告(一) 等精度数字频率计的设计和分析开题报告(一)毕业论文范文介绍开始: 1.本课题的 ...

  8. 闹钟Android实验报告,闹钟设计实验报告.doc

    闹钟设计实验报告 闹钟设计实验报告 院系: 计算机与通信学院 专业: 计算机科学与技术 班级: 01154 班 姓名: 伍晨曦 (13号) 指导老师: 杨 华 实验目的: 学会VHDL语言的并发执行的 ...

  9. 简述基于EDA技术的FPGA设计

    物联网.人工智能.大数据等新兴技术的推动,集成电路技术和计算机技术得到蓬勃发展.电子产品设计系统日趋数字化.复杂化和大规模集成化,各种电子系统的设计软件应运而生.在这些专业化软件中,EDA(Elect ...

  10. 简单的eda实验vga在linux系统中,《EDA实验报告VGA彩条显示.doc

    <EDA实验报告VGA彩条显示 VGA彩条信号显示控制 一.实验目的: 1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用: 2. 理解状态机的工作原理和设计方法: 3. ...

最新文章

  1. 电路非门_【连载】电路和维修基础之门电路、转换器
  2. 爱python网_Python
  3. kafka rebalance 部分分区没有owner
  4. 3亿Docker容器部署的挑战及应对方案
  5. 一般图最大匹配——带花树
  6. iNeuOS工业互联网,增加一批PLC、核工业、数字模块、传感器等设备驱动
  7. HDU 6607 Easy Math Problem(杜教筛 + min_25 + 拉格朗日插值)
  8. 51nod1551-集合交易【hall定理,最大权闭合图,网络流】
  9. c语言逆波兰计算器程序,C语言实现的简单的逆波兰计算器
  10. 小玉家的电费(洛谷-P1422)
  11. 如何架设Linux打印服务器
  12. 15.10. Session/Cookie
  13. JavaScript正则表达式19例(7)
  14. 【渝粤教育】广东开放大学 移动软件测试 形成性考核 (50)
  15. react-native-router-flux 使用详解(三)
  16. IAT-Hook 劫持进程Api调用
  17. 【网络爬虫与信息提取】信息的组织与提取
  18. 无锡高二计算机会考内容,无锡期中考试卷分析,看一看高一高二高三数学都考了哪些...
  19. Intel无线网卡AX210驱动bug
  20. hive编写自定义UDF函数

热门文章

  1. 使用rpm 安装wget
  2. 京瓷m1025维修模式进不去_京瓷1025打印机无法扫描怎么处理?
  3. 在线作图丨数据降维分析④——NMDS分析
  4. 前端实现调取摄像头实现人脸识别
  5. ssd网络详解之detection output layer
  6. python倒计时弹框提示带注释_注意时间用python制作倒计时提醒工具
  7. 思维导图——史上最详细的计算机基础进制转换讲解
  8. ASCII码与16进制转换表
  9. Java类和对象 详解(一)
  10. MariaDB安装报1067错误解决方式