资源描述:
《自动售货机fpga与verilog代码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、深圳大学课程论文题目设计一个自动售货机成绩专业课程名称、代码年级姓名学号时间年月设计一个自动售货机基本要求:可以对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,第一个L
2、ED灯亮;按两下button1按钮,表示购买货物B,第二个LED灯亮;按三下button1按钮,表示购买货物C,第三个LED灯亮。2.LED灯亮后,开始输入硬币。button2按一下,输入1元,按两下,输入两元,以此类推;Button3按一下输入5角,按两下代表1元,以此类推;button4按一下输入1角,按两下输入2角,以此类推。7段数码管显示已投入的总钱数,再次按下button1键,7段数码管显示找零数目,同时指示货物的LED灯熄灭。3.本实验使用FPGA板:Sparant6XC6SLX16CSG324C(建project时,需要选择该芯片的型号)
3、。论文要求:1.论文的格式采用标准的深圳大学以论文、报告等形式考核专用答题纸;2.论文中应完包括ASM图,以及VerilogHDL代码,并且代码应该与ASM图相一致.3.论文应包括该电路的VerilogHDL仿真.1.论文应该有FPGA开发的布局布线后结果.2.报告应该有实验成功的开发板截图.1.状态图本设计需要2个状态机,一个是售货机工作状态机,一个是按键消抖用的FSM1.Verilog代码:`timescale1ns/1psmoduleautomat(clk_in,reset,cs,Led,seg,button1_in,button2_in,but
4、ton3_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,bu
5、tton3,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
6、_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
7、;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;endcaseendelse
8、if(cs==4'b1110)begincs<=4'b1101;case(tens)0:seg