版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA VHDL语言闹钟秒分时可调时清零整点报时11至15点不报时顶层文件LIBRARY IEEE;ENTITY CLOCK IS -时钟端口PORT (clkk,re_set,set_hour,set_min:IN STD_LOGIC;seconds,minutes,hours:OUT STD_LOGIC_VECTOR(6 DOWNTO 0;speaker:OUT STD_LOGIC;END;ARCHITECTURE ONE OF CLOCK IScomponent SECOND -调用秒钟模块PORT (clk1,reset,setmin:in STD_LOGIC;enmin:OUT ST
2、D_LOGIC;daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0;end component;component minute -调用分钟模块PORT (clk2,lk,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout,alertmin:OUT STD_LOGIC_VECTOR(6 DOWNTO 0;end component;component HOUR -调用时钟模块PORT (clk3,reset:IN STD_LOGIC;daout,alerthour:out STD_LOGIC_VECTOR(6 DO
3、WNTO 0;end component;component alertPORT(clk4:IN STD_LOGIC;dain,dain1:IN STD_LOGIC_VECTOR(6 DOWNTO 0;speak:OUT STD_LOGIC;end component;signal enmin1:std_logic;signal enhour1:std_logic;signaldaoutmin:std_logic_vector(6 downto 0;signaldaouthour:std_logic_vector(6 downto 0;BEGINU1:SECOND PORT MAP(clk1=
4、>clkk,reset=>re_set,setmin=>set_min,enmin=>enmin1,daout=>seconds;U2:MINUTE PORT MAP(lk=>clkk,clk2=>enmin1,reset=>re_set,sethour=>set_hour,enhour=>enhour1,daout=>minute s,alertmin=>daoutmin;U3:HOUR PORT MAP(clk3=>enhour1,reset=>re_set,daout=>hours,alerthou
5、r=>daouthour;U4:alert PORT MAP(clk4=>clkk,speak=>speaker,dain=>daoutmin,dain1=>daouthour; -模块间链接END;报时模块LIBRARY IEEE; -整点报时模块ENTITY alert ISPORT(clk4:IN STD_LOGIC;dain,dain1:IN STD_LOGIC_VECTOR(6 DOWNTO 0;speak:OUT STD_LOGIC;END alert;ARCHITECTURE one OF alert ISSIGNAL count:STD_LOGIC
6、_VECTOR(1 DOWNTO 0;BEGINPROCESS(clk4BEGINIF(dain1<"10001" OR dain1>"10101"THEN -时钟不在11和15之间IF(clk4'event and clk4='1'THENIF(dain="1011001"THEN -分钟为59speak<=count(1;IF(count>="10"THENcount<="01"ELSEcount<=count+1; -count在
7、01和10之间转变END IF ;ELSE speak<='0'END IF ;END IF ;ELSE speak<='0'END IF;END PROCESS;END one;时钟模块LIBRARY IEEE; -时钟模块ENTITY hour ISPORT(clk3,reset:IN STD_LOGIC;daout,alerthour:out STD_LOGIC_VECTOR(6 DOWNTO 0;END ENTITY hour;ARCHITECTURE one OF hour ISSIGNAL count:STD_LOGIC_VECTOR(6
8、 DOWNTO 0;BEGINdaout<=count;alerthour<=count;PROCESS(clk3,resetBEGINIF(reset='0'THEN count<="0000000" -若reset=0,则异步清零ELSIF(clk3'event and clk3='1'THEN -否则,若clk上升沿到IF(count(3 DOWNTO 0="1001"THEN -若个位计时恰好到"1001"即9IF(count<16#23#THEN -23进制co
9、unt<=count+7; -若到23D则elsecount<="0000000" -复0END IF;ELSIF (count<16#23#THEN -若未到23D,则count进1count<=count+1;ELSE -否则清零count<="0000000"END IF; -END IF(count(3 DOWNTO 0="1001"END IF; -END IF(reset='0'END PROCESS;END one;分钟模块LIBRARY IEEE; -分钟模块ENTITY
10、minute ISPORT(clk2,lk,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout,alertmin:OUT STD_LOGIC_VECTOR(6 DOWNTO 0;END ENTITY minute ;ARCHITECTURE ONE 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
11、<=count;alertmin<=count;enhour_2<= (sethour and lk; -sethour为手动调时控制信号,高电平有效enhour<= (enhour_1 or enhour_2;PROCESS(clk2,reset,sethourBEGINIF(reset='0' THEN -若reset为0,则异步清零count<="0000000"ELSIF(clk2'event and clk2='1'THEN -否则,若clk上升沿到IF(count (3 DOWNTO 0 =&
12、quot;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;ELSEcount<="0000000"
13、-count复0?END IF; -END IF(count<16#60#ELSIF (count <16#60# THENcount<=count+1; -若count<16#60#则count加1enhour_1<='0' after 100ns ; -没有发生进位ELSEcount<="0000000" -否则,若count不小于16#60# count复0 END IF; -END IF(count(3 DOWNTO 0="1001"END IF; -END IF(reset='0
14、9;END process;END ONE;秒钟模块LIBRARY IEEE; -秒钟模块ENTITY second ISPORT( clk1,reset,setmin:in STD_LOGIC;enmin:OUT STD_LOGIC;daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0;END ENTITY second;ARCHITECTURE ONE OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0;SIGNAL enmin_1,enmin_2:STD_LOGIC; -enmin_1为59秒时的进位信号BEGI
15、N -enmin_2由clk调制后的手动调分脉冲信号串daout<=count;enmin_2<=(setmin and clk1; -setmin为手动调分控制信号,高电平有效enmin<=(enmin_1 or enmin_2; -enmin为向分进位信号PROCESS(clk1,reset,setminBEGINIF(reset='0'THEN count<="0000000" -若reset为0,则异步清零ELSIF(clk1'event and clk1='1'then -否则,若clk上升沿到IF(
16、count(3 downto 0="1001"then -若个位计时恰好到"1001"即9IF(count<16#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(count<16#60#?ELSIF(count<16#60#then -若个位计数未到"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年小学艺术课程与教学设计
- 农田水利高效节水灌溉施工方案及技术措施
- 2025-2026学年小班数学物品分类教案
- 2025-2026学年湘鲁版小学英语教学设计
- 4.2 携手促发展 教学设计 - 统编版道德与法治九年级下册
- 文物建筑白蚁防治施工方案及技术措施
- 四川省巴塘县2026年保密观知识竞赛题库附答案
- 盘式曝气器系统安装调试施工方案及技术措施
- 2026年《工会基础知识》试题库及答案
- 变电所检修员定期维护安全操作规程
- 2026年齐齐哈尔拜泉县公开招聘幼儿教师34人笔试备考试题及答案详解
- 江苏省无锡市2025-2026学年高二下学期期末考试生物试题(文字版含答案)
- 2026中煤集团山西有限公司面向社会公开招聘292人笔试历年常考点试题专练附带答案详解
- 2026海南陵水黎族自治县县属国有企业第一批招聘60人考试模拟试题及答案详解
- 2026年高一历史学业水平考试知识点归纳总结(复习必背)
- 质量安全总监配备培训考核制度
- (新版)ISO37301-2021合规管理体系全套管理手册及程序文件(可编辑!)
- 高新技术产业开发区洪水影响区域评估报告
- 特殊岗位护理人员准入申请表
- 2023届北京市海淀区第二十中高三第一次调研测试英语试卷含解析
- GB/T 28804-2012无铜镀银玻璃镜
评论
0/150
提交评论