EDA课程设计密码锁.docx
- 文档编号:7152975
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:23
- 大小:202.57KB
EDA课程设计密码锁.docx
《EDA课程设计密码锁.docx》由会员分享,可在线阅读,更多相关《EDA课程设计密码锁.docx(23页珍藏版)》请在冰豆网上搜索。
EDA课程设计密码锁
课程设计说明书
题目:
学院(系):
年级专业:
学号:
学生姓名:
指导教师:
教师职称:
目录
摘要:
………………………………………………………4
引言:
…………………………………………………………5
第一章整体设计说明:
………………………………………6
第二章各模块的介绍:
……………………………………7
第一节蜂鸣器模块的介绍:
………………………7
第二节显示模块的介绍:
…………………………10
第三节控制模块的介绍:
…………………………15
第四节顶层模块的介绍:
…………………………22
第三章管脚锁定及硬件连线:
……………………………27
设计心得体会:
……………………………………………29
参考文献:
…………………………………………………300
摘要
现代生活中,数字电路产品与我们接触的是越来越平凡了,包括计算机、电子表、智能仪器表及其它很多领域中,它给我们带来的不仅是工作上的方便,而且也给我们的生活娱乐添滋加彩。
这次EDA课程设计中,我做的是密码锁,基于设计要求,本文主要是VHDL语言着手。
首先简单介绍一下EDA、VHDL等的有关知识,其次介绍了一下设计要求和整体设计思想,随后我对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,再运用VHDL语言特点,分别写出各模块的程序代码和原理结构图和波形图,然后是引脚连接电路。
最后是此次设计的心得体会和参考书。
引言
数字电路主要是基于两个信号(我们可以简单的说是有电压和无电压),用数字信号完成对数字量进行算术运算和逻辑运算的电路我们称之为数字电路,它具有逻辑运算和逻辑处理等功能,数字电路可分为组合逻辑电路和时序逻辑电路。
1EDA简介
EDA(ElectronicsDesignAutomation)技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。
它是为解决自动控制系统设计而提出的,从70年代经历了计算机辅助设计(CAD),计算机辅助工程(CAE),电子系统设计自动化(ESDA)3个阶段。
前两个阶段的EDA产品都只是个别或部分的解决了电子产品设计中的工程问题;第三代EDA工具根据工程设计中的瓶颈和矛盾对设计数据库实现了统一管理,并提出了并行设计环境概念,提供了独立于工艺和厂家的系统级的设计工具。
EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。
目前应用比较广泛的硬件描述语言就是VerilogHDL。
2VerilogHDL简介
VerilogHDL和VHDL一样,是目前大规模集成电路设计中最具代表性、使用最广泛的硬件描述语言之一。
VerilogHDL具有如下特点:
(1)能够在不同的抽象层次上,如系统级、行为级、RTL级、门级和开关级,对设计系统进行精确而简练的描述。
(2)能够在每个抽象层次的描述上对设计进行仿真验证,及时发现及时发现可能存在的错误,缩短设计周期,并保存整个设计过程的正确性。
(3)由于代码描述与工艺过程实现无关,便于设计标准化,提高设计的可重用性。
如国有C语言的编程基础经验,只需很短的时间就能学会和掌握VerilogHDL,因此,VerilogHDL可以作为学习HDL设计方法的入门和基础。
第一章整体设计说明
本设计名称为密码锁,共有四个模块,分别为顶层模块、显示模块、蜂鸣器模块、控制模块。
有顶层模块调用个分模块来实现所需功能。
设计所要实现的功能为:
1手动用12个拨码开关设计三位密码(0-9)或开锁。
2再输入密码开锁,当密码输入正确时,指示灯亮,表示开锁成功。
3当密码输入错误时,蜂鸣器响五秒,表示开锁失败。
设计思想为:
本设计中以007为万能密码以防止忘记密码是使用。
开始时锁处于关闭的状态,这时候输入万能密码将锁打开。
再锁处于打开的状态是设计密码,几此时要实现指示灯处于亮的状态,以说明此时锁处于开的状态。
设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。
再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。
在设计时要注意各模块时钟信号的频率,不然很难得到正确的结果。
第二章各模块的介绍
第一节蜂鸣器模块的介绍
1蜂鸣器模块
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
如图2.1所示,蜂鸣器模块包含1个蜂鸣器BUZZER和一个跳线器JBUZZER。
当使用蜂鸣器时,此跳线器短接。
同时独立扩展下载板CPLD/FPZA的JP2_CF的SPEAKER接高电平时,蜂鸣器工作。
SPEAKER
COUT
ENA
CLK2K@
图2.2蜂鸣器原理图结构
蜂鸣器程序:
此程序共有两个输入信号分别为ENA和CLK2,,一个输出信号COUT。
当从信号输入模块检测到有开关输入时,信号ENA已置1,CLK2上升沿到来时,有程序使COUT为1,蜂鸣器发出报警信号,并且进入一个5秒钟的循环,时间到达时,跳出循环,蜂鸣器停止报警。
modulespeaker(ENA,CLK2,COUT);//ENA为使能信号,CLK为时钟信号规定工作频率
inputENA,CLK2;
outputCOUT;
regCOUT;
reg[3:
0]Q1;
always@(posedgeCLK2)//CLK2为敏感信号
begin
if(ENA&&Q1<6)//当ENA为1并且Q1小于6时执行下面的语句
Q1=Q1+1;
if(~ENA)//ENA为0时,执行下面的语句
Q1=0;
end
always
begin
if(Q1==6||Q1==0)
COUT='b0;
else
COUT='b1;
end
endmodule
如下面的功能波形图所示,当ENA为1时且CLK2上升沿到来时,COUT被置1,即蜂鸣器开始发出响声。
说明此程序能正确的实现所需的功能。
图2.3蜂鸣器功能波形图
第二节动态显示模块
动态显示简介:
动态显示技术让不同的的数码管分时点亮。
即,某一个数码管的字段码从计算机的一个IO接口输出,通过SS0,SS1选通该数码管,让这个数码管显示自己的字符几个毫秒,然后将下一个数码管的字段码从计算机的同一个IO口输出。
通过SS0,SS1选通下一个数码管,让下一个数码管显示自己的字符几个毫秒,一次循环。
由于人眼响应较慢,最后的效果是每一个数码管都在显示各自的字符。
动态显示模块的程序:
此模块共有四个输入信号A、B、C、CLK,三个输出信号分别为Q、SS1、SS2。
SS1、SS2可对三个数码管进行片选,使它们分别亮。
A、B、C接段选,以控制数码管显示什么数字。
表1-1BCD-七段数码管的真值表
输入输出
DCBAY1Y2Y3Y4Y5Y6Y7字形
000011111100
000101100001
001011011012
001111110013
010001100114
010110110115
011010111116
011111100007
100011111118
100111100119
moduleshow(A,B,C,clk,Q,ss1,ss0);
input[3:
0]A,B,C;
inputclk;
output[6:
0]Q;
outputss1,ss0;
reg[1:
0]M;
regss0,ss1;
reg[6:
0]Q;
always@(posedgeclk)
begin
M=M+1;
if(M=='b11)
M<='b00;
end
always@(posedgeclk)
begin
if(M=='b00)
begin
ss1<=0;
ss0<=0;
case(A)
0:
Q<='b0111111;
1:
Q<='b0000110;
2:
Q<='b1011011;
3:
Q<='b1001111;
4:
Q<='b1100110;
5:
Q<='b1101101;
6:
Q<='b1111101;
7:
Q<='b0000111;
8:
Q<='b1111111;
9:
Q<='b1101111;
endcase
end
if(M=='b01)
begin
ss1<=0;
ss0<=1;
case(B)
0:
Q<='b0111111;
1:
Q<='b0000110;
2:
Q<='b1011011;
3:
Q<='b1001111;
4:
Q<='b1100110;
5:
Q<='b1101101;
6:
Q<='b1111101;
7:
Q<='b0000111;
8:
Q<='b1111111;
9:
Q<='b1101111;
endcase
end
if(M=='b10)
begin
ss1<=1;
ss0<=0;
case(C)
0:
Q<='b0111111;
1:
Q<='b0000110;
2:
Q<='b1011011;
3:
Q<='b1001111;
4:
Q<='b1100110;
5:
Q<='b1101101;
6:
Q<='b1111101;
7:
Q<='b0000111;
8:
Q<='b1111111;
9:
Q<='b1101111;
endcase
end
end
endmodule
图2.4显示模块功能结构图
如图2.5所示SS0、SS1不断的进行片选使三个数码管分别显示所输入的密码,
以实现对密码的动态显示。
图形所示与要求完全符合,说明程序正确。
图2.5动态显示模块功能波形图
第三节控制模块
控制模块简介:
本模块可以通过程序的执行实现对密码进行设置和进行开琐,开始时锁处于关闭的状态,即为1,输入事先设置的万能密码开琐,在锁开的状态时设置密码,然后将锁关闭,再输入三位数字进行开锁,正确时为1既灯亮,否则为0为1,即蜂鸣器响。
图2.6控制模块的结构原理图
控制模块的程序为:
/*
clk:
时钟信号
n0,n1,n2,n3,n4,n5,n6,n7,n8,n9:
密码输入信号
lock:
状态显示信号
close:
关信号
set:
密码确认信号
*/
modulecode(lock,warning,num1,num2,num3,clk,n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close);
inputn0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk;
output[3:
0]num1,num2,num3;
outputlock,warning;
reglock,warning;
reg[3:
0]num1,num2,num3,temp;
reg[11:
0]code;
always@(posedgeclk)
begin
if({n0,n1,n2,n3,n4,n5,n6,n7,n8,n9}!
=10'b0000000000)
begin
case({n9,n8,n7,n6,n5,n4,n3,n2,n1,n0})
10'b0000000001:
temp=1'd0;
10'b0000000010:
temp=1'd1;
10'b0000000100:
temp=1'd2;
10'b0000001000:
temp=1'd3;
10'b0000010000:
temp=1'd4;
10'b0000100000:
temp=1'd5;
10'b0001000000:
temp=1'd6;
10'b0010000000:
temp=1'd7;
10'b0100000000:
temp=1'd8;
10'b1000000000:
temp=1'd9;
endcase
num3<=num2;
num2<=num1;
num1<=temp;
end
if(close)
begin
num1<=0;
num2<=0;
num3<=0;
end
end
always@(posedgeclk)
begin
if(lock==0&&set)
begin
if(code=={num3,num2,num1})
lock<=1;
elseif({num3,num2,num1}==16'b000000000111)
lock<=1;
elsewarning<=1;
end
if(lock==1&&close)
lock<=0;
if(close)
warning<=0;
end
always@(posedgeclk)
begin
if(lock==1&&set)
code<={num3,num2,num1};
end
endmodule
如图2.7所示当输入万能密码007,并使set置1,运行程序后lock被置1。
说明开锁成功。
有图可知与所需功能相同,说明程序正确。
图2.7输入万能密码后的波形图
如图2.8所示在锁开的状态下设置密码123,并使close置1,使锁关闭,再set使置1,此时lock置0,表示锁关闭。
实现设置密码的功能。
图2.8设置波形图
如图2.9所示为解锁波形图,输入密码123即正确的密码进行解锁。
因为输入的密码正确所以使lock置1,表示开锁成功。
图2.9成功开锁波形图
如图2.10所示,当输入错误密码234时,warning被置1,表示开锁失败。
图2.10开锁失败的波形图
第四节顶层模块
任何用VerilogHDL描述的电路设计模块,皆可用模块例话语句,例化一个元件,来实现电路系统的设计。
模块例化语句格式与逻辑门例化语句格式相同,具体格式如下:
元件名<例化元件的名称>(端口列表);
其中,元件名师已经设计好的基本元件的名称;例化元件的名称是一个可选项,他的作用类似于电路系统板上的一个插座的名称,基本原件就插在它的上面;而“端口列表”用于描述设计模块元件的引脚与插座引脚的连接关系。
端口列表的方法有位置关联法和名称关联法两种。
图2.11顶层模块的原理结构图
moduledingceng(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk1,clk2,clk3,lock,alarm,Q,ss1,ss0);
inputn0,n1,n2,n3,n4,n5,n6,n7,n8,n9;
inputset,close;
inputclk1,clk2,clk3;
outputlock,alarm,ss1,ss0;
output[6:
0]Q;
reglock,alarm;
regss0,ss1;
reg[6:
0]Q;
wire[3:
0]X1,X2,X3;
wireX4,X5;
codeu1(.lock(lock),.warning(X4),.num1(X1),.num2(X2),.num3(X3),.clk(clk1),.n0(n0),.n1(n1),.n2(n2),.n3(n3),.n4(n4),.n5(n5),.n6(n6),.n7(n7),.n8(n8),.n9(n9),.set(set),.close(close));
showu2(.A(X1),.B(X2),.C(X3),.clk(clk2),.Q(Q[6:
0]),.ss1(ss1),.ss0(ss0));
speakeru3(.ENA(X4),.CLK2(clk3),.COUT(alarm));
endmodule
此程序的作用是实现几个模块的配合工作,它能实现对密码的设置和显示,同时在密码正确时时灯亮,在密码错误时蜂鸣器发出五秒钟的响声。
图2.12用万能密码开锁的波形图
图2.13设置密码的波形图
图2.14开锁失败的波形图
第三章管脚锁定及硬件连
电路功能模拟正确后,我们就要对器件进行编程下载,此时首先要为项目指定一个编程器件系列,我们使用的是Altera公司的可编程逻辑器件ACEX1K系列的EPIK30QC208-3。
接下来,就要根据芯片特点和实际设计需要来对输入、输出管脚规定具体的引脚号码。
具体输入输出的引脚连接:
Alarm>chip=dingceng;outputpin=38
Clk1>chip=dingceng;inputpin=75
Clk2>chip=dingceng;inputpin=83
Clk3>chip=dingceng;inputpin=85
Close>chip=dingceng;inputpin=173
lock>chip=dingceng;inputpin=12
n0>chip=dingceng;inputpin=39
n1>chip=dingceng;inputpin=40
n2>chip=dingceng;inputpin=41
n3>chip=dingceng;inputpin=44
n4>chip=dingceng;inputpin=45
n5>chip=dingceng;inputpin=46
n6>chip=dingceng;inputpin=47
n7>chip=dingceng;inputpin=53
n8>chip=dingceng;inputpin=86
n9>chip=dingceng;inputpin=87
Q0>chip=dingceng;inputpin=88
Q1>chip=dingceng;inputpin=89
Q2>chip=dingceng;inputpin=90
Q3>chip=dingceng;inputpin=176
Q4>chip=dingceng;inputpin=92
Q5>chip=dingceng;inputpin=93
Q6>chip=dingceng;inputpin=197
set>chip=dingceng;inputpin=198
ss0>chip=dingceng;inputpin=174
ss1>chip=dingceng;inputpin=1
图3.1各模块连接图
设计心得体会
通过这次设计,使我对EDA产生了浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的开心。
在编写蜂鸣器模块时,我遇到了很大的困难,一直被定时问题所困扰,解决了这个问题时,我特别的高兴。
写顶层文件的程序时,也遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了。
再对控制模块仿真时,虽然语法正确,但连最基本的输入输出都进不去,我们弄了很多遍都不行,后来再老师的指导下我们才解决了这个问题。
另一个问题就是三个时钟信号的配合,其中显示模块和控制模块的信号频率要高,而蜂鸣器模块的频率就要很低,不然很难实现定时5秒钟。
其次,在进行引脚连接时一定要细心,有些引脚不能使用,我因为没注意使得开始时一直不能得到正确的结果。
这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到的问题,反映出来我的许多不足之处,我以后要努力克服缺点。
总的来说,这次设计的密码锁还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下和自己的努力,终于都得到了解决,因此很有成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。
参考文献
常晓明李媛媛.《Verilog-HDL工程实践入门》编著(第1版).北京航空航天大学出版社2005.8:
53页——102页.
阎石主编.《数字电子技术基础》(第五版).高等教等育出版社.2006.5:
168页——175页.
李国丽朱维勇何剑春.《EDA与数字系统设计》(第2版).机械工业出版社.2009.3:
185页——260页.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 密码锁
![提示](https://static.bdocx.com/images/bang_tan.gif)