版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华 中 科 技 大 学 课 程 设 计 报 告数字电路与逻辑设计课程设计报告团队成员姓名班级学号贡献百分比课程设计实验部分:实验完成情况、时间(亮点、完成、部分完成)总分(实验部分70% +报告30%)设计1设计2检查结果检查名次检查老师报告人 : 实验指导教师: 报告批阅教师: 计算机科学与技术学院2016 年 9月 28日数字逻辑课程设计学生工作表 班 级姓 名学 号验收时间(教师填写)(学生填写)课设进度记录(学生填写)各自承担课程设计具体工作量记录1、姓名: (1)设计1:a.顶层clock模块的编写和测试b.分钟秒钟clock60模块的编写和测试c.分频 dclk 、dclk2模块的
2、编写和测试d.led灯模块的编写和测试(2)设计2:a.电梯状态判断模块的编写和测试b.电梯运行控制模块的编写和测试c.电梯开关门模块的编写和测试d.主模块的编写和各个模块的整合e.电梯指示灯模块的编写和测试2、姓名: (1)设计1:a.降频dclk3模块的编写和测试b.整点提示ring模块的编写和测试c.小时clock24模块的编写(2)设计2:a.降频dclk模块的编写和测试b.电梯升降模块的编写和测试c数码显示管模块的编写和测试3、难点、亮点(1)电子钟设计中,修改时间的功能中,可以实现快速地,自动加、减修改时间,方便快捷。其难点在于如何实现快速修改和如何实现又加又减修改,具体解决方法见
3、下文。(2)电梯设计中,亮点有:每个按键都有指示灯,很明确哪一层有请求,到了该层灯就灭了。这个设计难点在于按键区分上下键,状态转移条件多,输入变量繁多日期进度9.21(1)接受任务;(2)决定设计1的题目和二人的任务分配;(3)大体明确设计1的整体结构设计;9.22(1) 完成设计1的降频 clock60模块编写和测试;(2) 协助测试clock24模块;9.23(1) 完成设计1整点提示led灯模块编写和测试;(2) 编写时钟 dclk 、dclk2模块。9.24(1) 完成设计1的顶层clock模块编写和测试;(2) 完成与主模块的变量统一。9.26(1) 决定设计2的题目和二人任务分配;
4、(2)大体明确设计2的整体结构设计;9.27(1) 完成设计2电梯状态判断和电梯运行控制模块的编写和测试;(2) 协助同组调试bug9.28(1) 完成电梯开关门模块和电梯指示灯模块的编写和测试(2) 整合主模块9.29(1)编写报告9.30(2) 编写报告实验平台故障记录(学生填写,请注明实验平台的编号)无故障。重要说明1、 时间安排:课内2周。2、 验收准备:1) 完成本表学生应该填写部分;2) 同组的每位学生必须都能以独自完成的方式应对任何形式的验收;3) 完成课程设计报告书(格式参见模板);4) 将源程序和报告的电子文档交班长。3、 检查过程: 1) 提交验收准备材料,请求老师验收,之
5、后按验收老师的要求做;2) 在开发平台上根据验收老师的要求进行演示;3) 检查过程中独立回答老师提出的相关问题;4) 验收老师有权根据具体情况调整验收的内容与方式;5) 验收完成后关闭电源,整理好设备。4、 评分标准:1) 同组者工作量的分配;2) 在完成控制器基本要求外,有亮点为加分项;3) 在规定时间内完成控制器基本要求;4) 在规定时间内完成控制器部分基本要求;5) 检查时间。5、 课程设计判定为不合格的一些情形: (本人已阅读此条款1-5项:签名 )1) 请人代做或冒名顶替者;2) 替人做且不听劝告者;3) 课程设计报告内容抄袭或雷同者;4) 课程设计报告内容与实际实验内容不一致者;5
6、) 课程设计代码抄袭者。目 录1课程设计概述61.1课设目的61.2课设要求61.3课设任务61.4实验环境62基本方案设计82.1电子钟设计82.1.1目的82.1.2内容82.1.3设计思路92.1.4代码实现92.1.5仿真112.1.6主要故障122.1.7功能测试122.1.8实验中遇到的主要问题及解决方法132.1.9层次设计的体会132.2电梯控制系统设计142.2.1目的142.2.2内容142.2.3设计思路142.2.4代码实现142.2.5仿真过程142.2.6主要故障152.2.7功能测试162.2.8实验中遇到的主要问题及解决方法162.2.9实验方案的改进意见163
7、总结与心得183.1课设总结183.2课设心得184 参考文献19附 录1(源程序)20附 录2课程设计报告的格式要求补充说明21 1 课程设计概述1.1 课设目的(1)掌握Vivado软件的使用方法;(2)熟悉FPGA器件的使用方法;(3)用Verilog HDL进行较复杂逻辑电路的设计和调试;(4)学习数字系统的设计方法;(5)通过规范化的实验报告,培养学生良好的文档习惯以及撰写规范文档的能力。1.2 课设要求(1)能够全面地应用课程中所学的基本理论和基本方法,完成从设计逻辑电路到设计简单数字系统的过渡;(2)能力独立思考、独立查阅资料,独立设计规定的系统;(3)能够独立地完成实施过程,包
8、括电路设计、调试、排除故障、仿真和下载验证。1.3 课设任务本次课程设计每组要完成两个设计任务,具体参见数字逻辑课程设计题目。(1)各组要制定出详细设计方案,明确成员各自分工,认真记载毕业设计工作日记;(2)通过Verilog HDL完成规定的设计任务,采取模块化、层次化的设计方法设计电路,然后进行编译和仿真,认真记录实施过程中遇到的各自故障以及解决方法,保证设计的正确性;(3)生成bit文件,下载到开发板上,通过实际线路进行验证设计的正确性;(4)撰写设计报告,并对存在的问题进行分析、提出改进意见。1.4 实验环境开发环境为Vivado 2015.2软件和开发板NEXYS 4(芯片为XC7A
9、100TCSG324-1,封装为CSG3242)。 Vivado 2015.2是使用Xilinx FPGA必备的设计工具。它可以完成FPGA开发的全部流程,包括设计输入、仿真、 综合、布局布线、生成bit文件、配置以及在线调试等功能。 Nexys4 开发板简介:参见图1-1所示,它是一款简单易用的数字电路开发平台,可以支持在课堂环境中来设计一些行业应用。大规模、高容量的FPGA,海量的外部存储,各种USB、以太网、以及其它接口、这些让Nexys4-DDR能够满足从入门级组合逻辑电路到强大的嵌入式系统的设计。同时,板上集成的加速度、温度传感器,MEMs数字麦克风,扬声器放大器以及人量的I/O设备
10、,让Vexys4-DDR不需要增添额外组件而用于各种各样的设计。注意:开发板提供的时钟信号频率为100Mhz,对应的引脚封装编号为“E3”。 图 1-1 Nexys4通用I / O设备2 基本方案设计2.1 电子钟设计2.1.1 目的(1)掌握较复杂的逻辑设计和调试(2)学习用原理图+Verilog HDL语言设计逻辑电路;(3)学习数字电路模块、层次设计;(4)掌握Vivado软件的使用方法;(5)熟悉FPGA器件的使用。2.1.2 内容(1)设计并利用Nexys4 开发板来实现一个电子钟,它具有下述功能:a. 开发板上的6个7段数码管显示:时、分、秒;b. 能使电子钟复位(清零);c. 能
11、启动或者停止电子钟运行;d. 在电子钟停止运行状态下,能够修改时、分、秒的值;e. 具有整点提示功能。(2)要求整个设计为模块化系统分为若干模块,参见图2-1所示。(3) 将设计的代码下载到开发板上验证设计的正确性。2.1.3 设计思路本设计要求顶层采用原理图设计,各底层均采用Verilog HDL设计,参见图2-2所示。(1)时钟用一个模24的计数器来实现;FPGA6位7段数码管显示:时、分、秒时钟信号复位、启/停信号修改时、分、秒信号整点提示信号图2-1 电子钟的系统框图(2)分钟和秒钟要求分别用一个模60的计数器来实现;(3)要实现自动计时,则需要利用开发板提供的100Mhz提供脉冲,还
12、需要一个分频的模块dclk,使其吻合时钟速度;(4)整点提示功能则用一个ring的模块实现,分钟进位时开始计数从而实现提示5秒。clock(顶层模块)clock24 (时钟计数)clock60 (分钟和秒钟计数)ring (实现整点提示)dclk (分频,提供1Hz的时钟脉冲)各底层图2-2 电子钟模块图2.1.4 代码实现顶层模块首先要设计系统的原理图,然后用Verilog HDL实现它,底层各模块均采用Verilog HDL语言设计。电子钟顶层原理图,参见图2-3所示。图2-3 电子钟顶层原理图(1)顶层模块clock(用于整合整个时钟系统)Verilog 代码程序2-1:顶层模块Cloc
13、k(用于整合整个时钟系统)Verilog 代码module clock(clk,clr,tclk,timing,con,sub,speaker,c,light,count,state);input clk,clr,tclk,timing; /高频信号clk,清零信号clr,暂停信号tclk,停止时钟信号timinginput 2:0con;input 2:0sub;output speaker,c,light; /整点报时信号speaker,24点进位信号cwire 3:0s0;wire 3:0s1;wire 3:0m0;wire 3:0m1;wire 3:0h0;wire 3:0h1;out
14、put 6:0count;output 7:0state;wire low,low1,low2,co1,co2; /low是较高频信号(修改时更快),low1是led灯的降频信号,low2是正常的时钟信号wire2:0com;wire2:0sb;and /暂停且修改赋给信号com和sb and1(com0,tclk,con0), /con、sub分别绑定3个控制开关 and2(com1,tclk,con1), and3(com2,tclk,con2), and4(sb0,tclk,sub0), and5(sb1,tclk,sub1), and6(sb2,tclk,sub2);dclk d1(.
15、high(clk),.con1(timing),.low(low);dclk2 d2(.high(clk),.low(low1);dclk3 d3(.high(clk),.low(low2);clock60 c1(.clk(low),.cp(low2),.clks(low),.sclr(clr),.sub(sb0),.sclk(tclk),.stiming(com0),.co(co1),.v0(s0),.v1(s1);clock60 c2(.clk(low),.cp(low2),.clks(co1),.sclr(clr),.sub(sb1),.sclk(tclk),.stiming(com1)
16、,.co(co2),.v0(m0),.v1(m1);clock24 c3(.clk(low),.cp(low2),.clkh(co2&&co1),.hclr(clr),.sub(sb2),.hclk(tclk),.htiming(com2),.co(c),.noon(light),.y0(h0),.y1(h1);ring r1(.cclk(low2),.cc1(co1),.cc2(co2),.loud(speaker),.tclk(tclk);led l1(.d1(s0),.d2(s1),.d3(m0),.d4(m1),.d5(h0),.d6(h1),.kclk(low1),.
17、count(count),.state(state);endmodule(2)底层模块clock24(用于时钟计时、校时及显示)Verilog 代码程序2-2:底层模块clock24(用于时钟计时、校时及显示)Verilog 代码module clock24(clk,cp,clkh,hclr,hclk,htiming,sub,co,noon,y0,y1);input clk,clkh,hclr,hclk,htiming,sub,cp;output reg co,noon;output reg 3:0y0;output reg 3:0y1;reg cp_d;initial begin co=0;
18、 noon=0;y0=0;y1=0; endalways (posedge clk) begin /较高频时钟信号 cp_d<=cp; if(htiming=1) begin /暂停且增加 y0=y0+1; if(y0=10) begin y0=0;y1=y1+1; end if(y1=2&&y0=4) begin y1=0;y0=0; end end else if(sub=1) begin /暂停且减少 if(y1=0&&y0=0) begin y1=2;y0=3; end else if(y0=0) begin y0=9;y1=y1-1; end e
19、lse y0=y0-1; end if(!cp_d&&cp) begin co=0; if (hclr=1) begin /清零 co=0; noon=0;y0=0;y1=0; end else if(clkh)&&(hclk=0) begin /暂停信号为0且来自分钟的进位为1 y0=y0+1; if(y0=10) begin y0=0;y1=y1+1; end if(y1=2&&y0=4) begin y1=0;y0=0;co=1; end end endendendmodule(3)底层模块clock60(用于分钟、秒钟的计时与校时)Ver
20、ilog 代码程序2-3:底层模块clock60(用于分钟、秒钟的计时与校时)Verilog 代码module clock60(clk,clks,sclr,sclk,stiming,sub,co,v0,v1,cp);input clk,clks,sclr,sclk,stiming,sub,cp;output reg co;output reg 3:0v0;output reg 3:0v1;reg cp_d;initial beginco = 0;v0=0;v1=0;endalways (posedge clk) begin /较高频率信号(为了修改时更快) cp_d<=cp; if(st
21、iming=1) begin /暂停且增加(按较高频时钟信号加1) if(v0<9) begin v0=v0+1; /正常加1 end else begin v0=0;v1=v1+1;end if(v1=5&&v0=9) co<=1; if(v1=6) begin co=0;v1<=0;v0<=0; /60秒个位十位都清零 end end else if(sub=1) begin /暂停且减少(按较高频信号减1) co=0; if(v1=0&&v0=0) begin /都为0置成59 v1=5;v0=9;co=1; end else if
22、(v0=0) begin /个位为0借一位 v0=9;v1=v1-1; end else v0=v0-1; /正常减1 end if(!cp_d&&cp) begin if (sclr=1) begin /清零信号 v0 = 0;v1 = 0;co = 0; end else if(sclk=0)&& (clks) begin /暂停信号为0而且来自低位的进位信号为1 if(v0<9) begin v0=v0+1; /个位正常加1 end else begin v0=0;v1=v1+1;end /个位满10进一位 if(v1=5&&v0=9
23、) /59时进一位 co<=1; if(v1=6) begin co=0;v1<=0;v0<=0; /个位和十位置零 end end end endendmodule(4)底层模块dclk(用于提供1Hz脉冲)Verilog 代码程序2-4:底层模块dclk(降频提供1hz脉冲)Verilog 代码module dclk3(input high,output reg low); /1hz时钟信号 reg 100:0 counter; initial begin low=0;counter=0; end always (posedge high) /高频信号上升沿 begin
24、if(counter>=55555555) begin low<=low; /反转一次 counter<=0; end else counter<=counter+1; end Endmodule(5)底层模块ring(用于整点提示)Verilog 代码程序2-5:底层模块ring(整点报时5秒)Verilog 代码module ring(cclk,cc1,cc2,loud,tclk);input cclk,cc1,cc2,tclk;output reg loud;reg 2:0cont; /计数变量initial begin loud=0; cont=0; endal
25、ways (posedge cclk) begin /时钟上升沿 if(tclk=0) begin if (cc2&&cc1) begin /分钟和秒的进位都为1 loud = 1; cont = 0; end if (loud) cont = cont + 1; if (cont = 6) loud = 0; end endendmodule2.1.5 仿真 为了验证设计的正确性,对顶层模块进行了仿真,具体过程如下:顶层模块仿真目的:验证系统的基本功能,包括计时、暂停、清零、设置时间,不包括七段显示器部分。 输入:共7个,分别为:clk(时钟),clr(清零),tclk(暂停
26、),timing(时钟暂停)2:0con,2:0sub(暂停修改时间)。仿真输出:共7个,分别为:3:0s0 ,3:0s1(秒钟)3:0m0,3:0m1(分钟)3:0h0, 3:0h1(时钟), speaker(整点提示)。主模块仿真文件如下:程序2-6:电子钟主模块仿真文件module clock_tb();reg clk,clr,tclk,timing;reg 2:0con;wire speaker,c,light;wire 3:0s0;wire 3:0s1;wire 3:0m0;wire 3:0m1;wire 3:0h0;wire 3:0h1;wire low;clock HUD(clk
27、,clr,tclk,timing,con,speaker,c,light,count,state,s0,s1,m0,m1,h0,h1,low);initial begin clk=0;timing=0; forever #1 clk = clk; end initial begin clr=0;tclk=0;con0=0;con1=0;con2=0;#15 tclk=0;clr=1; #15 tclk=0;clr=0; #15 tclk=1; #20 tclk=0; #30 tclk=1; #15 con0=1; #15 con0=0; #15 con1=1; #15 con1=0; #15
28、con2=1; #15 con2=0; #15 tclk=0; #15 con0=1; #15 con0=0; #15 con1=1; #15 con1=0; #15 con2=1; #15 con2=0; #5 tclk=1;con1=1;con0=1;#460 con1=0; tclk=0;end endmodule主模块仿真图如图2-4,2-5,2-6,2-7所示。秒钟60进位 图2-4 电子钟主模块仿真测试图一分钟60进位 图2-5 电子钟主模块仿真测试图二时钟24进位 图2-6 电子钟主模块仿真测试图三未暂停无法修改时间间暂停时修改时间清零暂停 图2-7 电子钟主模块仿真测试图三整点
29、报时5个单位时间 图2-8电子钟主模块仿真测试图四说明:(1) 如图2-4,秒钟计时到59后进位分钟加1,秒钟变0;(2) 如图2-5,分钟计时到59时,秒钟来了进位后,分钟进位时钟加1,分钟变0;(3) 如图2-6,时钟计时到23时,分钟来了进位后,时钟变零。 综上所述,从仿真中可以看出,本时钟计时功能没有问题。(4) 如图2-7,对清零暂停修改功能的仿真测试,流程如下:a. 首先暂停(tclk)、清零(clr)置无效,时钟计时;b. 然后输入清零信号,时钟清零。接着输入暂停信号,时钟暂停。 c. 在暂停有效时,分别使用几个调整时间的输入,将时间调整至整点前;d.暂停置无效,再使调整时间的输
30、入置有效,可以观测到时钟将继续正常运行,不受影响;(5)如图2-8,当时钟到整点时,会有提示,即sperker有效,持续时长为5个单位时间(仿真单位时长不为1秒)。2.1.6 主要故障(1) 故障1 (判断语句失效)问题描述:某些地方的判断语句不生效。如在clock60模块中,用了判断语句if(v1,v0 = 59)。问题分析:这些判断语句失效的地方全为 if(var1,var2 = xx),经过单独测试和查阅资料,var1,var2这种形式只能用于赋值语句,判断语句无效。解决方法:将判断条件改为if(v1=5&&v0=9) 。(2)故障2(开发板显示管显示不了数字)问题描述:
31、只显示一个0问题分析:七段显示管的模块中的时钟频率用了秒钟频率,显示频率太低,不能同时显示每个管;解决方法:再写一个分频模块,给七段显示管的模块提供一个快的时钟频率。(3)故障3(清零故障)问题描述:清零时只有秒钟清零,分钟和小时都未清零。 分钟问题代码部分如下: a.主模块调用部分(clks为进位信号): clock60 c2(.clks(co1),.sclr(clr),.sclk(tclk),.stiming(com1),.co(co2),.v0(m0),.v1(m1);b.分钟计时模块部分(clks为进位信号): 问题分析:分钟和小时的时钟是秒钟和分钟的进位,当清零置为1时,还要等分钟和
32、秒钟的进位才能使小时和分钟置零,所以不能成功置零。解决方法: 加一个时钟,清零的时钟是总时钟clk,分钟小时计时的时钟是进位。要达到这个目的,需同步时钟异步化,即在always下用if语句判断进位。 修改代码如下: a.主模块调用部分clock60 c2(.clk(low),.clks(co1),.,.sclr(clr),.sclk(tclk),.stiming(com1),.co(co2),.v0(m0),.v1(m1);b.分钟计时模块部分清零暂停用另外时钟(clk)来判断(clks为进位信号):计时用进位来判断(clks为进位信号):(4)故障4(秒钟进位故障)问题描述:秒钟加到60变成
33、00后,分钟未加1,秒钟再加1变成01后分钟才加1。即秒钟由59变成00和进位分钟加1时间不统一。问题代码如下:问题分析:秒钟到60后变成00,产生进位。但只有在产生进位下一刻分钟才加1,此时秒钟加到了01。解决方法:秒钟到59时产生进位,修改代码如下(5)故障5(时钟进位故障)问题描述:分钟加到59后,秒钟由00加到01,时钟就加1了。问题分析:由于在故障4中的修改,分钟为59后就产生了进位,所以下一秒时钟就加1了。解决方法:将时钟计时时钟由分钟进位co2,改为分钟进位co2和秒钟进位co1的与,即由co2改为co2&&co1。(6)故障6(整点报时故障)问题描述:整点报时的
34、时候ring一直亮。问题分析:ring亮5秒钟的计数变量cont定义错了,写成了reg cont,此时cont根本加不到5,所以ring不能置零。解决方法:修改reg cont为reg 2:0cont。(7)故障7(修改时间的故障)问题描述:没按暂停键也能修改。问题分析:修改条件与暂停条件无关,未暂停也能进行修改。解决方法:判断修改条件的时候必须满足暂停条件,即暂停和修改信号相与一下,例如:and a1(com0,tclk,con0)。其中con0是秒钟修改信号,tclk是暂停信号,com0是秒钟暂停且修改信号,只有com0等于1时,才能修改秒钟。分钟时钟同理。2.1.7 功能测试共进行了4项
35、测试,它们分别为:电子钟计数及进位功能测试,暂停及时间设置(修改)功能测试,整点报时功能测试,清零功能测试。(1)时钟计数及进位功能测试让时钟从零开始自动计数,并且观察。参见图2-9,图2-10,图2-11,所示,预期结果为时钟正常计数,速率与真实时间一致,并在到达一分钟时可以正常进位。图2-9 自然计时照片13秒图2-10 自然计时照片45秒图2-11 自然计时照片1分03秒(产生进位)从以上照片可以看出,计时功能正常,且进位正常。(2)暂停及时间设置(修改)功能测试在1:09按下暂停键,并且观察。参见图2-12,图2-13,所示,预期结果为时钟暂停正常计数。暂停按键图2-12 按下暂停键前
36、 图2-13 按下暂停键,暂停计数 修改时间功能测试,共有6个改变时间的按键(秒加、减;分钟加、减;时加、减)。篇幅有限此处只展示对小时加和小时减进行测试:按下暂停键后(状态如图2-13),再“小时加”按键置1,结果参见图2-14,2-15,接着“小时加”按键置0,结果参见图2-16。再“小时减”按键置1,结果参见图2-17,接着“小时减”按键置0,结果参见图2-18。预期结果“小时加”置1后,将以较快的速度小时自动增加,“小时加”按键置0时停止增加;“小时减”置1后,将以较快的速度小时自动减小,“小时加”按键置0时停止减小。运行结果如下:暂停按键“小时加”按键图2-14“小时加”键置1后某时
37、刻图2-15“小时加”键置1后某时刻(进位)图2-16“小时加”键置0后某时刻“小时减”按键图2-17“小时减”键置1后某时刻图2-18“小时减”键置0后某时刻说明:a. 在图2-13状态下,“小时加”按键置1,结果小时位钟自动快速增加,某时刻如图2-14;b. 小时位在自动增加到23时将变为0继续增加,如图2-15;c. “小时加”按键置0后将停止增加,进入暂停状态,如图2-16;d. “小时减”按键置1,结果小时位钟自动快速减少,某时刻如图2-17;e.“小时减”按键置0后将停止增加,进入暂停状态,如图2-18;从以上测试可以说明,暂停功能正常,且修改时间功能正常。从以上测试可以说明,暂停
38、功能正常,且修改时间功能正常。(3)整点报时功能测试把时间调到23:59:56,让时钟正常计数,观察最右侧的整点报时灯是否能亮,亮几秒,参见图2-,图2-,图2-,图2-所示,预期结果为在00:00:00亮,亮5秒后熄灭图2-19把时钟调到时间点23:59:56整点报时灯图2-20在00:00:00时刻整点报时灯亮起图2-21整点报时灯亮的某时刻图2-22 5秒后灯熄灭说明a. 如图2-20,到整点时整点报时等亮起;b. 如图2-21,2-22,整点报时灯会持续亮5秒,5秒后熄灭。从以上测试可以说明,整点报时功能正常。(4)清零功能测试在上述时钟某时刻按下清零键,观察是否清零,参见图2-,图2
39、-,所示,预期结果为时钟变为00:00:00图2-23在此状态按下清零键清零按键图2-24时钟变为00:00:00从以上照片可以看出,清零功能正常。2.1.8 实验中遇到的主要问题及解决方法 表2-1 主要问题及解决方法问题解决方案如何模拟时钟系统以低位的进位做高位的时钟脉冲(即秒钟进位做分钟的clk,分钟进位做时钟的clk)如何对应时钟输出由于每个计数器都是采用“个位”和“十位”分别计数,则使该位连接到相应的灯上输出即可,最高位则使用七段译码器进行转换,因此增加一个LED的模块实现该功能如何显示上下午两个层面:1.时钟采用24进制计时;2.增加一个管脚连灯,判断当时钟为0,12区间内则亮灯,
40、否则灭灯。本系统采用24进制计时。如何提供1Hz的时钟脉冲以100Mhz时钟脉冲为输入脉冲,每个上升沿计数一次,计数变为55555555时目标脉冲反转一次,得到的脉冲即为1hz的时钟脉冲如何实现校时功能修改是增加时,按秒钟计时的方法让其自动增加;修改是减小时,重新写个减的方法,秒钟和分钟减到0就变成59,时钟减到0就变成23。如何实现整点报时当分钟进位标志和秒钟进位标志都为1时,整点报时信号为1,并设置一个计数器,在整点报时信号为1时开始计数,计到5时在使整点报时信号为0。如何使修改时钟频率更快再写个分频模块使得分出来的频率更快,在这个频率下实现修改功能。2.1.9 层次设计的体会 本实验由一
41、个顶层模块clock来整合实现整个时钟系统的所有功能,其下有5个模块:dclk(提供分频脉冲),clock24(时钟计数器),clock60(分钟、秒钟计数器),ring(实现整点提示),led(提供时钟显示功能),其中dclk分3为个不同频率,构造方法类似,dclk负责提供高于1hz的脉冲,用于修改时钟时更加快速;dclk2负责提供led灯的扫描时钟;dclk3负责提供1hz的时钟脉冲。clock24用来实现小时的计数,满24置为0。clock60用来实现分钟、秒钟的计数,满60进一位,变为00。Ring用来实现整点提示5秒,即相应的灯亮5秒。Led用来实现7段数码显示管的译码和显示。顶层模
42、块中调用其他底层模块,使得各部分功能并发进行。2.2 电梯控制系统设计2.2.1 目的(1)掌握较复杂的逻辑设计和调试(2)掌握用原理图+Verilog HDL语言设计逻辑电路;(3)学习数字系统设计方法;(4)掌握Vivado软件的使用方法;(5)熟悉FPGA器件的使用。2.2.2 内容(1)电源开关同时作为 电路总清零信号 (Reset),当 Reset = Off 不工作、为 On 时电路进入初始状态,且电源指示灯亮(又称电梯运行指示灯),电梯初态可在任意楼层;(2)电梯可上行、下降,它到达某楼层开门后有 5s 的自动关门设置,若在这 5s 期间,按下关门键,则立刻关门;(3)电梯处于某
43、层时,可以选择要到达的楼层,但是选择本楼层没有任何反应;(4)能显示电梯当前所在楼层;(5)电梯上行时,上行指示灯亮,下行指示灯灭;(6)电梯下行时,下行指示灯亮,上行指示灯灭;(7)电梯门打开时,开门指示灯亮,否则,灭;(8)电梯门关闭时,关门指示灯亮,否则,灭;(9)电梯运行原则原则 1:每个被选择的楼层都要停,然后继续运行;原则 2:相邻两层运行时间为 10s,采用时间倒计时实现;原则 3:目前运行方向优先,仅当电梯已到达当前设定的最高或最低层后,方能改变设定的运行方向和楼层;结合上面的设计内容 ,参见图 2- 26采用Verilog HDL 设计,在开发板上验证设计的正确性 。(1)利
44、用开发板上的 2 个 7 段数码显示管作为电梯当前所在楼层的显示;(2)利用开发板上的 2 个 7 段数码显示管作为相邻两层运行时间(10s,)采用倒计时的显示;(3)设计者可以灵活利用开发板上的输入、输出信号来实现所需。2.2.3 设计思路 本电梯控制器系统包含一个主模块和六个底层模块:如图2-25,图2-25电梯模块图(1) 主模块(lift)用于定义、初始化输入输出变量和整合整个电梯系统。 (2) 电梯状态判断模块(lift_state)用于处理电梯各种运行状态并进行设置。(3) 电梯运行控制模块(cortrol_systerm)这个模块为核心模块,用于控制电梯的运行。(4) 电梯开关门
45、模块(stop)用于处理停下来时门的开关其中要实现5s自动关门。(5) 电梯指示灯模块(light)用于处理电梯灯的亮灭。(6) 电梯数码管显示模块(display)用于处理电梯各种运行状态并进行设置。(7) 电梯升降模块(rise_down)用于处理电梯升降状态设置。图2- 26电梯系统框图2.2.4 代码实现顶层模块首先要设计系统的原理图,然后用Verilog HDL实现它,底层各模块均采用Verilog HDL语言设计。电梯顶层原理图,由于过于复杂,此处省略。(1)顶层模块lift(用于整合整个电梯系统)Verilog 代码程序2-7:顶层模块lift(用于整合整个电梯系统)Verilo
46、g 代码module lift(input clk, / 时钟信号input powerButton ,/电源开关input resetButton, /重置开关(回一楼)input openButton, / 强制开门input closeButton, /强制关门input infloorButton1, / 一楼内部开关input infloorButton3, / 三楼内部开关input infloorButton6, / 六楼内部开关input infloorButton8, / 八楼内部开关input outfloorButton1, /一楼外部开关input outfloorBu
47、tton8, / 八楼外部开关input outup3,input outdown3,input outup6,input outdown6,output reg7:0 eightDecode, / 七段显示译码器output flashLight, / 电梯运行闪烁灯output reg light,/电源指示灯output reg closelight,/output reg doorLight, /开门显示灯output reg upLight, / 上升指示灯output reg downLight, / 下降指示灯output floorLight1, / 一楼指示灯output f
48、loorLight3, / 三楼指示灯output floorLight6, / 六楼指示灯output floorLight8, / 八楼指示灯output out1,output out8,output up3,output down3,output up6,output down6,output reg sevenF, output reg sevenJ, output reg sevenM, output reg sevenK,output reg seven1,output reg seven2,output reg seven3,output reg seven4); wire outfloorButton3;wire outfloorButton6;reg3:0 currentFloor; / 电梯当前楼层reg3:0 targetFloor; / 目标楼层,1 代表当前楼层有请求reg5:0 cfloor;/选择楼层reg3:0 in;reg1:0 liftState; / 电梯运行状态 0.关门等待状态1.上升状态2. 下降状态 3.开门状态reg 1:0k;reg mark; / 用于周期滞后reg doorState; / 电梯门开关状态,0 为关门,1 为开门reg runSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年龙泉驿区社会工作服务岗位招募(10人)模拟试卷带答案详解(A卷)
- 2026重庆轮船(集团)有限公司四川分公司招聘1人模拟试卷含完整答案详解【易错题】
- 2026广东广州中医药大学动物实验中心招聘1名校聘合同制工作人员考前冲刺密卷含答案详解【完整版】
- 2026年亳州职业技术学院招聘博士研究生20人考前冲刺密卷及答案详解【基础+提升】
- 2026软件开发服务行业市场细分发展分析及商业投资机会研究报告
- 2026日用化工行业市场竞争格局分析方法与效果现状评估技术研究报告
- 2026中国无人驾驶行业市场深度调研及技术突破与商业化路径报告
- 扬子江新锐测评试题与答案
- 2026中国健身房智能急救系统责任划分与保险产品设计
- VW 80000-2024 中文版(大众汽车电子电气系统功能安全要求)
- 10kV~500kV输变电及配电工程 质量验收与评定标准 第六册:变电自动化工程
- 大型塔设备吊装方案的分析与探讨
- 2025至2030年贵州省煤层气产业投资分析及前景预测报告
- (高清版)DB11∕T2250-2024重点用能单位能耗在线监测系统接入技术规范
- DB33T 2113-2018 公路沥青路面超薄磨耗层施工技术规范
- 工厂汛期防汛应急预案
- 智能安防行业发展建议
- 2024山东高考英语完形填空联考模拟试题汇编(含答案详解)
- 工程振动试验分析(教材)
- 洗涤公司车间管理制度
- 器械辨认及用途课件
评论
0/150
提交评论