📄 drink-cnt.v
字号:
module drink_machine(nickel_in,dime_in,quarter_in,collect, nickel_out,dime_out,dispense,reset,clk); input nickel_in, dime_in, quarter_in, reset, clk; output nickel_out, dime_out, collect, dispense; wire [2:0] nickel_count, nickel_count_d; wire return_change_d, return_change; function [7:0] count_nickels; input nickel_in, dime_in, quarter_in, reset, return_change; input [2:0] nickel_count; reg [3:0] nickel_count_d; reg nickel_out, dime_out, dispense, collect; reg return_change_d; begin nickel_out = 0; dime_out = 0; dispense = 0; collect = 0; nickel_count_d = 0; return_change_d = 0; if (! reset) begin // Check whether money has come in nickel_count_d = nickel_count; if (nickel_in) nickel_count_d = nickel_count_d + 1; else if (dime_in) nickel_count_d = nickel_count_d + 2; else if (quarter_in) nickel_count_d = nickel_count_d + 5; // correct amount deposited?? if (nickel_count_d >= 7) begin nickel_count_d = nickel_count_d - 7; dispense = 1; collect = 1; end // return change if (return_change || collect) begin if (nickel_count_d >= 2) begin dime_out = 1; nickel_count_d = nickel_count_d - 2; return_change_d = 1; end if (nickel_count_d == 1) begin nickel_out = 1; nickel_count_d = nickel_count_d - 1; end end end count_nickels = {nickel_out,dime_out,dispense,collect, nickel_count_d[2:0],return_change_d}; end endfunction dFF ff0(nickel_count_d[0], clk, nickel_count[0], ); dFF ff1(nickel_count_d[1], clk, nickel_count[1], ); dFF ff2(nickel_count_d[2], clk, nickel_count[2], ); dFF ff3(return_change_d, clk, return_change, ); assign { nickel_out,dime_out,dispense,collect, nickel_count_d,return_change_d } = count_nickels( nickel_in, dime_in, quarter_in, reset, return_change, nickel_count ); endmodulemodule dFF (d,clk,q,qbar); input d, clk; output q, qbar; reg q; reg qbar; always @ (posedge clk ) begin q = d; qbar = ~d; endendmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -