自动售货机设计和实现_第1页
自动售货机设计和实现_第2页
自动售货机设计和实现_第3页
自动售货机设计和实现_第4页
自动售货机设计和实现_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

word文档可自由复制编辑word文档可自由复制编辑word文档可自由复制编辑大学实验报告课程名称:数字系统现场集成技术实验项目名称:实验四(自动售货机设计和实现)学院:专业:指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务部制一、实验目的与要求:基本要求:该实验为团队协作,2人一个小组。可以对3种不同种类的货物进行自动售货,价格分别为A=4.00,B=2.50,C=1.00。售货机可以接受10元,5元,1元三种硬币(即有三种输入信号SY,WY,IY),并且在7段数码管(二位代表元,一位代表角)显示已投入的总钱数,选择货物的输入信号Ia,Ib,Ic,输出指示信号为Sa,Sb,Sc分别表示售出相应的货物,同时输出的信号yuan,jiao代表找零,并显示在7段数码管上。高级要求(可选):VGA显示3种货物图片及其价格,鼠标点击购买数量(1-9)后显示总价,安规格说明2中的button2-button4输入硬币,VGA显示已投入的总钱数,鼠标点击购买后,显示找零数目,购买物品闪烁,交易完成。规格说明:按一下button1按钮,表示购买货物A,第一个LED灯亮;按两下button1按钮,表示购买货物B,第二个LED灯亮;按三下button1按钮,表示购买货物C,第三个LED灯亮,同时7段数码管显示所要购买货物的价格。LED灯亮后,开始输入硬币。button2按一下,输入10元,按两下,输入二十元,以此类推;Button3按一下输入5元,按两下输入10元,以此类推;button4按一下输入1元,按两下输入2元,以此类推。7段数码管显示已投入的总钱数,再次按下button1键,7段数码管显示找零数目,同时指示货物的LED灯熄灭。如果投入的钱币不够就按下button1键确认购买,数码管显示“ER”。本实验使用FPGA板:Sparant6XC6SLX16CSG324C(建project时,需要选择该芯片的型号)。二、实验过程与代码:二、实验过程与代码:1、顶层代码:moduletop(inputclk,inputrst,input[4:0]btn,output[3:0]an,output[7:0]seg,output[2:0]led);wireclk,rst;wire[7:0]first_seg,second_seg,third_seg;wire[4:0]btn_down;seg_drvv1(.clk(clk),.rst(rst),.first_seg(first_seg),.second_seg(second_seg),.third_seg(third_seg),.an(an),.seg(seg));mainv2(.clk(clk),.rst(rst),.btn_down(btn_down),.first_seg(first_seg),.second_seg(second_seg),.third_seg(third_seg),.led(led));btn_scanv3(.clk(clk),.rst(rst),.btn(btn),.btn_down(btn_down));EndmoduleEndmodule2、数码管驱动:moduleseg_drv(inputclk,inputrst,input[7:0]first_seg,input[7:0]second_seg,input[7:0]third_seg,//input[7:0]forth_seg,outputreg[3:0]an,outputreg[7:0]seg);localparam[1:0]s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;reg[1:0]state;always@(posedgeclk,posedgerst)beginif(rst)beginan<=4'b1111;seg<=8'b1111_1111;state<=s0;endelsebegincase(state)s0:beginan<=4'b1110;seg<=first_seg;if(ms_up)state<=s1;elsestate<=state;ends1:beginan<=4'b1101;seg<=second_seg;if(ms_up)state<=s2;elsestate<=state;endendendmodule3、按键扫描与消抖:modulebtn_scan(inputclk,inputrst,input[3:0]btn,outputreg[3:0]btn_down);localparam[1:0]s0=2'b00,s1=2'b01,s2=2'b10;reg[1:0]state;reg[3:0]btn_reg;always@(posedgeclk,posedgerst)beginif(rst)beginbtn_down<=4'b0000;state<=s0;endelsebegincase(state)s0:beginbtn_down<=4'b0000;if(btn)state<=s1;elsestate<=s0;ends1:beginif(cnt_done)beginif(btn)beginstate<=s2;btn_reg<=btn;endelsestate<=s0;endelsestate<=s1;ends2:beginif(btn==4'b0000)beginbtn_down<=btn_reg;state<=s0;endelsebeginbtn_down<=btn_down;state<=s2;endendendcaseendendreg[20:0]cnt;regcnt_done;always@(posedgeclk,posedgerst)beginif(rst)begincnt<=21'b0;cnt_done<=1'b0;endelseif(state==s1)begincnt<=cnt+1'b1;if(cnt==21'd2000000)begincnt<=21'b0;cnt_done<=1'b1;endendelsebegincnt<=21'b0;cnt_done<=1'b0;endendendmodule4、主程序code:modulemain(inputclk,inputrst,input[3:0]btn_down,outputreg[7:0]first_seg,outputreg[7:0]second_seg,outputreg[7:0]third_seg,outputreg[2:0]led);localparam[2:0]s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101;reg[2:0]state;reg[3:0]money0,money1;reg[3:0]price;reg[4:0]change;reg[3:0]change1,change0;always@(posedgeclk,posedgerst)beginif(rst)beginled<=3'b000;money0<=0;money1<=0;change<=0;price<=0;state<=s0;endelsebegincase(state)s0:beginled<=3'b000;second_seg<=8'b0010_0100;first_seg<=8'b0100_1001;endelseif(state==s3)beginthird_seg<=8'b0000_0011;second_seg<=8'b1001_1000;first_seg<=8'b0000_0011;endelseif(state==s4)begincase(money0)4'b0000:second_seg<=8'b0000_0010;4'b0001:second_seg<=8'b1001_1110;4'b0010:second_seg<=8'b0010_0100;4'b0011:second_seg<=8'b0000_1100;4'b0100:second_seg<=8'b1001_1000;4'b0101:second_seg<=8'b0100_1000;4'b0110:second_seg<=8'b0100_0000;4'b0111:second_seg<=8'b0001_1110;4'b1000:second_seg<=8'b0000_0000;4'b1001:second_seg<=8'b0000_1000;endcasecase(money1)4'b0000:third_seg<=8'b0000_0011;4'b0001:third_seg<=8'b1001_1111;4'b0010:third_seg<=8'b0010_0101;4'b0011:third_seg<=8'b0000_1101;4'b0100:third_seg<=8'b1001_1001;4'b0101:third_seg<=8'b0100_1001;4'b0110:third_seg<=8'b0100_0001;4'b0111:third_seg<=8'b0001_1111;4'b1000:third_seg<=8'b0000_0001;4'b1001:third_seg<=8'b0000_1001;endcasefirst_seg<=8'b0000_0011;endelseif(state==s5)beginif(change==5'b01110)beginthird_seg<=8'b0000_0011;second_seg<=8'b0110_0001;first_seg<=8'b0110_0001;endelsebegincase(change0)4'b0000:second_seg<=8'b0000_0010;4'b0001:second_seg<=8'b1001_1110;4'b0010:second_seg<=8'b0010_0100;4'b0011:second_seg<=8'b0000_1100;4'b0100:second_seg<=8'b1001_1000;4'b0101:second_seg<=8'b0100_1000;4'b0110:second_seg<=8'b0100_0000;4'b0111:second_seg<=8'b0001_1110;4'b1000:second_seg<=8'b0000_0000;4'b1001:second_seg<=8'b0000_1000;4'he:second_seg<=8'b0110_0000;endcasecase(change1)4'b0000:third_seg<=8'b0000_0011;4'b0001:third_seg<=8'b1001_1111;4'b0010:third_seg<=8'b0010_0101;4'b0011:third_seg<=8'b0000_1101;4'b0100:third_seg<=8'b1001_1001;4'b0101:third_seg<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论