您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > EDA课程设计报告之数字时钟设计
电子信息科学与技术EDA课程设计报告设计题目:数字时钟的设计班级:电子1201姓名:农真学号:201203020113日期:2015年1月18日一、实验目的学习并掌握数字钟的原理、设计方法。二、实验内容计数始终由模60秒计数器、模60分计数器、模24小时计数器、报时模块、分,时校定模块及输出显示组成,可以采用同步计数器或异步计数器设计方法。三、实验要求1、计时范围为0小时0分0秒至23小时59分59秒。2、采用6个8段数码管分别显示小时十位,小时个位,分钟十位,分钟个位,秒十位,秒个位。3、整点报时,蜂鸣器响5声,每秒响一声。4、校时功能能够单独校分,校时,校秒,用按键控制。5、具有清零,启动,停止计数功能,用按键控制。6、采用静态扫描方式显示。四、系统设计方案1、整个模块采用一个时钟,时钟的频率为一秒,用于程序秒的输入。2、时分秒皆采用两个位的计数,一位代表十位,一位代表个位。分秒为60进制,时为24进制。个位逢九向十位进一,秒逢59向分进一,分逢59向时进一。3、在小时的子程序里把两位小时数转换成一位数作为报时程序的输入。五、主要VHDL源程序主程序:主要将建好的模60秒计数器、模60分计数器、模24小时计数器、报时模块、分,时校定模块,译码模块连接起来。用的是端口映射方式。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitytime1is--generic(N:integer:=60);port(clk:instd_logic;reset:instd_logic;stop:instd_logic;clock_out:outstd_logic;min_add:instd_logic;hour_add:instd_logic;secout_1:outstd_logic_vector(6downto0);secout_2:outstd_logic_vector(6downto0);min_out_1:outstd_logic_vector(6downto0);min_out_2:outstd_logic_vector(6downto0);hour_cout_1:outstd_logic_vector(6downto0);hour_cout_2:outstd_logic_vector(6downto0));endentitytime1;architecturextime1oftime1is--60scomponentsecoudisport(clk:instd_logic;reset:instd_logic;secout1:outintegerrange0to9;secout2:outintegerrange0to9;--0to5en_min:outstd_logic);endcomponentsecoud;--60mincomponentminuteisport(en_min:instd_logic;reset:instd_logic;min_out1:outintegerrange0to9;min_out2:outintegerrange0to9;--0to5en_hour:outstd_logic);endcomponentminute;--24hourcomponenthourisport(en_hour:instd_logic;reset:instd_logic;hour_cout1:outintegerrange0to9;hour_cout2:outintegerrange0to9--0to2);endcomponenthour;--yimacomponentdecode_disisport(din:inintegerrange0to9;dout:outstd_logic_vector(6downto0));endcomponentdecode_dis;--huomencomponentor_2isport(a:instd_logic;b:instd_logic;c:outstd_logic);endcomponentor_2;--div_stopcomponentdiv_stopisport(clk:instd_logic;stop:instd_logic;clk_out:outstd_logic);endcomponentdiv_stop;--clock_bitcomponentclock_bitisport(min_in1:inintegerrange0to9;min_in2:inintegerrange0to9;sec_in1:inintegerrange0to9;sec_in2:inintegerrange0to9;clock_out:outstd_logic);endcomponentclock_bit;signals1:std_logic;signals2:std_logic;signals3:std_logic;signals4:std_logic;signalclk_out:std_logic;signalsecout1:integerrange0to9;signalsecout2:integerrange0to9;--0to5;signalmin_out1:integerrange0to9;signalmin_out2:integerrange0to9;--0to5;signalhour_cout1:integerrange0to9;signalhour_cout2:integerrange0to9;--0to2;beging1:foriin0to12generateg2:ifi=0generatehourx:hourportmap(s4,reset,hour_cout1,hour_cout2);--24hourendgenerate;g3:ifi=1generateminutex:minuteportmap(s2,reset,min_out1,min_out2,s3);--60minendgenerate;g4:ifi=2generatesecoudx:secoudportmap(clk_out,reset,secout1,secout2,s1);--60sendgenerate;g5:ifi=3generatedecode_dis1:decode_disportmap(hour_cout1,hour_cout_1);----24houryima1endgenerate;g6:ifi=4generatedecode_dis1:decode_disportmap(hour_cout2,hour_cout_2);----24houryima2endgenerate;g7:ifi=5generatedecode_dis2:decode_disportmap(min_out1,min_out_1);----60minyima1endgenerate;g8:ifi=6generatedecode_dis2:decode_disportmap(min_out2,min_out_2);----60minyima2endgenerate;g9:ifi=7generatedecode_dis3:decode_disportmap(secout1,secout_1);----60syima1endgenerate;g10:ifi=8generatedecode_dis3:decode_disportmap(secout2,secout_2);----60syima2endgenerate;g11:ifi=9generatexxor_2:or_2portmap(min_add,s1,s2);----huomenminaddendgenerate;g12:ifi=10generatexxor_2:or_2portmap(hour_add,s3,s4);----huomenhouraddendgenerate;g13:ifi=11generatediv_stop1:div_stopportmap(clk,stop,clk_out);----div_stopendgenerate;g14:ifi=12generateclock_bit1:clock_bitportmap(min_out1,min_out2,secout1,secout2,clock_out);----clock_bitendgenerate;endgenerate;endarchitecturextime1;模60秒秒个位逢9进一并归零,秒十位逢5进一并归零,完成60秒的计时。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;--60sentitysecoudisgeneric(N:integer:=10);port(clk:instd_logic;reset:instd_logic;secout1:outintegerrange0to9;secout2:outintegerrange0to9;--0to5en_min:outstd_logic);endentitysecoud;architecturexsecoudofsecoudissignalemin:std_logic;beginprocess(reset,clk)isvariablesec0:integerrange0to9;variablesec1:integerrange0to9;--signalemin:std_logic;beginifreset='1'thenemin='0';sec0:=0;sec1:=0;elsifclk'eventandclk='1'thenifsec0=N-1then--10-1sec0:=0;sec1:=sec1+1;ifsec1=N-4then--10-4sec1:=0;emin='1';elseemin='0';endif;elsesec0:=sec0+1;sec1:=sec1;emin='0';endif;endif;secout1=sec0;secout2=sec1;en_min=emin;endprocess;endarchitecturexsecoud;模60分分个位逢9进一并归零,分十位逢5进一并归零,完成60分的计时。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;--60minuteentityminuteisgeneric(N:integer:=10);port(en_min:instd_logic;reset:instd_logic;min_out1:outintegerrange0to9;min_out2:outintegerrange0to9;--0to5en_hour:outstd_logic);endentityminute;architecturexminuteofminuteissignalehour:std_logic;beginprocess(reset,en_min)isvariablemin0:integerrange0toN-1;--10-1variablemin1:integerrange0toN-1;--variableehour:integerrange0to1;beginifreset='1'thenehour='0';min0:=0;min1:=0;elsifen_min'eventanden_min='1'thenifmin0=N-
本文标题:EDA课程设计报告之数字时钟设计
链接地址:https://www.777doc.com/doc-2911129 .html