设计一个自动饮料售卖机,共有两种饮料,其中饮料 A 每个 10 分钱,饮料 B 每个 5 分钱,硬币有 5 分和 10 分两种,并考虑找零。
要求用状态机实现,定义状态,画出状态转移图,并用 Verilog 完整描述该识别模块。

// input:
// select=1表示买A,select=0表示买B
// money=1: 投入10分钱,money=0: 投入5分钱

// output:
// out=00表示不出饮料,out=01表示出饮料A,out=10表示出饮料B
// change=01表示退5分钱,change=10表示退10分钱,change=00表示不退钱

S0:交易完成状态
S1: 交易未完成状态(机器内尚有5分钱)

module sell(clk,rst_n,select, money,  out,change
);input clk,rst_n,select,money;
output out,change;reg [1:0] out,change;
reg CS, NS;wire cond0,cond1,cond2,cond3;assign cond0 = (!money)&&(!select);
assign cond1 = (money)&&(!select);
assign cond2 = (!money)&&(select);
assign cond3 = (money)&&(select); parameter S0 = 1'b0,S1 = 1'b1;always@(posedge clk or negedge rst_n) begin
if(!rst_n)CS <= S0;
elseCS <= NS;
endalways@(rst_n or money or select or CS) begin
case (CS)S0:  beginif(cond0 || cond2 || cond3)NS <= S0;else if( cond1 )  NS <= S1;endS1:  beginif(cond0 || cond1 || cond2 || cond3)NS <= S0;enddefault: beginNS <= S0;end
endalways@(posedge clk or negedge rst_n) beginif(!rst_n) beginout <= 2'b00;change <= 2'b00;endelse begincase(CS)S0:if(cond0) beginout <= 2'b10;change <= 2'b00;endelse if(cond2) beginout <= 2'b10;change <= 2'b01;endelse if(cond3) beginout <= 2'b01;change <= 2'b00;endelse if(cond1) beginout <= 2'b00;change <= 2'b00;endS1: if(cond0) beginout <= 2'b10;change <= 2'b01;endelse if(cond2) beginout <= 2'b10;change <= 2'b10;endelse if(cond3) beginout <= 2'b01;change <= 2'b01;endelse if(cond1) beginout <= 2'b01;change <= 2'b00;enddefault: beginout <= 2'b00;change <= 2'b00;endend
endendmodule

Verilog 自动饮料售卖机相关推荐

  1. Verilog实现状态机与状态机经典示例——序列检测器、自动饮料售卖机

    原文链接:https://blog.csdn.net/qq_34070723/article/details/100737225 作者:King阿金 目录 1.状态机原理与三段式状态机 2.状态机示例 ...

  2. 我的Java学习之路(三)-- 自动饮料售卖机控制台程序

    自动饮料售卖机控制台程序 1. 首先,定义一个饮料抽象类```Drink.java``` 2. 定义一个咖啡类```Coffee.java```,继承饮料类 3. 再定义一个可乐类```Cola.ja ...

  3. 基于labview的自动饮料售卖机

    基于labview的自动饮料售卖机,可以实现自动设置有管理员界面和用户界面,实现工能:用户投币.购买.退币操作,能够提示用户余额不足.饮料数目不足:管理员能设置饮料价格和数量. vi文件的链接:htt ...

  4. 自动饮料售卖机Verilog设计

    饮料为5美分,饮料机只能接收1美分,2美分,5美分的钱币,请设计一个Verilog电路表示 `timescale 1ns/10ps module sell(one,two,five,rset,clk, ...

  5. 【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  6. 【测试】根据因果图法设计饮料售卖机的测试用例

    [测试]根据因果图法设计饮料售卖机的测试用例 因果法设计测试用例的步骤:   ① 分析所有可能的输入和可能的输出   ② 找出输入与输出之间的对应关系   ③ 画出因果图   ④ 把因果图转换成判定表 ...

  7. 黑盒测试——自动饮料售货机

    问题描述 设要对一个自动饮料售货机软件进行黑盒测试.该软件的规格说明如下:"有一个处理单价为1元5角的盒装饮料的自动售货机软件,若投入1元5角硬币,按下"可乐".&quo ...

  8. 利用因果图法对一个自动饮料售货机软件进行黑盒测试

    一.需求 设要对一个自动饮料售货机软件进行黑盒测试.该软件的规格说明如下:"有一个处理单价为1元5角的盒装饮料的自动售货机软件,若投入1元5角硬币,按下"可乐".&quo ...

  9. 设计c语言自动售货机源程序,自动饮料售货机源程序C语言编程

    采用C语言编程的自动饮料售货机源程序 #include #include #include class goodsinfo { public: char *name; float price; int ...

最新文章

  1. LeetCode简单题之比赛中的配对次数
  2. 综述:解决目标检测中的样本不均衡问题
  3. client-go入门之1:创建连接Kubernetes集群的客户端
  4. 零基础学Python(第十八章 文件IO流操作)
  5. [IE 技巧] 显示/隐藏IE 的菜单/工具栏
  6. 全世界20座最有创意的桥,7座在中国,5座在荷兰!
  7. (全网唯一)Python 10行代码 实现 PDF转WORD
  8. SAP License:客户特别总帐统驭科目某天余额取数逻辑
  9. 英伟达的“千人摩擦计划”:几千个智能体互相玩耍,学习跑酷更轻松
  10. 在图层上使用CATransform3D制做三维动画-b
  11. 曲线积分和曲面积分及其几何应用、物理应用
  12. 复现贪吃蛇程序——判断游戏失败(第四部分)
  13. 【EmmyLua插件】Rider无法跳转lua文件解决
  14. 【爬虫】巧用 js2py (附带bug解决)
  15. vivo是安卓手机吗_拜托你看看vivo手机自带的翻译功能,这么强大的功能浪费了合适吗...
  16. 使用sql server Management Studio(企业管理器)或查询分析器管理数据库
  17. 树莓派-1、上手及资源
  18. RabbitMQ(6)-Spring AMQP,Spring集成RabbitMQ
  19. 五天,上线一个自己的聚合导航,很酷!
  20. 500 rewrite or internal redirection cycle while internally redirecting to “index.html“

热门文章

  1. eclipse 设置 @author @version等注释模板
  2. 【SDCC 2016】蚂蚁金服高级研究员阳振坤:关系数据库的困境与出路
  3. Python-OpenCV对图像像素的遍历操作示例
  4. 曲线曲率介绍和python求法
  5. Android MP3录音功能
  6. Ubuntu服务器连接无线网,Ubuntu Server 配置WIFI连接
  7. 解决TextMate中文问题
  8. python黑客帝国教学_Python黑科技01-实现黑客帝国电影程序版
  9. IT之路——入门以后
  10. css鼠标光标属性样式大全