题目描述
设计一个自动贩售机,输入货币有三种,为0.5/1/2元,饮料价格是1.5元,要求进行找零,找零只会支付0.5元。 注意rst为低电平复位,下面是该设计的相关信号及其含义: 本题和文章最大的不同是,之前的文章采用米勒状态机进行设计,而本文则通过摩尔状态机进行设计。采用摩尔状态机时,状态数应该为 S0_0:已投入0元 S0_5:已投入0.5元 S1_0:已投入1元 S1_5:已投入1.5元 S2_0:已投入2元 S2_5:已投入2.5元 S3_0:已投入3元(2+1=3) 这里和米勒状态机最大的区别就是,米勒状态机最大的值为max(投入钱数%1.5),而摩尔状态机的最大值为最大投入钱数(2+1=3)。
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/05/24 18:52:03
// Design Name:
// Module Name: top_moore
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module seller_moore(
input wire clk ,
input wire rst ,
input wire d1 ,
input wire d2 ,
input wire d3 ,
output reg out1,
output reg [1:0]out2
);
localparam S0_0=0;
localparam S0_5=1;
localparam S1_0=2;
localparam S1_5=3;
localparam S2_0=4;
localparam S2_5=5;
localparam S3_0=6; //1+2=3
reg [3:0] cs,ns;
//fsm1
always@(posedge clk,negedge rst)
if(~rst)
cs
关注
打赏