Tải bản đầy đủ (.docx) (5 trang)

Thiết kế Vending Machine- Máy bán hàng tự động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (227.95 KB, 5 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCMKHOA ĐIỆN – ĐIỆN TỬ</b>

<b>Thiết kế vi xử lý</b>

<b>LAB 3 : Thiết kế Vending Machine</b>

Tp. HCM, tháng 5 năm 2022

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>I – Lý thuy t ho t đ ng c a m chết hoạt động của mạchạt động của mạchộng của mạchủa mạchạt động của mạch</b>

Máy trạng thái áp dụng cho vending machine

S0: 0 dong cho vào vending machine ()

Nếu ko add thêm vào : sẽ ở state 0 ,output = 0 , change =0

Nếu 5 dong được thêm vào : chuyển tới state 1, output =0 ,change =0Nếu 10 dong được thêm vào : chuyển tới state 2 , output = 0 , change = 0S1:5 dong cho vào Vending machine

Nếu ko add thêm vào : giao dich khơng hồn thành , chuyển tới state 0, output =0 , change Rs 10 (10 dong)

If 5 dong được cho vào , chuyển tới state 0 , Output =1 , change = Rs 0

Nếu 10 dong được cho vào : Khách hàng trả quá tiền , vì vậy , hàng được trả ra vớitiền thối 5 dong (CHANGE 5 Rs)

<b>III – Code design</b>

module vending_machine_18105070(

input clk, input rst, input [1:0]in, // 01 = 5 rs, 10 = 10 rs

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

output reg out, output reg[1:0] change);

parameter s0 = 2'b00;parameter s1 = 2'b01;parameter s2 = 2'b10;reg[1:0] c_state,n_state;always@ (posedge clk)begin

if(rst == 1) begin c_state = 0; n_state = 0; change = 2'b00; end

c_state = n_state;case(c_state) s0: //state 0 : 0 rs if(in == 0) begin

n_state = s0; out = 0;

change = 2'b00; end

else if(in == 2'b01) begin

n_state = s1; out = 0;

change = 2'b00; end

else if(in == 2'b10) begin

n_state = s2; out = 0;

change = 2'b00; end

s1: //state 1 : 5 rsif(in == 0) begin

n_state = s0; out = 0;

change = 2'b01; //change returned 5 rs end

else if(in == 2'b01)

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

begin

n_state = s0; out = 1;

change = 2'b00; end

s2: //state 2 : 10 rsif(in == 0)

begin

n_state = s0; out = 0;

change = 2'b10; end

else if(in == 2'b01) begin

n_state = s0; out = 1;

change = 2'b00; end

else if(in == 2'b10) begin

n_state = s0; out = 1;

change = 2'b01; //change returned 5 rs and 1 bottle end

endcase endendmodule//testbench

module vending_machine_tb;//inputs

reg clk;reg[1:0] in;reg rst;//outputwire out;

wire[1:0] change;

vending_machine_18105070 uut(.clk(clk),

initial begin//initialise inputs

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

rst = 1;clk = 0;#6 rst = 0;in = 2;#19 in = 2;#25 $finish;end

always #5 clk = ~clk;endmodule

<b>IV – Test chương trình và dạng sóng ngõ rang trình và d ng sóng ngõ raạt động của mạch</b>

Chạy đúng với kết quả

</div>

×