EDA设计(II)实验报告数字电子钟
- 格式:docx
- 大小:8.42 KB
- 文档页数:2
目录摘要与关键字·2ABSTRACT·2一.设计要求·2二.总体方案设计·3三.各子模块设计原理·· 31.计秒模块··32.计分模块··53.计时模块··64.校准模块··75.显示模块··96.报时模块··127.分频模块··138.去抖动模块··15四. 硬件下载与测试··161.硬件下载··162.测试··173.功能扩展··17五.结论·17参考文献··18数字电子钟的设计摘要与关键字:数字电子钟是生活中最常用的电子设备之一,其主要功能是能够显示时、分、秒实时信息,并能够方便地进行时、分、秒的初始值设置,以便时间校准。
实现数字电子钟有很多方法,本课程是采用VHDL硬件语言的强大描述能力和EDA 工具的结合在电子设计领域来设计一个具有多功能的数字电子钟。
关键字:数字电子钟VHDL硬件语言EDA工具ABSTRACT:Digital electric clock in life are the most commonly used one of the electronic equipment. Its main function is to display, minutes and seconds real-time information and can be easily when carried out, minutes and seconds, so that the initial value is set time calibration.There are many methods of designdigital electric clock.This course is a powerful by VHDL hardware language describe ability and EDA tools in electronic design field with versatile to design a digital electric clock .Key work:Digital electric clockVHDL hardware language EDA tools一.设计要求:1.设计一个电子钟能够显示时,分,秒;24小时循环显示。
EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。
扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。
二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。
4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。
课程设计(论文)任务书院(系): 基层教学单位:电子实验中心说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2012年12 月 12日目录第一章自动电子钟设计说明 (2)1.1 设计思路 (2)1。
2 模块介绍 (2)1。
3 真值表 (3)第二章原理图 (5)第三章波形仿真图 (7)第四章管脚锁定及硬件连线 (9)第五章总结 (10)参考文献 (11)燕山大学评审意见表 (12)第一章自动电子钟设计说明1。
1 设计思路这个自动电子钟的基本功能为采用6个静态数码管显示时、分、秒,其中时、分、秒的显示分别对应两个静态数码管。
秒钟利用60进制循环计数器(使用2个10进制计数器74160并行接成),从00到59后产生进位信号到分钟,并重新循环秒钟;分钟构成原理与秒钟相同,同样在进位后,并重新循环;时钟则采用24进制循环计数器(使用2个10进制计数器74160并行接成),在状态循环到23后置00,达到自动电子钟整体循环的功能,而74160的脉冲信号用1HZ提供,则基本周期为1秒,为电子钟的变化周期.附加功能为整点报时:采用1个10进制计数器74160自接成5进制计数器,作为蜂鸣器的触发时间控制,而触发信号则通过分钟向时钟进位时,自己整体置0,这个条件来控制.1.2 模块介绍74160十进制计数器LDN 置数端A、B、C、D输入端ENT、ENP使能端CLRN清零端CLK时钟信号输入端QA、QB、QC、QD输出端RCO进位输出端1.3 真值表1、74160十进制计数器输入输出CLK LDN CLRN ENP ENT D C B A QD QC QB QA RCO ××L ××L L L L L ↑L H ×× d c b a d c b a * ↑H H ×L QD QC QB QA *↑H H L ×QD QC QB QA L ↑H H H H L L L L L ↑H H H H L L L H L ↑H H H H L L H L L ↑H H H H L L H H L ↑H H H H L H L L L ↑H H H H L H L H L ↑H H H H L H H L L ↑H H H H L H H H L ↑H H H H H L L L L ↑H H H H H L L H H2、或非门A B Y0 0 10 1 01 0 01 1 03、或门A B Y0 0 00 1 11 0 11 1 14、与门5、非门第二章原理图1、秒钟:60进制循环计数器(由2个74160采用整体置数法接成)2、分钟:同秒钟3、时钟:24进制循环计数器(由2个74160采用整体置数法接成)4、整点报时:5进制循环计数器(由1个74160采用整体置数法接成)5、整体电路如下第三章波形仿真图1、秒钟个位向十位进位(1D3→1D4)2、秒钟十位向分钟个位进位(1D6→2D0)3、分钟个位向十位进位(2D3→2D4)4、分钟十位向时钟个位进位(2D6→3D0)5、时钟个位向十位进位(3D3→3D4)第四章管脚锁定及硬件连线第五章总结参考文献1、阎石数字电子技术基础高等教育出版社 2010年2、张强、周莲莲、郑兆兆 EDA课程设计B指导书燕山大学教务处2010年课程设计评审意见表。
数字电子钟逻辑电路设计《EDA技术》课程设计报告序号综合成绩优秀()良好()中等()及格()不及格()教师(签名)批改日期《EDA技术》课程设计报告课题:数字电子钟逻辑电路设计院系电子与电气工程学院专业电气工程及其自动化班级学号姓名指导教师起止日期 20-12-18至20-12-19 20年月目录一、课程设计任务及要求 1 1.1实验目的 1 1.2功能设计 1 二、整体设计思想 1 2.1性能指标及功能设计 1 2.2总体方框 2 2.3FPGA芯片介绍 2 三、编译与调试 3 3.1数字钟的基本工作原理:3 3.1.1调时、调分信号的产生 3 3.1.2计数显示电路4 3.2设计思路 4 3.3设计步骤5 3.3.1工程建立及存盘 5 3.3.2工程项目的编译 5 3.3.3时序仿真6 3.3.4引脚锁定 6 3.3.5硬件测试 6 3.3.6实验结果7 四、程序设计8 五、实验电路图 16 5.1实验原理图 16 5.2 PCB图 16 六、心得体会 17 七、【参考文献】:^p 18 一、课程设计任务及要求 1.1实验目的 1)掌握VHDL 语言的基本运用 2)掌握QuartusII的简单操作并会使用EDA实验箱 3)掌握一个基本EDA课程设计的操作 1.2功能设计要求显示格式为小时-分钟-秒钟,整点报时,报时时间为5 秒,即从整点前5 秒钟开始进行报时提示,LED 开始闪烁,过整点后,停止闪烁。
调整时间的按键用按键模块的S1 和S2,S1 调节小时,每按下一次,小时增加一个小时,S2 调整分钟,每按下一次,分钟增加一分钟。
另外用S8 按键作为系统时钟复位,复位后全部显示00-00-00。
二、整体设计思想 2.1性能指标及功能设计 1)时、分、秒计时器时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。
当秒计时器接受到一个秒脉冲时,秒计数器开始从00计数到59,此时秒显示器将显示00、01、02、、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、、59、00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、、23、00。
湖北民族学院信息工程学院实验报告(电气、电子类专业用)班级: 09 姓名:周鹏学号:030940908 实验成绩:实验地点: EDA实验室课程名称:数字系统分析与设计实验类型:设计型实验题目:实验一简单的QUARTUSII实例设计,基于VHDL格雷码编码器的设计实验仪器:HH-SOC-EP3C40EDA/SOPC实验开发平台,PC机。
一、实验目的1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。
2、初步了解QUARTUSII原理图输入设计的全过程。
3、掌握组合逻辑电路的静态测试方法。
4、了解格雷码变换的原理。
5、进一步熟悉QUARTUSII软件的使用方法和VHDL输入的全过程。
6、进一步掌握实验系统的使用。
二、实验原理、原理图及电路图3-8译码器三输入,八输出。
当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。
其真值表如表1-1所示输入输出A B C D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 1 00 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 0 1 0 0 01 0 0 0 0 0 1 0 0 0 01 0 1 0 0 1 0 0 0 0 01 1 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0表1-1 三-八译码器真值表译码器不需要像编码器那样用一个输出端指示输出是否有效。
但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。
本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。
总结
本次的EDA课程设计实验使我收获颇丰,一方面,通过项目--自动电子钟的设计我进一步加深了对数字电路的理解,对74160、74153芯片的功能的认识更加深入,是对书本知识的进一步学习,同时,通过学习QUARTUS Ⅱ软件的使用,增强了自身的自我学习能力与动手能力。
通过自我设计自动电子钟的原理图,我发现了数字电路在生活中的广泛应用,在原理图的设计过程中,遇到了很多坎坷,经历了一次次的软件破解错误、原理图逻辑错误、编译失败、仿真波形不符、管脚锁定困难......但每一次在自己的不懈努力下,在老师同学的悉心指导下,困难迎刃而解,油然而生的成就感使我感受到付出的值得。
但本次的项目设计中依旧存在着一些瑕疵,例如,使用校时功能时必须要关闭1Hz信号源以增加校时准确性。
正所谓“绝知此事要躬行”,这次的EDA课程设计实验就是我们对所学知识的检验与践行,这种过程使我意识到自己看似掌握充分的知识其实在实践中不堪一击,对各类芯片与元件的了解并不深入,这些是需要在以后的学习生活中改善的,同时学习不止,EDA以及数字电路课程虽然结束了,但相关知识应用是十分广泛的,所以需要不断去学习相关知识将其运用到实践应用中。
课程设计目录第一章:系统设计要求 (3)第二章:实验目的 (3)第三章:实验原理 (3)第四章:系统设计方案 (3)第五章:主要VHDL源程序 (4)1) 十进制计数器的VHDL源程序 (4)2) 六进制计数器的VHDL源程序 (5)3)蜂鸣器的VHDL源程序 (5)4)译码器的VHDL源程序 (6)5)控制选择器的VHDL源程序 (7)6)元原件例化的VHDL源程序 (8)第六章:系统仿真 (10)第七章:系统扩展思路 (11)第八章:设计心得总结 (11)数字秒表的设计一、系统设计要求1.秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。
当计时达60分钟后,蜂鸣器鸣响10声。
2.整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。
3.秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲。
二、实验目的通过本次课设,加深对EDA技术设计的理解,学会用QuartusⅡ工具软件设计基本电路,熟练掌握VHDL语言,为以后工作使用打下坚实的基础。
三、实验原理秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。
秒表的工作原理与数字时基本相同,唯一不同的是秒表的计时时钟信号,由于其分辨率为0.01秒,所以整个秒表的工作时钟是在100Hz的时钟信号下完成。
当秒表的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:0~59;ss表示秒:0~59;xx表示百分之一秒:0~99),当秒表的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:0~99),由于秒表的功能和钟表有所不同,所以秒表的hh表示的范围不是0~23,而是0~99,这也是和多功能时钟不一样的地方。
课程设计(论文)任务书院(系):基层教学单位:电子实验中心说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2012年12 月 12日目录第一章自动电子钟设计说明 (2)1.1 设计思路 (2)1.2 模块介绍 (2)1.3 真值表 (3)第二章原理图 (5)第三章波形仿真图 (7)第四章管脚锁定及硬件连线 (9)第五章总结 (10)参考文献 (11)燕山大学评审意见表 (12)第一章自动电子钟设计说明1.1 设计思路这个自动电子钟的基本功能为采用6个静态数码管显示时、分、秒,其中时、分、秒的显示分别对应两个静态数码管。
秒钟利用60进制循环计数器(使用2个10进制计数器74160并行接成),从00到59后产生进位信号到分钟,并重新循环秒钟;分钟构成原理与秒钟相同,同样在进位后,并重新循环;时钟则采用24进制循环计数器(使用2个10进制计数器74160并行接成),在状态循环到23后置00,达到自动电子钟整体循环的功能,而74160的脉冲信号用1HZ提供,则基本周期为1秒,为电子钟的变化周期。
附加功能为整点报时:采用1个10进制计数器74160自接成5进制计数器,作为蜂鸣器的触发时间控制,而触发信号则通过分钟向时钟进位时,自己整体置0,这个条件来控制。
1.2 模块介绍74160十进制计数器LDN 置数端A、B、C、D输入端ENT、ENP使能端CLRN清零端CLK时钟信号输入端QA、QB、QC、QD输出端RCO进位输出端1.3 真值表1、74160十进制计数器输入输出CLK LDN CLRN ENP ENT D C B A QD QC QB QA RCO ××L ××L L L L L ↑L H ×× d c b a d c b a * ↑H H ×L QD QC QB QA * ↑H H L ×QD QC QB QA L ↑H H H H L L L L L ↑H H H H L L L H L ↑H H H H L L H L L ↑H H H H L L H H L ↑H H H H L H L L L ↑H H H H L H L H L ↑H H H H L H H L L ↑H H H H L H H H L ↑H H H H H L L L L ↑H H H H H L L H H2、或非门A B Y0 0 10 1 01 0 01 1 03、或门A B Y0 0 00 1 11 0 11 1 14、与门5、非门第二章原理图1、秒钟:60进制循环计数器(由2个74160采用整体置数法接成)2、分钟:同秒钟3、时钟:24进制循环计数器(由2个74160采用整体置数法接成)4、整点报时:5进制循环计数器(由1个74160采用整体置数法接成)5、整体电路如下第三章波形仿真图1、秒钟个位向十位进位(1D3→1D4)2、秒钟十位向分钟个位进位(1D6→2D0)3、分钟个位向十位进位(2D3→2D4)4、分钟十位向时钟个位进位(2D6→3D0)5、时钟个位向十位进位(3D3→3D4)第四章管脚锁定及硬件连线第五章总结参考文献1、阎石数字电子技术基础高等教育出版社 2010年2、张强、周莲莲、郑兆兆 EDA课程设计B指导书燕山大学教务处2010年课程设计评审意见表。
EDA课程设计-万年历电子钟的设计————————————————————————————————作者:————————————————————————————————日期:课程设计(论文)任务书信息工程学院学院通信工程专业2009.2 班一、课程设计(论文)题目电子钟设计二、课程设计(论文)工作自2012年1月 3日起至 2012 年 1月 6 日止。
三、课程设计(论文) 地点: 华东交通大学4-410,图书馆四、课程设计(论文)内容要求:1.本课程设计的目的(1)掌握EDA技术及CPLD/FPGA的开发流程;(2)掌握自顶向下的设计思想;(3)掌握实用电子钟的设计原理;(4)掌握系统设计的分析方法;(5)提高学生的科技论文写作能力。
2.课程设计的任务及要求1)基本要求:(1)用HDL设计一个多功能数字钟,包含以下主要功能:精确计时,时间可以24小时制或12小时制显示;(2)日历:显示年月日星期;(3)能把设计文件进行仿真并下载到实验箱实现功能验证。
2)创新要求:在基本要求达到后,可进行创新设计,如增加报时等、秒表功能模块。
3)课程设计论文编写要求(1)要按照书稿的规格打印誊写论文(2)论文包括目录、绪论、正文、小结、参考文献、谢辞、附录等(3)论文装订按学校的统一要求完成4)答辩与评分标准:(1)完成系统分析:20分;(2)完成设计过程:20分;(3)完成仿真:10分;(4)完成下载:10分(5)回答问题:10分。
5)参考文献:(1)潘松,黄继业编著 .《EDA技术实用教程》,2005 ,科学出版社(2)徐志军,徐光辉编著.《CPLD/FPGA的开发与应用》,电子工业出版社,2001.1(3)/html/85/t-113885.html6)课程设计进度安排内容天数地点构思及收集资料1图书馆设计与调试3实验室撰写论文1图书馆、实验室学生签名:年月日课程设计(论文)评审意见(1)设计程序(40分):优()、良()、中()、一般()、差();(2)仿真结果(10分):优()、良()、中()、一般()、差();(3)下载结果(10分):优()、良()、中()、一般()、差();(4)回答问题(10分):优()、良()、中()、一般()、差();(5)报告成绩(30分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人:职称:年月日电子钟的设计摘要基于FPGA的电子钟设计,主要完成的任务是使用Verilog语音,在Quartise2上完成电路的设计,程序的开发,基本功能是能够显示、修改年月日时分秒。
基于EDA数字电子钟设计[摘要]:随着基于PLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。
本文详细介绍EDA课程设计任务——数字钟的设计的详细设计过程及结果,并总结出心得体会。
[关键字]:EDA技术;VHDL语言;数字钟EDA技术作为现代电子设计技术的核心,它依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑简化、逻辑分割、逻辑综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。
[1]笔者详细介绍在QUARTUS II软件环境下开发基于VHDL语言数字钟的设计。
1.设计任务及要求1、设计内容选用合适的可编程逻辑器件及外围电子元器件,设计一个数字电子钟,利用EDA 软件(QUARTUS Ⅱ)进行编译及仿真,设计输入可采用VHDL硬件描述语言输入法和原理图输入法,并下载到EDA实验开发系统,连接外围电路,完成实际测试。
2、设计要求(1)具有时、分、秒计数显示功能。
(2)具有清零的功能,且能够对计时系统的小时、分钟进行调整。
(3)小时为十二小时制。
2.方案选择与论证数字系统的设计采用自顶向下、由粗到细, 逐步分解的设计方法, 最顶层电路是指系统的整体要求, 最下层是具体的逻辑电路的实现。
自顶向下的设计方法将一个复杂的系统逐渐分解成若干功能模块, 从而进行设计描述, 并且应用EDA 软件平台自动完成各功能模块的逻辑综合与优化, 门级电路的布局, 再下载到硬件中实现设计[1]。
因此对于数字钟来说首先是时分秒的计数功能,然后能显示,附带功能是清零、调整时分。
通过参考EDA课程设计指导书,有以下方案:1.作为顶层文件有输入端口:时钟信号,清零按键,调时按键,调分按键;输出端口有:用于接数码管的八段码输出口,扫描用于显示的六个数码管的输出口。
2.底层文件分为:○1时间计数模块。
EDA设计(II)实验报告-数字电子钟实验报告:数字电子钟
一、实验目的
本实验旨在通过使用EDA设计软件,设计并实现一个具有时、分、秒功能的数字电子钟。
通过学习使用EDA工具,掌握数字电路设计的基本步骤和技巧,培养实践能力和创新思维。
二、实验原理
数字电子钟是一种以数字形式显示时间的装置,它利用了时、分、秒的计时原理。
核心部分包括一个时钟发生器,用于产生标准时间信号,以及一个计数器,用于对时间进行计数并显示。
此外,还需要一些控制逻辑来控制时、分、秒的进位和显示。
三、实验步骤
1.设计准备:在开始设计之前,首先明确设计要求和功能。
考虑到实验的复杂
性和可实现性,我们采用最简单的电路结构,即基于计数器和译码器的数字电子钟。
2.绘制电路图:使用EDA设计软件(如Quartus II)绘制电路图。
首先创建
新项目,然后添加必要的元件(如74LS192计数器、74LS248译码器等),并根据设计要求连接元件。
3.编写程序:使用硬件描述语言(如VHDL或Verilog)编写计数器和译码器
的程序。
确保程序能够实现所需的功能,并进行仿真测试。
4.编译和下载:将程序编译成可下载的配置文件,然后下载到FPGA开发板
上。
5.硬件测试:连接开发板到PC,启动程序,观察数字电子钟的显示情况。
检
查时间是否准确,各部分功能是否正常。
6.性能评估:对数字电子钟的性能进行评估,包括计时精度、稳定性等指标。
根据评估结果对设计进行优化。
四、实验结果与分析
1.设计结果:经过上述步骤,我们成功地设计并实现了一个基于FPGA的数字
电子钟。
通过EDA软件和硬件描述语言,我们实现了计数器和译码器的功
能,并完成了程序的编写和下载。
2.性能分析:经过测试,我们的数字电子钟具有较高的计时精度和稳定性。
时
间显示准确,各部分功能正常。
这表明我们的设计是成功的。
3.优化方向:虽然我们的数字电子钟已经具有较好的性能,但仍有一些方面可
以优化。
例如,可以考虑添加更多的功能,如闹钟、温度显示等;也可以进一步优化电路结构,降低成本和提高性能。
五、结论与展望
通过本次实验,我们成功地使用EDA设计软件和硬件描述语言设计并实现了一个数字电子钟。
实验结果表明我们的设计是可行的,具有较高的计时精度和稳定性。
这次实验不仅让我们掌握了数字电路设计的基本步骤和技巧,也提高了我们的实践能力和创新思维。
展望未来,我们可以进一步拓展数字电子钟的功能,如添加闹钟、温度显示等;也可以优化电路结构,降低成本和提高性能。
此外,我们还可以探索更多的EDA设计技术,如嵌入式系统设计、可编程逻辑器件(PLD)等,为今后的学习和职业生涯打下坚实的基础。