




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四EDA技术设计性实验-数字钟的设计 林美浪 10电信一 120101003161一、实验目的为了使学生有效加深对数字系统的分析和设计方法,熟练用EDA工具完成对数字系统的设计及仿真过程;安排本“设计性实验”。本实验由学生自行拟定实验电路、实验步骤并进行独立实验主,学会系统设计、调试、仿真及故障诊断、排除方法。二、实验题目数字钟的设计1任务要求:(1) 设计一个数字钟。(2) 具有时,分,秒计数显示功能,以24小时循环计时。(3) 具有清零,调节小时、分钟功能。(4) 具有整点报时功能,整LED灯花样显示。2设计说明提示(1) 数字钟的原理框图如图S4-1所示。控制器分频器译码驱动显示器键盘系统时钟图S4-1(2) 系统时钟可由实验箱上的时钟源经分频得到。功能键可由实验箱上的按键开关实现。三、实验设备及器材:1GW48EDA/SOPC+PK2实验系统。四、程序设计源码 1、 秒计数器模块的 VHDL 语言:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT( clk,reset,setmin:STD_LOGIC;enmin:OUT STD_LOGIC;daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL 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)BEGINIF(reset=0)THEN count=0000000; -若 reset 为 0,则异步清零ELSIF(clk event and clk=1)then -否则,若 clk 上升沿到IF(count(3 downto 0)=1001)then -若个位计时恰好到1001即 9IF(count16#60#)then -又若 count 小于 16#60#,即60HIF(count=1011001)then -又若已到 59Denmin_1=1;count=0000000;-则置进位为 1 及count 复 0ELSE -未到 59Dcount=count+7; -则加 7,而+7=+1+6,即作加 6校正END IF;ELSE -若 count 不小于 16#60#(即 count 等于或大于16#60#)count=0000000; -count 复 0END IF; -END IF(count16#60#)ELSIF(count16#60#)then -若个位计数未到1001则转此句再判count=count+1; -若 count16#60#则 count加 1enmin_1=0after 100 ns; -没有发生进位ELSE -否则,若 count 不小于 16#60#count=0000000; -则 count 复 0END 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 ISPORT(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 ISSIGNAL 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)BEGINIF(reset=0) THEN -若 reset 为 0,则异步清零count=0000000;ELSEIF(clkevent and clk=1)THEN -否则,若 clk 上升沿到IF(count (3 DOWNTO 0) =1001)THEN-若个位计时恰好到1001即 9IF(count 16#60#) THEN -又若 count 小于 16#60#,即60IF(count=1011001) THEN-又若已到 59Denhour_1=1; -则置进位为 1count=0000000; -count 复 0ELSEcount=count+7; -若 count 未到 59D,则加 7,即作加 6 校正END IF; -使前面的 16#60#的个位转变为 8421BCD 的容量ELSEcount=0000000;-count 复 0(有此句,则对无效状态电路可自启动)END IF; -END IF(count16#60#)ELSIF (count 16#60#) THENcount=count+1; -若 count16#60#则 count 加 1enhour_1=0 after 100 ns; -没有发生进位ELSEcount=0000000; -否则,若 count 不小于 16#60# count复 0END 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 ISPORT(clk,reset:IN STD_LOGIC;daout:out STD_LOGIC_VECTOR(5 DOWNTO 0);END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINdaout=count;PROCESS(clk,reset)BEGINIF(reset=0)THEN count=000000; -若 reset=0,则异步清零ELSIF(clkevent and clk=1)THEN -否则,若clk 上升沿到IF(count(3 DOWNTO 0)=1001)THEN -若个位计时恰好到1001即 9IF(count16#23#)THEN -23 进制count=count+7; -若到 23D 则elsecount=000000; -复 0END IF;ELSIF (count16#23#)THEN -若未到 23D,则 count进 1count=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 ISPORT(clk:IN STD_LOGIC;dain: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 ISSIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINspeaker:PROCESS(clk)BEGIN -speak=count1(1);IF(clkevent and clk=1)THENIF(dain=0000000)THENspeak=10)THENcount1=00;-count1 为三进制加法计数器ELSEcount1=count1+1;END IF ;END IF ;END IF ;END PROCESS speaker;lamper:PROCESS(clk)BEGINIF(rising_edge(clk)THENIF(count=10)THENIF(count=00)THENlamp=001;-循环点亮三只灯ELSIF(count=01)THENlamp=010;ELSIF(count=10)THENlamp=100;END IF;count=count+1;ELSEcount=00;END IF;END IF;END PROCESS lamper;END fun;五、调试过程及步骤,测试结果1、 各模块仿真及描述(1) 秒计数器模块仿真图:将标准秒信号送入”秒计数器”,秒计数 器采用 60 进制计数器,每累计 60 秒发出一个分脉冲信号,该信 号将作为分计数器的时钟脉冲,daout 代表秒输出。2) 分计数器电路仿真图:也采用 60 进制计数器,每累计 60 分钟, 发出一个时脉冲信号,该信号将被送到时计数器,daout 端口代 表分钟输出3)小时计数器电路仿真图:时计数器采用 12 进制计时器,可实现对 24 小时累计。每累计 12 小时,发出一个脉冲信号。 2、顶层电路仿真及描述实现了数字钟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年海洋工程专业入学考试试卷及答案
- 2025年供应链管理职业资格考试卷及答案
- 2025年广告文案创作技巧考试试卷及答案
- 梦想起航的帆船之旅作文12篇
- 成长的故事话题类周记7篇
- 写人作文最感谢的人650字14篇范文
- 期末考试作文校园一角350字(9篇)
- 春天的气息与描写(8篇)
- 高一(上)语文阶段检测卷二
- 新概念英语中的非谓语动词用法:英语进阶课程语法教案
- 2024届湖北省武汉市东湖高新区六年级数学小升初摸底考试含解析
- 2024年湖南省长沙市中考英语试卷真题(含答案)
- 九宫数独200题(附答案全)
- 人教版2024年小升初语文模拟试卷(含答案解析)
- 基于STM32的无人机自主导航技术研究与毕业设计实现
- 2024年山东高压电工题库电工高级工考试题库(全国版)
- 内镜下硬化剂治疗护理
- 《电力工程电缆设计规范》
- 三公经费违规的主要表现及防范措施
- 高中英语外研版(2019)选择性必修第一册各单元主题语境与单元目标
- 游艇运营方案
评论
0/150
提交评论