




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、设计目的 1.熟悉状态机的使用。2.了解用VHDL语言实现状态机的过程。二、设计内容本系统模拟一个自动售票机:所售邮票的价钱分别为:6角和8角;按键设置S1:按一下一角,S2:按一下5角,S3:按一下一元,S8:选择邮票面值,按一下当D1_1亮表示选择6角邮票,按一下D1_2亮表示选择8角邮票,S7: 取消操作。D1_6D1_8:找回的零钱 D1_1: 指示6角邮票D1_2: 指示8角邮票 D1_4: 提示邮票送出三、设计原理有限状态机FSM及其设计技术是实用数字系统设计中实现高效率、高可靠逻辑控制的重要途径。传统的状态机设计方法需进行繁琐的状态分配、绘制状态表、化简次态方程等,而利用VHDL可以避免这些繁琐的过程,直接利用状态转换图进行状态机的描述,所有的状态均可表达为CASE_WHEN结构中的一条CASE语句,而状态的转移则通过IF_THEN_ELsE语句实现。四、管脚分配 实验符号对应附录符号管脚money0S1PIN_66money1S2PIN-67money2S3PIN_68rstRESETPIN_240commodity6D1_1PIN_215commodity8D1_2PIN_217give_change0D1_8PIN_224give_change1D1_7PIN_225give_change2D1_6PIN_213stampS8PIN_75backS7PIN_76clk100hzClockPIN_29sellD1_4PIN_207五、使用说明本程序是一个自动处理人机信息交换的程序,它能根据人们的需要,显示邮票的面值,在付款和付款取消的时候给出相应指示,处理交易中出现的各种情况,并且能在交易后显示是否交易成功。初始定义投入壹角硬币的处理电路模块投入五角硬币的处理电路模块投入壹元硬币的处理电路模块选择邮票模块确认与取消处理电路模块退币处理电路模块出货电路模块六、流程图设计 七、程序设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity vendor is port( reset :in std_logic; -系统内部给其他顾客重新操作的复位信号 clk :in std_logic; -由外接信号发生器提供的1024Hz系统时钟信号 ok_buy :in std_logic; -购买确认的按键信号 cancel_buy :in std_logic; -购买取消的按键信号 coin_1 :in std_logic;- 投入壹角硬币的动作按键 coin_5 :in std_logic; -投入五角硬币的动作按键 coin_10 :in std_logic; -投入壹圆硬币的动作按键 select_liu_yp :in std_logic; -选择六角邮票的按键信号 select_ba_yp :in std_logic; -选择八角邮票的按键信号 led_liu_yp_ok :out std_logic; -灯亮显示还有六角邮票 led_ba_yp_ok :out std_logic; -灯亮显示还有八角邮票 led_liu_yp_sel :out std_logic; -灯亮显示六角邮票选择键被按 led_ba_yp_sel :out std_logic; -灯亮显示八角邮票选择键被按 led_buy :out std_logic; -灯亮显示按了购买确认键 led_cancel :out std_logic; -灯亮显示按了购买取消键led_one :out std_logic;-1个LED,投入1个1角硬币亮一个LED led_five :out std_logic;-3个LED,投入1个五角硬币亮一个LED led_ten :out std_logic;-2个LED,投入1个壹圆硬币亮一个LEDDOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); led_liu_yp_out :out std_logic;-灯亮显示六角邮票已出货 led_ba_yp_out :out std_logic -灯亮显示八角邮票已出货 );end;architecture arch of vendor is signal ok :std_logic;-用来维持ok_buy的状态 signal cancel :std_logic;-用来维持cancel_buy的状态 signal money_ok1 :std_logic;-投入金额正确 signal money_ok2 :std_logic;-投入金额正确 signal return_clk :std_logic;-退币的闪烁信号4Hz signal liu_yp_choice :std_logic;-用来维持select_liu_yp的状态 signal ba_yp_choice :std_logic;-用来维持select_ba_yp的状态signal total_amount_one:integer range 0 to 1;-壹角硬币的累计投入金额 signal total_amount_five:integer range 0 to 5;-五角硬币的累计投入金额 signal total_amount_ten :integer range 0 to 10;-壹圆硬币的累计投入金额 signal total_amount_6 :integer range 0 to 6;-壹圆硬币的累计投入金额 signal total_amount_8 :integer range 0 to 8;-壹圆硬币的累计投入金额 signal liu_yp_out :std_logic;-六角邮票已经出货的信号 signal ba_yp_out :std_logic;-八角邮票已经出货的信号 begincoin_1_counting:block-投入壹角硬币的处理电路模块begin process(reset,coin_1) begin if reset=1 then total_amount_one=0; -复位 led_one=0; elsif rising_edge(coin_1) then -按下投入一角硬币的按钮 total_amount_one=1; led_one=1; -灯亮几盏表示投入多少个硬币 end if; end process;end block;coin_10_counting:block-投入壹圆硬币的处理电路模块begin process(reset,coin_10) begin if reset=1 then total_amount_ten=0; -复位 led_ten=0; elsif rising_edge(coin_10) then -按下投入一元硬币的按钮 total_amount_ten=10; led_ten=1; -灯亮几盏表示投入多少个硬币end if; end process;end block;coin_5_counting:block -投入五角硬币的处理电路模块 signal no_coin_five:integer range 0 to 1;begin process(reset,coin_5) begin if reset=1 then total_amount_five=0; -复位 led_five=0; elsif rising_edge(coin_5) then -按下投入五角钱硬币的按钮 total_amount_five=5; led_five=1;-灯亮几盏表示投入多少个硬币 end if; end process;end block;select_drink:block begin process(reset,clk) begin if reset=1 then led_liu_yp_sel=0; -复位 led_ba_yp_sel=0;ba_yp_choice=0;liu_yp_choice=0;elsif rising_edge(clk) then -时钟上升沿 if select_liu_yp=1 then -选择 led_liu_yp_sel=1;-相应的信号灯亮 liu_yp_choice=1;-维持选择状态 led_ba_yp_sel=0;ba_yp_choice=0; end if; if select_ba_yp=1 then -选择 led_liu_yp_sel=0; ba_yp_choice=1;-维持选择状态 led_ba_yp_sel=1;-相应的灯亮 liu_yp_choice=0; end if; end if; end process;end block;ok_or_cancel:block -确认与取消处理电路模块begin p1:process(reset,ok_buy) begin if reset=1 then ok=0;-复位 led_buy=0; elsif rising_edge(ok_buy) then -按确认按钮 ok=1; -维持状态 led_buy=1; -确认灯亮 end if; end process; p2:process(reset,cancel_buy) begin if reset=1 then cancel=0; -复位 led_cancel=0; elsif rising_edge(cancel_buy) then-按取消键 cancel=1;-维持状态 led_cancel=1;-取消灯亮 end if; end process;end block;coin_returned:block -退币处理电路模块 signal total_amount:integer range 0 to 16; signal ret:integer range 0 to 16;begin process(reset,clk) begin if reset=1 then -复位 total_amount=0; money_ok1=0; money_ok2=0; DOUT=1000000; elsif rising_edge(clk) then-时钟上升沿total_amount=6 then money_ok1=1; else money_ok1=8 then money_ok2=1; else money_ok2DOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=1111111;END CASE;end if;if (money_ok1=1 and ok=1 and liu_yp_choice=1) thentotal_amount_6=6; ret=total_amount-total_amount_6;elsif( money_ok2=1 and ok=1 and ba_yp_choice=1) thentotal_amount_8=8; ret=total_amount-total_amount_8;else retDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=1111111;END CASE; end if; end if; end process;end block;give_check:block -出货电路模块beginliu_yp_out=1 when (money_ok1=1 and ok=1 and liu_yp_choice=1) else 0; led_liu_yp_out=liu_yp_o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谐音课件教学课件
- 2025年度光伏发电设备场地租赁安全规范合同
- 2025年度能源勘探劳务派遣与环境保护合同
- 2025年度体育馆场地租赁及赛事宣传推广服务合同
- 2025电子商务跨境支付与结算合作服务合同
- 2025版全新船舶买卖居间责任合同下载
- 2025年新型云计算平台服务器采购合作协议
- 2025版茶山种植项目承包合同范本下载
- 2025代持房产合同监督与合规审查服务协议
- 2025年二手车鉴定评估买卖合同
- GB/T 16927.1-2011高电压试验技术第1部分:一般定义及试验要求
- 2020年上海市中考英语试卷(含答案)
- 村级卫生室院感管理要求
- 员工自愿不交社保协议书模板(5篇)
- OECD税收协定范本中英对照文本
- 浙教版九上科学前三章难题易错题精选题(含答案)
- Unit 1 Reading and Thinking 教学设计-高中英语人教版(2019)必修第三册
- 仪表安装规范以及验收
- 《观潮》课件.ppt2
- 人教版(PEP)小学英语_3~6年级_单词表(带有音标)
- 地下连续墙施工质量控制要点(北京17号线)
评论
0/150
提交评论