首页 EDA技术设计性实验-数字钟的设计1

EDA技术设计性实验-数字钟的设计1

举报
开通vip

EDA技术设计性实验-数字钟的设计1实验三 EDA技术设计性实验-数字钟的设计 一、实验目的 为了使学生有效加深对数字系统的分析和设计方法,熟练用EDA工具完成对数字系统的设计及仿真过程;安排本“设计性实验”。本实验由学生自行拟定实验电路、实验步骤并进行独立实验主,学会系统设计、调试、仿真及故障诊断、排除方法。 二、实验题目 数字钟的设计 1.任务要求: (1) 设计一个数字钟。 (2) 具有时,分,秒计数显示功能,以24小时循环计时。 (3) 具有清零,调节小时、分钟功能。 (4) 具有整点报时功能,整LED灯花样显示。 2.设计说明提示 (1) ...

EDA技术设计性实验-数字钟的设计1
实验三 EDA技术 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 性实验-数字钟的设计 一、实验目的 为了使学生有效加深对数字系统的 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 和设计方法,熟练用EDA工具完成对数字系统的设计及仿真过程;安排本“设计性实验”。本实验由学生自行拟定实验电路、实验步骤并进行独立实验主,学会系统设计、调试、仿真及故障诊断、排除方法。 二、实验题目 数字钟的设计 1.任务要求: (1) 设计一个数字钟。 (2) 具有时,分,秒计数显示功能,以24小时循环计时。 (3) 具有清零,调节小时、分钟功能。 (4) 具有整点报时功能,整LED灯花样显示。 2.设计说明提示 (1) 数字钟的原理框图如图S4-1所示。 系统时钟 图S4-1 (2) 系统时钟可由实验箱上的时钟源经分频得到。功能键可由实验箱上的按键开关实现。 三、实验设备及器材: 1.GW48EDA/SOPC+PK2实验系统。 四、实验步骤 1、秒计数器模块的VHDL语言: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY second IS PORT( clk,reset,setmin:STD_LOGIC; enmin:OUT STD_LOGIC;  daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ENTITY second; ARCHITECTURE fun OF second IS  SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);  SIGNAL enmin_1,enmin_2:STD_LOGIC; --enmin_1为59秒时的进位信号  BEGIN --enmin_2由clk调制后的手动调分脉冲信号串  daout<=count;  enmin_2<=(setmin and clk); --setmin为手动调分控制信号,高电平有效  enmin<=(enmin_1 or enmin_2); --enmin为向分进位信号  PROCESS(clk,reset,setmin)  BEGIN  IF(reset='0')THEN count<="0000000"; --若reset为0,则异步清零  ELSIF(clk 'event and clk='1')then --否则,若clk上升沿到  IF(count(3 downto 0)="1001")then --若个位计时恰好到"1001"即9  IF(count<16#60#)then --又若count小于16#60#,即60H IF(count="1011001")then --又若已到59D  enmin_1<='1';count<="0000000";--则置进位为1及count复0  ELSE --未到59D  count<=count+7; --则加7,而+7=+1+6,即作"加6校正"  END IF; ELSE --若count不小于16#60#(即count等于或大于16#60#)  count<="0000000"; --count复0  END IF; --END IF(count<16#60#)  ELSIF(count<16#60#)then --若个位计数未到"1001"则转此句再判  count<=count+1; --若count<16#60#则count加1  enmin_1<='0'after 100 ns; --没有发生进位  ELSE --否则,若count不小于16#60#  count<="0000000"; --则count复0  END IF; --END IF(count(3 DOWNTO 0)="1001")  END IF; --END IF(reset='0')  END PROCESS;  END fun; 2、分计数器模块的VHDL语言: LIBRARY IEEE;  USE IEEE.STD_LOGIC_1164.ALL;  USE IEEE.STD_LOGIC_UNSIGNED.ALL;  ENTITY minute IS  PORT(clk,clk1,reset,sethour:IN STD_LOGIC;  enhour:OUT STD_LOGIC;  daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));  END ENTITY minute;  ARCHITECTURE fun OF minute IS  SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0);  SIGNAL enhour_1, enhour_2: STD_LOGIC; --enmin_1为59分时的进位信号  BEGIN --enmin_2由clk调制后的手动调时脉冲信号串 daout<=count;  enhour_2<= (sethour and clk1); --sethour为手动调时控制信号,高电平有效  enhour<= (enhour_1 or enhour_2);  PROCESS(clk,reset,sethour)  BEGIN  IF(reset='0') THEN --若reset为0,则异步清零  count<="0000000";  ELSIF(clk'event and clk='1')THEN --否则,若clk上升沿到  IF(count (3 DOWNTO 0) ="1001")THEN--若个位计时恰好到"1001"即9  IF(count <16#60#) THEN --又若count小于16#60#,即60  IF(count="1011001") THEN--又若已到59D  enhour_1<='1'; --则置进位为1  count<="0000000"; --count复0  ELSE  count<=count+7; --若count未到59D,则加7,即作"加6校正"  END IF; --使前面的16#60#的个位转变为8421BCD的容量  ELSE  count<="0000000";--count复0(有此句,则对无效状态电路可自启动)  END IF; --END IF(count<16#60#)  ELSIF (count <16#60#) THEN  count<=count+1; --若count<16#60#则count加1  enhour_1<='0' after 100 ns; --没有发生进位  ELSE  count<="0000000"; --否则,若count不小于16#60# count复0  END IF; --END IF(count(3 DOWNTO 0)="1001")  END IF; --END IF(reset='0') END process;  END fun; 3、时计数器模块的VHDL语言: LIBRARY IEEE;  use IEEE.STD_LOGIC_1164.ALL;  USE IEEE.STD_LOGIC_UNSIGNED.ALL;  ENTITY hour IS  PORT(clk,reset:IN STD_LOGIC;  daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));  END ENTITY hour;  ARCHITECTURE fun OF hour IS  SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);  BEGIN  daout<=count;  PROCESS(clk,reset)  BEGIN  IF(reset='0')THEN count<="000000"; --若reset=0,则异步清零  ELSIF(clk'event and clk='1')THEN --否则,若clk上升沿到 IF(count(3 DOWNTO 0)="1001")THEN --若个位计时恰好到"1001"即9  IF(count<16#23#)THEN --23进制  count<=count+7; --若到23D则  else  count<="000000"; --复0  END IF;  ELSIF (count<16#23#)THEN --若未到23D,则count进1  count<=count+1;  ELSE --否则清零  count<="000000";  END IF; --END IF(count(3 DOWNTO 0)="1001")  END IF; --END IF(reset='0')  END PROCESS;  END fun; 4、报警模块的VHDL语言: LIBRARY IEEE;  USE IEEE.STD_LOGIC_1164.ALL;  USE IEEE.STD_LOGIC_UNSIGNED.ALL;  ENTITY alert IS  PORT(clk5:IN STD_LOGIC;  dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0); miao:IN STD_LOGIC_VECTOR(6 DOWNTO 0);  speak:OUT STD_LOGIC;  lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));  END alert;  ARCHITECTURE fun OF alert IS  SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);  SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0);  BEGIN  speaker:PROCESS(clk5)  BEGIN  --speak<=count1(1);  IF(clk5'event and clk5='1')THEN  IF(dain="0000000")and (miao<="0010000")THEN speak<=count1(1);  IF(count1>="10")THEN  count1<="00";--count1为三进制加法计数器  ELSE  count1<=count1+1;  END IF;  END IF;  END IF;  END PROCESS speaker;  lamper:PROCESS(clk5)  BEGIN IF(rising_edge(clk5))THEN  IF(count<="10")THEN  IF(count="00")THEN  lamp<="001";--循环点亮三只灯  ELSIF(count="01")THEN  lamp<="010";  ELSIF(count="10")THEN  lamp<="100";  END IF;  count<=count+1;  ELSE  count<="00";  END IF;  END IF;  END PROCESS lamper;  END fun; 5、各模块整合: 6、引脚锁定: 7、程序烧录并测试: 硬件验证的方法如下:选择实验模式7;时钟脉冲clk与clock0(1Hz)信号相连,蜂鸣器脉冲clk5与clock5(1024HZ)信号相连;键8和键5均为低电平,时钟正常计时,数码管1和2显示秒,数码管4和5显示分钟,数码管7和8显示小时;键8为低电平时,时钟清零;键5为高电平时,按下键7和键4进行调时调分操作;当时钟为整点的时候,三个发光二极管进行循环移位操作,同时蜂鸣器持续响10秒。 5、实验心得:
本文档为【EDA技术设计性实验-数字钟的设计1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_180829
暂无简介~
格式:doc
大小:38KB
软件:Word
页数:14
分类:互联网
上传时间:2019-05-10
浏览量:59