EDA课程设计电子钟
课 程 设 计
课程名称 EDA技 术 课题名称 多功能电子钟的设计 专 业 电子科学与技术 班 级学 号姓 名 朱 琼 指导教师 陈意军
2012年 06 月 21 日
湖南工程学院
课程设计任务书
课程名称: eda技术
题 目: 多功能电子钟的设计
专业班级: 电 科0902
学生姓名: 朱 琼 指导老师: 陈 意 军 审 批:
任务书下达日期 2012年6月 8 日 设计完成日期 2012 年6月21日
目 录
第一章 前言………...…………………………………………1
1.1 EDA技术简介…………………………………………………1 1.2 EDA的发展前景………………………………………………...1
第二章 设计内容及要求………………………………………2
2.1 设计内容………………………………………………………..2 2.2 设计要求………………………………………………………..2
第三章 设计原理及框图…………….…………………………3
3.1 设计原理………………………………………………………..3 3.2 设计框图………………………………………………………..3
第四章 模块程序设计及仿真……...…………………………4
4.1 分、秒模块程序及仿真………………………………………..4 4.2 时模块程序及仿真……………………………………………..5 4.3 星期模块程序及仿真…………………………………………..7 4.4 显示模块程序及仿真…………………………………………..8 4.5 校准模块程序及仿真…………………………………………..10 4.6 报时模块程序及仿真…………………………………………..11
第五章 心得总结……………………………..……………….13
参考文献…………………………………………………………….....14
附录………………………………………………………………..14
第一章 前 言
1.1 EDA技术简介
电子系统设计自动化(EDA: Electronic Design Automation)已成为不可逆转的潮流,它是包含CAD、CAE、CAM等与计算机辅助设计或设计自动化等相关技术的总称。随着信息时代的到来,信息电子产品已不断地向系统高度集成化和高度微型化发展,使得传统的手工设计和生产技术无法满足信息产品的社会和市场需要,因此,人们开始借助于EDA技术进行产品的设计和开发。目前EDA技术主要是以计算机软件工具形式表现出来的,对于现代复杂的电子产品设计和开发来说,一般需要考虑“自上而下”三个不同层次内容的设计(即:系统结构级设计,PCB板级设计和IC集成芯片级设计)。Protel DXP软件系统是一套建立在IBM兼容PC环境下的CAD电路集成设计系统,它是世界上第一套EDA环境引入到Windows环境的EDA开发工具,具有高度的集成性和可扩展性。本设计就是利用Protel DXP 进行原理图设计、PCB布局布线、进行电路仿真测试。通过本设计充分了解到Protel DXP的特点并且充分掌握了Protel DXP的设计系统的基础知识。
1.2 EDA的发展前景
随着微电子技术和计算机技术的不断发展,在涉及通信、国防、航天、工业自动化、仪器仪表等领域工作中,EDA技术的含量以惊人的速度上升,从而使它成为当今电子技术发展的前言之一。
由于在电子系统设计领域中的明显优势,基于大规模可编程器件解决方案的EDA技术及其应用在近年中有了巨大的发展,将电子发展技术再次推向了又一崭新的历史阶段。这些新的发展大致包含了这样6个方面:1.新器件;2.新工具软件;3.嵌入式系统设计;4.DSP系统设计;5.计算机处理器设计;6.与ASIC市场的竞争技术。
第二章 设计内容及要求
2.1 设计内容
1. 设计并制作一块专用ASIC电子钟芯片;
2. 以数字形式显示时,分,秒的功能,小时计时“24翻1”,分,秒计时“60翻1”;
3. 报时方式仿电台整点报时,一短四长;
4. 能对时和分进行校准;
5. 功能扩展(显示星期并能校准);
2.2 设计要求
1. 设计思路清晰,整体设计给出框图,提供顶层电路图;
2. 应用vhdl完成各次级模块设计,绘出具体设计程序;
3. 完成设计仿真和程序下载;
4. 写出实验报告
第三章 设计原理及框图
3.1 设计框图
3.2 设计原理
电子钟的功能为:数字钟、调整时间、整点报时。整个电子钟可以分成如下几个模块:
1.数字钟和调时模块:调时功能为改变数字钟的时和分以及星期,可根据输入的信号按键SM1,SM2,SM3,SM4进行调节,并且当此四个信号无效时可作为数字钟正常运行。
2.报时模块:报时模块控制在整点时,到时一个时钟信号送至实验仪的扬声器发声。
3.显示模块:显示模块根据不同的功能号,将相应的功能输出至数码管上输出时分秒分别用8位显示,采用译码由7位数码管显示出来。
第四章 模块程序设计及仿真
模块程序及仿真
4.1. 分、秒模块程序及仿真
秒、分:秒和分都是从0计数到59,可以用六十进制表示。 CNT60程序如下: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity CNT60 is port(CLK :in std_logic;
cq1,cq2:out std_logic_vector(3 downto 0); cout:out std_logic); end entity;
architecture one of CNT60 is
signal q1,q2:std_logic_vector(3 downto 0); begin process(CLK) begin
if CLK'event and CLK='1' then ––检测时钟上升沿 q2
end if; if q2=9 and q1=5 then q1
cout
end if; end process; cq1
CNT60波形仿真如图:
CNT60模块如图:
4.2 时模块程序及仿真
时是从0计数到23,可以用二十四进制表示。 CNT24程序如下: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity CNT24 is port(CLK :in std_logic;
cq1,cq2:out std_logic_vector(3 downto 0); cout:out std_logic); end entity;
architecture one of CNT24 is
signal q1,q2:std_logic_vector(3 downto 0); begin process(CLK)
begin if CLK'event and CLK='1' then ––检测时钟上升沿 q2
end if; ––q2=9时,q1开始计数且q2清零 if q2=3 and q1=2 then q1
cout
CNT24波形仿真如图:
CNT24模块如图:
4.3 星期模块程序及仿真
星期计数是从1到7,可以用八进制表示
程序如下 library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt7 is
port(clk:in std_logic; q1,q2:out std_logic_vector(3 downto 0)); end cnt7;
architecture one of cnt7 is
signal q11,q22:std_logic_vector(3 downto 0); begin
process(clk) begin if clk'event and clk='1' then q11
仿真图如下:
星期模块图:
4.4 显示模块程序及仿真
数码管上输出星期、时、分、秒分别用8位显示,采用译码由7位数码管显示出来。
程序如下: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SCAN_LED IS PORT ( CLK : IN STD_LOGIC;
d0,d1,d2,d3,d4,d5,d6,d7:in STD_LOGIC_VECTOR(3 DOWNTO 0); SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END;
ARCHITECTURE one OF SCAN_LED IS
SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
P1:PROCESS( CNT8 ) BEGIN
CASE CNT8 IS
WHEN "000" => BT BT BT BT BT BT BT BT NULL ; END CASE ; END PROCESS P1;
P2:PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN CNT8
END PROCESS P2 ; P3:PROCESS( A ) BEGIN
CASE A IS
WHEN "0000"=> SG SG
WHEN "0010" => SG SG
WHEN "0100" => SG SG
WHEN "0110" => SG SG
WHEN "1000"=> SG SG SG SG SG SG
WHEN "1110"=> SG SG
WHEN OTHERS => NULL ; END CASE ;
END PROCESS P3; END; 仿真图如下:
显示模块:
4.5 校准模块程序
校准只需调星期、时、分这5个量,故tiaoshi程序就是一个三选一程序。
程序如下: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity tiaoshi is
port(k1,k2:in std_logic; m1,m2,m3:in std_logic; n1,n2,n3 :out std_logic); end entity;
architecture one of tiaoshi is
signal q:std_logic_vector(3 downto 0); begin
process(k1)
begin if k1'event and k1='1' then q
end if; case q is
when"0000"=>n1
when"0001"=>n1n1n1
--when"0100"=>n1n1NULL; end case; end process; end;
调试模块:
4.6 报时模块程序
程序如下: library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity alarm is
port(clk:in std_logic;
m1,m2,F1,F2,S1,S2:in std_logic_vector(3 downto 0); alarm:out std_logic); end alarm;
architecture one of alarm is
signal q11:std_logic_vector(23downto 0); begin
process(F1,F2,S1,S2) begin
q11
when "[***********]000000"=>alarm
when "[***********]000000"=>alarm
when "[***********]000000"=>alarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmalarmnull; end case; end process; end one;
报时模块:
第五章 心得总结
这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字秒表开始计数,但是始终看不到秒和小时的循环计数。后来,在数十次的调试之后,才发现是因为输入的时钟信号对于器件的延迟时间来说太短了。
其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
参考文献:
[1] 黄正瑾.在系统编程技术及其应用.南京:东南大学出版社,1997 [2] 彭介华.电子技术课程设计指导.北京:高等教育出版社,1997
[3] 李国丽,朱维勇.电子技术实验指导书.合肥:中国科技大学出版社,2000 [4] 潘松,黄继业.EDA技术实用教程.北京:科学出版社,2002
[5] 郑家龙,王小海,章安元.集成电子技术基础教程.北京:高等教育出版社,2002
附 录:
引脚分配图
顶层原理图
电气信息学院课程设计评分表
指导教师签名:________________
日 期:________________
注:①表中标*号项目是硬件制作或软件编程类课题必填内容;
②此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。