EDA技术及应用实验报告四

时间:2024.3.31

校徽基本组合规范2

EDA技术及应用

实 验 报 告

实验四 数字频率计的设计

    

    

2015.4.28

实验四 数字频率计的设计

一、实验目的

1.掌握VHDL语言的基本结构。

2.掌握VHDL层次化的设计方法。

3.掌握VHDL基本逻辑电路的综合设计应用。

二、实验内容

设计并调试好一个8位十进制数字频率计。要求编写上述8位十进制数字频率计逻辑图中的各个模块的VHDL语言程序,并完成8位十进制数字频率计的顶层设计,然后利用开发工具软件对其进行编译和仿真,最后通过实验开发系统对其进行硬件验证。

三、实验条件

1.计算机一台;

2.Max+PlusII和Quartus II开发工具软件;

3.EDA实验开发箱一台;

4.编程器件: EP3C55U48417

四、实验步骤

1.根据测频控制信号发生器的基本原理编写TESTCTL模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。

2.编写十进制计数器CNT10模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。

3.编写寄存器REG32B模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。

4.完成8位十进制数字频率计的顶层设计,并对其进行编译和仿真,初步验证设计的正确性。

5.利用开发工具软件,选择所用可编程逻辑器件,并对8位十进制数字频率计进行管脚配置。

6.通过下载电缆将编译后的*.pof文件下载到目标器件之中,并利用实验开发装置对其进行硬件验证。

五、实验原理

1.系统设计思路

图1是8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。以下分别叙述频率计各逻辑模块的功能与设计方法。

2.VHDL源程序

1)十进制计数器的源程序CNT10.VHD

--CNT10.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY CNT10 IS

       PORT(CLK,CLR,ENA:IN STD_LOGIC;

               CQ:OUT INTEGER RANGE 0 TO 15;

               CO:OUT STD_LOGIC);

END ENTITY CNT10;

ARCHITECTURE ART OF CNT10 IS

       SIGNAL CQI:INTEGER RANGE 0 TO 15;

       BEGIN

       PROCESS(CLK,CLR,ENA)IS

              BEGIN

              IF CLR='1' THEN CQI<=0;

              ELSIF CLK'EVENT AND CLK='1' THEN

                     IF ENA='1' THEN

                            IF CQI<9 THEN

                                   CQI<=CQI+1;

                            ELSE

                                   CQI<=0;

                            END IF;

                     END IF;

              END IF;

       END PROCESS;

       PROCESS(CQI)IS

              BEGIN

              IF CQI=9 THEN CO<='1';

              ELSE

                     CO<='0';

              END IF;

       END PROCESS;

       CQ<=CQI;

END ARCHITECTURE ART;

232位锁存器源程序REG32B.VHD

--REG32B.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REG32B IS

PORT(LOAD:IN  STD_LOGIC;

     DIN :IN  STD_LOGIC_VECTOR(31 DOWNTO 0);

     DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));

END REG32B;

ARCHITECTURE ART OF REG32B IS

BEGIN

    PROCESS(LOAD,DIN)IS

    BEGIN

        IF LOAD'EVENT AND LOAD='1' THEN

              DOUT<=DIN;

        END IF;

    END PROCESS;

END ARCHITECTURE ART;

3)信号发生器源程序TESTCL.VHD

--TESTCTL.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TESTCTL IS

    PORT(CLK:IN STD_LOGIC;

         TSTEN:OUT STD_LOGIC;

         CLR_CNT:OUT STD_LOGIC;

         LOAD:OUT STD_LOGIC);

END ENTITY TESTCTL;

ARCHITECTURE ART OF TESTCTL IS

    SIGNAL DIV2CLK : STD_LOGIC;

    BEGIN

    PROCESS(CLK)IS

    BEGIN

        IF CLK'EVENT AND CLK='1' THEN

        DIV2CLK<=NOT DIV2CLK;

        END IF;

    END PROCESS;

    PROCESS (CLK,DIV2CLK) IS

    BEGIN

        IF CLK='0' AND DIV2CLK='0' THEN

           CLR_CNT<='1';

        ELSE CLR_CNT<='0';

        END IF;

    END PROCESS;

    LOAD<=NOT DIV2CLK;

    TSTEN<=DIV2CLK;

END ARCHITECTURE ART;

4)CTRLS.VHD

--CTRLS.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CTRLS IS

    PORT(CLK:IN STD_LOGIC;

         SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));

END ENTITY CTRLS;

ARCHITECTURE ART OF CTRLS IS

    SIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);

    BEGIN

    PROCESS(CLK)IS

        BEGIN

        IF CLK'EVENT AND CLK='1'THEN

            IF CNT="111"THEN

                CNT<="000";

            ELSE

                CNT<=CNT+'1';

            END IF;

        END IF;

    END PROCESS;

    SEL<=CNT;

END ARCHITECTURE ART;

5)DISPLAY.VHD

--DISPLAY.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY DISPLAY IS

    PORT(SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);

         DATAIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);

         COM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

         --LEDW:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);

         SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ENTITY DISPLAY;

ARCHITECTURE ART OF DISPLAY IS

    SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);

    BEGIN

    P1:PROCESS(SEL)IS

        BEGIN

        CASE SEL IS

            WHEN "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;

    --LEDW<=SEL;

    P2:PROCESS(SEL)

        BEGIN

        CASE SEL IS

            WHEN "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 IS

            WHEN "0000"=>SEG<="00111111";   --3FH

            WHEN "0001"=>SEG<="00000110";   --06H

            WHEN "0010"=>SEG<="01011011";   --5BH

            WHEN "0011"=>SEG<="01001111";   --4FH

            WHEN "0100"=>SEG<="01100110";   --66H

            WHEN "0101"=>SEG<="01101101";   --6DH

            WHEN "0110"=>SEG<="01111101";   --7DH

            WHEN "0111"=>SEG<="00000111";   --07H

            WHEN "1000"=>SEG<="01111111";   --7FH

            WHEN "1001"=>SEG<="01101111";   --6FH

            WHEN OTHERS=>SEG<="00000000";   --00H

        END CASE;

    END PROCESS P2;

END ARCHITECTURE ART;          

           

6)CLKGEN.VHD

--CLKGEN.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CLKGEN IS

    PORT(CLK_IN:IN STD_LOGIC;

         RESET:IN STD_LOGIC;

         CLK_OUT:OUT STD_LOGIC);

END ENTITY CLKGEN;

ARCHITECTURE ART OF CLKGEN IS

    CONSTANT DIVIDE_PERIOD:INTEGER:=500000;

    --CONSTANT DIVIDE_PERIOD:INTEGER:=20;

    BEGIN

    PROCESS(CLK_IN,RESET)IS

        VARIABLE CNT:INTEGER RANGE 0 TO 499999;

        --VARIABLE CNT:INTEGER RANGE 0 TO 19;

        BEGIN

        IF(RESET='1')THEN

            CNT:=0;

            CLK_OUT<='0';

        ELSIF RISING_EDGE(CLK_IN)THEN

            IF(CNT<(DIVIDE_PERIOD/2))THEN

                CLK_OUT<='1';

                CNT:=CNT+1;

            ELSIF(CNT<(DIVIDE_PERIOD-1))THEN

                CLK_OUT<='0';

                CNT:=CNT+1;

            ELSE

                CNT:=0;

            END IF;

        END IF;

    END PROCESS DIVIDE_CLK;

END ARCHITECTURE ART;

7) FREQ.VHD

--FREQ.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY FREQ IS

  PORT(FSIN: IN STD_LOGIC;--5ns\10ns\5ns

        CLK: IN STD_LOGIC;--500ns

        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 FREQ;

ARCHITECTURE ART OF FREQ IS

--CNT10

  COMPONENT CNT10 IS

    PORT(CLK, CLR, ENA: IN STD_LOGIC;

         CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

         CO: OUT STD_LOGIC);

  END COMPONENT CNT10;

--REG32B

  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;

--TESTCTL

  COMPONENT TESTCTL IS

    PORT(CLK: IN  STD_LOGIC;

       TSTEN: OUT STD_LOGIC;

     CLR_CNT: OUT STD_LOGIC;

        LOAD: OUT STD_LOGIC);

  END COMPONENT TESTCTL;

--CLKGEN

  COMPONENT CLKGEN IS

   PORT(CLK_IN: IN STD_LOGIC;

         RESET: IN STD_LOGIC;

       CLK_OUT: OUT STD_LOGIC );

 END COMPONENT CLKGEN;  

--CTRLS 

  COMPONENT CTRLS IS

    PORT(CLK: IN STD_LOGIC;

         SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));

  END COMPONENT CTRLS;

--DISPLAY

COMPONENT DISPLAY IS

    PORT(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);

  BEGIN

  U0: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.仿真波形设置

1.CNT10仿真结果如下:

2.FREQ的仿真结果

4.逻辑综合验证

5.硬件逻辑验证

1)引脚锁定图

管脚锁定后,重新再编译一次,再进行硬件下载。(如果安装硬件驱动,要先进行驱动安装,安装好后,在进行硬件下载)

2)硬件验证图

六.实验总结

很好地巩固了我们学过的专业知识,使我对数字系统结构也有了更进一步的了解和认识,同时对数据库软件、EDA技术、VHDL 等系列知识都有了一定的了解。使用EDA技术开发页面的能力也有了很大提高。

更多相关推荐:
电子技术应用实验报告

电子技术应用实验报告一实验项目四人智力竞赛抢答器要求1每个参赛者控制一个按钮用按动按钮发出抢答信号2竞赛主持人另有一个开关用于将电路复位3抢答器具有锁存功能即竞赛开始后先按动按钮者将对应的一个LED灯点亮此后其...

电子技术实验教程实验五

实验五场效应管放大器系别姓名学号实验日期一实验目的1学习场效应管放大电路设计和调试方法2掌握场效应管基本放大电路的设计及调整测试方法二实验仪器345678示波器函数信号发生器直流稳压电源数字万用表多功能电路实验...

电子技术应用实验实验报告—抢答器

电子技术应用实验实验报告八一实验项目名称4人智力竞赛抢答器实验内容设计并实现一个4人智力竞赛用抢答器电路具体要求为1每个参赛者控制一个按钮用按动按钮发出抢答信号2竞赛主持人另有一个按钮用于将电路复位3抢答器具有...

模拟电子技术基础实验教程

模拟电子技术基础实验教程教材内容依照教学规律按照由浅入深循序暂进的学习和能力培养原则分层次安排实验内容后一层次的内容以前一层次为基础逐步加深模拟电子技术基础实验教程肇庆学院光机电一体化综合性实验教学示范中心实验...

电子技术实验报告(二极管应用电路)

实验报告二课程名称电子技术实验项目二极管应用电路专业班级姓名座号09实验地点仿真室实验时间指导老师成绩一实验目的1通过二极管的伏安特性的绘制加强对二极管单向导通特性的理解2掌握直流稳压电源的制作及其特点二实验内...

模拟电子技术课程设计实验报告

xxxxxxx学院模拟电子课程设计综合实验班级姓名学号指导教师设计时间电子信息工程xxxxxx120xx5022720xx年xxxxxxx学院二一四年一实验目的通过集成直流稳压电源的设计安装和调试要求学会1选择...

电子科技大学电子技术应用实验报告(四人抢答器)

电子技术应用试验实验报告八电子科技大学实验报告任课教师实验教师姓名学号时间20xx年12月1011日课程名称电子技术应用试验实验名称4人智力竞赛抢答器一实验项目名称4人智力竞赛抢答器实验内容设计并实现一个4人竞...

应用电子技术—电工技术实验教学大纲

电工技术课程实验教学大纲课程名称电工技术课程总学时72课程代码0720xx1实验学时16实验学分05适用专业应用电子技术专业通信技术专业三年制专科一实验教学的性质和任务1实验教学的性质电工技术实验是应用电子技术...

电子技术实验报告(集成运放应用电路)

实验报告四课程名称电子技术实验项目集成运放应用电路专业班级姓名座号09实验地点仿真室实验时间指导老师成绩一实验目的1通过运放应用电路的Multisim仿真映证运放应用电路估算方法的可行性二实验内容1比例运算电路...

《电路与模拟电子技术》EDA实验报告(实验一)

电路与模拟电子技术EDA实验报告实验一一实验目的1验证叠加原理的正确性2验证戴维南定理二实验内容求下图电路的戴维南等效电路用此电路验证叠加原理的正确性1戴维南等效电路第一步测ab间的开路电压第二步测ab间的短路...

20xx年模拟电子技术实验报告模板[1]

武汉职业技术学院电信学院模拟电子技术实验报告实验科目模拟电子技术实验实验名称实验专业实验者实验时间20xx20xx年第二学期实验指导教师黄老师武汉职业技术学院实验训项目单Trainingitem

电子科技大学电子技术实验报告Multisim4.16

416两级放大电路放大倍数的测量416两级放大电路输入电阻的测量416两级放大电路输出电阻的测量未接负载接负载416两级放大电路幅频特性曲线测量电路图416两级放大电路幅频特性曲线

电子技术应用实验教程实验报告(15篇)