名稱:地鐵售票設計Verilog代碼AX301開發(fā)板Quartus
軟件:Quartus
語言:Verilog
代碼功能:
主要內(nèi)容:
1.選擇1號或者2號地鐵線,每條線都有3元,4元,5元二種票價。
2.選擇買張或者兩張。乘客在操作失誤時,可以進行清零然后重新購買。
3.投錢可以選擇1元,5元,10元。
4.比較投錢和票價。投錢和票價相等時,出票投錢大于票價時,找零,出票:投錢小于票價時,詢問是否繼續(xù)投錢,如果不繼續(xù)投錢,則不出顒并且退錢。
5.顯示選擇幾號線,選擇的票價,購買幾張投入的錢數(shù)以及找零的錢。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在AX301開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配
:
演示視頻:
設計文檔:
1. 工程文件
2. 程序文件
3. 程序運行
4. RTL圖
5. 管腳分配
6. Testbench
7. 仿真圖
7.1 按鍵消抖模塊
7.2狀態(tài)機控制模塊
取消按鍵取消之前設置
重新設置
選擇4元票價2張,投幣16元,找零8元
投幣不足,選擇4元票價2張,投幣6元,找零6元
7.3 顯示模塊
部分代碼展示:
module?Subway_ticketing( input?clk_50M, input?route_price_key,//路線和票價按鍵,按下低電平 input?number_ticket_key,//張數(shù)按鍵,按下低電平,K1 input?confirm_key,//確認按鍵,按下低電平,K2 input?cancel_key,//取消按鍵,按下低電平,K3 input?coin_operated_1,//投幣1元,投入低電平 input?coin_operated_5,//投幣5元,投入低電平 input?coin_operated_10,//投幣10元,投入低電平 output?[3:0]route_led,//線路指示燈 output?[7:0]?duanxuan,//數(shù)碼管段選 output?[5:0]?weixuan//數(shù)碼管位選 ); wire?route_price_en;//路線和票價按鍵,按下低電平 wire?number_ticket_en;//張數(shù)按鍵,按下低電平 wire?confirm_en;//確認按鍵,按下低電平 wire?cancel_en;//取消按鍵,按下低電平 wire?coin_1_debounce; wire?coin_5_debounce; wire?coin_10_debounce; wire??[3:0]ticket_price;//票價 wire??[3:0]ticket_num;//張數(shù) wire??[7:0]total_inmoney;//總投幣 wire??[7:0]give_change_money;//退錢(找零) key_debounce??i_route_price_key? ( .?clk(clk_50M),? .?rst_p(1'b0),? .?button_in(route_price_key), .?button_posedge(), .?button_negedge(route_price_en), .?button_out() ); key_debounce??i_number_ticket_key ( .?clk(clk_50M),? .?rst_p(1'b0),? .?button_in(number_ticket_key), .?button_posedge(), .?button_negedge(number_ticket_en), .?button_out() ); key_debounce??i_confirm_key ( .?clk(clk_50M),? .?rst_p(1'b0),? .?button_in(confirm_key), .?button_posedge(), .?button_negedge(confirm_en), .?button_out() ); key_debounce??i_cancel_key ( .?clk(clk_50M),? .?rst_p(1'b0),? .?button_in(cancel_key), .?button_posedge(), .?button_negedge(cancel_en), .?button_out() ); key_debounce??i_coin_1_debounce ( .?clk(clk_50M),? .?rst_p(1'b0),? .?button_in(coin_operated_1), .?button_posedge(), .?button_negedge(coin_1_debounce), .?button_out() ); key_debounce??i_coin_5_debounce ( .?clk(clk_50M),? .?rst_p(1'b0),? .?button_in(coin_operated_5), .?button_posedge(), .?button_negedge(coin_5_debounce), .?button_out() ); key_debounce??i_coin_10_debounce ( .?clk(clk_50M),? .?rst_p(1'b0),? .?button_in(coin_operated_10), .?button_posedge(), .?button_negedge(coin_10_debounce), .?button_out() ); Vending_machine?i_Vending_machine( .?clk_50M(clk_50M), .?route_price_en(route_price_en),//路線和票價按鍵,按下低電平 .?number_ticket_en(number_ticket_en),//張數(shù)按鍵,按下低電平 .?confirm_en(confirm_en),//確認按鍵,按下低電平 .?cancel_en(cancel_en),//取消按鍵,按下低電平 .?coin_operated_1(coin_1_debounce),//投幣1元,投入低電平 .?coin_operated_5(coin_5_debounce),//投幣5元,投入低電平 .?coin_operated_10(coin_10_debounce),//投幣10元,投入低電平 .?route_led(route_led),//led指示1線路 .?ticket_price_out(ticket_price),//票價 .?ticket_num_out(ticket_num),//張數(shù) .?total_inmoney_out(total_inmoney),//總投幣 .?give_change_money_out(give_change_money)//退錢(找零) ); display?i_display ( .clk(clk_50M), .ticket_price(ticket_price),//票價 ???.ticket_num(ticket_num),//張數(shù) ???.total_inmoney(total_inmoney),//總投幣 ???.give_change_money(give_change_money),//退錢(找零) .duanxuan(duanxuan),?//低電平有效 .weixuan(weixuan) ); endmodule
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=334