自动售报机设计.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自动售报机设计

《自动售报机》设计实验目的通过实验掌握状态机的特点及其设计;通过编写程序掌握ModelSim仿真软件的使用方法和操作流程,并更加熟练的使用Verilog语言。实验要求实验重述自动售报机设计1)报纸价格为15分2)投币器只能接受5分和1角的硬币3)必须提供适当数目的零钱,投币器不找钱4)合法的硬币组合包括1个5分的硬币和1个1角的硬币3个5分的硬币1个1角的硬币和1个5分的硬币2个1角的硬币是合法的,但投币器不找钱设计电路1)当投入硬币时,一个两位的信号coin[1:0]被传送到数字电路。保持一个时钟周期。2)输出:1位。每次当投入的硬币总数为15分或者超过15分时,输出信号newspaper变为高电平,并且保持一个时钟周期。此时,售报机的门打开。3)一个同步复位信号4)状态:S0=0分;S5=5分;S10=10分; S15 = 15分3.状态图及状态定义本实验共有四个状态,分别为S0、S5、S10、S15。各个状态对映的信号为:S0:newspaper=0S5:newspaper=0S10:newspaper=0S15:newspaper=1源程序及测试程序本实验采用三段式状态机描述方法,根据下一状态的判断,用同步时序逻辑寄存有限状态机的输出。源程序module sell (coin,clock,reset,newspaper); input [1:0] coin; input clock,reset; output newspaper; parameter no_coin=2'b00; //表示没有输入 parameter nickel=2'b01; //表示5分 parameter dime=2'b10; //表示10分 parameter S0 = 2'b00, //输入为0分状态 S5 = 2'b01, //输入为5分的状态 S10 = 2'b10, //输入为10分的状态 S15 = 2'b11; //输入大于等于15分的状态reg [1:0] state;reg [1:0] next_state;reg newspaper;always @(posedge clock) if (reset) state<=S0; else state<=next_state; always @(state)begin case(state) //各状态及对应的信号 S0: newspaper=1'b0; S5: newspaper=1'b0; S10: newspaper=1'b0; S15: newspaper=1'b1; endcaseendalways @(coin or state)begin case(state) //状态转移及条件 S0: begin if(coin==nickel) next_state<=S5; else if(coin==dime) next_state<=S10; else next_state<=S0; end S5: begin if(coin==nickel) next_state<=S10; else if(coin==dime) next_state<=S15; else next_state<=S5; end S10: begin if(coin==nickel) next_state<=S15; else if(coin==dime) next_state<=S15; else next_state<=S10; end S15: begin newspaper=1'b1; next_state<=S0; end default:next_state<=S0; endcaseendendmodule测试程序 `timescale 1ns/1ns module sell2; reg clock,reset;reg [1:0] coin;wire newspaper;parameter DELY=100; sell FSM(coin,clock,reset,newspaper); always #50 clock = ~clock; initial begin clock=0; reset=1; coin=2'b00;end initialbegin #DELY reset=0; #DELY coin=2'b01; #DELY coin=2'b10; #DELY coin=2'b01; #DELY coin=2'b10; #DELY coin=2'b01; #DELY coin=2'b10; #DELY coin=2'b01; #DELY coin=2'b01; #DELY coin=2'b01; #D

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档