自動售貨機(2)

2021-08-30 21:58:41 字數 3913 閱讀 5770

**只是寫了兩種情況,乙個好的驗證testbeach**必須包含所有情況,可以重複但一定不能漏掉情況。

`timescale 1ns/1ps;

module drink_status_moore_tb();

localparam charge_width = 6;

localparam reset_init_h =10;

localparam reset_init_l =20;

localparam freq =50; //單位mhz

localparam zhouqi =1000/50;

wire oney;

wire twoy;

wire fivey;

reg clk;

reg rst_n;

wire out;

wire [charge_width-1:0] charge;

reg [15:0] charge_out_array[1023:0];

reg [15:0] charge_gld_array[1023:0];

reg [15:0] output_cnt;

reg [15:0] input_cnt;

reg [2:0] money_int;

reg [2:0] send_finish;

reg [15:0] error_num;

integer i;

assign oney = money[0];

assign twoy = money[1];

assign fivey = money[2];

//initial begin : rst_n_qq

rst_n = 1'b1;

#reset_init_h;

rst_n = 1'b0;

#reset_init_l;

rst_n = 1'b1;

end// initial begin : clk_qq

clk = 1'b0;

forever #(zhouqi/2) clk = ~clk;

end

//task模組 :相當於函式的作用 與function意思大致

task money_in(

input [2:0] oney_time,

input [2:0] twoy_time,

input [2:0] fivey_time

);repeat(oney_time) begin

@(posedge clk);

money_int = 3'b001;

endrepeat(twoy_time) begin

@(posedge clk);

money_int = 3'b010;

endrepeat(fivey_time) begin

@(posedge clk);

money_int = 3'b100;

end@(posedge clk);

money_int = 3'b000;

input_cnt = input_cnt + 1'b1; //給變數賦值,不在此處,但一定要賦值

endtask

//建立激勵訊號

initial begin

send_finish = 1'b0;

money_int = 3'b000;

input_cnt = 16'h0000;

#reset_init_h+reset_init_l;

@(posedge clk);

money_in(0,0,2);

charge_out_array[input_cnt-1] = 6'd20;

money_in(1,1,1);

charge_out_array[input_cnt-1] = 6'd00;

send_finish = 1'b1;

#1000;

$finish();

endinitial begin : output_real_clk

money_int = 3'b000;

#reset_init_h+reset_init_l;

@(posedge clk);

repeat(3) begin

@(posedge clk);

end#1;

if((out == 1'b0) &&(charge == 5'd20)) begin

$display("successful");

endelse begin

$display("error,out=%d,charge=%d",out,charge);

end@(posedge clk);

repeat(5) begin

@(posedge clk);

end#1;

if((out == 1'b0) &&(charge == 5'd0)) begin

$display("successful");

endelse begin

$display("error,out=%d,charge=%d",out,charge);

endalways@(posedge out,negedge rst_n) begin

if(rst_n == 1'b0) begin

output_cnt <= 1'b0;

endelse begin

output_cnt <= output_cnt + 1'b1;

charge_gld_array[output_cnt-1] <= charge;

endend

initial begin

error_num =16'h0000;

@(posedge send_finish);

@(posedge clk);

@(posedge clk);

@(posedge clk);

if(output_cnt == input_cnt) begin

$display("successful");

endelse begin

error_num = error_num + 1'b1;

$display("error,output_cnt=%d,input_cnt=%d",output_cnt,input_cnt);

endfor(i=0; iif(charge_gld_array[i]==charge_out_array[i]) begin

$display("successful");

endelse begin $display("error,times=%d,charge_gld_array=%d,charge_out_array=%d",i+1,charge_gld_array,charge_out_array);

error_num = error_num + 1'b1;

endinitial begin

if(error_num == 16'h0000)

$display("pass");

endelse begin

$display("error");

endend

//埠名與tb上層名沒有例化

endmodule

測試自動售貨機

在面試軟體測試職位時,被問到怎樣測試自動售貨機,但是就亂答了一下,沒什麼條理。回來網搜了一下也沒有什麼很好的答案,本來測試這種可能就是每個人有不同看法。回頭問了一下做測試的朋友,給了幾點建議 從功能點和流程等方面測試,以及對於異常的處理情況。1 首先可能先要測試一下,外觀設計的是否合理,是否符合大眾...

自動售貨機 (30 分)

如圖所示的簡易自動售貨機,物品架1 2上共有10樣商品,按順序進行編號分別為1 10,標有 與名稱,乙個編號對應乙個可操作按鈕,供選擇商品使用。如果物架上的商品被使用者買走,儲物櫃中會自動取出商品送到物架上,保證物品架上一定會有商品。使用者可以一次投入較多錢幣,並可以選擇多樣商品,售貨機可以一次性將...

自動售貨機軟體工程課設 軟體工程 自動售貨機

自動售貨機分析 軟體工程 資訊學院 08級 通訊工程二班 羅運俊 200800120134 作業題 物件導向分析實踐 下面是自動售貨機系統的需求陳述,試建立它的物件模型 動態模型和功能模型 自動售貨機系統是一種無人售貨系統。售貨時,顧客把硬幣投入機器的投幣口中,機器檢查硬幣的大小 重量 厚度及邊緣型...