课 程 设 计 说 明 书
题目: 闹钟
学院(系):
年级专业:
学 号:
学生姓名:
指导教师:
教师职称:
目 录
第1章 摘要…………………………………………………………………………………1
第2章 设计方案……………………………………………………………………………
2.1 VHDL简介……………………………………………………………………………
共 16 页 第 1 页
2.2 设计思路……………………………………………………………………………
第3章 模块介绍……………………………………………………………………………
第4章 Verilog HDL设计源程序…………………………………………………………
第5章 波形仿真图…………………………………………………………………………
第6章 管脚锁定及硬件连线………………………………………………………………
心得体会 ……………………………………………………………………………………17
参考文献 ……………………………………………………………………………………18
第一章 摘要
在当今社会,数字电路产品的应用在我们的实际生活中显得越来越重要,与我们的生活联系愈加紧密,例如计算机、仪表、电子钟等等,使我们的生活工作较以前的方式更加方便、完善,带来了很多的益处。
在此次EDA课程,我的设计课题是闹钟,使用VHDL语言进行编程完成。报告书主要由设计方案、模块介绍、设计源程序、仿真波形图和管脚锁定及硬件连线四部分组成。设计方案主要介绍了我对于设计课题的大致设计思路,之后各个部分将会详细介绍设计组成及程序。
共 16 页 第 2 页
第二章 设计方案
§2.1 VHDL简介
数字电路主要是基于两个信号(我们可以简单的说是有电压和无电压),用数字信号完成对数字量进行算术运算和逻辑运算的电路我们称之为数字电路,它具有逻辑运算和逻辑处理等功能,数字电路可分为组合逻辑电路和时序逻辑电路。
EDA技术,就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
利用EDA技术进行电子系统的设计,具有以下几个特点:① 用软件的方式设计硬件;② 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③ 设计过程中可用有关软件进行各种仿真;④ 系统可现场编程,在线升级;⑤ 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。
EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(Computer Assist Design,简称CAD)、计算机辅助工程设计(Computer Assist Engineering Design,简称CAE)和电子设计自动化(Electronic Design Automation,简称EDA)三个发展阶段。
共 16 页 第 3 页
常用的硬件描述语言有VHDL、Verilog、ABEL。
EDA技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。它是为解决自动控制系统设计而提出的,从70年代经历了计算机辅助设计(CAD),计算机辅助工程(CAE),电子系统设计自动化(ESDA)3个阶段。前两个阶段的EDA产品都只是个别或部分的解决了电子产品设计中的工程问题;第三代EDA工具根据工程设计中的瓶颈和矛盾对设计数据库实现了统一管理,并提出了并行设计环境概念,提供了独立于工艺和厂家的系统级的设计工具。EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。目前应用比较广泛的硬件描述语言就是Verilog HDL。
2 Verilog HDL简介
Verilog HDL是目前大规模集成电路设计中最具代表性、使用最广泛的硬件描述语言之一。
具有如下特点:
(1)能够在不同的抽象层次上,如系统级、行为级、RTL级、门级和开关级,对设计系统进行精确而简练的描述。
(2)能够在每个抽象层次的描述上对设计进行仿真验证,及时发现及时发现可能存在的错误,缩短设计周期,并保存整个设计过程的正确性。
(3)由于代码描述与工艺过程实现无关,便于设计标准化,提高设计的可重用性。如国有C语
共 16 页 第 4 页
言的编程基础经验,只需很短的时间就能学会和掌握Verilog HDL,因此,Verilog HDL可以作为学习HDL设计方法的入门和基础。
§2.2 设计思路
一、设计要求
1、设计简易的一分钟闹钟;
2、可手动输入定时时间(0~59s),如30s;
3、两个动态数码管上跟踪显示时间的变化:如30,29,28……到了指定时间蜂鸣器发出5s的提示音;
4、采用2个动态数码管显示时间;
5、用蜂鸣器发出提示音;
6、拨码开关设置定时时间。
二、设计思路
根据上述的设计要求,整个系统大致包括如下几个组成部分:它包括以下几个组成部分:1) 显
共 16 页 第 5 页
示屏,由2个七段动态数码管组成,用于显示当前设置的闹钟时间并进行跟踪显示;2)6个拨码开关,用于输入闹钟时间;3)复位键,确定新的闹钟时间设置,或显示已设置的闹钟时间;4)蜂鸣器,在当前时钟时间与闹钟时间相同时,发出报警声。
第三章 模块介绍
一、计时模块
此模块共有6个拨码开关作为输入信号,当开关无输入时,都处于低电平状态,D5、D4、D3、D2、D1和D0是并行数据输入端,CRN是异步复位输入端,LDN是预置控制输入端。当开关有输入时,会产生一个六位的二进制输出信号num,此信号表示动作的开关序号,它是作为动态显示模块的输入信号。
二、数码显示模块
这个模块有两个输入信号和两个输出信号。其中一个是信号输入模块的输出num作为输入,另外一个是时钟输入端,作为扫描数码管的频率信号,采用1024HZ的中高频信号。输出信号为SS0、SS1、SS2,是动态数码管的片选段。
三、报警模块
报警模块共有两个输入信号ET和CLK1,一个输出信号COUT。当从信号输入模块检测到有开关输入时,ET信号已置1,CLK上升沿到来时,程序将COUT置1,蜂鸣器发出时间为10s的报警信号,
共 16 页 第 6 页
时间到达后,跳出循环,蜂鸣器停止报警。
四、顶层模块
顶层模块的作用是将各个模块组合到一起,从而实现最终的功能。其输入即为各个模块的输入,一个时钟信号,还有6个拨码开关的输入,其输出为数码管显示和报警器。
第四章Verilog HDL设计源程序
一、计时模块
module counter(LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,Q,OC);
input LDN,D5,D4,D3,D2,D1,D0,CLK,CRN;
output[5:0] Q;
output OC;
reg OC;
reg[5:0] Q;
共 16 页 第 7 页
reg[5:0] Q_TEMP;
reg[3:0] NUM;
always@(posedge CLK or negedge CRN)
begin
if(~CRN) Q_TEMP=6'b000000;
else if(~LDN)
begin
Q_TEMP={D5,D4,D3,D2,D1,D0};
NUM=4'b0000;
end
else if(Q_TEMP<6'b111100&&Q_TEMP>6'b000000)
begin
共 16 页 第 8 页
if(NUM<4'b1000&&NUM>=4'b0000)
NUM=NUM+1;
else NUM=4'b0001;
if(NUM==4'b1000)
Q_TEMP=Q_TEMP-1;
end
else Q_TEMP=6'b000000;
end
always
begin
if(Q_TEMP==6'b000000&&LDN) OC=1'b1;
else OC=1'b0;
共 16 页 第 9 页
Q=Q_TEMP;
end
endmodule
二、数码显示模块
module showtime(A,Q,CLKM,SS0,SS1,SS2);
input[5:0] A;
input CLKM;
output[6:0] Q;
output SS0,SS1,SS2;
reg[6:0] Q;
reg SS0,SS1,SS2;
reg M;
共 16 页 第 10 页
reg[5:0] B;
reg[5:0] C;
always@(posedge CLKM)
begin
M=M+1;
end
always
begin
if(A<='b001001)
begin
B=A;
C=0;
共 16 页 第 11 页
end
else if(A>'b001001&&A<='b10011)
begin
B=A-10;
C=1;
end
else if(A>'b10011&&A<='b11101)
begin
B=A-20;
C=2;
end
else if(A>'b11101&&A<='b100111)
共 16 页 第 12 页
begin
B=A-30;
C=3;
end
else if(A>'b100111&&A<='b110001)
begin
B=A-40;
C=4;
end
else if(A>'b110001&&A<='b111011)
begin
B=A-50;
共 16 页 第 13 页
C=5;
end
else if(A=='b111100)
begin
B=0;
C=6;
end
if(M=='b1)
begin
SS0=1;SS1=0;SS2=0;
case(B)
'b000000:Q='b0111111;
共 16 页 第 14 页
'b000001:Q='b0000110;
'b000010:Q='b1011011;
'b000011:Q='b1001111;
'b000100:Q='b1100110;
'b000101:Q='b1101101;
'b000110:Q='b1111101;
'b000111:Q='b0000111;
'b001000:Q='b1111111;
'b001001:Q='b1101111;
default:Q='b0111111;
endcase
end
共 16 页 第 15 页
else if(M=='b0)
begin
SS0=0;SS1=0;SS2=0;
case(C)
'b000000:Q='b0111111;
'b000001:Q='b0000110;
'b000010:Q='b1011011;
'b000011:Q='b1001111;
'b000100:Q='b1100110;
'b000101:Q='b1101101;
'b000110:Q='b1111101;
default:Q='b0111111;
共 16 页 第 16 页
endcase
end
end
endmodule
三、报警模块
module speaker(CLK1,ET,COUT);
input CLK1,ET;
output COUT;
reg COUT;
reg[5:0] TEMP;
always@(posedge CLK1)
begin
共 16 页 第 17 页
if(~ET) TEMP=6'b000000;
else if(TEMP<6'b101001&&TEMP>=6'b000000) TEMP=TEMP+1;
else TEMP=6'b101001;
end
always
begin
if(TEMP<6'b101001&&TEMP!=6'b000000) COUT=1'b1;
else COUT=1'b0;
end
endmodule
四、顶层模块
module timer(LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,CLK1,COUT,LED,SS0,SS1,SS2,CLKM);
共 16 页 第 18 页
input LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,CLK1,CLKM;
output[6:0] LED;
output COUT,SS0,SS1,SS2;
wire X6;
wire[5:0] X;
counter
u1(.LDN(LDN),.D5(D5),.D4(D4),.D3(D3),.D2(D2),.D1(D1),.D0(D0),.CLK(CLK),.CRN(CRN),.Q(X[5:0]),.OC(X6));
showtime u2(.A(X[5:0]),.Q(LED[6:0]),.CLKM(CLKM),.SS0(SS0),.SS1(SS1),.SS2(SS2));
speaker u3(.CLK1(CLK1),.ET(X6),.COUT(COUT));
endmodule
第五章 波形仿真图
一、计时模块波形仿真图
共 16 页 第 19 页
二、报警模块波形仿真图
三、顶层模块波形仿真图
共 16 页 第 20 页
第六章 管脚锁定及硬件连线
一、管脚锁定
CLK>chip=timer;Input Pin=75
CLKM>chip=timer:Input Pin=83
CLK1> chip=timer;Input Pin=85
COUT> chip=timer;Output Pin=38
CRN> chip=timer;Input Pin=39
DO> chip=timer;Input Pin=53
D1> chip=timer;Input Pin=47
D2> chip=timer;Input Pin=46
D3> chip=timer;Input Pin=45
D4> chip=timer;Input Pin=44
共 16 页 第 21 页
D5> chip=timer;Input Pin=41
LDN> chip=timer;Input Pin=40
LED0> chip=timer;Output Pin=173
LED1> chip=timer;Output Pin=174
LED2> chip=timer;Output Pin=175
LED3> chip=timer;Output Pin=176
LED4> chip=timer;Output Pin=177
LED5> chip=timer;Output Pin=179
LED6> chip=timer;Output Pin=187
SSO> chip=timer;Output Pin=191
SS1> chip=timer;Output Pin=192
SS2> chip=timer;Output Pin=193
共 16 页 第 22 页
引线说明:拨码开关使用数字开关组A,需外接引线。
心得体会
通过这次设计,初步对EDA有一个了解。
出于没有学习过这门课程,所以再课程设计开始时对于EDA就是一无所知。课程设计之初是做了一个简单的培训,关于软件和硬件的设计,算是入门训练吧。通过前两天的课程讲解,我对其有了初步的了解。之后就开始按照指导书中的例题就行练习,仿真,有进一步的掌握后就开始了自己的课程设计。由于我C++程序设计知识不扎实,所以导致这次软件设计困难重重,也让我明白了在这个领域知识的串联是非常普遍的,学好学扎实是我们必须要做到的要求。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力。在设计的过程中,可以说得是困难重重,但这毕竟第一次做,同时在设计的过程中发现了自己的不足之处。
在此还需要感谢郑兆兆老师和吕宏诗老师耐心的指导与帮助,使课设能够更加顺利的完成。
参考文献
1、 阎石主编. 《数字电子技术基础》(第五版).高等教等育出版社.2006.5,168-175页 ;
2、 李国丽、朱维勇、何剑春主编 《EDA与数字系统设计》(第2版).机械工业出版
共 16 页 第 23 页
社.2009.3,105-146页
共 16 页 第 24 页
因篇幅问题不能全部显示,请点此查看更多更全内容