EDA课程设计报告
自动售饮料机的设计
院 系: 信息工程学院
专 业:
学 号:
姓 名:
指导教师:
目 录
一 、课程设计目的········································3
二、课程设计题目描述及要求·································3
三、课程设计报告内容·······································3
四、设计
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
和心得体会·····································8
自动售饮料机的设计
一、课程设计目的:
通过这次课程设计对自己以前学过的知识加以巩固,再次熟悉EDA设计软件QuartusII的使用方法,掌握EDA的设计流程,更加熟练进行综合、仿真、调试、分配管脚、下载等操作,并再次基础上初步学会如何设计一个工程,与实际生活结合起来,既锻炼自己的动手能力,又锻炼了自己的思维能力,为以后进行工程实际问题的研究打下设计基础。
二、课程设计题目描述及要求:
自动售饮料机的题目描术及功能要求:
(1)、该系统能完成货物信息存储,进程控制,硬币处理,余额计算,显示等功能。
(2)、该系统可以管理四种货物,每种的数量和单价在初始化时输入,
存储器中存储。用户可以用硬币进行购物,按键进行选择。
(3)、系统根据用户输入的货币,判断钱币是否够,钱币足够则根据顾客的要求自动售货,钱币不够则给出提示并退出。
(4)、系统自动的计算出应找钱币余额、库存数量并显示。
三、课程设计报告内容:
3.1、设计原理及
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
论证:
本次课程设计中自动售饮料机存储四种饮料,价钱分别为2元、2.5元、3元、3.5元,每种饮料存储9瓶。该售货机有复位和选择功能,通过reset键复位,number键确定购买数量,sel键选择饮料,coin1,coin05键进行投币一元和五角,按get键进行购买,并且还能用数码管显示所购买饮料的单价及其剩余数量,显示投币总数及购买数量,并能找钱。通过程序编写,综合仿真测试,对设计方案进行了论证。
3.2、系统设计描述:
(1)程序代码:
module sell(clk,reset,sel,coin05,coin1,get,item,act05,act1,TOT1,TOT2,PRE1,PRE2,NUM,number,SYS);
parameter p1=4'b0100,p2=4'b0101,p3=4'b0110,p4=4'b0111;// 设置四种饮料价格
input clk,reset,sel,coin05,coin1,get;
input [3:0]number;
output item,act05;
output [3:0]act1,NUM,TOT1,PRE1,PRE2,TOT2,SYS;
reg item,act05;
reg c;
reg [2:0]Q;
reg [3:0]TOT2,PRE2,NU1,NU2,NU3,NU4,SYS;
reg [3:0]a,p,act1,TOT1,NUM,PRE1;
reg [4:0]totle,m,TOT;
integer i;
always @ (posedge clk)
begin
if(reset)// 高电平进行复位
begin
item=0;act05=0;act1=0;TOT=0;PRE1=0;PRE2=0;NUM=0;totle=0;m=0;NU1=4'b1001;NU2=4'b1001;NU3=4'b1001;NU4=4'b1001;
end
else begin
if(sel) //四种饮料可以进行循环选择
begin
a=number;
if(Q>4) Q=0;
else if(Q<1) Q=0;
Q=Q+1;
if(Q==1) begin p=p1;SYS=NU1; end
if(Q==2) begin p=p2;SYS=NU2; end
if(Q==3) begin p=p3;SYS=NU3; end
if(Q==4) begin p=p4;SYS=NU4; end
end
totle=0;
a=number;
for(i=1;i<=17;i=i+1)// for循环语句计算所购买饮料总价
if(a>=1&sel!=1)
begin
totle=totle+p;
a=a-1;
end
TOT2=TOT[0];//对投币总数及饮料单价译码为五角的个数
TOT1[3:0]=TOT[4:1];//将投币总数的高四位译码为一元的个数
PRE1[2:0]=p[3:1];//对价格进行译码
PRE2=p[0];
if(TOT2==0) TOT2=4'b0000;
if(TOT2==1) TOT2=4'b0101;
if(PRE2==0) PRE2=4'b0000;
if(PRE2==1) PRE2=4'b0101;
NUM=number;
m=0;
item=0;
act05=0;
act1=0;
if(coin05) TOT=TOT+1;
if(coin1) TOT=TOT+2;
if(get)
begin
if(SYS
totle) //投钱大于饮料总价则输出饮料并找钱
begin
item=1;
m=TOT-totle; 将要找的钱送给一个变量m
TOT=0;
end
else if(TOT==totle) //投钱等于饮料总价输出饮料不找钱
begin
item=1;
TOT=0;
end
else
begin//否则不输出饮料, 找钱
item=0;
m=TOT;
TOT=0;
end
end
c=m[0];
act1[3:0]=m[4:1];
if(c!=0) act05=1;
else act05=0;//显示每种饮料剩余数量
if(p==p1&item==1) begin NU1=NU1-number;SYS=NU1; end
if(p==p2&item==1) begin NU2=NU2-number;SYS=NU2; end
if(p==p3&item==1) begin NU3=NU3-number;SYS=NU3; end
if(p==p4&item==1) begin NU4=NU4-number;SYS=NU4; end
end
end
end
endmodule
(2)、原理框图:
(3)、仿真波形:
(3)、电路连接图:
(4):管脚分配:
(5):
注释:按reset键复位,按sel键一次选择第一种饮料,按number键2次表示够买2瓶,然后按coin键投币五元,按get键进行购买,购买成功后item灯亮表示输出饮料,数码管NUM显示购买数量,SYS显示该饮料剩余数量,act1显示找钱一元,TOT1、TOT2显示投币总数,PRE1,PRE2显示所购买的饮料单价。
3.3、系统设计工作进程:
这次课程设计我和刘远一组,第一周主要进行程序编写修改,综合及波形仿真,经过多次调试修改,最终波形仿真成功。第二周主要分配管脚、编译下载及功能仿真,解决在其中遇到的问题,最后在老师的指导下又增加了一些其他功能,再次改写程序,综合仿真下载完成整个课程设计。这次设计整个过程两人都参与,一起分析并解决问题,并各自独操作了整个过程,每人都学到了很多知识。
3.4、设计和调试过程中出现的问题及解决方法:
课程设计中遇到的问题主要有:
(1)、程序编写错误:由于程序语法错误导致综合不成功,为此多次修改程序直至综合成功;
(2)、波形仿真错误:主要由于程序编写逻辑错误,很多功能都不能仿真出来,例如按get键后,一直找钱、输出饮料,为此我们添加act05=0、act1=0、item=0等语句使该问题得到解决;利用for语句循环在一个clk内计算购买饮料的总价。
(3)、功能仿真中也遇到了一些问题,最终通过多次尝试使问题得到了解决。
四、设计总结和心得体会
通过这次课程设计了解到自己有很多知识还没有学会,思维能力有待提高,这次课程设计与实际生活相联系,通过学习进一步了解到一个工程的设计流程。再次熟练了QuartusII软件的使用方法及其综合、波形仿真、管脚分配、编译下载、功能仿真的整个过程,知道了自动售饮料机是如何设计的,为自己以后的学习打下了基础。