自动售货机实验报告一、设计任务设计一个自动售货饮料机,设每瓶饮料2.5元,投币口有两个,1元硬币(one)或5角硬币(half),每个时刻可以输入其中一种硬币,自动售货机有找零钱功能,oute为出货,outm为找零。二、设计过程1.设计思路:状态定义:s0表示初态,s1表示投入5角,s2表示投入1元,s3表示投入1元5角,s4表示投入2元,s5表示投入2元5角,s6表示投入3元。输入信号:state_outputs(0)表示输入货物,comb_outputs(1)表示找5角硬币,输入信号为1表示投入硬币,输入信号为1表示未投入硬币。输出信号:comb_outputs(0)表示输出货物,comb_outputs(1)表示找5角零钱,输出信号为1表示输出货物或找零,输入信号为0表示不输出货物或找零。根据设计要求分析,得到状态转化图如下图所示,其中状态为s0、S1、S2、S3、S4、S5、S6;输入为state_inputs(0,1);输出为comb_outouts(0,1);输入仅与状态有关,因此将输入写在状态圈内部。S0/00002.设计步骤:(1)创建工程。打开QuartusII,创建一个新的工程并命名。根据实验室条件,选择的芯片为cyclone系列中的EP1C6Q240C8芯片。S1/00S2/00S6/11S5/10S3/00S4/000100010010011001100101100001101001010000000000输入VHDL文本文件。新建文本文件VHDLfile。输入程序并保存。程序如下:libraryieee;useieee.std_logic_1164.all;entityautosellisport(clk,reset:instd_logic;state_inputs:instd_logic_vector(0to1);comb_outputs:outstd_logic_vector(0to1));endautosell;architecturebeofautosellistypefsm_stis(s0,s1,s2,s3,s4,s5,s6);signalcurrent_state,next_state:fsm_st;beginreg:process(reset,clk)beginifreset='1'thencurrent_state=s0;elsifrising_edge(clk)thencurrent_state=next_state;endif;endprocess;com:process(current_state,state_inputs)begincasecurrent_stateiswhens0=comb_outputs=00;ifstate_inputs=00thennext_state=s0;elsifstate_inputs=01thennext_state=s1;elsifstate_inputs=10thennext_state=s2;endif;whens1=comb_outputs=00;ifstate_inputs=00thennext_state=s1;elsifstate_inputs=01thennext_state=s2;elsifstate_inputs=10thennext_state=s3;endif;whens2=comb_outputs=00;ifstate_inputs=00thennext_state=s2;elsifstate_inputs=01thennext_state=s3;elsifstate_inputs=10thennext_state=s4;endif;whens3=comb_outputs=00;ifstate_inputs=00thennext_state=s3;elsifstate_inputs=01thennext_state=s4;elsifstate_inputs=10thennext_state=s5;endif;whens4=comb_outputs=00;ifstate_inputs=00thennext_state=s4;elsifstate_inputs=01thennext_state=s5;elsifstate_inputs=10thennext_state=s6;endif;whens5=comb_outputs=10;ifstate_inputs=00thennext_state=s0;elsifstate_inputs=01thennext_state=s1;elsifstate_inputs=10thennext_state=s2;endif;whens6=comb_outputs=11;ifstate_inputs=00thennext_state=s0;elsifstate_inputs=01thennext_state=s1;elsifstate_inputs=10thennext_state=s2;endif;endcase;endprocess;endbe;(2)编程序。新建VHDLfile。输入程序并保存。(3)编译程序,进行检验,纠错等。(4)制作仿真波形,进行仿真,检查是否有错,功能是否能够实现。(5)下载至芯片。三、实验结论仿真波形如下图所示:四、实验体会经过这次对自动饮料售货机系统的设计,让我对EDA设计有了更一步的认识,同时也对EDA这门课程有了更深入的了解。这次设计让我了解了关于自动饮料售货机的原理与设计理念。对QuartusⅡ软件的运用更加熟练。在摸索该如何设计程序使之当然这个设计存在许多的不足,比如这个设计不能识别纸币,且只能卖一种饮料,数码显示时不能显示当前所投钱的总数而是只显示0、0.5和1元,所以这个设计还需要进一步的修改与完善,在此设计的基础上我们可以加一个键盘让售货机卖更多种类的饮料。另外,我们还更加充分的认识到,EDA这门课程在科学发展中的至关重要性。查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。相互讨论共同研究也是很重要的,经常出现一些问题,经过和同组同学讨论和资料的查询最终得到了解决。锻炼了我们的团队合作精神及分工合作的能力。