EDA数字钟设计报告
(2023)EDA课程数字钟设计报告(一)
![(2023)EDA课程数字钟设计报告(一)](https://img.taocdn.com/s3/m/71eda05959fafab069dc5022aaea998fcd22407b.png)
(2023)EDA课程数字钟设计报告(一)EDA课程数字钟设计报告设计目的本次设计的目的是通过使用EDA software,设计一个能够正常运行的数字钟,使其能够满足一定的时间显示功能。
设计思路本设计主要使用Verilog HDL编程语言,利用EDA software提供的仿真功能,模拟数字钟的运行过程。
具体实现过程如下:1.首先,设置时钟频率,并利用counter计数器进行计数,产生时间基准信号。
2.利用BCD编码对时间进行编码,分别将时、分、秒的数据传至显示器。
3.设计逻辑电路计算秒钟、分针、时钟转动角度。
4.在EDA software上进行仿真,观察数字钟是否正常工作。
设计图样以下为数字钟方案的部分设计图样。
image textimage text实现结果通过复杂的编程训练和模拟,数字钟设计的功能已经被确认。
数字钟电路能够准确地显示当前时间。
同时,数字钟的设计也具有较高的可靠性、稳定性和精度。
并且,数字钟的主板设计紧凑、易于集成。
这些优点使得本次设计非常适合应用于智能仪器、家庭用品和其他数字显示电子设备中。
总结数字钟设计是一项有挑战性的工程,需要设计人员具有充分的编程功底和深入的EDA工具熟练度。
本设计的成功,体现了设计团队的技术实力和团队协作能力,为未来的科技产品发展提供了有力的技术支撑。
改进方案虽然本设计实现了数字钟正常工作的功能,但是我们仍然可以从以下几个方面进行改进:1.在原有电路基础上增加闹钟功能,方便用户定时提醒。
2.增加显示背光,使数字钟更方便在夜间环境下使用。
3.将数字钟设计进行微小的改动使其更小巧便携,方便携带和使用。
参考文献1.微机原理与接口技术(第四版) 教材2.EDA Software (Xilinx ISE) 许可证书致谢在本次数字钟的设计过程中,我们向来自各地的优秀工程师团队表示感谢,感谢他们在繁忙的工作中,准确地指导我们的设计工作。
同时也感谢电子设计自动化(EDA) company提供的软件支持,使得我们能够顺利完成该设计。
EDA数字时钟设计报告
![EDA数字时钟设计报告](https://img.taocdn.com/s3/m/5a5291629b6648d7c1c7468c.png)
EDA课程设计报告设计题目:数字时钟班级:姓名:学号:日期:一、系统设计要求设计一个具有整点报时功能的数字时钟,要求;1.具有时、分、秒的计数显示功能,24小时循环显示。
2.具有清零、预置初值功能,实现LED动态显示,整点报时采用声音报时。
3.采用元件例化方式实现各模块间的连接。
二、系统设计方案要设计的数字时钟具有基本的计时功能,采用二十四小时计时,显示时分秒,其中分钟和秒模块采用60进制计数器实现,小时模块则需要一24进制计数器实现。
要实现时钟预置初值功能分别设计一个分钟允许置数端和小时允许置数端。
要实现LED动态显示,单独设计一个显示模块。
整点报时采用隔秒响一声实六十进制计数器模块二十四进制计数器模块显示模块元器件例化模块三、主要VHDL源程序六十进制计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY liushijinzhi ISPORT(clk,clr,en,a: IN STD_LOGIC;load_1,load_10: IN STD_LOGIC_VECTOR(3 DOWNTO 0); co: OUT STD_LOGIC;q_10,q_1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END liushijinzhi;ARCHITECTURE behav OF liushijinzhi ISSIGNAL q1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL q10:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c:STD_LOGIC;BEGINPROCESS(clk,clr,a,en,load_1)BEGINIF(clr='1') THENq1<="0000";ELSIF(a='1') THENq1<=load_1;ELSIF(clk'event AND clk='1') THENIF(en='1')thenIF(q1="1001") THENq1<="0000";c<='0';ELSIF(q1="1000") THENq1<=q1+'1';c<='1';ELSEq1<=q1+'1';c<='0';END IF;END IF;END IF;END PROCESS;PROCESS(c,clk,clr,a,load_10)BEGINIF(clr='1') THENq10<="0000";ELSIF(a='1') THENq10<=load_10;ELSIF (clk'event AND clk='1') THENIF(c='1') THENIF(q10="0101") THENq10<="0000";co<='1';ELSEq10<=q10+'1';co<='0';END IF;END IF;END IF;END PROCESS;PROCESS(q1)BEGINCASE q1 ISWHEN"0000"=>q_1<="1111110";WHEN"0001"=>q_1<="0110000";WHEN"0010"=>q_1<="1101101";WHEN"0011"=>q_1<="1111001";WHEN"0100"=>q_1<="0110011";WHEN"0101"=>q_1<="1011011";WHEN"0110"=>q_1<="0011111";WHEN"0111"=>q_1<="1110000";WHEN"1000"=>q_1<="1111111";WHEN"1001"=>q_1<="1110011";WHEN OTHERS=>q_1<="ZZZZZZZ";END CASE;END PROCESS;PROCESS(q10)BEGINCASE q10 ISWHEN"0000"=>q_10<="1111110";WHEN"0001"=>q_10<="0110000";WHEN"0010"=>q_10<="1101101";WHEN"0011"=>q_10<="1111001";WHEN"0100"=>q_10<="0110011";WHEN"0101"=>q_10<="1011011";WHEN OTHERS=>q_10<="ZZZZZZZ";END CASE;END PROCESS;END behav;二十四进制计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ershisijinzhi ISPORT(clk,clr,en,a:IN STD_LOGIC;load_1,load_10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); q_1,q_10:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ershisijinzhi;ARCHITECTURE behav OF ershisijinzhi ISSIGNAL c:STD_LOGIC;SIGNAL q1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL q10:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,clr,en,a,load_1)BEGINIF(clr='1') THENq1<="0000";ELSIF (a='1') THENq1<=load_1;ELSIF(clk'event AND clk='1') THENIF(q1="0011" AND q10="0010") THENq1<="0000";ELSIF (en='1') THENIF(q1="1001") THENq1<="0000";c<='0';ELSIF(q1="1000") THENq1<=q1+'1';c<='1';ELSEq1<=q1+'1';c<='0';END IF;END IF;END IF;END PROCESS;PROCESS(clk,clr,c,a,q1,load_10)BEGINIF(clr='1') THENq10<="0000";ELSIF (a='1') THENq10<=load_10;ELSIF(clk'event AND clk='1') THENIF(q1="0011" AND q10="0010") THEN q10<="0000";ELSIF (c='1') THENIF(q10="0010") THENq10<="0000";ELSEq10<=q10+'1';END IF;END IF;END IF;END PROCESS;PROCESS(q1)BEGINCASE q1 ISWHEN"0000"=>q_1<="1111110"; WHEN"0001"=>q_1<="0110000"; WHEN"0010"=>q_1<="1101101"; WHEN"0011"=>q_1<="1111001";WHEN"0100"=>q_1<="0110011";WHEN"0101"=>q_1<="1011011";WHEN"0110"=>q_1<="0011111";WHEN"0111"=>q_1<="1110000";WHEN"1000"=>q_1<="1111111";WHEN"1001"=>q_1<="1110011";WHEN OTHERS=>q_1<="ZZZZZZZ";END CASE;END PROCESS;PROCESS(q10)BEGINCASE q10 ISWHEN"0000"=>q_10<="1111110";WHEN"0001"=>q_10<="0110000";WHEN"0010"=>q_10<="1101101";WHEN OTHERS=>q_10<="ZZZZZZZ";END CASE;END PROCESS;END behav;显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY qdmkz ISPORT(clk,clr:IN STD_LOGIC;din1,din2,din3,din4,din5,din6:IN STD_LOGIC_VECTOR(6 DOWNTO 0); sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);num:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END qdmkz;ARCHITECTURE behav OF qdmkz ISSIGNAL q :STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINsel<=q;PROCESS(clk,clr)BEGINIF(clr='1') THENq<="101";ELSIF(clk'event AND clk='1') THENIF(q="000") THENq<="101";ELSEq<=q-'1';END IF;END IF;END PROCESS;PROCESS(q,din1,din2,din3,din4,din5,din6)BEGINCASE q ISWHEN "101"=>num<=din1;WHEN "100"=>num<=din2;WHEN "011"=>num<=din3;WHEN "010"=>num<=din4;WHEN "001"=>num<=din5;WHEN "000"=>num<=din6;WHEN OTHERS=>num<="ZZZZZZZ";END CASE;END PROCESS;END behav;元器件例化模块含报时LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shuzishizhong ISPORT(clk1,clk2,clrh,clrm,clrs,clr,ah,am,as,en:IN STD_LOGIC;load_1,load_10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);num:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);alm:OUT STD_LOGIC);END shuzishizhong;ARCHITECTURE one OF shuzishizhong ISCOMPONENT liushijinzhi ISPORT(clk,clr,en,a: IN STD_LOGIC;load_1,load_10: IN STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC;q_10,q_1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT ershisijinzhi ISPORT(clk,clr,en,a:IN STD_LOGIC;load_1,load_10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);q_1,q_10:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT qdmkz ISPORT(clk,clr:IN STD_LOGIC;din1,din2,din3,din4,din5,din6:IN STD_LOGIC_VECTOR(6 DOWNTO 0);sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);num:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;SIGNAL co1,co2:STD_LOGIC;SIGNAL sq_1,sq_10,mq_1,mq_10,hq_1,hq_10:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINu1:liushijinzhi PORT MAP (clk1,clrs,en,as,load_1,load_10,co1,sq_10,sq_1);u2:liushijinzhi PORT MAP (co1,clrm,en,am,load_1,load_10,co2,mq_10,mq_1);u3:ershisijinzhi PORT MAP (co2,clrh,en,ah,load_1,load_10,hq_1,hq_10);u4:qdmkz PORT MAP(clk2,clr,hq_10,hq_1,mq_10,mq_1,sq_10,sq_1,sel,num);PROCESS(sq_10,sq_1,mq_10,mq_1,hq_10,hq_1)BEGINIF(((hq_10="1111110" AND hq_1="1111110")OR(hq_10="0110000" AND hq_1="1101101")) AND mq_1="1111110"AND mq_10="1111110" AND ((sq_10="1111110"AND(sq_1="1111110"OR sq_1="1101101"OR sq_1="0110011"OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND(sq_1="1111110"OR sq_1="1101101"OR sq_1="0110011"OR sq_1="0011111"OR sq_1="1111111")) OR(sq_10="1101101"AND(sq_1="1111110"OR sq_1="1101101")))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="0110000") OR (hq_10="0110000" AND hq_1="1111001")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND sq_1="1111110") THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1101101") OR (hq_10="0110000" AND hq_1="0110011")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1111001") OR (hq_10="0110000" AND hq_1="1011011")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="0110011") OR (hq_10="0110000" AND hq_1="0011111")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1011011") OR (hq_10="0110000" AND hq_1="1110000")) AND mq_1="1111110"AND mq_10="1111110"AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="0011111") OR (hq_10="0110000" AND hq_1="1111111")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND sq_1="1111110"))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1110000") OR (hq_10="0110000" AND hq_1="1110011")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101")))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1111111") OR (hq_10="1101101" AND hq_1="1111110")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011")))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1110011") OR (hq_10="1101101" AND hq_1="0110000")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111")))) THENalm<='1';ELSIF(((hq_10="0110000" AND hq_1="1111110") OR (hq_10="1101101" AND hq_1="1101101")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111" OR sq_1="1111111")))) THENalm<='1';ELSIF(((hq_10="0110000" AND hq_1="0110000") OR (hq_10="1101101" AND hq_1="1111001")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111" OR sq_1="1111111"))OR(sq_10="1101101"AND sq_1="1111110"))) THENalm<='1';ELSEalm<='0';END IF;END PROCESS;END;四、系统仿真/硬件验证五、设计中遇到的问题与体会在置数方面,第一次写时,在时钟沿内,同步置数,下载在试验箱上很难实现,于是把置数改成异步置数。
EDA课程数字钟设计报告-V1
![EDA课程数字钟设计报告-V1](https://img.taocdn.com/s3/m/d2436410bdd126fff705cc1755270722192e59af.png)
EDA课程数字钟设计报告-V1数字钟设计报告数字钟设计是EDA(Electronic Design Automation)课程的一项实验任务。
在本次实验中,我们学习了数字电路设计的基本原理和EDA工具的使用方法,并通过数字钟的设计和实现,进一步加深了对数字电路运作的理解和应用能力。
设计原理在数字钟的设计中,我们需要考虑以下几个方面的原理:1.时钟信号发生器时钟信号发生器是数字钟的核心部件,它需要产生一种能够精确计时的信号,来控制其他部件的运作。
我们使用的时钟信号发生器是基于分频电路的原理,通过将高频信号逐步分频,最终得到1Hz的低频信号作为时钟信号。
2.计数器计数器是用于记录时间的关键部件,它需要能够根据时钟信号的变化而自动计数。
我们使用的计数器是基于JK触发器的原理,通过配置不同的触发器状态和逻辑门电路,实现对秒、分、时位数的分别计数。
3.显示器显示器是将计数器的结果通过人们能够理解的形式进行输出的部件,它需要能够清晰、准确地显示时间信息。
我们使用的显示器是基于七段数码管的原理,通过将计数器的结果转换为七段数码管的相应显示状态,实现对时间的显示。
技术实现在技术实现方面,我们使用了EDA工具Xilinx ISE Design Suite来完成数字钟的设计和编程。
通过该工具,我们可以方便地进行原理图绘制、模拟仿真、逻辑设计和HDL编程等过程,最终得到可供FPGA实现的数字钟设计。
具体实现过程如下:1. 通过原理图绘制工具,建立时钟信号发生器、计数器和显示器等部件的原理图,并进行逻辑连接;2. 在模拟仿真工具中,针对不同的输入信号进行仿真测试,检查各个部件的正常运行情况;3. 在HDL编程工具中,编写相应的代码实现数字钟的各项功能,并进行综合和优化;4. 在下载工具中,将编译后的数字钟设计文件下载到FPGA芯片中,完成数字钟的实际实现。
实验结果经过以上的设计和实现,我们最终完成了一款具有完整计数与显示功能的数字钟,能够自动计时、定时报时、清零等各项操作。
电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告
![电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告](https://img.taocdn.com/s3/m/6e555c3826d3240c844769eae009581b6bd9bd2f.png)
电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1. 6个数码管动态扫描显示驱动2. 按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3. 用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。
要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。
实验目的: 1)学会看硬件原理图, 2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机, 2)硬件实验箱, 3)Quartus II软件开发平台。
1.打开Quartus II , 连接实验箱上的相关硬件资源, 如下图1所示。
2.建立新文件, 选择文本类型或原理图类型。
3. 编写程序。
4.编译5. 仿真, 加载程序到芯片, 观察硬件输出结果(数码管显示)6.结果正确则完成。
若结果不正确, 则修改程序, 再编译, 直到正确。
模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时, 实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。
EDA数字时钟设计程序报告
![EDA数字时钟设计程序报告](https://img.taocdn.com/s3/m/72eb220a79563c1ec5da7154.png)
EDA实验报告EDA多功能数字时钟设计摘要:本实验中我们运用EDA课程中所学的知识,设计了一个拥有时间校正和闹钟功能的24小时制多功能数字时钟。
通过本实验,我们初步了解EDA的设计过程;初步掌握用VHDL语言的设计方法和设计思想;初步熟悉Max+Plus II软件平台的编程和仿真,并通过AEDK-EDA实验板下载模拟实现初步了解了硬件实现的方法。
关键词:数字时钟、VHDL、FPGA、Max+Plus II一、设计方案1.功能描述本次设计的多功能数字钟具有基本的计时功能和时间校正功能,同时可以进行定时闹铃。
计时功能采用24小时计时,显示时、分、秒。
其中分钟和秒模块采用60进制实现;小时设计了24进制的计数器.时间校正部分,分为时校时和分校时,分别通过控制时校正按钮和分校正按钮来实现.闹铃部分,先通过模式切换按钮进入闹钟定时,然后通过与时间校正相同的方法来进行闹铃时间的预置,当预置到达时间时,时钟将通过蜂鸣器进行闹铃。
2.硬件使用模块:EPF10K20TC144-4,模块10(蜂鸣器),模块17(脉冲源),模块21(开关设置),模块22(设置跳接模块), 模块23(键盘显示模块)3.VHDL程序设计框图二、 VHDL 源程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity clock isport(clk:in std_logic;----------------------时钟脉冲clk1:in std_logic;---------------------数码管选通时钟脉冲md1:in std_logic;----------------------模式选择:0为计时,1为闹钟 md2:in std_logic_vector(1 downto 0);---10为时校正(定时),01为分校正(定时) speak:out std_logic;-------------------闹钟 0dout:out std_logic_vector(6 downto 0);--数码管七段码输出 selout:out std_logic_vector(2 downto 0));---数码管选通输出 end clock;architecture one of clock issignal sel:std_logic_vector(2 downto 0);--------模6计数信号(数码管选通输入) signal hou1:std_logic_vector(3 downto 0);-------小时十位 signal hou2:std_logic_vector(3 downto 0);-------小时个位 signal min1:std_logic_vector(3 downto 0);-------分钟十位 signal min2:std_logic_vector(3 downto 0);-------分钟个位 signal seth1:std_logic_vector(3 downto 0);------定时小时十位 signal seth2:std_logic_vector(3 downto 0);------定时小时个位 signal setm1:std_logic_vector(3 downto 0);------定时分钟十位 signal setm2:std_logic_vector(3 downto 0);------定时分钟个位 signal sec1:std_logic_vector(3 downto 0);-------秒十位 signal sec2:std_logic_vector(3 downto 0);-------秒个位 signal h1:std_logic_vector(3 downto 0); ------输出小时十位 signal h2:std_logic_vector(3 downto 0); ------输出小时个位 signal m1:std_logic_vector(3 downto 0); ------输出分钟十位 signal m2:std_logic_vector(3 downto 0); ------输出分钟个位signal s1:std_logic_vector(3 downto 0); ------输出秒十位signal s2:std_logic_vector(3 downto 0); ------输出秒个位-------------------------------------------------begin----------------------------------------------模6计数(数码管选通)choice:process(clk1)beginif clk1'event and clk1='1' thenif sel="101" thensel<="000";elsesel<=sel+1;end if;end if;end process choice;selout<=sel;-----------------------------------------------小时十位h110:process(clk,hou2,min1,min2,sec1,sec2,md1,md2)beginif clk'event and clk='1' thenif (hou1="0010" and hou2="0011")and(min1="0101" and min2="1001") and(sec1="0101" and sec2="1001") thenhou1<="0000";elsif hou1="0010"and hou2="0011"and md1='0' and md2="10" then hou1<="0000";elsif (hou2="1001"and(min1="0101" and min2="1001") and (sec1="0101" and sec2="1001"))or (hou2="1001"and md1='0' and md2="10") thenhou1<=hou1+1;end if;end if;end process h110;-----------------------------------------------小时个位h220:process(clk,min1,min2,sec1,sec2,md1,md2,hou1)beginif clk'event and clk='1' thenif (hou1="0010" and hou2="0011")and(min1="0101" and min2="1001") and(sec1="0101" and sec2="1001") thenhou2<="0000";elsif hou2="1001"and(min1="0101" and min2="1001") and (sec1="0101" andsec2="1001") thenhou2<="0000";elsif (hou2="1001"and md1='0' and md2="10")or (hou1="0010"andhou2="0011"and md1='0' and md2="10") thenhou2<="0000";elsif ((min1="0101" and min2="1001") and (sec1="0101" and sec2="1001"))or (md1='0' and md2="10") thenhou2<=hou2+1;end if;end if;end process h220;-----------------------------------------------分钟十位m110:process(clk,min2,sec1,sec2,md1,md2)beginif clk'event and clk='1' thenif (min1="0101" and min2="1001") and (sec1="0101" and sec2="1001") then min1<="0000";elsif min1="0101"and min2="1001"and (md1='0' and md2="01")thenmin1<="0000";elsif (min2="1001"and (sec1="0101" and sec2="1001")) or (min2="1001"and md1='0' and md2="01")thenmin1<=min1+1;end if;end if;end process m110;----------------------------------------------分钟个位m220:process(clk,sec1,sec2,md1,md2)beginif clk'event and clk='1' thenif min2="1001"and (sec1="0101" and sec2="1001")thenmin2<="0000";elsif min2="1001"and (md1='0' and md2="01")thenmin2<="0000";elsif (sec1="0101" and sec2="1001") or(md1='0' and md2="01")thenmin2<=min2+1;end if;end if;end process m220;---------------------------------------------秒十位s110:process(clk,sec1,sec2)beginif clk'event and clk='1' thenif (sec1="0101" and sec2="1001")thensec1<="0000";elsif sec2="1001"thensec1<=sec1+1;end if;end if;end process s110;--------------------------------------------秒个位s220:process(clk,sec2)beginif clk'event and clk='1' thenif sec2="1001" thensec2<="0000";else sec2<=sec2+1;end if;end if;end process s220;-------------------------------------------时间设置小时部分sethour1:process(clk,seth2)beginif clk'event and clk='1' thenif seth1="0010"and seth2="0011" thenseth1<="0000";elsif seth2="1001" thenseth1<=seth1+1;end if;end if;end process sethour1;-------------------------------------------sethour2:process(clk,md1,md2,seth1)beginif clk'event and clk='1' thenif (seth1="0010"and seth2="0011")or seth2="1001"then seth2<="0000";elsif md1='1' and md2="10" theneth2<=seth2+1;end if;end if;end process sethour2;-------------------------------------------时间设置分钟部分setmin1:process(clk,setm1,setm2)beginif clk'event and clk='1' thenif setm1="0101"and setm2="1001"thensetm1<="0000";elsif setm2="1001"thensetm1<=setm1+1;end if;end if;end process setmin1;----------------------------------------------setmin2:process(clk,md1,md2,setm2)beginif clk'event and clk='1'thenif setm2="1001"thensetm2<="0000";elsif md1='1' and md2="01"thensetm2<=setm2+1;end if;end if;end process setmin2;--------------------------------------------闹铃speaker:process(clk1,hou1,hou2,min1,min2)beginif clk1'event and clk1='1'thenif seth1=hou1 and seth2=hou2 and setm1=min1 and setm2=min2 thenif(sec2="0000"or sec2="0010" or sec2="0100" or sec2="0110" or sec2="1000" )thenspeak<='1';else speak<='0';end if;end if;end if;end process speaker;-------------------------------------------数码管显示disp:process(sel,md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2) beginif sel="101" thencase h1 iswhen "0000"=>dout<="0111111";when "0001"=>dout<="0000110";when "0010"=>dout<="1011011";when others =>dout<="1000000";end case;elsif sel="100" thencase h2 iswhen "0000"=>dout<="0111111";when "0001"=>dout<="0000110";when "0010"=>dout<="1011011";when "0011"=>dout<="1001111";when "0100"=>dout<="1100110";when "0101"=>dout<="1101101";when "0110"=>dout<="1111101";when "0111"=>dout<="0000111";when "1000"=>dout<="1111111";when "1001"=>dout<="1101111";when others=>dout<="1000000";end case;elsif sel="011" thencase m1 iswhen "0000"=>dout<="0111111";when "0001"=>dout<="0000110";when "0010"=>dout<="1011011";when "0011"=>dout<="1001111";when "0100"=>dout<="1100110";when "0101"=>dout<="1101101";when others=>dout<="1000000";end case;elsif sel="010" thencase m2 iswhen "0000"=>dout<="0111111"; when "0001"=>dout<="0000110"; when "0010"=>dout<="1011011"; when "0011"=>dout<="1001111"; when "0100"=>dout<="1100110"; when "0101"=>dout<="1101101"; when "0110"=>dout<="1111101"; when "0111"=>dout<="0000111"; when "1000"=>dout<="1111111"; when "1001"=>dout<="1101111"; when others=>dout<="1000000"; end case;elsif sel="001" thencase s1 iswhen "0000"=>dout<="0111111"; when "0001"=>dout<="0000110"; when "0010"=>dout<="1011011"; when "0011"=>dout<="1001111"; when "0100"=>dout<="1100110"; when "0101"=>dout<="1101101"; when others=>dout<="1000000"; end case;elsif sel="000" thencase s2 iswhen "0000"=>dout<="0111111"; when "0001"=>dout<="0000110"; when "0010"=>dout<="1011011"; when "0011"=>dout<="1001111"; when "0100"=>dout<="1100110";when "0101"=>dout<="1101101";when "0110"=>dout<="1111101";when "0111"=>dout<="0000111";when "1000"=>dout<="1111111";when "1001"=>dout<="1101111";when others=>dout<="1000000";end case;end if;if md1='0' then---------------计时时间显示和设置模式h1<=hou1;h2<=hou2;m1<=min1;m2<=min2;s1<=sec1;s2<=sec2;else -------------闹铃时间显示和设置模式h1<=seth1;h2<=seth2;m1<=setm1;m2<=setm2;s1<="1111";s2<="1111";end if;end process disp;------------------------------------------end;三、仿真结果我们将上述VHDL程序通过Max+Plus II进行编译仿真,仿真结果符合我们设计所预想的功能。
EDA数字钟实验报告
![EDA数字钟实验报告](https://img.taocdn.com/s3/m/81b5d43aa31614791711cc7931b765ce05087ae5.png)
EDA数字钟实验报告EDA实验EDA实验数字钟一.实验任务用FPGA器件和EDA技术的设计已知条件:XXX软件XXX实验开发装臵基本功能:1.以数字形式显示时,分,秒的时间;2.小时计数器为24进制;3.分,秒计数器为60进制;多功能数字电子钟设计:输入变量:时钟CPS,直接清零RD;输出变量:小时H[7..4]、H[3..0]为8421BCD码输出,其时钟为CLK;分计时M[7..4]、M[3..0]为8421BCD 码输出,其时钟为CPM;秒计时S[7..4]、S[3..0]为8421BCD码输出,其时钟为CLK;RD为清零信号等。
二.仿真与波形1.60进制原理图如下;其仿真波形如下:2.24进制原理图如下:其仿真波形如下:3.数字钟的整个电路图如下:逻辑电路说明:由电路分析得知,多功能数字电子钟最基本的计时电路在CLK(秒)时钟作用下,电路输出变量为H[7..0],M[7..0]及S[7..0],按8421BCD码正常走时,电路为异步时序逻辑电路4.数字电子钟的仿真波形如下:仿真波形分析及结论:由仿真波形分析得知在CLK(秒)时钟作用下,电路正常走时。
分析过程完全符合多功能数字电子钟最基本的计时功能,逻辑电路设计正确。
三.感想:这次的课程设计的内容是《EDA多功能数字钟》,这次课程设计验我花了两个上午的时间。
虽然我是顺利的完成了任务,但是在实验中我还是发现了自己存在的一些问题。
在课程设计中我经常做完上一步就忘记了下一步该怎么做,总是一边看老师的课件一边做,这样一来浪费了不少时间,这是由于我对软件的操作不熟练的缘故,因此我觉得我应该在今后的日子里多练习一下这个MA_+PLUS软件,做到在以后的学习及工作中能利用这个软件快速的正确的完成任务。
在实验中我还经常出现掉步骤的现象,比如经常忘记“指向当前文件”,从而导致得到的结果是错误的甚至根本就得不到结果,这全都是因为粗心大意造成的。
在今后的日子里我会努力的去改掉这个毛病,从而高质量的完成老师交给我的各项任务!。
eda数字钟实验报告
![eda数字钟实验报告](https://img.taocdn.com/s3/m/3da5223f26284b73f242336c1eb91a37f111329f.png)
eda数字钟实验报告EDA数字钟实验报告本次实验旨在设计并实现一个EDA数字钟。
通过这个实验,我们将学习如何使用EDA工具来设计数字电路,并通过实际的电路实现来验证我们的设计。
1. 实验背景数字钟是我们日常生活中常见的设备之一。
它不仅可以显示时间,还具有闹钟等功能。
在这个实验中,我们将使用EDA工具来设计一个数字钟电路,并通过FPGA实现这个电路。
2. 实验目标本次实验的目标是设计一个能够显示小时、分钟和秒的数字钟电路。
我们将使用七段数码管来显示这些信息,并通过按键来设置时间和闹钟。
3. 设计思路我们的设计思路如下:3.1 时钟模块我们首先需要设计一个时钟模块,用来产生一个固定的时钟信号。
我们可以使用FPGA的时钟模块来实现这个功能,或者使用外部的晶振电路。
3.2 数码管驱动模块接下来,我们需要设计一个数码管驱动模块,用来将数字转换为七段数码管的显示信号。
我们可以使用查找表或者逻辑门电路来实现这个功能。
3.3 时间设置模块为了能够设置时间,我们需要设计一个时间设置模块。
这个模块可以通过按键来设置小时、分钟和秒。
3.4 闹钟设置模块类似于时间设置模块,我们还需要设计一个闹钟设置模块。
这个模块可以通过按键来设置闹钟的小时和分钟。
3.5 主控制模块最后,我们需要设计一个主控制模块,用来控制时钟、数码管驱动、时间设置和闹钟设置模块之间的交互。
这个模块可以根据设置的时间和闹钟来控制数码管的显示。
4. 电路实现根据我们的设计思路,我们使用EDA工具来实现我们的数字钟电路。
我们使用VHDL语言来描述电路,并使用模块化的方式来组织我们的代码。
5. 实验结果经过实际的电路实现和测试,我们成功地实现了数字钟电路。
我们可以通过按键来设置时间和闹钟,并通过七段数码管来显示时间和闹钟。
6. 实验总结通过这个实验,我们学习了如何使用EDA工具来设计数字电路,并通过实际的电路实现来验证我们的设计。
我们深入了解了数字钟的工作原理,并学会了如何使用VHDL语言来描述电路。
EDA设计数字钟实验报告
![EDA设计数字钟实验报告](https://img.taocdn.com/s3/m/79ff36d30c22590103029d15.png)
南京理工大学EDA(Ⅱ)实验报告——多功能数字钟姓名:学号:学院:指导教师:时间:2014/11/3~2014/11/7摘要日益复杂的电子线路使得基于原理图的设计越来越复杂,甚至不切实际。
硬件描述语言的诞生,对设计自动化起到了极大的促进和推动作用。
Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,实现了从算法级、门级到开关级的多种抽象设计层次的数字系统建模,具有仿真,验证,故障模拟与时序分析等功能。
本文利用Verilog HDL语言,采用自顶向下的设计方法设计多功能数字钟,并通过QuartusⅡ分块进行了仿真。
此程序通过下载到FPGA芯片后,可实现实际的数字钟显示,具有基本的计时显示和设置,时间校正,整点报时,12h/24h转换,闹钟设置和闹铃控制的功能。
关键词: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,数字钟AbstractThe development of electronic circuit has grown to be too complicated to be designed base on schematic diagram. The birth of HDL accelerated the development of electronic design automation drastically. Verilog HDL is one of the HDL with multiple and strong functions.In this thesis, a complex digital system is designed in the bottom-up way with Verilog HDL and is simulated by QuartusⅡ. The function of a digital clock can be realized by downloading the program to FPGA, which includes timing, time-setting, hourly chiming, 12/24transforming, bell-setting and bell-controlling.Keywords: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,Digital clock目录摘要Abstract第一章数字钟设计要求说明第二章数字钟的设计思路和工作原理第三章模块的Verilog HDL设计与仿真3.1 计数器模块3.2 基本计时顶层模块3.3 分频模块3.4 整点报时模块3.5闹钟模块3.6 LED数码管显示模块3.7 数字钟顶层模块第四章FPGA实现第五章总结5.1 遇到的问题与解决方案5.2 尚存在的不足之处5.3 收获与感悟参考文献第一章数字钟设计要求说明(一)数字钟可以正常进行基本的时,分,秒计时功能。
EDA设计(II)实验报告数字电子钟
![EDA设计(II)实验报告数字电子钟](https://img.taocdn.com/s3/m/4aacaabbaff8941ea76e58fafab069dc502247bd.png)
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设计报告-数字时钟](https://img.taocdn.com/s3/m/2710617e8e9951e79b89276e.png)
设计报告课程名称在系统编程技术任课教师设计题目数字时钟班级09级通信工程(2)班姓名学号日期2012年05月29日目录前言 (1)摘要 (2)关键词 (2)正文 (2)一、题目分析 (2)1、实验目的 (2)2、根据目的及要求确定总体方框图 (2)3、须完成的技术指标或功能要求 (3)二、设计方案和设计内容 (3)1、设计方案 (3)2、设计内容 (3)三、设计原理及框图细化 (4)1、数字钟的工作原理 (4)2、数字钟设计的电路原理图 (5)3、数字钟模块功能说明 (5)四、编写应用程序并仿真 (7)1、相关程序代码见附件。
(7)2、相关仿真图如下: (7)五、全系统联调,画出整机电路图和波形图 (9)1、整机电路原理图画出后如图3.2。
(9)2、全系统联调后的波形图和仿真图 (9)六、硬件测试及说明 (10)1、编程下载 (10)2、硬件调试 (10)七、结论 (11)八、课程总结 (12)九、参考文献 (12)十、附录(课题背景介绍和源程序) (12)1、EDA技术 (12)2、VHDL的简介 (13)3、VHDL语言的特点 (13)4、VHDL的设计流程 (13)5、源程序代码 (14)前言近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:(1)电子器件及其技术的发展将更多地趋向于为EDA服务;(2)硬件电路与软件设计过程已高度渗透;(3)电子设计技术将归结为更加标准、规范的EDA工具和硬件描述语言VHDL的运用;(4)数字系统的芯片化实现手段已成主流。
因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可少的基本技能之一。
随着社会的发展,科学技术也在不断的进步。
特别是计算机产业,可以说是日新月异,数字钟作为计算机的一个组成也随之逐渐进入人们的生活,从先前的采用半导体技术实现的数字钟到现在广泛应用的采用高集成度芯片实现的数字钟。
eda多功能数字钟实验报告
![eda多功能数字钟实验报告](https://img.taocdn.com/s3/m/67dbf597b8f3f90f76c66137ee06eff9aff8494c.png)
eda多功能数字钟实验报告EDA多功能数字钟实验报告一、引言数字钟是现代生活中常见的一种时间显示工具,其准确性和便携性使其成为人们生活中不可或缺的一部分。
本实验旨在设计并制作一款多功能数字钟,通过EDA(电子设计自动化)软件进行模拟和仿真,验证其功能和性能。
二、设计原理1. 时钟电路:采用CMOS(互补金属氧化物半导体)技术设计时钟电路,包括时钟发生器、计数器和显示器。
时钟发生器产生稳定的方波信号,计数器根据方波信号进行计数,显示器将计数结果以数字形式显示出来。
2. 功能模块:多功能数字钟除了显示时间外,还应具备日期显示、闹钟设置、温度检测等功能。
为实现这些功能,需要添加相应的模块,如时钟芯片、温度传感器、闹钟电路等。
三、电路设计1. 时钟电路设计:根据设计原理,使用EDA软件进行电路设计,选择合适的元器件和连接方式。
通过仿真验证电路的工作稳定性和准确性。
2. 功能模块设计:根据需求,添加相应的功能模块。
时钟芯片用于精确计时和日期显示,温度传感器用于检测环境温度并显示,闹钟电路用于设置闹钟时间并触发报警。
四、电路实现1. 元器件选取:根据电路设计需求,选择合适的元器件。
时钟芯片应具备高精度和稳定性,温度传感器应具备高灵敏度和准确度,闹钟电路应具备可调节和触发功能。
2. 电路布局:将选取的元器件按照电路设计进行布局,注意元器件之间的连接和布线,避免干扰和短路。
3. 电路连接:根据电路设计进行元器件之间的连接,注意连接的正确性和稳定性。
五、仿真与测试1. 仿真验证:使用EDA软件进行电路仿真,检查电路的稳定性和准确性。
通过仿真结果对电路进行调整和优化,确保其正常工作。
2. 功能测试:对多功能数字钟进行功能测试,包括时间显示、日期显示、温度检测和闹钟设置等。
通过测试结果对电路进行调整和改进,确保其功能的完善和可靠性。
六、实验结果与分析经过仿真和测试,多功能数字钟实现了准确的时间显示、日期显示、温度检测和闹钟设置等功能。
EDA课程数字钟设计报告(1)
![EDA课程数字钟设计报告(1)](https://img.taocdn.com/s3/m/02fc414300f69e3143323968011ca300a7c3f67f.png)
EDA课程数字钟设计报告(1)EDA课程数字钟设计报告一、设计目标:本次设计要求设计一款数字钟,要求具有如下功能:1.计时功能:能够以时、分、秒的形式显示时间,每经过一秒钟就自动更新时间。
2.报时功能:能够在每个整点或半个小时时报时,并具有报时器关闭功能。
3.闹钟功能:设定闹钟时间后,在设定时间到达时自动响铃。
4.指示功能:能够以数字形式指示时间,并能在背景板上对时间进行显示。
二、方案设计:1.硬件设计:本次设计所需器材包括Cyclone IV E FPGA,七段数码管以及电路底板。
Cyclone IV E是英特尔公司推出的第四代Cyclone系列FPGA器件,具有可编程的逻辑元件、存储器单元和DSP功能单元等特点,足以满足本项目所需的复杂性。
七段数码管是一种显示器件,可以用来显示数字和一些字母。
本设计采用了常见的共阳极七段数码管。
电路底板是一个电路板,用于连接各种测试设备并测试控制电路。
2.软件设计:本设计的软件应该被分为以下几个部分来实现:1.时钟模块:该模块负责自动更新钟表,更新范围应该包括时、分、秒的更新。
2.闹钟模块:该模块负责实现闹钟功能,比较当前时间和设定时间,如果相同,则自动响铃。
3.报时模块:该模块负责在每个整点或半个小时时报时,并可自动关闭报时器。
4.数字显示模块:该模块主要用于以数字形式指示时间,并能在背景板上显示时间。
5.用户交互模块:该模块负责接受用户输入,开关闹钟、报时器,并显示设置的时间和状态信息。
三、实现:1. 外部电路该设计采用七段数码管显示时间,其中每个数码管都有8个引脚,分别对应7条段和一个共阳极。
在数字显示时,需要依次将每个数码管复位,并发送相应的数据信号,以显示所需的数字。
数字与LED的亮度控制采用PWM宽度调制技术,可实现手动调节亮暗。
2. 操作流程本设计操作流程为:用户首先输入设定的闹钟时间、关闭报时器的时间间隔及报时器、闹钟等的开启与关闭状态。
系统开始计时并根据所设定的时间执行相应操作。
EDA设计报告-数字钟
![EDA设计报告-数字钟](https://img.taocdn.com/s3/m/9d001dec168884868762d6aa.png)
一、设计要求1、设计一个能显示1/10秒、秒、分、时的12小时数字钟。
2、熟练掌握各种计数器的使用。
能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
能用低位的进位输出构成高位的计数脉冲。
3、“时显示”部分应注意12点后显示1点。
4、注意各部分的关系,由低位到高位逐级设计、调试。
5、时钟显示使用数码管显示。
二、系统方案论证与模块划分1、计数器模块计数器模块中,1/10秒采用带进位的10进制功能模块,秒和分采用带进位的60进制功能模块,小时采用不带进位的12进制功能模块。
计数器模块均用Verilog HDL语言编写,实现计数逻辑功能。
(1)十进制计数器设计程序如下:module ssecond(q,rco,clk,reset);input clk,reset;output [3:0] q;output rco;reg rco;reg [3:0] q;always @(posedge clk or negedge reset)beginif(~reset)q<=4'b0000;else if (q==4'b1001) begin q<=4'b0000; rco=1;endelse begin q<=q+1'b1; rco=0;endendendmodule经编译、仿真、下载,满足要求。
然后通过Create Default Symbol,生成符号体如下:(2)六十进制计数器设计程序如下:module second(qh,ql,rco,clk,reset);output[3:0]qh;output[3:0]ql;output rco;reg [3:0]qh;reg [3:0]ql;reg rco;input clk,reset;always @(posedge clk or negedge reset)beginif(~reset){qh,ql}<=0;elsebeginif({qh,ql}==8'h59)begin {qh,ql}<=0;rco<=1;endelsebeginif(ql==9)begin ql<=0; qh<=qh+1;endelsebegin ql<=ql+1;rco<=0;endendendendendmodule经编译、仿真、下载,满足要求。
EDA课程设计报告_数字钟
![EDA课程设计报告_数字钟](https://img.taocdn.com/s3/m/c5ba8f82d4d8d15abe234ebf.png)
目录摘要 (2)1设计目的 (2)2设计内容 (2)2.1设计任务 (2)2.2扩展 (2)3系统方案及设计原理 (3)3.1方案选择 (3)3.2数字钟的基本工作原理 (3)3.3底层元件接口 (4)3.4数字钟设计的RTL电路 (5)4设计步骤 (5)5心得体会 (10)6 程序代码 (10)摘要:人类社会已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA 平台上设计一个电子数字钟,它的计时为24小时小时制,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。
总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和校时程序模块、数据选择器程序模块、显示程序模块和例化程序模块。
并且使用QUARTUS II 软件进行电路波形仿真,下载到EDA实验箱进行验证。
关键词:数字钟 EDA VHDL语言一、设计目的1、熟练地运用数字系统的设计方法进行数字系统设计;2、能进行较复杂的数字系统设计;3、按要求设计一个数字钟。
二、设计内容2.1、设计任务:设计一台能显示时、分、秒的数字钟。
具体要求如下:(1)由实验箱上的时钟信号经分频产生秒脉冲;(2)计时计数器用24进制计时电路;(3)可手动校时,能分别进行时、分的校正;(4)整点报时;2.2、扩展:设置闹时功能,当计时计到预定时间时,扬声器发出闹铃信号,闹铃时间为4s,并可提前终止闹铃。
eda数字钟实验报告
![eda数字钟实验报告](https://img.taocdn.com/s3/m/400fb2c39f3143323968011ca300a6c30c22f1e5.png)
eda数字钟实验报告一、实验目的与背景数字钟是一种在现代社会中广泛应用的时间显示器,其具有精度高、易于观察、维修方便等特点。
本次实验旨在通过使用EDA 软件,实现数字钟的制作,以便更好地了解数字时钟的原理及其设计过程。
二、实验器材与软件器材:电脑、EDA软件、闹钟模块、LCD液晶显示器、电源线、按键开关、电阻等。
软件:Protues、Keil、Proteus VSM等。
三、设计过程1. 硬件设计(1)指示器:使用了LCD液晶显示屏来显示时间。
其可显示当前的小时、分钟、秒等信息。
(2)核心控制器:使用了AT89S52单片机作为核心,用来控制整个数字时钟的运行。
(3)时钟电路:使用DS1302时钟芯片来实现时钟计时功能。
该芯片具有高精准度、低功耗等特点,能够提供准确的时间信号。
(4)外设控制:使用了按键开关、蜂鸣器等外设来实现数字时钟的启停、闹钟设置等功能。
2. 软件设计(1)包含了时间可视化方案的设计。
(2)编写了大量的实时驱动程序,使计时、位置更新、操作循环等功能得到实现。
(3)事件触发机制设计,使得按键响应、报时提示等功能得到实现。
(4)根据时钟电路信号进行时钟校准等相关处理。
四、实验结果通过实验,我们成功地制作出了一个高精度、功能齐全、操作简便的数字时钟。
该时钟可以准确地显示当前时间,同时根据设置还可以产生报时提示,启动或关闭闹钟等功能。
五、实验总结通过本次实验,我们对数字时钟的原理和设计过程有了更加深入的理解,增加了对数字电路的整体认识。
同时,我们还掌握了EDA软件的使用方法和调试技术。
希望今后能够在数字电路设计和嵌入式系统开发中能够有更好的发挥。
多功能数字钟(EDA设计)实验报告
![多功能数字钟(EDA设计)实验报告](https://img.taocdn.com/s3/m/6cb0300179563c1ec5da7112.png)
多功能数字钟一、实验原理分析通过晶振产生的50MHz的脉冲,用分频器进行分频产生1Hz的脉冲信号,即作为时钟的1s的信号进行计数。
秒钟每计数60秒后产生进位使分钟显示加1,分钟满60循环至0。
为实现手动校准时间功能,可以对分和秒计数器进行加减。
为实现校准时间时候的闪烁,对数码管使用消隐,把数码管的接地端口接一个脉冲信号。
在实验过程中,要注意很多细节,比如进行按键消抖,手动调整时间时不会进位。
二、逻辑分析三、功能模块分析功能模块包括分频模块,时间计数及校准模块,数码管译码显示模块、判决模块和消抖模块1.分频模块该电路由多个70LS90经过分频将由晶振产生的50MHz分频为1Hz方波,供后续时钟电路使用。
这一模块是整个电路的基础。
2.时间计数及校准模块该模块连接至分频模块的信号输出端,以分频模块产生的1Hz 方波作为基础。
1Hz方波与秒同步,以秒为基础,分别实现电子钟中,分与时的运转,即1分钟=60秒,1小时=60分钟的循环运转。
为了修正电子钟在运行过程中产生的一些误差或其他认为错误,另设置校准功能,可以对电子钟的计时进行调整。
其中,此模块的逻辑部分需Verilog语言实现并进行封装。
此模块用到3个十进制计数器、2个六进制计数器和1个三进制计数器。
3.数码管译码显示模块本电子钟采用数码管来显示,可以简单、直观地表现出确切的时间,实现其他配套功能。
且数码管易于操作。
此模块中有四个数码管,每两个数码管分别显示小时与分钟。
由上一模块,即时间计数及校准模块中的时间计数器产生的数值,将其对应的七段码直接传送至相应的数码管译码显示。
4.判决模块该电路判决信号连接至开关,当开关选中数码管某位后,经过判决器令改为停止计数,并开始1秒闪烁,按动按键可实现手动调整。
5.消抖模块通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
EDA数字时钟设计报告
![EDA数字时钟设计报告](https://img.taocdn.com/s3/m/28e612273169a4517723a3c0.png)
EDA实验设计报告——数字时钟设计目录一、实验名称 (3)二、实验目的 (3)三、实验内容 (3)1.扩展内容: (3)2.选做内容: (3)四、实验仪器 (4)五、实验原理 (4)1. 硬件部分 (4)2. 软件部分 (8)六、心得体会 (9)一、实验名称数字时钟设计二、实验目的通过设计一个数字时钟,逐步了解FPGA的编程原理,初步入门FPGA,了解FPGA工作原理及开发流程,为后续的深入学习打好坚实基础。
通过扩展功能提高FPGA系统综合应用能力,熟练掌握QuartusII开发环境及编程应用。
三、实验内容用同步时序电路设计实现时、分、秒计数,并在数码管上正确显示。
1.扩展内容:1、可以按键清零;2、支持年月日显示功能,用按键进行年月日和时分秒间显示切换;3、可对显示内容进行修改,时分秒均可修改。
2.选做内容:(1)利用5个数码管完成秒表显示功能。
要求:1、精度达100ms;2、可以清零;3、可暂停;4、最大计时为999.9s;(2)跑马灯设计实现8个发光二极管以不同频率(2Hz,1Hz,0.5Hz)循环进行左滚动、右滚动、向中间滚动、向两边滚动、闪动等效果,不同频率显示用按键进行切换。
四、实验仪器计算机;QuartusII软件;下载线;电子技术综合实验箱五、实验原理1. 硬件部分框图:Power Manage5V/3.3V/2.5VVGA Port FPGA模块MCU模块AD/DA模块Audio Port LED_KEY模块SRAM/ROM模块RS232 Port(1)处理器Cyclone ⅡEP2C20Q240,该处理器是Altera 公司研发的一款FPGA 芯片。
(2)显示 LED 数码管LED 数码管是有多个发光二极管封装一起组成“8”字形的器件,引线在内部链接完成只引出公共电极。
实验中采取动态显示驱动方法。
每位数码管点亮时间约为2ms 。
这样做能够节省大量的I\O 埠,而且功耗较静态显示驱动更低。
EDA课程设计多功能数字时钟报告
![EDA课程设计多功能数字时钟报告](https://img.taocdn.com/s3/m/8466943f84254b35effd3452.png)
III.开关功能介绍(两种方案)……………………………………………………………4
二.方案论证……………………………………………………5
I.总体方案分析…………………………………………………………………………5
II.电路的工作原理……………………………………………………………………6
二.方案论证:
I。总体方案分析:
利用QuartusII软件设计一个数字钟,对设计电路进行功能仿真,并下载到SmartSOPC实验系统中,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能.本电路在原有基础上进行了拓展,具备以下功能:
①.能进行正常的时、分、秒计时功能;
These electric circuits are all packed with mold piece okay, for the purpose of other electric circuits adjust to use.With count machine composing to account parts, pass a cent repeatedly the machine divides of when the 1 HZ pulse accounts adjust to show that the electric circuit suggests and passes a little bit whole buzzer that tell the time an electric circuit control with the dynamic state.BE counting the way that the machine class adopted synchronously external different step in the inner part while uniting, but came to a synchronous effect through a simple change and than synchronously returned credibility。While showing a control for economizing a resources adoption dynamic state principle,from wove VHDL language of 24 choose 4 data selectors.文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、 硬件测试及说明
进行硬件验证时,采用试验箱上的模式七电路图,如前面的图一所 示。七段数码管 1 和 2 做为秒计时输出,4 和 5 做为分钟计时输出,7 和 8 做为小时计时输出,八个发光管 D1、D2 和 D3 用做花样显示,键 8 为清 零输入信号 reset,键 7 和键 4 分别用做调时 sethour 和调分 setmin,时 钟信号 clk 由试验箱内部提供。硬件验证前进行引脚的配置,单击 “Assignments”菜单下的“Assignment Editor”命令,再在弹出的引 脚配置器中进行引脚配置,引脚配置结果如图
各个输入/输出端口的作用为:
(1) clk 为计时时钟信号,reset 为
异步清零信号;
(2) sethour 为 小 时 设 置 信 号 ,
setmin 为分钟设置信号;
(3) daout[5…0]为小时的 BCD 码输
出
,
daout[6...0]为秒和分钟的 BCD 码
输出,enmin 和 enhour 为使能输出
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;
信号。
(4) 在时钟整点的时候产生扬声器驱动 信号和花样显示信号。由时钟计时模 块中分钟的进行信号进行控制。当 contr_en 为高电平时,将输入信号 clk 送到输出端 speak 用于驱动扬声 器,同时在 clk 的控制下,输出端 lamp[2..0]进行循环移位,从而控制 LED 灯进行花样显示。输出控制模块 有扬声器控制器和花样显示控制器两 个子模块组成
规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达
方式,通过相关的软件,自动完成用软件方式设计的电子系统到硬件系统,
最终形成集成电子系统或专用集成芯片。本次实习利用 QuartusII 为设计
软件、VHDL 为硬件描述语言,结合所学的数字电路的知识设计一个 24
时多功能数字钟,具有正常时、分、秒计时,动态显示,清零、快速校时
总的来说,这次设计的数字时钟电路还是比较成功的,尽管在设计 中遇到了很多问题,最后在老师的辛勤指导、同学的帮助和自己不断思 考下,终于迎刃而解,有点小小的成就感,觉得平时所学的知识有了实 用的价值,达到了理论与实际相结合的目的。最后,对给过我帮助的所 有同学和指导老师再次表示忠心的感谢!
七、 附录(源程序,加中文注释)
二、 设计方案
1、 顶层实体描述 前面已经完成了电子时钟电路的各个组成部分的设计,下面把这些
组成部分组装起来,形成完整的总体设计。该电子时钟的命名为 clock, 其外部端口如图七所示。 各个输入/输出端口的作 用如下: (1) clk 为外部时钟信号,
其频率为 1Hz,reset 为异 步清零信号. (2) sethour 和 setmin 分 别为调时调分脉冲输入信 号,当 en_set 为高电平时, 每来一个 sethour 脉冲或 setmin 脉冲,时、分输出将分别加 1; (3) second[6...0]为秒的个位和十位 BCD 码输出,min[6…0]为分钟 的个位和十位 BCD 码输出,hour[6...0]为小时的个位和十位 BCD 码 输出,它们最终中用来驱动七段数码管,lamp[2...0]为花样显示输 出信号,speak 为整点报时扬声器驱动信号 2、 模块划分
HEFEI UNIVERSITY
《在系统编程技术》项目设计报告
课程名称
在系统编程技术
任课教师
谭敏老师
设计题目 EDA 课程设计数字钟
班级
09 级电子信息工程(1)班
姓名
王雨雷
学号
0905073026
成绩
日期
2012/5/26
摘要:
EDA(Electronic Design Automation)电子设计自动化,就是以大
秒、分——60 进制计数,即从 0 到 59 循环计数,时钟——24 进 制计数,即从 0 到 23 循环计数,并且在数码管上显示数值。 (2) 时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时
间,这样使数字数字钟具有使用功能。我们可以通过实验板上的
键 7 和键 4 进行任意的调整,因为我们用的时钟信号均是 1HZ 的, 所以每 LED 灯变化一次就来一个脉冲,即计数一次。 (3) 清零功能:reset 为复位键,低电平时实现清零功能,高电平时正 常计数。可以根据我们自己任意时间的复位。 (4) 蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答” 的报警声音。 (5) LED 灯在时钟显示时有花样显示信号产生。即根据进位情况,LED 不停的闪烁,从而产生“花样”信号。
FPGA/CPLD
Ä¿±êоƬ
PIO47-PIO40
PIO7
PIO6
PIO5
CLOCK0
PIO4
CLOCK2
PIO3
CLOCK5
PIO2
CLOCK9
PIO0
µ¥Âö³å
¼ü8
¼ü7
¼ü6
µ¥Âö³å
¼ü5
¼ü4
¼ü3
µ¥Âö³å
¼ü2
¼ü1
ʵÑéµç·½á¹¹Í¼ NO.7
5、 性能指标及功图能一设模计式:七实验电路图 (1) 时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对
8
7
6
5
4
3
2
1
ÑïÉùÆ÷
SPEAKER
ÒëÂëÆ÷ÒëÂëÆ÷
ÒëÂëÆ÷ÒëÂëÆ÷
ÒëÂëÆ÷ÒëÂëÆ÷
D8 PIO47
D7 PIO46
D6 PIO45
D5 PIO44
D4 PIO43
D3 PIO42
D2 PIO41
D1 PIO40
D16
D15
D14
D13
D12
D11
D9
PIO19-PIO16 PIO23-PIO20 PIO27-PIO24 PIO31-PIO28 PIO35-PIO32 PIO39-PIO36
通过这次课程设计,我懂得了理论与实际相结合的重要性,只有理 论知识是远远不够的,只有把所学的理论知识与实践相结合,从实践中 得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设 计的过程中,我遇到许多问题,毕竟是第一次应用 VHDL 进行硬件电路系 统的设计,许多 EDA 的知识还没有充分的掌握,遇到困难也是在所难免 的,同时发现了自己的不足之处:学习知识表面化,没有深入了解它们 的原理。
校分、整点报时、花样显示等功能。利用硬件描述语言 VHDL 对设计系
统的各个子模块进行逻辑描述,采用模块化的设计思想完成顶层模块的设
计,通过软件编译、逻辑化简、逻辑分割、逻辑综合优化、逻辑布线、逻
辑仿真,最终将设计的软件系统下载设计实验系统,对设计的系统进行硬
件测试。
一、 题目分析
1、 课程设计目的: 《EDA 课程设计》是继《模拟电子技术基础》、《数字电子技术基础》
4、 设计原理: 数字钟电路设计要求所设计电路就有以下功能:时、分、秒计时显
示,清零,时、分调节,整点报时及花样显示。分、秒计时原理相似, 可以采用 60 进制 BCD 码计数器进计时;小时采用 24 进制 BCD 码进行 计时;在设计时采用试验电路箱上的模式 7 电路,不需要进行译码电路 的设计;所设计电路具有驱动扬声器和花样显示的 LED 灯信号产生。 试验箱模式 7 的电路如图一所示:
4、 顶层电路图 顶层文件是由四个模块组成,分别是时、分、秒计数器和报警的 VHDL 语言封装而成。经过锁定引脚再重新编译获得如下顶层原 理电路图:
三、 方案实现
1、 各模块仿真及描述 (1) 秒计数器模块仿真图:将标准秒信号送入”秒计数器”,秒计数
器采用 60 进制计数器,每累计 60 秒发出一个分脉冲信号,该信 号将作为分计数器的时钟脉冲,daout 代表秒输出。
(2) 分计数器电路仿真图:也采用 60 进制计数器,每累计 60 分钟, 发出一个时脉冲信号,该信号将被送到时计数器,daout 端口代 表分钟输出
(3)小时计数器电路仿真图:时计数器采用 12 进制计时器,可实现对 24 小时累计。每累计 12 小时,发出一个脉冲信号。
2、 顶层电路仿真及描述 实现了数字钟的设计,仿真结果满足设计要求。
(4) 具有整点报时功能。 3、 总体方框图:
本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、 分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计 方法,子模块利用 VHDL 语言设计,顶层文件用原理图的设计方法。 显示:小时采用 24 进制,而分钟均是采用 6 进制和 10 进制的组合。