华中科技大学数字逻辑课程设计1Word文档下载推荐.docx
- 文档编号:19723929
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:84
- 大小:6.73MB
华中科技大学数字逻辑课程设计1Word文档下载推荐.docx
《华中科技大学数字逻辑课程设计1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《华中科技大学数字逻辑课程设计1Word文档下载推荐.docx(84页珍藏版)》请在冰豆网上搜索。
b.电梯升降模块的编写和测试
c数码显示管模块的编写和测试
3、难点、亮点
(1)电子钟设计中,修改时间的功能中,可以实现快速地,自动加、减修改时间,方便快捷。
其难点在于如何实现快速修改和如何实现又加又减修改,具体解决方法见下文。
(2)电梯设计中,亮点有:
每个按键都有指示灯,很明确哪一层有请求,到了该层灯就灭了。
这个设计难点在于按键区分上下键,状态转移条件多,输入变量繁多
日期
进度
9.21
(1)接受任务;
(2)决定设计1的题目和二人的任务分配;
(3)大体明确设计1的整体结构设计;
9.22
(1)完成设计1的降频dclk3模块编写和测试;
(2)协助测试clock60模块;
9.23
(1)完成设计1整点提示ring模块编写和测试;
(2)编写时钟clock24模块。
9.24
(1)完成设计1的clock24模块编写和测试;
(2)完成与主模块的变量统一。
9.26
(1)决定设计2的题目和二人任务分配;
(2)大体明确设计2的整体结构设计;
9.27
(1)完成设计2降频模块和数码显示管模块的编写和测试;
(2)协助同组调试bug
9.28
(1)完成电梯指示灯模块的编写和测试
(2)整合主模块
9.29
(1)编写报告
9.30
(2)编写报告
实验平台故障记录(学生填写,请注明实验平台的编号)
重要说明
1、时间安排:
课内2周。
2、验收准备:
1)完成本表学生应该填写部分;
2)同组的每位学生必须都能以独自完成的方式应对任何形式的验收;
3)完成课程设计报告书(格式参见模板);
4)将源程序和报告的电子文档交班长。
3、检查过程:
1)提交验收准备材料,请求老师验收,之后按验收老师的要求做;
2)在开发平台上根据验收老师的要求进行演示;
3)检查过程中独立回答老师提出的相关问题;
4)验收老师有权根据具体情况调整验收的内容与方式;
5)验收完成后关闭电源,整理好设备。
4、评分标准:
1)同组者工作量的分配;
2)在完成控制器基本要求外,有亮点为加分项;
3)在规定时间内完成控制器基本要求;
4)在规定时间内完成控制器部分基本要求;
5)检查时间。
5、课程设计判定为不合格的一些情形:
(本人已阅读此条款1-5项:
签名)
1)请人代做或冒名顶替者;
2)替人做且不听劝告者;
3)课程设计报告内容抄袭或雷同者;
4)课程设计报告内容与实际实验内容不一致者;
5)课程设计代码抄袭者。
1课程设计概述
1.1课设目的
(1)掌握Vivado软件的使用方法;
(2)熟悉FPGA器件的使用方法;
(3)用VerilogHDL进行较复杂逻辑电路的设计和调试;
(4)学习数字系统的设计方法;
(5)通过规范化的实验报告,培养学生良好的文档习惯以及撰写规范文档的能力。
1.2课设要求
(1)能够全面地应用课程中所学的基本理论和基本方法,完成从设计逻辑电路到设计简单数字系统的过渡;
(2)能力独立思考、独立查阅资料,独立设计规定的系统;
(3)能够独立地完成实施过程,包括电路设计、调试、排除故障、仿真和下载验证。
1.3课设任务
本次课程设计每组要完成两个设计任务,具体参见数字逻辑课程设计题目。
(1)各组要制定出详细设计方案,明确成员各自分工,认真记载毕业设计工作日记;
(2)通过VerilogHDL完成规定的设计任务,采取模块化、层次化的设计方法设计电路,然后进行编译和仿真,认真记录实施过程中遇到的各自故障以及解决方法,保证设计的正确性;
(3)生成bit文件,下载到开发板上,通过实际线路进行验证设计的正确性;
(4)撰写设计报告,并对存在的问题进行分析、提出改进意见。
1.4实验环境
开发环境为Vivado2015.2软件和开发板NEXYS4(芯片为XC7A100TCSG324-1,封装为CSG3242)。
Vivado2015.2是使用XilinxFPGA必备的设计工具。
它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成bit文件、配置以及在线调试等功能。
Nexys4开发板简介:
参见图1-1所示,它是一款简单易用的数字电路开发平台,可以支持在课堂环境中来设计一些行业应用。
大规模、高容量的FPGA,海量的外部存储,各种USB、以太网、以及其它接口、这些让Nexys4-DDR能够满足从入门级组合逻辑电路到强大的嵌入式系统的设计。
同时,板上集成的加速度、温度传感器,MEMs数字麦克风,扬声器放大器以及人量的I/O设备,让Vexys4-DDR不需要增添额外组件而用于各种各样的设计。
注意:
开发板提供的时钟信号频率为100Mhz,对应的引脚封装编号为“E3”。
图1-1Nexys4通用I/O设备
2基本方案设计
2.1电子钟设计
2.1.1目的
(1)掌握较复杂的逻辑设计和调试
(2)学习用原理图+VerilogHDL语言设计逻辑电路;
(3)学习数字电路模块、层次设计;
(4)掌握Vivado软件的使用方法;
(5)熟悉FPGA器件的使用。
2.1.2内容
(1)设计并利用Nexys4开发板来实现一个电子钟,它具有下述功能:
a.开发板上的6个7段数码管显示:
时、分、秒;
b.能使电子钟复位(清零);
c.能启动或者停止电子钟运行;
d.在电子钟停止运行状态下,能够修改时、分、秒的值;
e.具有整点提示功能。
(2)要求整个设计为模块化
系统分为若干模块,参见图2-1所示。
(3)将设计的代码下载到开发板上验证设计的正确性。
2.1.3设计思路
本设计要求顶层采用原理图设计,各底层均采用VerilogHDL设计,参见图2-2所示。
(1)时钟用一个模24的计数器来实现;
图2-1电子钟的系统框图
(2)分钟和秒钟要求分别用一个模60的计数器来实现;
(3)要实现自动计时,则需要利用开发板提供的100Mhz提供脉冲,还需要一个分频的模块dclk,使其吻合时钟速度;
(4)整点提示功能则用一个ring的模块实现,分钟进位时开始计数从而实现提示5秒。
各底层
图2-2电子钟模块图
2.1.4代码实现
顶层模块首先要设计系统的原理图,然后用VerilogHDL实现它,底层各模块均采用VerilogHDL语言设计。
电子钟顶层原理图,参见图2-3所示。
图2-3电子钟顶层原理图
(1)顶层模块clock(用于整合整个时钟系统)Verilog代码
见同组
(2)底层模块clock24(用于时钟计时、校时及显示)Verilog代码
程序2-1:
底层模块clock24(用于时钟计时、校时及显示)Verilog代码
moduleclock24(clk,cp,clkh,hclr,hclk,htiming,sub,co,noon,y0,y1);
inputclk,clkh,hclr,hclk,htiming,sub,cp;
outputregco,noon;
outputreg[3:
0]y0;
0]y1;
regcp_d;
initialbeginco=0;
noon=0;
y0=0;
y1=0;
end
always@(posedgeclk)//较高频时钟信号
begin
cp_d<
=cp;
if(htiming==1)//暂停且增加
y0=y0+1;
if(y0==10)begin
y0=0;
y1=y1+1;
end
if(y1==2&
&
y0==4)begin
y1=0;
;
elseif(sub==1)//暂停且减少
if(y1==0&
y0==0)begin
y1=2;
y0=3;
elseif(y0==0)begin
y0=9;
y1=y1-1;
elsey0=y0-1;
if(!
cp_d&
cp)
begin
co=0;
if(hclr==1)//清零
elseif((clkh)&
(hclk==0))//暂停信号为0且来自分钟的进位为1
co=1;
endmodule
(3)底层模块clock60(用于分钟、秒钟的计时与校时)Verilog代码
(4)底层模块dclk3(用于提供1Hz脉冲)Verilog代码
程序2-2:
底层模块dclk3(降频提供1hz脉冲)Verilog代码
moduledclk3(inputhigh,outputreglow);
//降频模块
reg[100:
0]counter;
initialbeginlow=0;
counter=0;
always@(posedgehigh)//高频信号上升沿
if(counter>
=55555553)
low<
=~low;
//反转一次
counter<
=0;
elsecounter<
=counter+1;
(5)底层模块led()Verilog代码
(6)底层模块ring(用于整点提示)Verilog代码
程序2-3:
底层模块ring(整点提示5秒)Verilog代码
modulering(cclk,cc1,cc2,loud,tclk);
inputcclk,cc1,cc2,tclk;
outputregloud;
reg[2:
0]cont;
//计数变量
initialbeginloud=0;
cont=0;
always@(posedgecclk)
if(tclk==0)//时钟上升沿
if(cc2&
cc1)//分钟和秒的进位都为1
loud=1;
cont=0;
if(loud)cont=cont+1;
if(cont==6)loud=0;
(7)仿真模块clock_tb(用于测试模块正确性)Verilog代码
(8)分频模块dclk、dclk2(用于获得不同频率的脉冲)Verilog代码
2.1.5仿真
为了验证设计的正确性,对ring模块进行了仿真,具体过程如下:
(1)顶层模块仿真
(2)底层模块仿真
目的:
验证系统的基本功能,包括计时、暂停、清零、设置时间,不包括七段显示器部分。
输入:
共7个,分别为:
clk(时钟),clr(清零),tclk(暂停),timing(时钟暂停)[2:
0]con,[2:
0]sub(暂停修改时间)。
仿真输出:
[3:
0]s0,[3:
0]s1(秒钟)[3:
0]m0,[3:
0]m1(分钟)[3:
0]h0,[3:
0]h1(时钟),speaker(整点提示)。
Ring、clock24模块仿真文件如下:
程序2-4:
Ring、clock24模块仿真文件
moduleclock_tb();
regclk,clr,tclk,timing;
//timing启动键
0]con;
0]sub;
wirespeaker,c,light;
wire[3:
0]s0;
0]s1;
0]m0;
0]m1;
0]h0;
0]h1;
wirelow;
wire[6:
0]count;
wire[7:
0]state;
clockHUD(clk,clr,tclk,timing,con,s0,s1,m0,m1,h0,h1,sub,speaker,c,light,count,state,low);
initialbegin
clk=0;
timing=0;
forever
#0.01clk=~clk;
clr=0;
tclk=0;
con[0]=0;
con[1]=0;
con[2]=0;
sub[0]=0;
sub[1]=0;
sub[2]=0;
end
endmodule。
ring模块仿真图如图2-4(a)所示。
整点报时5个单位时间
图2-4(a)电子钟ring模块仿真测试图
Clock24模块仿真图如图2-4(b)所示。
图2-4(b)电子钟clock24模块仿真测试图00:
59:
59进一位
2.1.6主要故障
(1)故障1(判断语句失效)
问题描述:
某些地方的判断语句不生效。
如在clock60模块中,用了判断语句if({v1,v0}==59)。
问题分析:
这些判断语句失效的地方全为if({var1,var2}==xx),经过单独测试和查阅资料,{var1,var2}这种形式只能用于赋值语句,判断语句无效。
解决方法:
将判断条件改为if(v1==5&
v0==9)。
(2)故障2(开发板显示管显示不了数字)
只显示一个0
七段显示管的模块中的时钟频率用了秒钟频率,显示频率太低,不能同时显示每个管;
再写一个分频模块,给七段显示管的模块提供一个快的时钟频率。
(3)故障3(清零故障)
清零时只有秒钟清零,分钟和小时都未清零。
分钟问题代码部分如下:
a.主模块调用部分(clks为进位信号):
clock60c2(.clks(co1),.sclr(clr),.sclk(tclk),.stiming(com[1]),.co(co2),.v0(m0),.v1(m1));
b.分钟计时模块部分(clks为进位信号):
分钟和小时的时钟是秒钟和分钟的进位,当清零置为1时,还要等分钟和秒钟的进位才能使小时和分钟置零,所以不能成功置零。
解决方法:
加一个时钟,清零的时钟是总时钟clk,分钟小时计时的时钟是进位。
要达到这个目的,需同步时钟异步化,即在always下用if语句判断进位。
修改代码如下:
a.主模块调用部分
clock60c2((.clk(low),.clks(co1),.,.sclr(clr),.sclk(tclk),.stiming(com[1]),.co(co2),.v0(m0),.v1(m1));
b.分钟计时模块部分
清零暂停用另外时钟(clk)来判断(clks为进位信号):
计时用进位来判断(clks为进位信号):
(4)故障4(秒钟进位故障)
秒钟加到60变成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(整点报时故障)
整点报时的时候ring一直亮。
ring亮5秒钟的计数变量cont定义错了,写成了regcont,此时cont根本加不到5,所以ring不能置零。
修改regcont为reg[2:
0]cont。
(7)故障7(修改时间的故障)
没按暂停键也能修改。
修改条件与暂停条件无关,未暂停也能进行修改。
判断修改条件的时候必须满足暂停条件,即暂停和修改信号相与一下,例如:
anda1(com[0],tclk,con[0])。
其中con[0]是秒钟修改信号,tclk是暂停信号,com[0]是秒钟暂停且修改信号,只有com[0]等于1时,才能修改秒钟。
分钟时钟同理
2.1.7功能测试
共进行了4项测试,它们分别为:
时钟计数及进位功能测试,暂停及时间设置功能测试,整点报时功能测试,清零功能测试。
(1)时钟计数及进位功能测试
让时钟从零开始自动计数,并且观察。
参见图2-5,图2-x(b),图2-x(c),所示,预期结果为时钟正常计数,速率与真实时间一致,并在到达一分钟时可以正常进位。
图2-5自然计时照片13秒
图2-6自然计时照片45秒
图2-7自然计时照片1分03秒(产生进位)
从以上照片可以看出,计时功能正常,且进位正常。
(2)暂停及时间设置功能测试
在1:
09按下暂停键,并且观察。
参见图2-8,图2-9,所示,预期结果为时钟暂停正常计数。
图2-8按下暂停键前
图2-9按下暂停键,暂停计数
设置功能测试,共有6个改变时间的按键(秒+-、分钟+-、时+-)篇幅有限此处只展示对时+进行测试:
按下暂停键,再按下“小时+”按键,参见图2-10,图2-11,图2-12,所示,预期结果为小时以较快的速度自动增加,“小时+”按键置0时停止增加。
图2-10“小时+”键按下后小时增加
图2-11“小时+”键按下后小时增加,且能够进位
图2-12“小时+”键置0后小时不变,回到暂停状态
图2-13“小时减”键置1后某时刻
图2-14“小时减”键置0后某时刻
从以上测试可以说明,暂停功能正常,且修改时间功能正常。
(3)整点报时功能测试
把时间调到23:
56,让时钟正常计数,观察最右侧的整点报时灯是否能亮,亮几秒,参见图2-15,图2-16,图2-17,图2-18所示,预期结果为在00:
00:
00亮,亮5秒后熄灭
图2-15把时钟调到此时间点,释放暂停键
图2-16在00:
00时刻报时灯亮起
图2-17持续亮5秒钟
图2-185秒后灯熄灭
从以上照片可以看出,整点报时功能正常。
(4)清零功能测试
在上述时钟00:
06时刻按下清零键,观察是否清零,参见图2-19,图2-20,所示,预期结果为时钟变为00:
00
图2-19在此状态按下清零键
图2-20时钟变为00:
从以上照片可以看出,清零功能正常。
2.1.8实验中遇到的主要问题及解决方法
表2-1主要问题及解决方法
问题
解决方案
如何模拟时钟系统
以低位的进位做高位的时钟脉冲(即秒钟进位做分钟的clk,分钟进位做时钟的clk)
如何对应时钟输出
由于每个计数器都是采用“个位”和“十位”分别计数,则使该位连接到相应的灯上输出即可,最高位则使用七段译码器进行转换,因此增加一个LED的模块实现该功能
如何显示上下午
两个层面:
1.时钟采用24进制计时;
2.增加一个管脚连灯,判断当时钟为[0,12]区间内则亮灯,否则灭灯。
本系统采用24进制计时。
如何提供1Hz的时钟脉冲
以100Mhz时钟脉冲为输入脉冲,每个上升沿计数一次,计数变为55555555时目标脉冲反转一次,得到的脉冲即为1hz的时钟脉冲
如何实现校时功能
修改是增加时,按秒钟计时的方法让其自动增加;
修改是减小时,重新写个减的方法,秒钟和分钟减到0就变成59,时钟减到0就变成23。
如何实现整点报时
当分钟进位标志和秒钟进位标志都为1时,整点报时信号为1,并设置一个计数器,在整点报时信号为1时开始计数,计到5时在使整点报时信号为0。
如何使修改时钟频率更快
再写个分频模块使得分出来的频率更快,在这个频率下实现修改功能。
2.1.9层次设计的体会
本实验由一个顶层模块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段数码显示管的译码和显示。
顶层模块中调用其他底层模块,使得各部分功能并发进行。
2.2
电梯控制系统设计
2.2.1目的
(2)掌握用原理图+VerilogHDL语言设计逻辑电路;
(3)学习数字系统设计方法;
2.2.2内容
(1)电源开关同时作为电路总清零信号(Reset)),当Reset=Off不工作、为On时电路进入初始状态,且电源指示灯亮(又称电梯运行指示灯),电梯初态可在任意楼层;
(2)电梯可上行、下降,它到达某楼层开门后有5s的自动关门设置,若在这5s期间,按下关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 数字 逻辑 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)