一、实验目的

(1)学习并掌握Quartus II的使用方法
(2)学习简单时序电路的设计和硬件测试。
(3)学习使用VHDL 语言方法进行逻辑设计输入
(4)学习设计8位16进制频率计,学习较复杂的数字系统设计方法,并在实验开发系统上熟悉运行输入及仿真步骤原理

二、实验仪器设备

(1) PC机一台。
(2)Quartus Ⅱ开发软件一套
(3)EDA实验开发系统一套(EP1C12Q240C8)

三、实验原理

频率计的工作原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率,也就是周期性信号在单位时间内变化的次数。
频率计原理如图所示

#mermaid-svg-ITt1RP1dilxFj5xt .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-ITt1RP1dilxFj5xt .label text{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .node rect,#mermaid-svg-ITt1RP1dilxFj5xt .node circle,#mermaid-svg-ITt1RP1dilxFj5xt .node ellipse,#mermaid-svg-ITt1RP1dilxFj5xt .node polygon,#mermaid-svg-ITt1RP1dilxFj5xt .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-ITt1RP1dilxFj5xt .node .label{text-align:center;fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .node.clickable{cursor:pointer}#mermaid-svg-ITt1RP1dilxFj5xt .arrowheadPath{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-ITt1RP1dilxFj5xt .flowchart-link{stroke:#333;fill:none}#mermaid-svg-ITt1RP1dilxFj5xt .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-ITt1RP1dilxFj5xt .edgeLabel rect{opacity:0.9}#mermaid-svg-ITt1RP1dilxFj5xt .edgeLabel span{color:#333}#mermaid-svg-ITt1RP1dilxFj5xt .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-ITt1RP1dilxFj5xt .cluster text{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-ITt1RP1dilxFj5xt .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-ITt1RP1dilxFj5xt text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-ITt1RP1dilxFj5xt .actor-line{stroke:grey}#mermaid-svg-ITt1RP1dilxFj5xt .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-ITt1RP1dilxFj5xt .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-ITt1RP1dilxFj5xt #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-ITt1RP1dilxFj5xt .sequenceNumber{fill:#fff}#mermaid-svg-ITt1RP1dilxFj5xt #sequencenumber{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt #crosshead path{fill:#333;stroke:#333}#mermaid-svg-ITt1RP1dilxFj5xt .messageText{fill:#333;stroke:#333}#mermaid-svg-ITt1RP1dilxFj5xt .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-ITt1RP1dilxFj5xt .labelText,#mermaid-svg-ITt1RP1dilxFj5xt .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-ITt1RP1dilxFj5xt .loopText,#mermaid-svg-ITt1RP1dilxFj5xt .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-ITt1RP1dilxFj5xt .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-ITt1RP1dilxFj5xt .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-ITt1RP1dilxFj5xt .noteText,#mermaid-svg-ITt1RP1dilxFj5xt .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-ITt1RP1dilxFj5xt .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-ITt1RP1dilxFj5xt .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-ITt1RP1dilxFj5xt .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-ITt1RP1dilxFj5xt .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .section{stroke:none;opacity:0.2}#mermaid-svg-ITt1RP1dilxFj5xt .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-ITt1RP1dilxFj5xt .section2{fill:#fff400}#mermaid-svg-ITt1RP1dilxFj5xt .section1,#mermaid-svg-ITt1RP1dilxFj5xt .section3{fill:#fff;opacity:0.2}#mermaid-svg-ITt1RP1dilxFj5xt .sectionTitle0{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .sectionTitle1{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .sectionTitle2{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .sectionTitle3{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-ITt1RP1dilxFj5xt .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .grid path{stroke-width:0}#mermaid-svg-ITt1RP1dilxFj5xt .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-ITt1RP1dilxFj5xt .task{stroke-width:2}#mermaid-svg-ITt1RP1dilxFj5xt .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .taskText:not([font-size]){font-size:11px}#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-ITt1RP1dilxFj5xt .task.clickable{cursor:pointer}#mermaid-svg-ITt1RP1dilxFj5xt .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-ITt1RP1dilxFj5xt .taskText0,#mermaid-svg-ITt1RP1dilxFj5xt .taskText1,#mermaid-svg-ITt1RP1dilxFj5xt .taskText2,#mermaid-svg-ITt1RP1dilxFj5xt .taskText3{fill:#fff}#mermaid-svg-ITt1RP1dilxFj5xt .task0,#mermaid-svg-ITt1RP1dilxFj5xt .task1,#mermaid-svg-ITt1RP1dilxFj5xt .task2,#mermaid-svg-ITt1RP1dilxFj5xt .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutside0,#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutside2{fill:#000}#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutside1,#mermaid-svg-ITt1RP1dilxFj5xt .taskTextOutside3{fill:#000}#mermaid-svg-ITt1RP1dilxFj5xt .active0,#mermaid-svg-ITt1RP1dilxFj5xt .active1,#mermaid-svg-ITt1RP1dilxFj5xt .active2,#mermaid-svg-ITt1RP1dilxFj5xt .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-ITt1RP1dilxFj5xt .activeText0,#mermaid-svg-ITt1RP1dilxFj5xt .activeText1,#mermaid-svg-ITt1RP1dilxFj5xt .activeText2,#mermaid-svg-ITt1RP1dilxFj5xt .activeText3{fill:#000 !important}#mermaid-svg-ITt1RP1dilxFj5xt .done0,#mermaid-svg-ITt1RP1dilxFj5xt .done1,#mermaid-svg-ITt1RP1dilxFj5xt .done2,#mermaid-svg-ITt1RP1dilxFj5xt .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-ITt1RP1dilxFj5xt .doneText0,#mermaid-svg-ITt1RP1dilxFj5xt .doneText1,#mermaid-svg-ITt1RP1dilxFj5xt .doneText2,#mermaid-svg-ITt1RP1dilxFj5xt .doneText3{fill:#000 !important}#mermaid-svg-ITt1RP1dilxFj5xt .crit0,#mermaid-svg-ITt1RP1dilxFj5xt .crit1,#mermaid-svg-ITt1RP1dilxFj5xt .crit2,#mermaid-svg-ITt1RP1dilxFj5xt .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-ITt1RP1dilxFj5xt .activeCrit0,#mermaid-svg-ITt1RP1dilxFj5xt .activeCrit1,#mermaid-svg-ITt1RP1dilxFj5xt .activeCrit2,#mermaid-svg-ITt1RP1dilxFj5xt .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-ITt1RP1dilxFj5xt .doneCrit0,#mermaid-svg-ITt1RP1dilxFj5xt .doneCrit1,#mermaid-svg-ITt1RP1dilxFj5xt .doneCrit2,#mermaid-svg-ITt1RP1dilxFj5xt .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-ITt1RP1dilxFj5xt .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-ITt1RP1dilxFj5xt .milestoneText{font-style:italic}#mermaid-svg-ITt1RP1dilxFj5xt .doneCritText0,#mermaid-svg-ITt1RP1dilxFj5xt .doneCritText1,#mermaid-svg-ITt1RP1dilxFj5xt .doneCritText2,#mermaid-svg-ITt1RP1dilxFj5xt .doneCritText3{fill:#000 !important}#mermaid-svg-ITt1RP1dilxFj5xt .activeCritText0,#mermaid-svg-ITt1RP1dilxFj5xt .activeCritText1,#mermaid-svg-ITt1RP1dilxFj5xt .activeCritText2,#mermaid-svg-ITt1RP1dilxFj5xt .activeCritText3{fill:#000 !important}#mermaid-svg-ITt1RP1dilxFj5xt .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-ITt1RP1dilxFj5xt g.classGroup text .title{font-weight:bolder}#mermaid-svg-ITt1RP1dilxFj5xt g.clickable{cursor:pointer}#mermaid-svg-ITt1RP1dilxFj5xt g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-ITt1RP1dilxFj5xt g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-ITt1RP1dilxFj5xt .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-ITt1RP1dilxFj5xt .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-ITt1RP1dilxFj5xt .dashed-line{stroke-dasharray:3}#mermaid-svg-ITt1RP1dilxFj5xt #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt .commit-id,#mermaid-svg-ITt1RP1dilxFj5xt .commit-msg,#mermaid-svg-ITt1RP1dilxFj5xt .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-ITt1RP1dilxFj5xt g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-ITt1RP1dilxFj5xt g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-ITt1RP1dilxFj5xt g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-ITt1RP1dilxFj5xt .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-ITt1RP1dilxFj5xt .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-ITt1RP1dilxFj5xt .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-ITt1RP1dilxFj5xt .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-ITt1RP1dilxFj5xt .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-ITt1RP1dilxFj5xt .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-ITt1RP1dilxFj5xt .edgeLabel text{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ITt1RP1dilxFj5xt .node circle.state-start{fill:black;stroke:black}#mermaid-svg-ITt1RP1dilxFj5xt .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-ITt1RP1dilxFj5xt #statediagram-barbEnd{fill:#9370db}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-state .divider{stroke:#9370db}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-ITt1RP1dilxFj5xt .note-edge{stroke-dasharray:5}#mermaid-svg-ITt1RP1dilxFj5xt .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-ITt1RP1dilxFj5xt .error-icon{fill:#522}#mermaid-svg-ITt1RP1dilxFj5xt .error-text{fill:#522;stroke:#522}#mermaid-svg-ITt1RP1dilxFj5xt .edge-thickness-normal{stroke-width:2px}#mermaid-svg-ITt1RP1dilxFj5xt .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-ITt1RP1dilxFj5xt .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-ITt1RP1dilxFj5xt .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-ITt1RP1dilxFj5xt .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-ITt1RP1dilxFj5xt .marker{fill:#333}#mermaid-svg-ITt1RP1dilxFj5xt .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-ITt1RP1dilxFj5xt {color: rgba(0, 0, 0, 0.75);font: ;}

被测信号
闸门
计数器
数据处理与显示
基准时钟
门控信号

输入待测信号经过脉冲形成电路后形成计数的窄脉冲,时基信号发生器产生计数闸门信号,待测信号通过闸门进入计数器计数,即可得到其频率。若闸门开启时间为T,待测信号频率为fxf_xfx​,在闸门时间T内计数器计数值为N,则待测信号频率为fxf_xfx​=N/T。闸门时间通常取为1s。
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s的输入信号脉冲计数允许的信号;1s计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期做好准备。测频控制信号可以由一个独立的发生器来产生根据测频原理,测频控制时序如图所示。设计要求是:FTCTRL 的计数使能信号CNT_EN能产生一个1s 脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B的 ENABL使能端进行同步控制。当CNT_EN高电平时允许计数,低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要个锁存信号LOAD的上跳沿将计数收器在前1s的计数值锁存进锁存器REG32B 中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1s的计数操作做好准备。

四、实验内容

分别仿真测试模块例1、例2和例3,再结合例4完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。建议选实验电路模式5;8个数码管以16进制形式显示测频输出;待测频率输入FIN 由 clock0输入,频率可4Hz、256Hz、3Hz、…、50MHz等;1Hz测频控制信号CLK1Hz可由 clock2输入(用跳线选1HZ)。注意,这时8个数码管的测控显示值是16进制的。

五、实验步骤

(1)启动Quartus II建立一个空白工程,然后命名为 FREQTEST.qpf。
(2)新建VHDL 源程序文件FREQTEST.vhd,输入程序代码并保存,进行综合编译,若编译过程中发现错误,则找出并更正错误,直至编译成功为止。
(3)选择目标器件并对相应的引脚进行锁定,在这里所选择的器件为Altera公司 Cyclone系列的EPIC12Q240C8芯片。将未使用的管脚设置为三态输入。则找出并更正错误,
(4)对该工程文件进行全程编译处理,若在编译过程中发现错误直至编译成功为止。接到PC机的打印机并口
(5)拿出 Altera Byte Blaster II下载电缆,并将此电缆的两端分别接到PC机的打印机并口和实验箱的JTAG下载口上,打开电源,执行下载命令,把程序下载到 FPGA器件中,观察数码管1~8的16进制显示状态。
实例代码:

LIBRARY IEEE;                    --频率计顶层文件
USE IEEE.STD_LOGIC_1164.all;
ENTITY FREQTEST IS
PORT(CLK1HZ:IN STD_LOGIC;FSIN:IN STD_lOGIC;DOUT:OUT STD_LOGIC_VECTOR(31 downto 0));
END;
ARCHITECTURE BEHAV OF FREQTEST isCOMPONENT FTCTRLPORT(CLKK: IN STD_LOGIC;       --1HZCNT_EN: OUT STD_LOGIC;     --计数器时钟使能RST_CNT:OUT STD_LOGIC;     --计数器清零LOAD :   OUT STD_LOGIC);     --输出锁存信号END COMPONENT;COMPONENT COUNTER32BPORT(FIN:     IN STD_LOGIC;       --时钟信号ENABL:    IN STD_LOGIC;       --清零信号CLR : IN STD_LOGIC;       --计数使能信号DOUT:   OUT STD_LOGIC_VECTOR(31 DOWNTO 0));     --计数结果输出END COMPONENT;COMPONENT REG32BPORT(LK:  IN STD_LOGIC;DIN:   IN STD_LOGIC_VECTOR(31 downto 0);DOUT:  OUT STD_LOGIC_VECTOR(31 downto 0));END COMPONENT;SIGNAl TSTEN1: STD_LOGIC;SIGNAl CLR_CNT1:STD_LOGIC;SIGNAl LOAD1:   STD_LOGIC;SIGNAl DTO1:  STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAl CARRY_OUT1:STD_LOGIC_VECTOR(6 DOWNTO 0);
BEGIN
u1: FTCTRL PORT MAP (CLKK=>CLK1HZ,CNT_EN=>TSTEN1,RST_CNT=>CLR_CNT1,LOAD=>LOAD1);            --例化
U2: REG32B PORT MAP(LK=>LOAD1,DIN=>DTO1,DOUT=>DOUT);        --例化
U3:COUNTER32B PORT MAP(FIN => FSIN,CLR => CLR_CNT1,ENABL=> TSTEN1,DOUT=>DTO1);      --例化
END BEHAV;
LIBRARY IEEE;                                --测频控制电路
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FTCTRL ISPORT (CLKK : IN STD_LOGIC;              --1HZCNT_EN :OUT STD_LOGIC;             --计数器使能控制RST_CNT:OUT STD_LOGIC;             --计数器清零端Load:   OUT STD_LOGIC );                --输出锁存信号
END FTCTRL;
ARCHITECTURE BEHAV OF FTCTRL ISSIGNAL Div2CLK : STD_LOGIC;
BEGINPROCESS(CLKK)BEGINIF CLKK'EVENT AND CLKK = '1' THEN                --1HZ时钟2分频Div2CLK <= NOT Div2CLK;END IF;END PROCESS;PROCESS(CLKK, Div2CLK)BEGINIF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1';    --产生清零计数ELSE RST_CNT <= '0';END IF;END PROCESS;Load <= NOT Div2CLK;CNT_EN <= Div2CLK;
END BEHAV;
LIBRARY IEEE;                                --32位锁存器
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG32B ISPORT(LK: 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 IS
BEGINPROCESS(LK,DIN)BEGINIF LK'EVENT AND LK='1' THEN DOUT<=DIN;END IF;END PROCESS;
END BEHAV;
LIBRARY IEEE;                                --32位计数器
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNTER32B ISPORT(FIN:IN STD_LOGIC;  --时钟信号CLR:IN STD_LOGIC;  --清零信号ENABL:IN STD_LOGIC;  --计数使能信号DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );
END COUNTER32B;
ARCHITECTURE BEHAV OF COUNTER32B  ISSIGNAL CQI :  STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINPROCESS(FIN,CLR,ENABL)BEGINIF CLR='1' THEN CQI<=(OTHERS=>'0');        --清零ELSIF FIN'EVENT AND FIN='1' THENIF ENABL='1' THEN CQI<=CQI+1;END IF;END IF;END PROCESS;DOUT<=CQI;END BEHAV;

QUARTUS II代码展示图

频率计仿真图如图所示

六、实验要求

(1)选择实验电路模式5
(2)设计仿真文件,进行软件验证
(3)用VHDL程序设计方法实现8位16进制频率计设计
(4)通过下载线下载到实验系统上进行硬件测试验证

七、实验扩展

实验内容2:将频率计改为8位10进制频率计,注意此设计电路的计数器必须是8个4位的10进制计数器,而不是1个。此外注意在测频速度上给予优化。
八位十进制频率计顶层文件:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FREQTEST8_10 IS
PORT(FSIN:IN STD_LOGIC;CLK1HZ:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END ENTITY FREQTEST8_10;
ARCHITECTURE BEHAV OF FREQTEST8_10 IS
COMPONENT CNT10 IS
PORT(FIN,CLR,ENA:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);
END COMPONENT CNT10;
COMPONENT REG32B IS
PORT(LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END COMPONENT REG32B;
COMPONENT FTCTRL IS
PORT(CLKK:IN STD_LOGIC;CNT_EN:OUT STD_LOGIC;RST_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);
END COMPONENT FTCTRL;SIGNAL EN,CL,LD:STD_LOGIC;SIGNAL CNT1,CNT2,CNT3,CNT4,CNT5,CNT6,CNT7,CNT8:STD_LOGIC;SIGNAL DQ:STD_LOGIC_VECTOR(31 DOWNTO 0);
BEGINU0:FTCTRL PORT MAP(CLKK=>CLK1HZ,CNT_EN=>EN,RST_CNT=>CL,LOAD=>LD);U1:CNT10 PORT MAP(FIN=>FSIN,CLR=>CL,ENA=>EN,CQ=>DQ(3 DOWNTO 0),COUT=>CNT1);U2:CNT10 PORT MAP(CNT1,CL,EN,DQ(7 DOWNTO 4),CNT2);U3:CNT10 PORT MAP(CNT2,CL,EN,DQ(11 DOWNTO 8),CNT3);U4:CNT10 PORT MAP(CNT3,CL,EN,DQ(15 DOWNTO 12),CNT4);U5:CNT10 PORT MAP(CNT4,CL,EN,DQ(19 DOWNTO 16),CNT5);U6:CNT10 PORT MAP(CNT5,CL,EN,DQ(23 DOWNTO 20),CNT6);U7:CNT10 PORT MAP(CNT6,CL,EN,DQ(27 DOWNTO 24),CNT7);U8:CNT10 PORT MAP(CNT7,CL,EN,DQ(31 DOWNTO 28),CNT8);U9:REG32B PORT MAP(LOAD=>LD,DIN=>DQ(31 DOWNTO 0),DOUT=>DOUT);
END ARCHITECTURE BEHAV;

十进制计数器示例程序:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CNT10 IS
PORT(FIN:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA:IN STD_LOGIC;CQ:OUT INTEGER RANGE 0 TO 15;COUT:OUT STD_LOGIC);
END ENTITY CNT10;
ARCHITECTURE BEHAV OF CNT10 ISSIGNAL CQI:INTEGER RANGE 0 TO 15;BEGINPROCESS(FIN,CLR,ENA)ISBEGINIF CLR='1'THEN CQI<=0;ELSIF FIN'EVENT AND FIN='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 COUT<='1';ELSE COUT<='0';END IF;END PROCESS;CQ<=CQI;
END ARCHITECTURE BEHAV;

测频控制电路示例程序:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FTCTRL ISPORT (CLKK : IN STD_LOGIC;CNT_EN : OUT STD_LOGIC;RST_CNT : OUT STD_LOGIC;LOAD: OUT STD_LOGIC );
END FTCTRL;
ARCHITECTURE BEHAV OF FTCTRL ISSIGNAL Div2CLK : STD_LOGIC;
BEGINPROCESS( CLKK )BEGINIF CLKK'EVENT AND CLKK = '1' THENDiv2CLK <= NOT Div2CLK;END IF;END PROCESS;PROCESS(CLKK, Div2CLK)BEGINIF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1';ELSE RST_CNT <= '0';END IF;END PROCESS;LOAD <= NOT Div2CLK;CNT_EN <= Div2CLK;
END BEHAV;

32位锁存器示例代码:

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 ENTITY REG32B;
ARCHITECTURE BEHAV OF REG32B ISBEGINPROCESS(LOAD,DIN) ISBEGINIF LOAD'EVENT AND LOAD='1' THEN DOUT<=DIN;END IF;END PROCESS;
END ARCHITECTURE BEHAV;

8位10进制频率计仿真波形图

管脚定义实况:

后续有时间会加更ing…

工程文件下载:
8位16进制频率计设计源代码
8位10进制频率计设计源代码

8位16进制频率计设计实验--VHDL相关推荐

  1. LeetCode 271. 字符串的编码与解码(4位16进制字符+字符串)

    文章目录 1. 题目 2. 解题 1. 题目 请你设计一个算法,可以将一个 字符串列表 编码成为一个 字符串. 这个编码后的字符串是可以通过网络进行高效传送的,并且可以在接收端被解码回原来的字符串列表 ...

  2. 踩坑~CSS~8 位16 进制颜色

    踩坑-CSS-8 位16 进制颜色 背景 初步结论 网页颜色 16 进制数字表示方法 十进制"函数"表示 支持度与最终结论 背景 我在开发 webview 环境下的 H5 小应用( ...

  3. python十进制单精度浮点(float)转16位16进制(FP16 hex)

    python十进制单精度浮点(float)转16位16进制(FP16 hex) 目的 将神经网络权重存放到FPGA内部需要将可训练参数从float转换到FP16 hex. Code # tt.py i ...

  4. 华中科技大学数电实验--第6关:16进制可逆计数器设计

    写在前面:做了这个实验部分关卡之后,只想说"设计关卡的人水平真次-(此处省略若干文明用语)",所以决定和大家分享一下自己觉得苦难的关卡的思路,(本人也是水平有限,以下仅)供困惑时参 ...

  5. java16进制取前几位_16位16进制数怎么取前8位和后8位

    展开全部 我用C语言来回答这个问题.16位就是一个2字节整636f707962616964757a686964616f31333433633530数. unsigned short hex=0x123 ...

  6. 浮点数与32位16进制互转(有代码)

    今天调试一台设备时,在交互的Modbus协议中,设定数值位用的是浮点数. 带过那么多学生,我竟然脑袋一空??! Modbus用浮点型? 浮点型与U32互转? 于是硬着头皮,重新把这块的内容,复盘了一遍 ...

  7. 生成32位,16进制的UUID

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. java 中 10进制 转为 4位 或者8位 16进制数

    int i =789; //输出为16进制数 Integer.toHexString(), String s=Integer.toHexString(Integer.valueOf(value)); ...

  9. java 8位16进制_Java二、八、十、十六进制介绍

    1.说明 在Java中整数有四种表示方式, 分别为十进制,二进制,八进制,十六进制, 其中十进制就是平常最熟悉,使用最多的进制: 二进制是在计算机中使用最多的进制, 八进制和十六进制都是基于二进制的, ...

最新文章

  1. Asp.NET 获取网站根目录
  2. npm ERR! code EINTEGRITY npm ERR! sha1- 报错解决办法
  3. iOS之AVPlayerViewController的使用oc
  4. LIVE555建立RTSP服务记录
  5. linux shell 上传,下载ftp文件
  6. 2020科目一考试口诀_二级建造师考试科目有哪些2020
  7. JMS学习之ActiveMQ-简单使用
  8. 本地使用TensorBoard
  9. select和其元素options
  10. 2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版)_1-1课程整体介绍...
  11. Bone Collector(hdoj--2602--01背包)
  12. idea创建jsp项目并运行
  13. JDBC 数据连接池
  14. 2021-02-09 MATLAB 中计算 阶乘的函数
  15. ArcGIS 地统计的几种空间插值的应用范围和区别
  16. 深度学习(deep learning)发展史
  17. java excel列宽自动换行_Excel单元格中数据如何自动换行以便适应单元格的大小
  18. Neo4j3-Neo4j基础操作(中)
  19. APP地推的一些经验
  20. 弦振动 matlab,弦振动规律及MATLAB数据处理

热门文章

  1. 【MySQL】MySQL监视器无法启动的可能情况
  2. 【数据库系统】数据库与SQL
  3. 文字框架拼接(洛谷P4327题题解,Java语言描述)
  4. 新手入门之VIM 编辑小技巧
  5. input禁止鼠标滚轮改变数值
  6. 学习Unix,可从事什么样的工作(3)《精通Unix下C语言与项目实践》读书笔记(5)...
  7. [Bootstrap]组件(三)
  8. 莱斯大学找到了多被提升3G/4G网络性能的方法
  9. RAC crs_stat unknown资源状态处理
  10. 一文讲清数据治理、数据管理、数据资产管理区别,数据专家必看