第一步:看要求
编写一个自动售货机,功能如下:
1)共有三种纸币入口,分别支持10元,20元,50元;
2)货物售价为80元;
3)需要支持找钱功能(注意,找钱有四种种情况)。
RTL编码,完成testbench编码,用QuestaSim仿真波形通过。
答题
第一步画出状态转移图
有7种状态,状态图从s0到s7如下图
第二步:辨别情况,设置输入输出及s0~s7的状态
(1)输入与输出状态
设置投钱10元为:in10,
设置投钱20元为:in20,
设置投钱50元为:in50
设置出货为:out,
设置找钱10元为: return_10,
设置找钱20元为: return_20,
设置找钱30元为: return_30,
设置找钱40元为: return_40。
(2)s0~s7的状态定义如下
parameter [2:0] s0 = 3’b000,
s1 = 3’b001,
s2 = 3’b010,
s3 = 3’b011,
s4 = 3’b100,
s5 = 3’b101,
s6 = 3’b110,
s7 = 3’b111。
第三步:写RTL如下
module sell(
output out,
output return_10,
output return_20,
output return_30,
output return_40,
input clk,
input reset,
input in10,
input in20,
input in50