欢迎来到天天文库
浏览记录
ID:60814237
大小:14.42 KB
页数:8页
时间:2020-12-20
《基于VHDL的自动售货机的设计与实现.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、自动售货机实验报告一、设计任务设计一个自动售货饮料机,设每瓶饮料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表示未投入硬币。输出信号:c
2、omb_outputs(0)表示输出货物,comb_outputs(1)表示找5角零钱,输出信号为1表示输出货物或找零,输入信号为0表示不输出货物或找零。根据设计要求分析,得到状态转化图如下图所示,其中状态为s0、S1、S2、S3、S4、S5、S6;输入为state_inputs(0,1);输出为comb_outouts(0,1);输入仅与状态有关,因此将输入写在状态圈内部。00S0/000101000000S6/11S1/00100110010100S5/10S2/000000101010100101S4/00S3/00010000012
3、.设计步骤:(1)创建工程。打开QuartusII,创建一个新的工程并命名。根据实验室条件,选择的芯片为cyclone系列中的EP1C6Q240C8芯片。输入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))
4、;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,stat
5、e_inputs)begincasecurrent_stateiswhens0=>comb_outputs<="00";ifstate_inputs="00"thennext_state<=s0;elsifstate_inputs="01"thennext_state<=s1;elsifstate_inputs="10"thennext_state<=s2;endif;whens1=>comb_outputs<="00";ifstate_inputs="00"thennext_state<=s1;elsifstate_inputs="01"th
6、ennext_state<=s2;elsifstate_inputs="10"thennext_state<=s3;endif;whens2=>comb_outputs<="00";ifstate_inputs="00"thennext_state<=s2;elsifstate_inputs="01"thennext_state<=s3;elsifstate_inputs="10"thennext_state<=s4;endif;whens3=>comb_outputs<="00";ifstate_inputs="00"thennext_sta
7、te<=s3;elsifstate_inputs="01"thennext_state<=s4;elsifstate_inputs="10"thennext_state<=s5;endif;whens4=>comb_outputs<="00";ifstate_inputs="00"thennext_state<=s4;elsifstate_inputs="01"thennext_state<=s5;elsifstate_inputs="10"thennext_state<=s6;endif;whens5=>comb_outputs<="10";
8、ifstate_inputs="00"thennext_state<=s0;elsifstate_inputs="01"thennext_state<
此文档下载收益归作者所有