数电课设报告.docx

上传人:b****1 文档编号:13638350 上传时间:2023-06-15 格式:DOCX 页数:69 大小:2.43MB
下载 相关 举报
数电课设报告.docx_第1页
第1页 / 共69页
数电课设报告.docx_第2页
第2页 / 共69页
数电课设报告.docx_第3页
第3页 / 共69页
数电课设报告.docx_第4页
第4页 / 共69页
数电课设报告.docx_第5页
第5页 / 共69页
数电课设报告.docx_第6页
第6页 / 共69页
数电课设报告.docx_第7页
第7页 / 共69页
数电课设报告.docx_第8页
第8页 / 共69页
数电课设报告.docx_第9页
第9页 / 共69页
数电课设报告.docx_第10页
第10页 / 共69页
数电课设报告.docx_第11页
第11页 / 共69页
数电课设报告.docx_第12页
第12页 / 共69页
数电课设报告.docx_第13页
第13页 / 共69页
数电课设报告.docx_第14页
第14页 / 共69页
数电课设报告.docx_第15页
第15页 / 共69页
数电课设报告.docx_第16页
第16页 / 共69页
数电课设报告.docx_第17页
第17页 / 共69页
数电课设报告.docx_第18页
第18页 / 共69页
数电课设报告.docx_第19页
第19页 / 共69页
数电课设报告.docx_第20页
第20页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数电课设报告.docx

《数电课设报告.docx》由会员分享,可在线阅读,更多相关《数电课设报告.docx(69页珍藏版)》请在冰点文库上搜索。

数电课设报告.docx

数电课设报告

数字电路与逻辑设计

课程设计报告

题目:

电梯控制器的设计与实现

 

专业:

班级:

学号:

姓名:

电话:

邮件:

分组:

完成日期:

指导教师:

团队成员:

姓名

班级

学号

贡献百分比

实验部分完成情况

(亮点、完成、基本完成、未完成、时间)

总分:

实验部分70%+

报告30%)

检查老师签名:

1课程设计概述

1.1课设目的

通过硬件描述语言VHDL的编程,深入了解并掌握可编程芯片PLD的设计技术,加强学生对《数字逻辑》课程所学知识综合利用的能力。

培养学生创造性思维能力和独立解决实际问题的能力。

1.2课设要求

(1)能够全面地应用课程中所学的基本理论和基本方法,完成从设计逻辑电路到设计简单数字系统的过渡。

(2)能力独立思考、独立查阅资料,独立设计规定的系统。

(3)能够独立地完成实施过程,包括安装、布线、测试和排除故障。

1.3课设任务

(1)制定出详细设计方案;

(2)通过VerilogHDL完成规定的设计任务,然后进行编译和仿真,保证设计的正确性;

(3)生成容丝图文件,下载到Basys2开发板,通过实际线路进行验证;

(4)对复杂系统的设计采取模块化、层次化的设计方法;

(5)撰写设计报告,并对存在的问题进行分析、提出改进意见。

1.4实验环境

开发环境ISEProjectNavigator:

ISE是使用XILINX的FPGA的必备的设计工具。

目前官方提供下载的最新版本是14.4。

它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。

ISE除了功能完整,使用方便外,它的设计性能也非常好,拿ISE9.x来说,其设计性能比其他解决方案平均快30%,它集成的时序收敛流程整合了增强性物理综合优化,提供最佳的时钟布局、更好的封装和时序收敛映射,从而获得更高的设计性能。

先进的综合和实现算法将动态功耗降低了10%。

Basys2开发板:

Basys2开发板是一个电路设计实现平台,任何人都可以通过它来搭建一个真正的数字电路。

Basys2是围绕着一个XilinxSpartan-3EFPGA芯片和一个AtmelAT90USBUSB控制器搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。

Basys2板上集成了大量的I/O设备和FPGA所需的支持电路,让用户能够构建无数的设计而不需要其他器件。

用户设计可以不局限于Basys2板本身,还可以通过四个标准的扩展连接口延伸到面包板、用户自定义电路或Pmod模板中。

所有6针接口上的信号都受到ESD和短路保护,从而确保在任何环境中的使用寿命。

Basys2开发板兼容所有版本的XilinxISE工具。

Basys2附带一个用于供电和编程的USB下载线,所以就不需要其他供电器件或编程下载线。

 

2基本方案设计

2.1设计需求

(1)电源开关同时作为电路总清零信号,当其状态为Off不工作,为On时电梯电路进入工作状态;

(2)电源打开,电源指示灯亮;

(3)电梯门开时,开关门指示灯亮,否则,灭;

(4)电梯上行时,上行指示灯亮,下行指示灯灭;

(5)电梯下行时,下行指示灯亮,上行指示灯灭;

(6)电梯处于某层时,所在楼层的led灯亮,否则灭;

(7)相邻两层运行时间为9s,用一盏Led灯连续闪烁9次表示,并用时间数码管显示倒计时;

(8)电梯初态1、3、6、8楼均可;

(9)电梯可上可下,它到达某楼层开门后有5s的自动关门设置,若在这5s期间,按下关门键,则立刻关门;

(10)楼层显示数码管显示电梯当前所在的楼层,同时计时显示数码管显示楼层间的倒计时,不运行时不显示时间;

(11)电梯处于某层时,可以选择要到达的楼层,但是选择本楼层没有任何反应;

(12)电梯运行原则

原则1:

每个被选择的楼层都要停,然后继续运行;

原则2:

目前运行方向优先,仅当电梯已到达当前设定的最高或最低层后,方能改变设定的运行方向和楼层;

原则3:

当电梯在运行过程中,按开门关门键无反应;

原则4:

当处理完所有的请求之后,电梯停在该层,如果再有请求,遵循就近原则。

2.2总体结构设计

图2-1

将电梯的运行简化为如图2-1的示意模型。

根据模型图,将电梯运行行为分状态进行处理,分为5个状态:

理想状态、上升状态、下降状态、开门状态和关门状态。

根据设计需求将电路分为以下6个模块:

电梯中心控制模块、请求综合模块、数码管译码显示模块、计数模块、楼层LED灯模块和时钟分频模块。

具体运行状态如下图2.2.1所示:

图2.2.1运行状态图

2.2.1时钟分频模块

模块需求:

该模块为时钟分频,共构建三个时钟脉冲,分别为1秒时钟,半秒时钟和显示扫描时钟。

1秒脉冲用于整个运行状态之中,所有模块和状态的改变时间为1秒。

半秒时钟用于9秒倒计时时的灯的闪烁控制,周期为半秒。

显示扫描时钟用于造成视觉延迟,使楼层和时间同时显示。

模块需求:

该模块是为了实现对Basys2开发板的系统时钟进行分频,以满足电路显示所需要的频率。

端口说明:

Inputports:

clk。

为Basys2开发板系统时钟

Outputports:

cp,cp2,cp3。

其中cp为一秒分频时钟,cp2为数码管显示扫描时钟,cp2为倒计时点的半秒闪点时钟。

引脚说明:

NET"clk"TNM_NET=clk;

TIMESPECTS_clk=PERIOD"clk"20nsHIGH50%;

NET"clk"LOC=B8;

2.2.2LED灯显示管理模块

模块需求:

该模块是为了直观的通过LED灯的亮暗来指示电路的运行状态和当前电梯所处在的状态以及楼层。

到达楼层则对应楼层灯亮起;上升和下降各对应一盏灯;开门灯亮关门灭;总开关开启则灯亮。

端口说明及引脚绑定:

Inputports:

总开关(reset),1秒时钟(cp),下一个状态(next_state),当前显示楼层(led),倒计时综合(tim),开关门键(open_close),5秒计数器(count1),9秒计数器(count2)。

Outputports:

电源灯(light_sum),开关门指示灯(light_5),楼层指示灯(light1,light3,light6,light8),上行指示灯(ligh_up),下行指示灯(light_dw)。

引脚绑定:

NET"light1"LOC=P4;

NET"light3"LOC=N4;

NET"light6"LOC=N5;

NET"light8"LOC=P6;

NET"light_5"LOC=M5;

NET"light_dw"LOC=M11;

NET"light_sum"LOC=G1;

NET"light_up"LOC=P7;

2.2.3数码管显示模块

模块需求:

该模块是为了显示当前电梯所在楼层、电梯运行时所要求的两项倒计时和半秒闪点,倒计时包括楼层间运行时间9s倒计时和开门后5s倒计时。

该模块同时又分为四个数码管位选模块和七段译码器显示模块。

数码管位选模块端口说明及引脚绑定:

Inputports:

数码管选位扫描时钟(cp2),倒计时(tim),当前楼层(led)。

Outputports:

输出数码管编码(dx),时间和楼层输出总汇总参数(dout),所选择的数码管接口(d_tmp_num)。

七段译码器显示模块端口说明及引脚绑定:

Inputports:

输出数码管编码(dx),时间和楼层输出总汇总参数(dout),所选择的数码管接口(d_tmp_num),半秒闪点参数(sec)。

Outputports:

译码器对应的显示编码(q_out)。

引脚绑定:

NET"dx[3]"LOC=F12;

NET"dx[2]"LOC=J12;

NET"dx[1]"LOC=M13;

NET"dx[0]"LOC=K14;

NET"dout[7]"LOC=L14;

NET"dout[6]"LOC=H12;

NET"dout[5]"LOC=N14;

NET"dout[4]"LOC=N11;

NET"dout[3]"LOC=P12;

NET"dout[2]"LOC=L13;

NET"dout[1]"LOC=M12;

NET"dout[0]"LOC=N13;

2.2.4电梯中心控制模块

模块需求:

该模块部分是电梯控制系统的核心部分,它的功能是对请求的一系列回应,不断改变电梯运行状态。

端口说明:

Inputports:

电源开关(reset),5秒计数器(count1),开关门请求(open_close),目的楼层请求(d),下降楼层请求(dw),上升楼层请求(up),当前楼层编码(now_f),当前模式(state),下一步模式(next_state),半秒时钟(cp3),楼层(led),电梯运行状态(ud_f)。

Outputports:

下一个状态(next_state),当前状态(state),到达当前最高楼层(top),到达当前最低楼层(down),楼层(led),当前楼层编码(now_f),电梯运行状态(ud_f)。

2.2.5请求综合模块

模块需求:

将所有电平信号转为冲激信号,对输入的命令进行综合分析。

Inputports:

所有上行请求(up3,up6,up1),所有下降请求(dw6,dw3,dw8),所有内部目的楼层请求(d1,d3,d6,d8),开关门信号(open_close),电源开关信号(reset)。

Outputports:

上行请求(up),下降请求(dw),目的楼层请求(d)。

引脚绑定:

NET"d1"LOC=A7;

NET"d3"LOC=M4;

NET"d6"LOC=C11;

NET"d8"LOC=G12;

NET"dw3"LOC=F3;

NET"dw6"LOC=B4;

NET"dw8"LOC=K3;

NET"up1"LOC=N3;

NET"up3"LOC=E2;

NET"up6"LOC=G3;

NET"open_close"LOC=P11;

NET"reset"LOC=L3;

NET"reset"CLOCK_DEDICATED_ROUTE=FALSE;

NET"d1"CLOCK_DEDICATED_ROUTE=FALSE;

NET"d3"CLOCK_DEDICATED_ROUTE=FALSE;

NET"d6"CLOCK_DEDICATED_ROUTE=FALSE;

NET"d8"CLOCK_DEDICATED_ROUTE=FALSE;

NET"dw3"CLOCK_DEDICATED_ROUTE=FALSE;

NET"dw6"CLOCK_DEDICATED_ROUTE=FALSE;

NET"dw8"CLOCK_DEDICATED_ROUTE=FALSE;

NET"up1"CLOCK_DEDICATED_ROUTE=FALSE;

NET"up3"CLOCK_DEDICATED_ROUTE=FALSE;

NET"up6"CLOCK_DEDICATED_ROUTE=FALSE;

NET"open_close"CLOCK_DEDICATED_ROUTE=FALSE;

2.2.6计数模块

模块需求:

该模块用于上行楼层的9秒计数、开门的5秒计数和半秒闪点的计数,最后对于要输出的时间进行汇总输出。

Inputports:

一秒分频信号(cp),开关门信号(opn_close),开关门信号(reset)。

Outputports:

9秒计数器(count2),5秒计数器(count1),倒计时时间汇总(tim),半秒计数(sec)。

 

2.3详细设计

该体统详细设计如下图2.3.1所示。

时钟分频模块产生实验所需脉冲;外部输入请求通过请求综合模块将所有电平信号转换为脉冲信号,并且将信号整理分类,将请求与楼层编码对应;整理好的请求将在电梯中心控制系统控制电梯的运行状态,根据不同的条件进行不同的变化。

当楼层数到达1、3、6或8层,对应LED灯亮起,同时上行、下行、开关门、电源总开关等均由LED等显示模块控制。

根据不同状态对应不同计数,最终由数码管显示模块控制显示楼层数和时间。

图2.3.1系统总体流程图

2.3.1时钟分频

该模块是为了实现对Basys2开发板的系统时钟进行分频,以满足电路显示所需要的频率。

该模块实现3种不同频率的信号以便实验,分别为1秒信号,半秒信号和数码管扫描信号。

具体设计如下2.3.2所示:

图2.3.2时钟分频流程图

2.3.2LED显示管理模块

该模块管理LED灯,当到达指定状态时对应LED灯亮起。

具体如下图2.3.3所示:

图2.3.3LED灯变化流程图

2.3.3数码管显示模块

该模块控制9秒倒计时、5秒倒计时、楼层数显示和半秒闪点显示。

具体如下图2.3.4所示。

图2.3.4数码管显示流程图

2.3.4电梯中心控制模块

根据命令调整电梯的运行状态,当完成某一状态时刷新命令。

具体如下图2.3.5所示。

图2.3.5电梯中心控制模块流程图

2.3.5请求综合模块

该模块实现对于机械输入请求的综合。

将所有电平请求转换为脉冲信号。

具体流程见下图2.3.6所示。

2.3.6请求综合流程图

2.3.6计数模块

该模块实现9秒计数、5秒计数和半秒闪点的计数,并将其综合至同一量统一输出。

具体流程图如下2.3.7所示。

图2.3.7计数流程图

2.4实验过程与调试

2.4.1仿真结果

主模块有13个输入,16个输出,其中输入依次为:

系统时钟(clk)、电源开关(reset)、内部请求(d1,d3,d6,d8)、外部请求(up1,up3,up6,dw3,dw6,dw8)、开关门键(open_close);输出依次为:

5秒计时器(count1)、9秒计时器(count2)、楼层灯(light1,light3,light6,light8)、开关门灯(light_5)、电源总开关灯(light_sum)、上行灯(light_up)、下行灯(light_dw)、楼层请求汇总(d,dw,up)、倒计时汇总(tim)、楼层(led)。

为仿真便利,所有时钟周期均对应缩小。

仿真文件如下所示:

moduletest;

//Inputs

regreset;

regclk;

regup3;

regup6;

regup1;

regdw6;

regdw3;

regdw8;

regd1;

regd3;

regd6;

regd8;

regopen_close;

wirelight1;

wirelight3;

wirelight6;

wirelight8;

wirelight_5;

wirelight_up;

wirelight_dw;

wirelight_sum;

wire[7:

0]dout;

wire[3:

0]led,tim;

wire[3:

0]count1;

wire[3:

0]count2;

wire[7:

0]d;

wire[7:

0]dw;

wire[7:

0]up;

//Outputs

//InstantiatetheUnitUnderTest(UUT)

tk1uut(

.reset(reset),

.clk(clk),

.up3(up3),

.up6(up6),

.up1(up1),

.dw6(dw6),

.dw3(dw3),

.dw8(dw8),

.d1(d1),

.d3(d3),

.d6(d6),

.d8(d8),

.light1(light1),

.light3(light3),

.light6(light6),

.light8(light8),

.light_5(light_5),

.light_up(light_up),

.light_dw(light_dw),

.light_sum(light_sum),

.open_close(open_close),

.dout(dout),

.led(led),

.tim(tim),

.count1(count1),

.count2(count2),

.up(up),

.dw(dw),

.d(d)

);

alwaysbegin

#1clk=~clk;

end

initialbegin

clk=1;

reset=0;

up1=0;

up3=0;

up6=0;

d1=0;

d3=0;

d6=0;

d8=0;

dw3=0;

dw6=0;

dw8=0;

open_close=0;

//Wait100nsforglobalresettofinish

#45reset=1;

#1reset=0;

//Addstimulushere

end

endmodule数据全部初始化为0,而后电源按键(reset)脉冲一次启动程序,所有数据处于初始化状态,电梯位于1楼。

电梯初始状态仿真图如2.4.1所示。

图2.4.1电梯初始状态仿真测试图

之后外部按键up1,门开,倒计时5秒关门,之后内部按键d3,电梯状态仿真图如下2.4.2所示。

图2.4.2电梯运行仿真测试图

此时电梯处于三楼时,同时又内部请求d8和外部请求dw6,up1。

此时light_up亮,电梯应向上升到6楼开门之后到8楼开门后下降(light_dw亮)至1楼停止,到达对应楼层时灯亮;开门时light_5亮。

电梯运行如下图2.4.3所示。

图2.4.3电梯运行仿真测试图

此时电梯处于一楼,按键up3;当电梯运行至2楼时输入请求d1。

电梯会先处理up3到达3楼,之后返回1楼停止。

到达对应状态时对应灯亮。

电梯运行仿真如下图2.4.4所示。

图2.4.4电梯运行仿真测试图

以上仿真均与理论相符,说明设计正确。

2.4.2主要故障与调试

(1)故障1

问题描述:

某些地方的reset不起初始化作用

问题分析:

在某些always的敏感信号中未加入reset的初始化部分。

解决方法:

在always的敏感信号中加入reset的初始化部分。

(2)故障2

问题描述:

在下降过程中外部输入向上信号或在上升过程中输入向下信号,到达该楼层时也会开门。

问题分析:

在上升和下降状态时没有对信号进行分类处理。

解决方法:

改变写法,让上升请求只能在上升状态下实现,下降请求只能在下降状态下实现。

2.4.3模块内部图

1、主模块

参见图2.4.5,其功能为实现电梯运行总控制。

图2.4.5电梯控制系统顶层模块

输入:

clk:

系统时钟端

reset:

开关键

up3:

上3楼

up6:

上6楼

up1:

上1楼

dw6:

下6楼

dw3:

下3楼

dw8:

下8楼

d1:

到1楼

d3:

到3楼

d6:

到6楼

d8:

到8楼

open_close:

开关门键

输出:

reg[3:

0]count1:

5秒计数器

reg[3:

0]count2:

9秒计数器

reglight_5:

电源灯

light_up:

上升灯

light_dw:

下降灯

light1:

1楼灯

light3:

3楼灯

light6:

6楼灯

light8:

8楼灯

reglight_sum;总开关灯

reg[7:

0]dout:

总输出

reg[7:

0]d:

'到'楼层汇总

reg[7:

0]up:

'上'楼层汇总

reg[7:

0]dw:

'下'楼层汇总

reg[3:

0]led:

楼层

reg[3:

0]tim:

时间汇总

2.5功能测试

2.5.1电源总开关功能测试

按下reset键,light_sum灯亮,楼层处于1楼,时间显示为0。

测试如下图2.5.1所示

图2.5.1电源总开关功能测试

2.5.2电梯控制系统功能测试

当前电梯处于1楼,按下up1键,5秒倒计时开门。

测试如下图2.5.2所示。

图2.5.2开关门功能测试

同时按下up3,d6,dw8键,电梯上升,在3,6,8楼各停一次。

测试结果如下图2.5.3至图2.5.7所示

图2.5.3电梯运行至3楼开门状态图

图2.5.4电梯继续向上运行状态图

图2.5.5电梯运行至6楼开门状态图

图2.5.6电梯继续上升运行状态图

图2.5.7电梯停留在8楼状态图

此时电梯位于8楼,按下dw6键,当楼层显示为7时按下d8,则电梯会先下降到6楼后上升至8楼,最后一直停留在8楼。

测试如下图2.5.8至图2.5.11所示。

图2.5.8电梯下降至7楼状态图

图2.5.9电梯至6楼开门状态图

图2.5.10电梯上升至7楼状态图

图2.5.11电梯停留在8楼状态图

3实验方案的改进意见

3.1设计需求

(1)在实际生活中,电梯的输入都是一次性按键,而给的开发板上使用开关来进行输入,所以开关要做到无论何时关对输入无影响。

(2)将数码管显示更加清晰化,将各显示分开,使不使用的数码管不亮。

3.2改进方案

3.2.1请求综合模块结构设计

将所有电平信号转换为脉冲信号,保证命令的一次性输入。

具体转变如下表3.2.1所示

表3.2.1电平信号转换为脉冲信号

输入

输出

posedgeup1

up1_change=1

posedgeup3

up3_change=1

posedgeup6

up6_change=1

posedgedw3

dw3_change=1

posedgedw6

dw6_change=1

posedgedw8

dw8_change=1

posedged1

d1_change=1

posedged3

d3_change=1

posedged6

d6_change=1

posedged8

d8_change=1

3.2.2数码管显示模块详细设计

该模块将进行数码管的选择显示,是输出更加清晰,符合实际生活。

具体如下图3.2.2所示。

图3.2.2数码管显示模块详细流程

3.3仿真与测试

3.3.1请求综合模块模块仿真

给出仿真程序:

`timescale1ns/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2