09VHDL语言课程设计秒表设计.docx

上传人:b****2 文档编号:18545639 上传时间:2023-08-19 格式:DOCX 页数:16 大小:121.12KB
下载 相关 举报
09VHDL语言课程设计秒表设计.docx_第1页
第1页 / 共16页
09VHDL语言课程设计秒表设计.docx_第2页
第2页 / 共16页
09VHDL语言课程设计秒表设计.docx_第3页
第3页 / 共16页
09VHDL语言课程设计秒表设计.docx_第4页
第4页 / 共16页
09VHDL语言课程设计秒表设计.docx_第5页
第5页 / 共16页
09VHDL语言课程设计秒表设计.docx_第6页
第6页 / 共16页
09VHDL语言课程设计秒表设计.docx_第7页
第7页 / 共16页
09VHDL语言课程设计秒表设计.docx_第8页
第8页 / 共16页
09VHDL语言课程设计秒表设计.docx_第9页
第9页 / 共16页
09VHDL语言课程设计秒表设计.docx_第10页
第10页 / 共16页
09VHDL语言课程设计秒表设计.docx_第11页
第11页 / 共16页
09VHDL语言课程设计秒表设计.docx_第12页
第12页 / 共16页
09VHDL语言课程设计秒表设计.docx_第13页
第13页 / 共16页
09VHDL语言课程设计秒表设计.docx_第14页
第14页 / 共16页
09VHDL语言课程设计秒表设计.docx_第15页
第15页 / 共16页
09VHDL语言课程设计秒表设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

09VHDL语言课程设计秒表设计.docx

《09VHDL语言课程设计秒表设计.docx》由会员分享,可在线阅读,更多相关《09VHDL语言课程设计秒表设计.docx(16页珍藏版)》请在冰点文库上搜索。

09VHDL语言课程设计秒表设计.docx

09VHDL语言课程设计秒表设计

VHDL语言课程设计-秒表设计

一、试验目的:

    秒表的逻辑结构比较简单,它主要由、显示译码器、分频器、十进制计数器、报警器和六进制计数器组成。

在整个秒表中最关键是如何获得一个精确的100Hz计时脉冲,除此之外,整个秒表还需要一个启动信号和一个归零信号,以便能够随时启动及停止。

秒表有六个输出显示,分别为百分之一秒,十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之对应,6个个计数器全为BCD码输出,这样便于同时显示译码器的连接。

当计时达60分钟后,蜂鸣器鸣响10声。

二、结构组成:

   1、四个十进制计数器:

用来分别对百分之一秒、十分之秒、秒和分进行计数;

   2、两个6进制计数器:

用来分别对十秒何时分进行计数;

   3、分频率器:

用来产生100Hz的计数脉冲;

   4、显示译码器:

完成对显示译码的控制。

三、硬件要求:

   1、主芯片EP1K100QC208—3;

   2、6位八段扫描共阴极数码显示管;

   3、二个按键开关(归零,启动)。

四、实验内容及步骤:

   1、根据电路特点,将此设计电路分成若干模块,规定每个模块的功能和各个模块之间的接口,然后再将各个模块和起来联试。

   2、了解软件各元件管理层次含义,以及模块元件之间的连接概念,对不同目录下的统一设计如何融合。

   3、适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同。

   4、安适配划分的管脚定位,同相关功能块元件之间的连接概念。

   5、所有模块用VHDL语言描述。

五、实验源代码如下:

1.分频器代码:

将2.5MHz脉冲变成100Hz

libraryieee;

useieee.std_logic_1164.all;

entitydivis

     port(clr,clk:

inbit;q:

bufferbit);

enddiv;

architectureaofdivis

  signalcounter:

integerrange0to12499;

begin

   process(clr,clk)

     begin

      if(clk='1'andclk'event)then      

        ifclr='1'then

           counter<=0;

        elsifcounter=12499then

           counter<=0;

           q<=notq;

        else

           counter<=counter+1;

        endif;

      endif;

    endprocess;

enda;

2.十进制计数器代码:

原理为加法计数器,计数十时由cout进位

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycount10is

   port(clr,start,clk:

inbit;

        cout:

outbit;

        daout:

outstd_logic_vector(3downto0));

endcount10;

architectureaofcount10is

   signaltemp:

std_logic_vector(3downto0);

begin

    process(clk,clr)

    begin

       ifclr='1'then

              temp<="0000";

              cout<='0';

       elsif(clk'eventandclk='1')then

              ifstart='1'then

                iftemp>="1001"then

                   temp<="0000";

                   cout<='1';

                else

                   temp<=temp+1;  

                   cout<='0';

                endif;

              endif;

       endif;

    daout<=temp;

    endprocess;

enda;

3.六进制计数器代码:

原理为加法计数器,计数六时由cout进位。

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityc6is

   port(clr,start,clk:

inbit;

        daout:

outstd_logic_vector(3downto0);

        cout:

outstd_logic);

endc6;

architectureaofc6is

   signaltemp:

std_logic_vector(3downto0);

begin

   process(clk,clr)

   begin

      ifclr='1'then

            temp<="0000";

            cout<='0';

      elsif(clk'eventandclk='1')then

            ifstart='1'then

               iftemp>="0101"then

                  temp<="0000";

                  cout<='1';

               else

                  temp<=temp+1;  

                  cout<='0';

               endif;

             endif;

      endif;

endprocess;

daout<=temp;

enda;

4.报警器代码:

当记时到一小时时,报警器报警,并响十声。

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityalarm1is

port(clk,I:

instd_logic;

     q:

outstd_logic);

endalarm1;

ARCHITECTUREaOFalarm1  IS

  signaln:

integerrange0TO20;

  signalq0:

std_logic;

begin

process(clk)

   begin

    if(clk='1'andclk'event)then

      ifi='0'then

         q0<='0';

         n<=0;

      elsif(n<=19andi='1')then        

            q0<=notq0;

            n<=n+1;    

      else

           q0<='0';

      endif;

    endif;

endprocess;

q<=q0;

ENDa;

5.数据选择和数码管选择模块代码:

其功能是选择个计数端口来的数据,当相应的数据到来时数据选择器选择器数据后输出给数码管,并由数码管显示。

libraryieee;

useieee.std_logic_1164.all;

USEieee.std_logic_UNSIGNED.all;

entityseltimeis

  port(clr,clk:

inbit;

       dain0,dain1,dain2,dain3,dain4,dain5:

instd_logic_vector(3downto0);

       sel:

outstd_logic_vector(2downto0);

       daout:

outstd_logic_vector(3downto0));

endseltime;

architectureaofseltimeis

  signaltemp:

integerrange0to5;

begin

   process(clk)

      begin

        if(clr='1')then

              daout<="0000";

              sel<="000";

              temp<=0;

        elsif(clk='1'andclk'event)then  

             iftemp=5thentemp<=0;

             elsetemp<=temp+1;

             endif;          

               casetempis

                   when0=>sel<="000";daout<=dain0;

                   when1=>sel<="001";daout<=dain1;

                   when2=>sel<="010";daout<=dain2;

                   when3=>sel<="011";daout<=dain3;

                   when4=>sel<="100";daout<=dain4;

                   when5=>sel<="101";daout<=dain5;

               endcase;

        endif;

   endprocess;

enda;

6.数码管驱动模块代码:

数码管驱动电路,驱动数码管发光。

libraryieee;

useieee.std_logic_1164.all;

entitydeledis

    port(num:

instd_logic_vector(3downto0);

        led:

outstd_logic_vector(6downto0));

enddeled;

architectureaofdeledis

begin

   process(num)

     begin

         casenumis

            when"0000"=>led<="0111111";-----------3FH

            when"0001"=>led<="0000110";-----------06H

            when"0010"=>led<="1011011";-----------5BH

            when"0011"=>led<="1001111";-----------4FH

            when"0100"=>led<="1100110";-----------66H

            when"0101"=>led<="1101101";-----------6DH

            when"0110"=>led<="1111101";-----------7DH

            when"0111"=>led<="0100111";-----------27H

            when"1000"=>led<="1111111";-----------7FH

            when"1001"=>led<="1101111";-----------6FH

            whenothers=>led<="0000000";-----------00H

         endcase;

   endprocess;

enda;

六、课程设计总结

     通过秒表设计实验,加深了对VHDL语言设计程序的了解。

学会了层次设计概念,将程序分为若干模块,分别完成各个模块,最后再将各个模块连接起来。

培养同学之间的合作精神。

七、秒表原理图

     缺少

八、参考文献:

     马淑华,高原编著《电子设计自动化》,北京邮电大学出版社.2006

     卢毅,赖杰编著《VHDL与数字电路设计》.2001

Я我☆地盘∮

如果可以如果,我愿一切依在......

 

主页博客相册|个人档案|好友|i贴吧

 

查看文章

 

VHDL_秒表设计

2008年12月12日星期五21:

56

软件:

QuartusII7.2(32-Bit)

硬件:

AlteraDE2Board             CycloneⅡEP2C35F672C6

要求:

DesignandimplementacircuitontheDE2boardthatactsasatime-of-dayclock.Itshoulddisplaythehour(from0to23)onthe7-segmentdisplaysHEX7−6,theminute(from0to60)onHEX5−4andthesecond(from0to60)onHEX3−2.UsetheswitchesSW15−0topresetthehourandminutepartsofthetimedisplayedbytheclock.

由于时间关系,具体解释说明不多写...

---------------------------------------------------------------------------------

--秒表

--最小时间间隔为10毫秒,24小时最大显示

--具有预置按钮Preset,设定初始时间(xx小时xx分钟)

---------------------------------------------------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_UNSIGNED.ALL;

ENTITYtimerIS

PORT(Clk,Clear,Enable,Preset:

INSTD_LOGIC;

   SW:

INSTD_LOGIC_VECTOR(15DOWNTO0);

   LEDR:

OUTSTD_LOGIC_VECTOR(17DOWNTO0);   --redLEDs

   HEX0:

OUTSTD_LOGIC_VECTOR(0TO6);--10毫秒

   HEX1:

OUTSTD_LOGIC_VECTOR(0TO6);--100毫秒

   HEX2:

OUTSTD_LOGIC_VECTOR(0TO6);--1秒

   HEX3:

OUTSTD_LOGIC_VECTOR(0TO6);--10秒

   HEX4:

OUTSTD_LOGIC_VECTOR(0TO6);--1分钟

   HEX5:

OUTSTD_LOGIC_VECTOR(0TO6);--10分钟

   HEX6:

OUTSTD_LOGIC_VECTOR(0TO6);--1小时

   HEX7:

OUTSTD_LOGIC_VECTOR(0TO6)--10小时

  );

ENDtimer;

ARCHITECTUREBehaviorOFtimerIS

COMPONENTbit4_7seg_0toF

PORT(Data:

INSTD_LOGIC_VECTOR(3DOWNTO0);

   Display:

OUTSTD_LOGIC_VECTOR(0TO6));

ENDCOMPONENT;

COMPONENTcount60_set--60进制counter

PORT(Clk,Clear,Enable,Preset:

INSTD_LOGIC;

   SW:

INSTD_LOGIC_VECTOR(7DOWNTO0);

   Q0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

   Q1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

   cout0:

OUTSTD_LOGIC;

   cout1:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTcount24_set--24进制counter

PORT(Clk,Clear,Enable,Preset:

INSTD_LOGIC;

   SW:

INSTD_LOGIC_VECTOR(7DOWNTO0);

   Q0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

   Q1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

   cout0:

OUTSTD_LOGIC;

   cout1:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTcount10_set--10进制counter

PORT(Clk,Clear,Enable,Preset:

INSTD_LOGIC;

   SW:

INSTD_LOGIC_VECTOR(3DOWNTO0);

   Q0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

   cout:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTLPM_500KHz

PORT(aclr:

INSTD_LOGIC;

   clock:

INSTD_LOGIC;

  cnt_en:

INSTD_LOGIC;

    cout:

OUTSTD_LOGIC;

    q:

OUTSTD_LOGIC_VECTOR(18DOWNTO0));

ENDCOMPONENT;

SIGNALClk_temp,Clk_ms100,Clk_sec,Clk_min,Clk_hour,Clk_day:

STD_LOGIC;

SIGNALEnable_100ms,Enable_sec,Enable_min,Enable_h:

STD_LOGIC;

SIGNALhour1,hour0,min1,min0,sec1,sec0,ms100,ms10:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

LEDR<=Clear&Enable&SW;

Enable_100ms<=Clk_tempANDClk_ms100;

Enable_sec<=Enable_100msANDClk_sec;

Enable_min<=Enable_secANDClk_min;

Enable_h<=Enable_minANDClk_hour;

M_p:

LPM_500KHzPORTMAP(clock=>Clk,aclr=>Clear,cnt_en=>Enable,cout=>Clk_temp);--50M分频

M_10ms:

count10_setPORTMAP(Clk=>Clk,Clear=>Clear,Enable=>Clk_temp,Preset=>Preset,

      SW=>"0000",Q0=>ms10,cout=>Clk_ms100);

M_100ms:

count10_setPORTMAP(Clk=>Clk,Clear=>Clear,Enable=>Enable_100ms,Preset=>Preset,

      SW=>"0000",Q0=>ms100,cout=>Clk_sec);

      

M_s:

count60_setPORTMAP(Clk=>Clk,Clear=>Clear,Enable=>Enable_sec,Preset=>Preset,

      SW=>"00000000",Q0=>sec0,Q1=>sec1,cout1=>Clk_min);

M_min:

count60_setPORTMAP(Clk=>Clk,Clear=>Clear,Enable=>Enable_min,Preset=>Preset,

      SW=>SW(7DOWNTO0),Q0=>min0,Q1=>min1,cout1=>Clk_hour);

M_h:

count24_setPORTMAP(Clk=>Clk,Clear=>Clear,Enable=>Enable_h,Preset=>Preset,

      SW=>SW(15DOWNTO8),Q0=>hour0,Q1=>hour1,cout1=>Clk_day);

M_H0:

bit4_7seg_0toFPORTMAP(Data=>

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2