X Y 学 院
EDA 课 程 设 计
题 目 数字电子钟设计 系 (部) 班 级 姓 名 学 号 指导教师
2015 年 7 月 6 日至 7 月 10 日 共 一 周
2015年 7 月 10日
课程设计成绩评定表
目录
1 引言 .............................................................................................................................................. 1 2 系统设计....................................................................................................................................... 2
2.1 总原理图............................................................................................................................ 2 2.2 “秒”模块 . ....................................................................................................................... 2 2.3 “分”模块 . ....................................................................................................................... 3 2.4 “时”模块 . ....................................................................................................................... 3 2.5 校时模块............................................................................................................................ 3
2.6 报时模块............................................................................................................................ 4 3 仿真调试....................................................................................................................................... 5
3.1 秒仿真................................................................................................................................ 5 3.2 分仿真................................................................................................................................ 5 3.3 时仿真................................................................................................................................ 6 3.4 校时仿真............................................................................................................................ 6 3.5 报时仿真............................................................................................................................ 7 3.6 调试结果............................................................................................................................ 7 4 总结 .............................................................................................................................................. 8 参考文献........................................................................................................................................... 9 附录 ................................................................................................................................................ 10
1 引言
电子系统设计自动化(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 的设计系统的基础知识。
这次课程设计主要是培养我们的实际动手能力以及对EDA 这门课程深入理解的程度,增强我们对EDA 程序设计流程的掌握。同时,这次的设计还要求我们掌握计数器的编程及设计,六十进制计数器和二十四进制计数器的设计方法,以及各个进制之间的关系。
2 系统设计
2.1 总原理图
通过对设计要求的分析,我们可以得出该电路应具有“秒”模块、“分”模块、“时”模块、“报时”模块以及“校时”模块,从而我们可以得出如图1的总体设计原理图:
图1
2.2 “秒”模块
“秒”模块如图2所示:
图
2
我们可以看到有两个输入引脚和三个输出引脚,clk 为脉冲输入端,reset 为复位端,
secl[3..0]为秒的低四位,sech[3..0]为秒的高四位,cin 为进位端。 功能: 实现输出秒的码值及进位,并且具有异步复位功能。
2.3 “分”模块
“分”模块如图3所示:
图 3
其各个管脚功能与“秒”模块相同。
功能:同秒模块,实现输出分的码值及进位,并且具有异步复位功能。
2.4 “时”模块
“时”模块如图4所示:
图 4
其各管脚功能同以上两个模块。
功能: 实现输出时的码值,并且具有异步复位功能,输出的码值对应经过译码的数码管。
2.5 校时模块
该模块在设计中共需要三个,其功能完全一样,如图5所示:
实际上,校时模块相当于一个二选一数选器:a 、b 是两个输入端,ctrl 端为控制端,c 为输出端。
功能:选择时、分、秒模块的输入时钟,走秒模式下时、分、秒的输入时钟分别为1hz 脉冲、秒进位输出、分进位输出;校时模式下时、分、秒的输入时钟分别为keys 、keym 、keyh 输出的脉冲,从而达到走秒与校时的切换。
2.6 报时模块
该模块如图6所示:
图 6
功能:输入为分模块、秒模块的输出码值以及三个不同频率脉冲(gp 、dp 、wu ),输出为要送入数码管的分、秒码值以及输出脉冲(蜂鸣器)。输出的脉冲由输入的分、秒码值决定。当输入mh,ml,sh 分别为5、9、5,sl 为(1 or 3 or 5 or 7)时输出p 为低频,即512 Hz ,当输入mh,ml,sh 分别为5、9、5,sl 为9时,输出p 为高频,即1024Hz 。输入码值为其它时输出为wu ,即0 Hz 。输出的码值对应输入的码值不变。
3 仿真调试
3.1 秒仿真
秒仿真的结果如图7所示:
图 7
由仿真图知当计数值达到59时,下一个时钟上升沿到来时清零并产生进位信号,符合设计要求。
3.2 分仿真
分仿真结果如图8所示:
图
8
由仿真图知当计数值达到59时,下一个时钟上升沿到来时清零并产生进位信号,符合设计要求。
3.3 时仿真
时仿真结果如图9所示:
图9
由仿真图知当计数值达到23时,下一个时钟上升沿到来时清零,符合设计要求。
3.4 校时仿真
校时仿真如图10所示:
图
10
当ctrl 为1时输出波形同b ,ctrl 为0时输出波形同a ,符合设计要求。
3.5 报时仿真
报时仿真结果如图11所示,前三个输入对应为595 ,第四个输出为1、3、5、7时输出波形为dp ,第四位为9时输出波形为gp ,其他情况输出波形为wu ,符合设计要求。
图 11
3.6 调试结果
初始时,control ,reset 清零,秒表每秒加一,60s 时秒表清零,分加一,分达到59时,且秒达到59,后一秒时加一,达到23时59分59秒后一秒全部清零。当摁下reset 键时,显示“00 00 00”,当把control 键拨到1时,时钟暂停,摁keys 、keym 、keth 分别能使秒、分、时数字加一。把时间调到“00 59 45”把control 键拨回0,则时钟从“00 59 45”开始计时,当分到达59,秒分别走到51、53、55、57时,蜂鸣器低音(512Hz )分别响一秒钟,当走到59时,蜂鸣器发出高音(1024Hz )响一秒,响完便是整点。
4 总结
这次EDA 课程设计历时一个星期,在整整一个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA 的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。
在此次课设中,我们遇到了很多的问题,而这些问题我们也不是那么轻易就能够解决掉的,此时,我们就会去翻阅相关资料,或者是请教其他同学,这样我们就能很快的把问题给决绝掉了,那种感觉真的让人很舒畅,这也让我们明白了一件事,在学习中我们缺少不了同学、老师的帮助,他们能够很快的解决一些问题。在对波形进行仿真时,出现了仿真结果不正确的问题,经过细心检查、修正,仿真结果完美显示,同时,在进行最后的下载后,硬件上不能正确实现设计功能,这时,依旧需要耐心的去调试,在将每一模块进行认真检查后,设计结果完美实现。这让我们尝到了苦尽甘来的那种味道,很少悦人。
总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导以及同学的耐心帮助下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
参考文献
[1].Voknei A.Pedroni.《VHDL 数字电路设计教程》. 电子工业出版社,2008.5
[2].潘松,黄继业. 《EDA 技术实用教程》(第二版). 科学出版社,2005.2
[3].焦素敏. 《EDA 应用技术》. 清华大学出版社,2002.4
附录
秒程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity second is
port(clk,reset:in std_logic;
sec1,sec2:out std_logic_vector(3 downto 0);
cin:out std_logic);
end second;
architecture second1 of second is
signal sec1_t,sec2_t:std_logic_vector(3 downto 0);
begin
process(clk,reset)
begin
if reset='1'then
sec1_t
sec2_t
elsif clk'event and clk='1'then
if sec1_t="1001"then
sec1_t
if sec2_t="0101"then
sec2_t
else
sec2_t
end if;
else
sec1_t
end if;
if sec1_t="1001" and sec2_t="0101"then
cin
else
cin
end if;
end if;
end process;
sec1
sec2
end second1;
分程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity minute is
port(clk,reset:in std_logic;
min1,min2:out std_logic_vector(3 downto 0);
cin1:out std_logic);
end minute;
architecture minute1 of minute is
signal min1_t, min2_t:std_logic_vector(3 downto 0);
begin
process(clk,reset)
begin
if reset='1'then
min1_t
min2_t
elsif clk'event and clk='1'then
if min1_t="1001"then
min1_t
if min2_t="0101"then
min2_t
else
min2_t
end if;
else
min1_t
end if;
if min1_t="1001" and min2_t="0101"then
cin1
else
cin1
end if;
end if;
end process;
min1
min2
end minute1;
时程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity hour is
port (clk,reset:in std_logic;
hour1,hour2:out std_logic_vector(3 downto 0));
end hour;
architecture hour1 of hour is
signal hour1_t,hour2_t:std_logic_vector(3 downto 0);
begin
process(clk,reset)
begin
if reset='1'then
hour1_t
hour2_t
elsif clk'event and clk='1'then
if hour1_t="0011" and hour2_t="0010"then
hour1_t
hour2_t
else
if hour1_t="0011"then
hour1_t
if hour2_t="0010"then
hour2_t
else
hour2_t
end if;
else
hour1_t
end if;
end if;
end if;
end process;
hour1
hour2
end hour1;
library ieee;
use ieee.std_logic_1164.all;
entity shu_1 is
port(ctrl,a,b:in std_logic;
c:out std_logic);
end shu_1;
architecture shu of shu_1 is
begin
c
b;
end shu;
报时程序
library ieee;
use ieee.std_logic_1164.all;
entity baoshi is
port(dp,gp,wu:in std_logic;
sh,sl,mh,ml:in std_logic_vector(3 downto 0);
seh,sel,mih,mil:out std_logic_vector(3 downto 0);
p:out std_logic);
end baoshi;
architecture baoshi of baoshi is
begin
p
dp when mh="0101" and ml="1001" and sh="0101" and
(sl="0001" or sl="0011" or sl="0101" or sl="0111")else
gp when mh="0101" and ml="1001" and sh="0101" and sl="1001"else wu;
sel