eda课程设计报告格式洗衣机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
eda课程设计报告格式---洗衣机
燕山大学
课程设计说明书
题目:洗衣机
学院(系):电气工程学院
年级专业:
学号:
学生姓名:
指导教师:吕宏诗张强
教师职称:实验师
2
燕山大学课程设计(论文)任务书
院(系):电气工程学院基层教学单位:电子实验中心
说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份
年月日
目录
第1章摘要 (1)
第2章设计方
案………………………………………………
(2)
第3章 Verilog HDL源程序 (3)
第4章源程序各部分波形仿真图 (5)
第5章管脚锁定及硬件连线 (14)
第6章结论 (16)
参考文献 (18)
前言
面对当今飞速发展的电子产品市场,电子设计人员需要更加实用、快捷的EDA工具,实用统一的集成设计环境,改变传统设计思路,即优先考虑具体物理实现方式,而将精力集中到设计构思、方案比较和寻找最优化设计等方面,以最快的速度开发出性能优良、质量一流的电子产品。
今天的EDA工具将向着功能强大、简单易学、使用方便的方向发展。
此次课程设计的题目洗衣机,本任务书,首先概括介绍了EDA技术、VerilogHDL硬件描述语言,根据任务书对本课题整体思路进行了介绍,然后分别介绍了主程序各部分的功能,并绘制波形仿真,再次给出实现本任务书所要求的功能及其附加功能的源程序以及波形仿真图,最后进行管脚锁定和外部硬件连线并下箱实现了所有功能。
在本次课程设计过程中源程序编译及硬件连接过程中都遇到了很多困难,在老师的耐心指导下完成了本次课程设计。
再次特别感谢老师的指导。
第一章摘要
数字电路主要是基于两个信号(我们可以简单的说是有电压和无电压),用数字信号完成对数字量进行算术运算和逻辑运算的电路我们称之为数字电路,它具有逻辑运算和逻辑处理等功能,数字电路可分为组合逻辑电路和时序逻辑电路。
1. EDA介绍
EDA技术,就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的可开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
利用EDA技术进行电子系统的设计,具有以下几个特点:(1)用软件的方式设计硬件;(2)用软件的方式设计的系统到硬件系统的转换是由
有关的开发软件自动完成的;(3)设计过程中可用有关的软件进行仿真;(4)系统现场可编程,在线升级;(5)整个系统可集成在一个芯片上,体积小,功耗低,可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
2.Verilog HDL
Verilog HDL 是目前应用最广泛的硬件描述语言之一,被IEEE采纳为IEEE STD1364-1995(也成为Verilog-1995)和IEEE STD.1364-2001(也成为Verilog-HDL)可以进行算法级(Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)和版图级(Layout)等各个层次的电路设计和描述。
采用Verilog HDL 进行电路设计于工艺设计无关,这使得设计者在进行电路设计时可以不必过多的考虑工艺实现的具体细节,设计者只需要利用计算机的强大功能,在EDA工具的支持下,通过Verilog HDL的描述,完成数字电路和系统的设计即可,从而提高了设计效率,降低了设计者的劳动强度。
作为硬件描述语言,Verilog HDL具有如下
特点:
(1)能够在不同的抽象层次上,如系统级、行为级、RTL级、门级和开关级,对设计系统进行精确而简练的描述。
(2)能够在每个抽象层次的描述上对设计进行仿真验证,及时发现及时发现可能存在的错误,缩短设计周期,并保存整个设计过程的正确性。
(3)由于代码描述与工艺过程实现无关,便于设计标准化,提高设计的可重用性。
如国有C语言的编程基础经验,只需很短的时间就能学会和掌握Verilog HDL,因此,Verilog HDL可以作为学习HDL设计方法的入门和基础。
第二章设计方案
2.1任务分析
由任务书可知要求如下:
洗衣机工作时间可在1-15分钟内随时可任意设定(整分钟数);规定洗衣机运行规律为正转20s、停10s、反转20s、停10s、再正转20s,如此反复;用两个数码管显示洗衣机剩余工作时间,每当电机运行1分钟,显示器自动减1,直到为0时,电机停止运转并有蜂鸣器发声提示。
通过设计可以达到以下功能:
1、洗衣机正转20s时双色点阵显示“Z”,同时红色信号指示灯L1亮灯。
反转20s时双色点阵显示“F”,同时红色信号指示灯L2亮灯。
2、两位动态数码管显示剩余分钟数,每一分钟减小一。
3、当工作停止时,动态数码管显示“00”同时蜂鸣器响。
2.2设计思路
六十进制加计数器根据任务可以知道由于每整数分钟后要减少一,所以需要一个六十进制计数器,使每六十秒产生一个进位信号,为整数分钟提供减数信号。
十五进制减法计数器,完成十五分钟任意置数后的计时显示剩余工作时间。
当记时为0是,fengming=1是蜂鸣器响。
动态数码管部分采用ss作为位选信号,有clk1高频循环,由于发光二极管的余辉效应以及人眼的视觉暂留现象,会观察到两位数码管同时显示。
八进制加法计数器部分用来完成双色点阵的行与列的高频扫描,同样利用发光二极管的余辉效应以及人眼的视觉暂留现象,会在双色点阵上看到一定的图形。
双色点阵部分具有当行是低电平而对应的列是高电平时该点亮光的特性,因此分别另每行对应低电平时需要点亮的列是高电平,高频循环后,就会得到需要的图形。
第三章 Verilog HDL设计源程序
module
xiyijibiancheng(CLK,shiwei,gewei,forwar d,fengming,back,LDN,CLK1,G,SS,ROW,GA); input CLK,CLK1,LDN;
input[3:0]shiwei,gewei;
output forward,back,SS,fengming;
output[6:0]G;
output[7:0]ROW,GA;
reg L;
reg[2:0] W;
reg[3:0]OUT;
reg[6:0]G;
reg[7:0]ROW,GA;
reg[3:0]QQ_TEMP,C,Q,C_TEMP;
reg
forward,back,RD,CC_TEMP,cp,SS,B_TEMP,fe ngming;
reg[1:0]dianzhen;
reg[5:0]Q_TEMP;
always@(posedge CLK) //六十进制加法计
数器
begin if(LDN)
if
(shiwei!='b0000||gewei!='b0000)
begin if (RD==1)
if
(Q_TEMP<6'b111100)Q_TEMP=Q_TEMP+1;
else Q_TEMP=0;
else Q_TEMP=0; end
else Q_TEMP=0;
end
always@(posedge CLK) //定义正反转部分
begin if(LDN==1)
if(QQ_TEMP!=0||C_TEMP!=0)
begin
if(Q_TEMP>=6'b000000&&Q_TEMP<6'b010101) begin forward=1;dianzhen='b11;back=0;end else
if(Q_TEMP>6'b011110&&Q_TEMP<6'b110011)b egin forward=0;back=1;dianzhen='b00;end else if (Q_TEMP>=6'b010101&&Q_TEMP<=6'b011110)b egin forward=0;back=0;dianzhen='b01;end else if (Q_TEMP>=6'b110011&&Q_TEMP<=6'b111100)b egin forward=0;back=0;dianzhen='b01;end if(Q_TEMP==6'b111100)
cp=1;
else cp=0;
end
else begin forward=0;back=0;cp=0;dianzhen='b01;fen gming=1;end
else begin forward=0;back=0;cp=0;dianzhen='b01;fen gming=0;end
end
always@( posedge CLK)
begin //置数部分
if (LDN==0)
begin
QQ_TEMP=gewei;
C_TEMP=shiwei;
Q=QQ_TEMP;
C=C_TEMP;
end
else
begin RD=1; //十五进制计数器部分 if(cp==1)
if((QQ_TEMP||C_TEMP))
begin
if(QQ_TEMP>4'b0000)
QQ_TEMP=QQ_TEMP-1;
else if(QQ_TEMP==4'b0000) begin
QQ_TEMP=QQ_TEMP+4'b1001;
C_TEMP=C_TEMP-1;
end
Q=QQ_TEMP;
C=C_TEMP;
end
end
end
always@(posedge CLK1) //八进制计数器部分
begin
if(W=='b111)
W=0;
else W=W+1;
end
always@(W) //双色点阵部分
begin
if(dianzhen=='b11&&LDN==1&&forward==1&& back==0)
begin
case(W)
0:begin
ROW='b01111111;GA='b11111111;end
1:begin
ROW='b10111111;GA='b00000010;end
2:begin
ROW='b11011111;GA='b00000100;end
3:begin
ROW='b11101111;GA='b00001000;end
4:begin
ROW='b11110111;GA='b00010000;end
5:begin
ROW='b11111011;GA='b00100000;end
6:begin
ROW='b11111101;GA='b01000000;end
7:begin
ROW='b11111110;GA='b11111111;end
endcase
end
if(forward==0&&back==0&&LDN==1&&dianzhe n=='b01)
begin
ROW='b11111111;GA='b00000000;
end
if(dianzhen=='b00&&LDN==1&&back==1&&for ward==0)
begin
case(W)
0:begin
ROW='b01111111;GA='b11111111;end
1:begin
ROW='b10111111;GA='b10000000;end
2:begin
ROW='b11011111;GA='b10000000;end
3:begin
ROW='b11101111;GA='b11111110;end
4:begin
ROW='b11110111;GA='b10000000;end
5:begin
ROW='b11111011;GA='b10000000;end
6:begin
ROW='b11111101;GA='b10000000;end
7:begin
ROW='b11111110;GA='b10000000;end
endcase
end
end
always@(posedge CLK1) //动态数码位选信号部分
begin
if(B_TEMP<'b1)
B_TEMP=B_TEMP+1;
else begin B_TEMP='b0;end
SS=B_TEMP;
end
always@(posedge CLK1)
begin
case(SS)
'b0:OUT=QQ_TEMP;
'b1:OUT=C_TEMP;
endcase
end
always@(OUT) //动态数码管部分 begin
case(OUT)
0:G='b0111111;
1:G='b0000110;
2:G='b1011011;
3:G='b1001111;
4:G='b1100110;
5:G='b1101101;
6:G='b1111101;
7:G='b0000111;
8:G='b1111111;
9:G='b1101111;
endcase
end
endmodule
第四章源程序各部分波形仿真图4.1预置数部分
预置时间情况如下表所示
1
0 0 0 1 1 1 0 0 1 2
0 0 0 1 1 1 0 1 1 3
0 0 0 1 1 1 1 0 1 4
0 0 0 1 1 1 1 1 1 5
1 X X X X X X X X 0 功能说明:以上置数时,需要在LDN=0时才可。
shiwei[3:0]和gewei[3:0]分别用数字开关组A组SW1~SW8来控制。
4.2各部分仿真波形
1、六十进制加法计数器部分
由仿真波形可知,当置数端LDN=1时表示指数结束,此时Q_TEMP由零开始计数当计时到60时,cp=1,为十五进制减法计数器输入减1信号。
2、十五进制减法计数器部分
由gewei[3:0]和shiwei[3:0]可知所置数数值为11,当开始工作后60秒时cp输出高电平使得Q_TEMP[3:0]由1变为0,即此时动态数码管的个位由1变为0,十位数值C_TEMP仍为1,即完成“显示剩余工作时间10分钟”的功能。
3、动态数码管部分
由图可知指数值为11,在一分钟内
OUT[3:0]一直交替显示个位与十位的值,均为1,一分钟后变为交替显示0和1,在经过一份后交替显示9和0。
而位选信号SS则交替显示0和1,不断选择显示的位,如此循环,由于发光二极管的余辉特性及人眼的视觉暂留特性,可以看到显示的两位动态数码管数值。
4、八进制计数器部分
由图可以知道随着CLK1的高频率变化W 有0到7不断变化,完成双色点阵行与列的高频扫描。
5、双色点阵部分
由图可以知道当dianzhen=01是显示停止工作10秒时的仿真波形,此时正转
forward=0反转back=0,行ROW均输出高电平,列GA均输出低电平,故点阵不显示任何波形。
当dianzhen=11是显示正转20s时的仿真波形,此时正转forward=1反转back=0,行和列分别显示所需图形对应的值,在双色点阵上显示“Z”。
当dianzhen=00是显示反转20s时的仿真波形,此时正转forward=0反转back=1, 行和列分别显示所需图形对应的值,在双色点阵上显示“F”。
4.3数码管显示部分
本任务需要两个数码管显示剩余时间,数码管输入输出各量真值表如下:
个位数字数码管显示:
十位数字数码管显示:
SS=0 码
管Q7 Q6 Q5 Q4 h g f e d c b a
显
示
值0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 功能说明:SS在0、1之间以一定的频率来回变换,因此观察者可以看到两个数码管同时显示数字,而实际上在同一时刻只有一个数码管显示。
当SS=0时,选中DS8A,使输出量为十位上的数;当SS=1时,选中DS7A,使输出量为个位上的数。
数码管输入数据不同,输出的7个段信号不同,数码管显示的数就不同。
4.4整体仿真波形
功能说明:在开始时LDN=0,开始置数,置数
完成后LDN=1开始工作,正转(forward=1),双色点阵显示“Z”,同时红色彩灯L1亮,暂停10S,反转20S(back=1),双色点阵显示“F”,同时红色彩灯L2亮,当停止工作时,蜂鸣器蜂鸣提示(fengming=1)。
第五章管脚锁定及硬件连线5.1管脚锁定
程序输入端管脚锁定:
程序输出端管脚锁定:
5.2硬件连线
Pin38 Pin53 Pin47 Pin46 Pin45 Pin44
Pin41 Pin40 Pin39 分别为蜂鸣器和A组数字
开关SW8 SW7 SW6 SW5 SW4 SW3 SW2 SW1,已
经内部连接,不需连线。
Pin10→CLOCK 信号引脚21 Pin9→CLOCK信号引脚11
Pin89→B组数字开关SW9 Pin12→彩色信号指示灯L1
Pin13→彩色信号指示灯L2 Pin87→动态数码管位选信号SS0
Pin 85→动态数码管 a Pin75→动态数码管b
Pin 83→动态数码管 c Pin
86→动态数码管d
Pin 88→动态数码管 e Pin
90→动态数码管f
Pin 93→动态数码管g Pin
198→双色点阵ROW1
Pin 196→双色点阵ROW2 Pin
193→双色点阵ROW3
Pin 191→双色点阵ROW4 Pin
189→双色点阵ROW5
Pin 179→双色点阵ROW6 Pin
176→双色点阵ROW7
Pin 174→双色点阵ROW8 Pin
197→双色点阵GA1
Pin 195→双色点阵GA2 Pin
192→双色点阵GA3
Pin 190→双色点阵GA4 Pin 187→双色点阵GA5
Pin 177→双色点阵GA6 Pin 175→双色点阵GA7
Pin 173→双色点阵GA8
第六章总结
在两周的课程设计过程中,从开始第一天对EDA课设的一无所知,到最后自己编程仿真,自己下箱硬件实验成功,在这期间,学会了不少东西。
开始在老师的讲解下,学习了EDA的相关东西,MAX+plus II软件的使用,verilog HDL
语言的使用,在拿到自己的任务书之后,开始设计完成自己的课题。
在设计过程中,遇到了不少麻烦,首先是看到自己的任务书后觉得很简单,但是却不知道如何下手;再次是每次程序编译都会出错,有些错误不知道是怎么回事,由什么原因引起,经过两周的学习,在老师和周围同学的帮助下,对verilog HDL语言慢慢熟悉,编程思路越来越清晰,从开始的不知所措到最后完成任务要求并附加功能,品尝到成功的喜悦。
两周的课设让我深深的懂得,不管做什么事情,一定要踏踏实实,切忌浮躁,尤其是在自己遇到困难的时候。
其次,要养成良好的习惯。
在这次编程过程中,如果有良好的编程习惯,对于自己的思路有良好的促进作用。
最后,感谢吕宏诗老师和张强老师在这次EDA课程设计中对我的指导和帮助。
参考文献
1郑兆兆李艳艳周莲莲吕宏诗《 EDA课程设计A指导书》
2常丹华张宝荣黄震李江昊《数字电子技术基础》
燕山大学课程设计评审意见表。