三种类型自助售货机Verilog描述
最近遇到该类题目一共三种形式,在解决过程中发现暂且在理想状态下设计,如果在实际情况下还需要再深入思考。
1.两种面值5分、10分;货物价格10分;考虑有找零。
此种情形在此使用2个状态,两段式描述(也可考虑3个状态)
module zzshj1(
input clk,
input rst,
input A, //投入5分
input B, //投入10分
output reg out,
output reg change
);

parameter s0=1'b0,s1=1'b1;
reg current_state,next_state;  //中间变量声明always@(posedge clk or negedge rst)   //状态转换beginif(!rst)current_state<=s0;      elsecurrent_state<=next_state;     endalways@(current_state or A or B)   //输出逻辑和次态逻辑描述beginout=1'b0;change=1'b0;case(current_state)s0: beginif(A==1&&B==0)next_state=s1;else if(A==0&&B==1)beginnext_state=s0;out=1'b1;endelsenext_state=s0;ends1: beginif(A==1&&B==0)beginnext_state=s0;out=1'b1;endelse if(A==0&&B==1)beginnext_state=s0;out=1'b1;change=1'b1;                     endelsenext_state=s0;              end                 default:next_state=s0;endcaseend

endmodule
2.两种面值5分、10分;货物价格15分;考虑有找零。
module zzshj2(
input clk,
input rst,
input A, //投入5分
input B, //投入10分
output reg out,
output reg change
);

parameter s0=2'b00,s1=2'b01,s2=2'b10;
reg [1:0] current_state,next_state;  //中间变量声明always@(posedge clk or negedge rst)   //状态转换beginif(!rst)current_state<=s0;      elsecurrent_state<=next_state;       endalways@(current_state or A or B)   //输出逻辑和次态逻辑描述beginout=1'b0;change=1'b0;case(current_state)s0: beginif(A==1&&B==0)//5next_state=s1;else if(A==0&&B==1)//10next_state=s2;elsenext_state=s0;ends1: beginif(A==1&&B==0)//5next_state=s2;else if(A==0&&B==1)//10beginnext_state=s0;out=1'b1;                       endelsenext_state=s1;              end s2: beginif(A==1&&B==0)//5beginnext_state=s0;out=1'b1;endelse if(A==0&&B==1)//10beginnext_state=s0;out=1'b1;change=1'b1;endelsenext_state=s2;              end                 default:next_state=s0;endcaseend

endmodule

综合后状态机视图


仿真结果图
3.三种面值1分、2分、5分;货物价格5分;考虑找零一分。
对于此种情形在设计过程中暂时未考虑:投入2分再投5分、投入已3分再投5分诸如此类,因为要求找零一分。如果只考虑找零,不考虑找零多少,只是产生找零信号,那么可以考虑以上情况。
module zzshj3(
input clk,
input rst,
input A, //投入1fen
input B, //2fen
input C, //5fen
output reg out, //出饮料
output reg change //找零一分
);

parameter s0=5'b0_0001,s1=5'b0_0010,s2=5'b0_0100,s3=5'b0_1000,s4=5'b1_0000;
reg [4:0] state;  //中间变量声明always@(posedge clk or negedge rst)   beginif(!rst)beginout<=1'b0;change<=1'b0;state<=s0;endelse beginout<=1'b0;change<=1'b0;case(state)s0: beginif(A==1&&B==0&&C==0)   //1state<=s1;else if(A==0&&B==1&&C==0)//2state<=s2;else if(A==0&&B==0&&C==1)//5beginstate<=s0;out<=1'b1;endelse if(A==0&&B==0&&C==0) state<=s0;ends1: beginif(A==1&&B==0&&C==0)//1state<=s2;else if(A==0&&B==1&&C==0)//2state<=s3;                      else if(A==0&&B==0&&C==0)state<=s1;               end s2: beginif(A==1&&B==0&&C==0)//1state<=s3;else if(A==0&&B==1&&C==0)//2state<=s4;else if(A==0&&B==0&&C==0)state<=s2;               end s3: beginif(A==1&&B==0&&C==0)//1state<=s4;else if(A==0&&B==1&&C==0)//2beginstate<=s0;out<=1'b1;endelse if(A==0&&B==0&&C==0)state<=s3;                end s4: beginif(A==1&&B==0&&C==0)//1beginstate<=s0;out<=1'b1;endelse if(A==0&&B==1&&C==0)//2beginstate<=s0;out<=1'b1;change<=1'b1;endelse if(A==0&&B==0&&C==0)state<=s4;               end                 default:state<=s0;endcaseendend

endmodule

综合后状态机视图

仿真结果图(红线分割区间分别为连续输入5分、连续输入2分、连续输入1分)
总结:对于以上分析设计存在瑕疵,欢迎有兴趣的与我交流改正。

三种类型自助售货机Verilog描述相关推荐

  1. Asp.net支持三种类型的cache[转]

    from:http://www.cnblogs.com/thomasnet/archive/2006/11/26/573104.html Asp.net支持三种类型的cache 想写一个技术快速概述, ...

  2. html5中标签分为,HTML标签的三种类型

    HTML标签的类型分为三种:行内元素,行内块元素,块级元素 而标签的属性是可以转换的 display:inline: 转换为行内元素 display:linline-block 转换为行内块元素 di ...

  3. (6)售货机verilog与Systemverilog编码

    6 售货机verilog与Systemverilog编码 1 本章目录 1)FPGA简介 2)Verilog简介 3)Systemverilog简介 4)售货机verilog编码 5)售货机Syste ...

  4. ios 开发者证书付费三种类型区别

    ios 开发者证书付费三种类型区别 苹果开发者账号分为 个人(individual),公司(company),企业(enterprise)三种类型. 1.个人开发者账号: (1)费用:99美元每年. ...

  5. 数仓:事实表设计方法,原则和三种类型选择

    关注公众号,回复关键字 [资料],获取[10万字大数据框架面试知识点]与[大数据开发的命令手册] 事实表设计方法 事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计.其包含与该业务过程有关的维 ...

  6. java中三种转string的方法_java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

  7. java中有scoreframe类型嘛_java构造函数的三种类型总结

    我们说构造函数能处理参数的问题,但其实也要分三种情况进行讨论.目前有三种类型:无参.有参和默认.根据不同的参数情况,需要我们分别进行构造函数的讨论.这里重点是无参构造函数的初始化也要分两种方法进行分析 ...

  8. mysql varchar,bigint,char三种类型性能的比较

    mysql varchar,bigint,char三种类型性能的比较 比较数据类型的性能好坏,数据表必须有足够的数据,我用25万条数据做测试 字段是手机号,用这三个类型哪个类型好呢.首先分析手机号有1 ...

  9. mysql double 转 字符串_没想到!在MySQL数据库中的数据有这三种类型!

    MySQL数据库是一个或多个数据列构成二维表,它的每一种数据列都有特定类型,而类型决定MySQL是怎么看待该列数据,如果把整型数值存放到字符类型的列中,MySQL则会把它当成字符串来处理. MySQL ...

  10. 辨别DVI接口连接线三种类型五种规格

    DVI(Digital Visual Interface),即数字视频接口.它是1999年由Silicon Image.Intel(英特尔).Compaq(康柏).IBM.HP(惠普).NEC.Fuj ...

最新文章

  1. Commonjs规范
  2. Linux下覆盖目录的方法
  3. 使用elementui实现表单上传功能_使用ElementUI中的upload组件上传Excel文件
  4. BZOJ 3223: Tyvj 1729 文艺平衡树(splay)
  5. CTFshow sql注入 上篇(web171-220)
  6. sql 自动增加排序 并且初始值是000001
  7. 2016年10月20日 .NET Core 1.0.2 更新
  8. click group实例
  9. POJ3617 Best Cow Line【水题】
  10. [转载] python怎么获取redis中的数据_python操作redis数据库
  11. 数据清洗+特征构造:bureau.csv
  12. live2d_Live2D | CubismSdkForUnity4r.1简介(上)
  13. C++打印ASCLL码表
  14. [状压dp] 炮兵阵地(状压dp)
  15. 如何安装WinDriver—linux 系统下和Windows系统下———官网中文教程
  16. Oracle ORA-28000 the account is locked
  17. 软件图形用户界面设计
  18. Java流程控制练习题
  19. [北航软工]第二次团队作业
  20. 微信小程序-页面导航

热门文章

  1. 基于java的聊天工具_[源码和文档分享]基于java 的仿QQ聊天工具
  2. 外观专利申请最快几天,2021年申请专利需要多久
  3. 发作性睡病怎么治疗?
  4. SEO原创文章怎么写
  5. Jmeter----excel数据驱动接口自动化测试
  6. Typora的图片管理
  7. java+springmvc+vues 基于ssm的图书馆图书借阅归还管理系统
  8. Montior监视器对象与操作系统的管程(monitors)
  9. eNSP动态路由综合试验(RIP)
  10. 转载:编 程 之 道 The Tao Of Programming