Verilog 自动饮料售卖机
设计一个自动饮料售卖机,共有两种饮料,其中饮料 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 自动饮料售卖机相关推荐
- Verilog实现状态机与状态机经典示例——序列检测器、自动饮料售卖机
原文链接:https://blog.csdn.net/qq_34070723/article/details/100737225 作者:King阿金 目录 1.状态机原理与三段式状态机 2.状态机示例 ...
- 我的Java学习之路(三)-- 自动饮料售卖机控制台程序
自动饮料售卖机控制台程序 1. 首先,定义一个饮料抽象类```Drink.java``` 2. 定义一个咖啡类```Coffee.java```,继承饮料类 3. 再定义一个可乐类```Cola.ja ...
- 基于labview的自动饮料售卖机
基于labview的自动饮料售卖机,可以实现自动设置有管理员界面和用户界面,实现工能:用户投币.购买.退币操作,能够提示用户余额不足.饮料数目不足:管理员能设置饮料价格和数量. vi文件的链接:htt ...
- 自动饮料售卖机Verilog设计
饮料为5美分,饮料机只能接收1美分,2美分,5美分的钱币,请设计一个Verilog电路表示 `timescale 1ns/10ps module sell(one,two,five,rset,clk, ...
- 【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...
- 【测试】根据因果图法设计饮料售卖机的测试用例
[测试]根据因果图法设计饮料售卖机的测试用例 因果法设计测试用例的步骤: ① 分析所有可能的输入和可能的输出 ② 找出输入与输出之间的对应关系 ③ 画出因果图 ④ 把因果图转换成判定表 ...
- 黑盒测试——自动饮料售货机
问题描述 设要对一个自动饮料售货机软件进行黑盒测试.该软件的规格说明如下:"有一个处理单价为1元5角的盒装饮料的自动售货机软件,若投入1元5角硬币,按下"可乐".&quo ...
- 利用因果图法对一个自动饮料售货机软件进行黑盒测试
一.需求 设要对一个自动饮料售货机软件进行黑盒测试.该软件的规格说明如下:"有一个处理单价为1元5角的盒装饮料的自动售货机软件,若投入1元5角硬币,按下"可乐".&quo ...
- 设计c语言自动售货机源程序,自动饮料售货机源程序C语言编程
采用C语言编程的自动饮料售货机源程序 #include #include #include class goodsinfo { public: char *name; float price; int ...
最新文章
- LeetCode简单题之比赛中的配对次数
- 综述:解决目标检测中的样本不均衡问题
- client-go入门之1:创建连接Kubernetes集群的客户端
- 零基础学Python(第十八章 文件IO流操作)
- [IE 技巧] 显示/隐藏IE 的菜单/工具栏
- 全世界20座最有创意的桥,7座在中国,5座在荷兰!
- (全网唯一)Python 10行代码 实现 PDF转WORD
- SAP License:客户特别总帐统驭科目某天余额取数逻辑
- 英伟达的“千人摩擦计划”:几千个智能体互相玩耍,学习跑酷更轻松
- 在图层上使用CATransform3D制做三维动画-b
- 曲线积分和曲面积分及其几何应用、物理应用
- 复现贪吃蛇程序——判断游戏失败(第四部分)
- 【EmmyLua插件】Rider无法跳转lua文件解决
- 【爬虫】巧用 js2py (附带bug解决)
- vivo是安卓手机吗_拜托你看看vivo手机自带的翻译功能,这么强大的功能浪费了合适吗...
- 使用sql server Management Studio(企业管理器)或查询分析器管理数据库
- 树莓派-1、上手及资源
- RabbitMQ(6)-Spring AMQP,Spring集成RabbitMQ
- 五天,上线一个自己的聚合导航,很酷!
- 500 rewrite or internal redirection cycle while internally redirecting to “index.html“