欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    《可编程数字系统》课程设计实验报告-基于VHDL的FPGA数字钟设计.doc

    • 资源ID:5016717       资源大小:4.20MB        全文页数:27页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《可编程数字系统》课程设计实验报告-基于VHDL的FPGA数字钟设计.doc

    可编程数字系统设计课程设计实验报告实验名称: 基于VHDL的数字钟设计 _所属课程: 可编程数字系统设计 可编程数字系统课程设计一、课程设计目的: 熟悉EDA工具;掌握用VHDL语言进行数字系统设计的基本方法和过程。二、设计任务: 设计一数字钟,用数码管显示基本功能要求:(1) 可以分屏显示时、分、秒,可用数码管的小数点“.”代替时、分、秒的分隔符“:”,分屏显示是指由于数码管只有4个,不能同时显示时、分、秒,但可以只显示时、分,或只显示分、秒,通过按键来切换这两种显示方式。(2)可设置时钟的开始时间。设置时,相应的数码管要闪烁,指示当前设置的设置(内容)。(3)具有闹铃功能,可以设定闹铃时间。闹铃时间到,LED闪烁进行指示。三、设计原理:数字钟的逻辑框图如图1所示。它由校时部分、闹钟部分、计时部分、显示部分组成。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒钟计数器满60后向分计数器进位,分钟计数器满60后向小时计数器进位,时钟计数器按照“24归0”规律计数。计数器的输出分别经译码器送显示。当计时出现误差时或者到达另外一个时区时,可以用校时部分校时、校分、校秒。需要是用闹钟时,可以利用闹钟部分进行定时。 四、系统分析:根据数字钟的功能,我们可以将它的系统电路设计划分为四个部分:校时部分、闹钟部分、计时部分和显示部分。其中计时部分又划分为秒钟计时模块、分钟计时模块、时钟计时模块,显示部分又划分为BCD译码模块和扫屏输出模块。校时模块秒钟计时模块分钟计时模块时钟计时模块译码模块扫屏输出闹钟模块LED灯图1数字钟的顶层实体描述如下:-TOP.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY digitalclock IS PORT(-输入时钟CLK:IN STD_LOGIC;-设定闹钟ALARM_SET:IN STD_LOGIC;-双键位校时SET:IN STD_LOGIC;MODE:IN STD_LOGIC;-选择显示方式CHG:IN STD_LOGIC;-八段译码输出out_data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-输出片选seg_out:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-LED输出ED_OUT:OUT STD_LOGIC);END digitalclock;ARCHITECTURE EXAMPLE OF digitalclock IS-元件例化COMPONENT adjusterPORT(-输入时钟CLK:IN STD_LOGIC;-双键位校时SET:IN STD_LOGIC;MODE:IN STD_LOGIC;-计数使能,接VCCEN:IN STD_LOGIC;-秒计数器进位输入S_ENOUT:IN STD_LOGIC;-分计数器进位输入M_ENOUT:IN STD_LOGIC;-输出1HZ时钟CLK1HZ:OUT STD_LOGIC;-输出使能S_CE:OUT STD_LOGIC;M_CE:OUT STD_LOGIC;H_CE:OUT STD_LOGIC);END COMPONENT;COMPONENT CNT60PORT(-输入1HZ时钟CLK1HZ:IN STD_LOGIC;-计数使能EN:IN STD_LOGIC;-进位输出ENOUT:OUT STD_LOGIC;-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT CNT24ORT(-输入1HZ时钟CLK1HZ:IN STD_LOGIC;-计数使能EN:IN STD_LOGIC;-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT displayPORT(-BCD输入in_data:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-八段译码输出out_data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;COMPONENT saopingPORT(-选择显示方式CHG:IN STD_LOGIC;-BCD输入SL:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SH:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ML:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MH:IN STD_LOGIC_VECTOR(7 DOWNTO 0);HL:IN STD_LOGIC_VECTOR(7 DOWNTO 0);HH:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ALARM_L:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ALARM_H:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-输入时钟CLK:IN STD_LOGIC;-输出片选seg:out std_logic_vector(3 downto 0);-BCD输出out_data:out std_logic_vector(7 downto 0);END COMPONENT;COMPONENTalarmPORT(-输入时钟CLK:IN STD_LOGIC;-设定闹钟ALARM_SET:IN STD_LOGIC;-BCD输入 IN_HL:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_HH:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_ML:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_MH:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-LED输出LED_OUT:OUT STD_LOGIC);END COMPONENT;-常数说明CONSTANT VCC:STD_LOGIC:='1'-信号说明SIGNAL VCC_CON:STD_LOGIC;SIGNAL S_ENOUT:STD_LOGIC;SIGNAL M_ENOUT:STD_LOGIC;SIGNAL CLK1HZ:STD_LOGIC;-计数使能SIGNAL S_CE:STD_LOGIC;SIGNAL M_CE:STD_LOGIC;SIGNAL H_CE:STD_LOGIC;-BCD码SIGNAL SL:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ML:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HL:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ALARM_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ALARM_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SL_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL SH_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ML_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL MH_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL HL_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL HH_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ALARM_L_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ALARM_H_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN-元件声明ADJUST_CONTROL:adjusterPORT MAP(-输入时钟CLK=>CLK,-双键位校时SET=>SET,MODE=>MODE,-计数使能,接VCCEN=>VCC_CON,-秒计数器进位输入S_ENOUT=>S_ENOUT,-分计数器进位输入M_ENOUT=>M_ENOUT,-输出信号CLK1HZ=>CLK1HZ,-输出使能S_CE=>S_CE,M_CE=>M_CE,H_CE=>H_CE);VCC_CON<=VCC;S_CONTROL:CNT60PORT MAP(-输入1HZ时钟CLK1HZ=>CLK1HZ,-计数使能,接VCCEN=>S_CE,-进位输出ENOUT=>S_ENOUT,-BCD输出LOW=>SL,HIGH=>SH);M_CONTROL:CNT60PORT MAP(-输入1HZ时钟CLK1HZ=>CLK1HZ,-计数使能EN=>M_CE,-进位输出ENOUT=>M_ENOUT,-BCD输出LOW=>ML,HIGH=>MH);H_CONTROL:CNT24PORT MAP(-输入1HZ时钟CLK1HZ=>CLK1HZ,-计数使能EN=>H_CE,-BCD输出LOW=>HL,HIGH=>HH);ALARM_CLOCK:alarmPORT MAP(-输入时钟CLK=>CLK,-设定闹钟ALARM_SET=>ALARM_SET,-BCD输入 IN_HL=>HL,IN_HH=>HH,IN_ML=>ML,IN_MH=>MH,-BCD输出LOW=>ALARM_LOW,HIGH=>ALARM_HIGH,-LED输出LED_OUT=>LED_OUT);SL_DIS:displayPORT MAP(-BCD输入in_data=>SL,-八段译码输出out_data=>SL_OUT);SH_DIS:displayPORT MAP(-BCD输入in_data=>SH,-八段译码输出out_data=>SH_OUT);ML_DIS:displayPORT MAP(-BCD输入in_data=>ML,-八段译码输出out_data=>ML_OUT);MH_DIS:displayPORT MAP(-BCD输入in_data=>MH,-八段译码输出out_data=>MH_OUT);HL_DIS:displayPORT MAP(-BCD输入in_data=>HL,-八段译码输出out_data=>HL_OUT);HH_DIS:displayPORT MAP(-BCD输入in_data=>HH,-八段译码输出out_data=>HH_OUT);ALARM_L_DIS:displayPORT MAP(-BCD输入in_data=>ALARM_LOW,-八段译码输出out_data=>ALARM_L_OUT);ALARM_H_DIS:displayPORT MAP(-BCD输入in_data=>ALARM_HIGH,-八段译码输出out_data=>ALARM_H_OUT);SAOPINGQI:saopingPORT MAP(-BCD输入SL=>SL_OUT,SH=>SH_OUT,ML=>ML_OUT,MH=>MH_OUT,HL=>HL_OUT,HH=>HH_OUT,ALARM_L=>ALARM_L_OUT,ALARM_H=>ALARM_H_OUT,-选择显示方式CHG=>CHG,-输入时钟CLK=>CLK,-输出片选seg=>seg_out,-BCD输出out_data=>out_data);END EXAMPLE;仿真结果如下:该顶层文件原理图如下:系统实验实验结果如下:五、程序设计:1、校时模块:采用的是双键校时法,MODE和SET,其中MODE选择需要调整的部分:时钟、分钟、秒钟,而SET则作为调整脉冲。校时模块的核心思想是利用一个计数器CON来作为状态机,CON=0时为正常工作状态,CON=1时为调整秒钟状态,CON=2时为调整分钟状态,CON=3时为调整时钟状态。调整的时候,利用SET代替CLK1HZ作为计数器输入脉冲,相当于按一次SET则被调整的计数器中的当前值+1,由此获得一个数字钟的时间设定效果。校时模块同时还具有控制时钟、分钟、秒钟计数器工作的功能,通过两个进位输入端以及三个使能控制端让时钟、分钟、秒钟计数器能够有序工作。比如,当秒钟计数器产生一个进位输入校时模块后,校时模块才通过使能输出端令分钟计数器工作一下,以此类推控制分钟、时钟之间的有序工作。元件视图如下:源程序如下:-adjuster.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY adjuster ISPORT(-输入时钟CLK:IN STD_LOGIC;-双键位校时SET:IN STD_LOGIC;MODE:IN STD_LOGIC;-计数使能,接VCCEN:IN STD_LOGIC;-秒计数器进位输入S_ENOUT:IN STD_LOGIC;-分计数器进位输入M_ENOUT:IN STD_LOGIC;-输出1HZ时钟CLK1HZ:OUT STD_LOGIC;-输出使能S_CE:OUT STD_LOGIC;M_CE:OUT STD_LOGIC;H_CE:OUT STD_LOGIC);END adjuster;ARCHITECTURE EXAMPLE OF adjuster ISSIGNAL SEL :STD_LOGIC;SIGNAL SCE_R:STD_LOGIC;SIGNAL MCE_R:STD_LOGIC;SIGNAL HCE_R:STD_LOGIC;SIGNAL CON:INTEGER RANGE 0 TO 3 :=0;SIGNAL CLKCON1:INTEGER RANGE 0 to 5000;SIGNAL CLKCON2:INTEGER RANGE 0 to 10000;SIGNAL OUTCLK:STD_LOGIC;SIGNAL OUTCLK_TEMP:STD_LOGIC;BEGIN-变频为1HZCLK1_PROC:PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK='0' THEN IF CLKCON1=5000 THENCLKCON1<=0;OUTCLK_TEMP<='0'ELSECLKCON1<=CLKCON1+1;OUTCLK_TEMP<='1'ELSE IF;END IF;END PROCESS;CLK2_PROC:PROCESS(OUTCLK_TEMP)BEGIN IF OUTCLK_TEMP'EVENT AND OUTCLK_TEMP='0' THEN IF CLKCON2=10000 THENCLKCON2<=0;OUTCLK<='0'ELSECLKCON2<=CLKCON2+1;OUTCLK<='1'END IF;END IF;END PROCESS;-模为4的计数器CNT:PROCESS(MODE,SET)BEGINIF MODE'EVENT AND MODE='0' THEN IF CON=3 THENCON<=0;ELSECON<=CON+1;END IF;END IF;END PROCESS;-四个调整状态CON_PRO:PROCESS(CON)BEGIN CASE CON IS WHEN 0=>SEL<='1'SCE_R<='0'MCE_R<='0'HCE_R<='0'WHEN 1=>SEL<='0'SCE_R<='1'MCE_R<='0'HCE_R<='0'WHEN 2=>SEL<='0'SCE_R<='0'MCE_R<='1'HCE_R<='0'WHEN 3=>SEL<='0'SCE_R<='0'MCE_R<='0'HCE_R<='1'END CASE;END PROCESS;SEL_PRO:PROCESS(SEL)BEGINCASE SEL IS WHEN '0'=>S_CE<=SCE_R;M_CE<=MCE_R;H_CE<=HCE_R;CLK1HZ<=SET;WHEN '1'=>S_CE<=EN;M_CE<=S_ENOUT;H_CE<=M_ENOUT;CLK1HZ<=OUTCLK;END CASE;END PROCESS;END EXAMPLE;2、计时模块:(1)60进制计时模块:利用计数器的方法设制一个60进制计数器,并设置个进位输出端和个位、十位的BCD即时输出端,其中BCD即时输出端连接BCD译码模块进行转换数码管程序所需的驱动译码。元件视图如下:源程序如下:-CNT60.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT60 ISPORT(-输入1HZ时钟CLK1HZ:IN STD_LOGIC;-计数使能EN:IN STD_LOGIC;-进位输出ENOUT:OUT STD_LOGIC;-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT60;ARCHITECTURE EXAMPLE OF CNT60 ISSIGNAL LOW_R:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL HIGH_R:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"BEGIN-个位计数LOW_PROC:PROCESS(CLK1HZ,EN)BEGINIF CLK1HZ'EVENT AND CLK1HZ='0' THENIF EN='1' THENIF LOW_R="1001" THENLOW_R<="0000"ELSELOW_R<=LOW_R+"0001"END IF;END IF;END IF;END PROCESS;LOW<=LOW_R;-十位计数HIGH_PROC:PROCESS(CLK1HZ,EN)BEGINIF CLK1HZ'EVENT AND CLK1HZ='0' THENIF EN='1' THENIF LOW_R="1001" THENIF HIGH_R="0101" THENHIGH_R<="0000"ELSEHIGH_R<=HIGH_R+"0001"END IF;END IF;END IF;END IF;END PROCESS;HIGH<=HIGH_R;-计数值为59时,进位输出ENOUT<='1' WHEN LOW_R="1001" AND HIGH_R="0101" ELSE '0'END EXAMPLE;(2)24进制计数模块:利用计数器的方法设制一个24进制计数器,并设置、个位、十位的BCD即时输出端,其中BCD即时输出端连接BCD译码模块进行转换数码管程序所需的驱动译码。元件视图如下:源程序如下:-CNT24.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT24 ISPORT(-输入1HZ时钟CLK1HZ:IN STD_LOGIC;-计数使能EN:IN STD_LOGIC;-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT24;ARCHITECTURE EXAMPLE OF CNT24 ISSIGNAL LOW_R:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL HIGH_R:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL CLR:STD_LOGIC:='0'BEGIN-个位计数LOW_PROC:PROCESS(CLK1HZ,EN,CLR)BEGINIF CLK1HZ'EVENT AND CLK1HZ='0' THENIF EN='1' THENIF LOW_R="1001" OR CLR='1' THENLOW_R<="0000"ELSELOW_R<=LOW_R+"0001"END IF;END IF;END IF;END PROCESS;LOW<=LOW_R;-十位计数HIGH_PROC:PROCESS(CLK1HZ,EN,CLR)BEGINIF CLK1HZ'EVENT AND CLK1HZ='0' THENIF EN='1' THENIF CLR='1' THENHIGH_R<="0000"ELSIF LOW_R="1001" THENHIGH_R<=HIGH_R+"0001"END IF;END IF;END IF;END PROCESS;HIGH<=HIGH_R;-计数值为23时,清零CLR<='1' WHEN LOW_R="0011" AND HIGH_R="0010" ELSE '0'END EXAMPLE;3、闹钟模块:该数字钟具有可设置整点闹钟功能,当达到闹钟设定时间时,LED灯会自动闪烁表示警告闹钟时间已到,闪烁时间为一分钟,一分钟之后自动停止。闹钟的核心思想是,从时钟计时模块以及分钟计时模块的BCD码即时出去与闹钟模块中的计数器所设的值(也就是设定的时间)进行比较。由于该闹钟为整点闹钟,只能进行整点警告,利用ALARM_SET按钮进行设定,每按一次,送给闹钟元件里面的计数器一个脉冲令设定的时间在原有的时间上加一小时。当比较结果完全相同时,LED输出端输出10HZ的脉冲到LED中令LED显示闪烁状态,达到警告目的。元件视图如下:源程序如下:-alarm.vhLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY alarm ISPORT(-输入时钟CLK:IN STD_LOGIC;-设定闹钟ALARM_SET:IN STD_LOGIC;-BCD输入 IN_HL:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_HH:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_ML:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_MH:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-LED输出LED_OUT:OUT STD_LOGIC);END alarm;ARCHITECTURE EXAMPLE OF alarm ISSIGNAL clkcon1:integer range 0 to 5000;SIGNAL clkcon2:integer range 0 to 1000;SIGNAL clk50khz:std_logic;SIGNAL clk10hz:std_logic;SIGNAL LOW_R:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL HIGH_R:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL LED_CON:integer range 0 to 1;SIGNAL CLR:STD_LOGIC:='0'BEGIN-变频为10HZclkcon1_proc:process(CLK)BEGIN IF CLK'EVENT AND CLK='0' THEN IF clkcon1=5000 THENclkcon1<=0;clk50khz<='0'ELSEclkcon1<=clkcon1+1;clk50khz<='1'END IF;END IF;END PROCESS;clkcon2_proc:process(clk50khz)BEGIN IF clk50khz'EVENT AND clk50khz='0' THEN IF clkcon2=1000 THENclkcon2<=0;clk10hz<='1'ELSEclkcon2<=clkcon2+1;clk10hz<='0'END IF;END IF;END PROCESS;-设定闹钟个位LOW_PROC:PROCESS(ALARM_SET,CLR)BEGINIF ALARM_SET'EVENT AND ALARM_SET='0' THENIF LOW_R="1001" OR CLR='1' THENLOW_R<="0000"ELSELOW_R<=LOW_R+"0001"END IF;END IF;END PROCESS;LOW<=LOW_R;-设定闹钟十位HIGH_PROC:PROCESS(ALARM_SET,CLR)BEGINIF ALARM_SET'EVENT AND ALARM_SET='0' THENIF CLR='1' THENHIGH_R<="0000"ELSIF LOW_R="1001" THENHIGH_R<=HIGH_R+"0001"END IF;END IF;END PROCESS;HIGH<=HIGH_R;-计数值为23时,清零CLR<='1' WHEN LOW_R="0011" AND HIGH_R="0010" ELSE '0'-响应判定alarm_proc:PROCESS(IN_HL,IN_HH,IN_ML,IN_MH)BEGINIF LOW_R=IN_HL and HIGH_R=IN_HH THENIF IN_ML="0000" AND IN_MH="0000" THENLED_CON<=0;ELSELED_CON<=1;END IF;END IF;END PROCESS;-LED输出LED_proc:PROCESS(LED_CON)BEGINCASE LED_CON ISWHEN 0=>LED_OUT<=clk10hz;WHEN 1=>LED_OUT<='0'END CASE;END PROCESS;END EXAMPLE;4、显示模块(1)BCD译码模块:利用共阳端数码管的性质以及其在显示“0-9”过程中的驱动程序可以获得该BCD译码模块。元件视图如下:源程序为:-display.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY display ISPORT(-BCD输入in_data:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-八段译码输出out_data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END display;ARCHITECTURE EXAMPLE OF display ISBEGINPROCESS(in_data)BEGINCASE in_data ISWHEN "0000"=>out_data<="11000000"WHEN "0001"=>out_data<="11111001"WHEN "0010"=>out_data<="10100100"WHEN "0011"=>out_data<="10110000"WHEN "0100"=>out_data<="10011001"WHEN "0101"=>out_data<="10010010"WHEN "0110"=>out_data<="10000010"WHEN "0111"=>out_data<="11111000"WHEN "1000"=>out_data<="10000000"WHEN "1001"=>out_data<="10010000"WHEN OTHERS=>out_data<="00000000"END CASE;END PROCESS;END EXAMPLE;(2)扫频输出模块:该FPGA板只有一个数码管驱动端而

    注意事项

    本文(《可编程数字系统》课程设计实验报告-基于VHDL的FPGA数字钟设计.doc)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开