自动售货机fpga与verilog代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

深圳大学课程论文题目设计一个自动售货机成绩专业课程名称、代码年级姓名学号时间年月设计一个自动售货机基本要求:可以对3种不同种类的货物进行自动售货,价格分别为A=1.00,B=1.50,C=1.60。售货机可以接受1元,5角,1角三种硬币(即有三种输入信号IY,IWJ,IYJ),并且在7段数码管(二位代表元,一位代表角)显示已投入的总钱数,选择货物的输入信号Ia,Ib,Ic,输出指示信号为Sa,Sb,Sc分别表示售出相应的货物,同时输出的信号yuan,jiao代表找零,并显示在7段数码管上。规格说明:1.按一下button1按钮,表示购买货物A,第一个LED灯亮;按两下button1按钮,表示购买货物B,第二个LED灯亮;按三下button1按钮,表示购买货物C,第三个LED灯亮。2.LED灯亮后,开始输入硬币。button2按一下,输入1元,按两下,输入两元,以此类推;Button3按一下输入5角,按两下代表1元,以此类推;button4按一下输入1角,按两下输入2角,以此类推。7段数码管显示已投入的总钱数,再次按下button1键,7段数码管显示找零数目,同时指示货物的LED灯熄灭。3.本实验使用FPGA板:Sparant6XC6SLX16CSG324C(建project时,需要选择该芯片的型号)。论文要求:1.论文的格式采用标准的深圳大学以论文、报告等形式考核专用答题纸;2.论文中应完包括ASM图,以及VerilogHDL代码,并且代码应该与ASM图相一致.3.论文应包括该电路的VerilogHDL仿真.4.论文应该有FPGA开发的布局布线后结果.5.报告应该有实验成功的开发板截图.1.状态图SelACountSelBSelCidlebutton1!button1button1Button2||Button3||Button4button1Button2||Button3||Button4Button2||Button3||Button4Button1&&total(A|B|C)售货机FSMwait1wait0delaybutton!buttonCnt==24&&buttonCnt!=24Cnt==24&&!button!buttonbutton按键消抖动FSM本设计需要2个状态机,一个是售货机工作状态机,一个是按键消抖用的FSM2.Verilog代码:`timescale1ns/1psmoduleautomat(clk_in,reset,cs,Led,seg,button1_in,button2_in,button3_in,button4_in);inputclk_in,reset;inputbutton1_in,button2_in,button3_in,button4_in;output[2:0]Led;output[3:0]cs;output[7:0]seg;reg[7:0]seg;reg[3:0]cs;reg[2:0]Led;reg[6:0]total;reg[4:0]state;reg[2:0]state1,state2,state3,state4;reg[4:0]cnt1,cnt2,cnt3,cnt4;regbutton1,button2,button3,button4;reg[6:0]ones,tens;regclk;reg[23:0]divcnt;parameterwait0=3'b001;parameterdelay=3'b010;parameterwait1=3'b100;parameteridle=5'b00001;parameterselA=5'b00010;parameterselB=5'b00100;parameterselC=5'b01000;parametercount=5'b10000;always@(posedgeclk_inornegedgereset)///clk_dividerbeginif(!reset)beginclk=1'b0;divcnt=0;endelseif(divcnt==99999)beginclk=1'b1;divcnt=0;endelseif(divcnt==49999)beginclk=1'b0;divcnt=divcnt+1;endelsedivcnt=divcnt+1;endalways@(posedgeclkornegedgereset)//7segscanclk=1Khzbeginif(!reset)begincs=4'b1101;seg=8'b00111000;endelseif(cs==4'b1101)begincs=4'b1110;case(ones)0:seg=8'b10000001;1:seg=8'b11001111;2:seg=8'b10010010;3:seg=8'b10000110;4:seg=8'b11001100;5:seg=8'b10100100;6:seg=8'b10100000;7:seg=8'b10001111;8:seg=8'b10000000;9:seg=8'b10000100;default:seg=8'b01110000;endcaseendelseif(cs==4'b1110)begincs=4'b1101;case(tens)0:seg=8'b00000001;1:seg=8'b01001111;2:seg=8'b00010010;3:seg=8'b00000110;4:seg=8'b01001100;5:seg=8'b00100100;6:seg=8'b00100000;7:seg=8'b00001111;8:seg=8'b00000000;9:seg=8'b00000100;default:seg=8'b01110000;endcaseendendalways@(total)//totaldecodebeginif(total10&&total=0)begintens=0;ones=total;endelseif(total20&&total=10)begintens=1;ones=total-10;endelseif(total30&&total=20)begintens=2;ones=total-20;endelseif(total40&&total=30)begintens=3;ones=total-30;endelseif(total50&&total=40)begintens=4;ones=total-40;endelseif(total60&&total=50)begintens=5;ones=total-50;endelseif(total70&&total=60)begintens=6;ones=total-60;endelseif(total80&&total=70)begintens=7;ones=total-70;endelseif(total90&&total=80)begintens=8;ones=total-80;endelseif(total100&&total=90)begintens=9;ones=total-90;endelsebegintens=9;ones=9;endendalways@(posedgeclkornegedgereset)//undokeyjitterfsmforbutton1_inbeginif(!reset)beginbutton1=1'b0;cnt1=0;state1=wait0;endelsebeginbutton1=1'b0;case(state1)wait0:beginif(button1_in)state1=delay;elsestate1=wait0;enddelay:beginif(cnt1==24)begincnt1=0;if(button1_in)beginbutton1=1'b1;state1=wait1;endelsestate1=wait0;endelsebegincnt1=cnt1+1;state1=delay;endendwait1:beginif(button1_in)state1=wait1;elsestate1=wait0;enddefault:state1=wait0;endcaseendendalways@(posedgeclkornegedgereset)//undokeyjitterfsmforbutton2_inbeginif(!reset)beginbutton2=1'b0;cnt2=0;state2=wait0;endelsebeginbutton2=1'b0;case(state2)wait0:beginif(button2_in)state2=delay;elsestate2=wait0;enddelay:beginif(cnt2==24)begincnt2=0;if(button2_in)beginbutton2=1'b1;state2=wait1;endelsestate2=wait0;endelsebegincnt2=cnt2+1;state2=delay;endendwait1:beginif(button2_in)state2=wait1;elsestate2=wait0;enddefault:state2=wait0;endcaseendendalways@(posedgeclkornegedgereset)//undokeyjitterfsmforbutton3_inbeginif(!reset)beginbutton3=1'b0;cnt3=0;state3=wait0;endelsebeginbutton3=1'b0;case(state3)wait0:beginif(button3_in)state3=delay;elsestate3=wait0;enddelay:beginif(cnt3==24)begincnt3=0;if(button3_in)beginbutton3=1'b1;state3=wait1;endelsestate3=wait0;endelsebegincnt3=cnt3+1;state3=delay;endendwait1:beginif(button3_in)state3=wait1;elsestate3=wait0;enddefault:state3=wait0;endcaseendendalways@(posedgeclkornegedgereset)//undokeyjitterfsmforbutton3_inbeginif(!reset)beginbutton4=1'b0;cnt4=0;state4=wait0;endelsebeginbutton4=1'b0;case(state4)wait0:beginif(button4_in)state4=delay;elsestate4=wait0;enddelay:beginif(cnt4==24)begincnt4=0;if(button4_in)beginbutton4=1'b1;state4=wait1;endelsestate4=wait0;endelsebegincnt4=cnt4+1;state4=delay;endendwait1:beginif(button4_in)state4=wait1;elsestate4=wait0;enddefault:state4=wait0;endcaseendendalways@(posedgeclkornegedgereset)//FSMforautomatbeginif(!reset)begintotal=

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功