当前位置:   article > 正文

Quartus地铁自动售票机verilog代码青创QC-FPGA开发板_基于fpga的地铁自动售票系统代码怎么写

基于fpga的地铁自动售票系统代码怎么写

名称:Quartus地铁自动售票机verilog代码青创QC-FPGA开发板(文末获取)

软件:Quartus

语言:Verilog

代码功能:

地铁自动售票机

1.一共20站,1~5站2元;6~10站3元,11~15站5元,16~20站7元。

2.投钱可以投1元,5元,10元,20元

3.若投入钱币大于票价,显示购买成功并找零

4.若投币低于票价可以退还钱币,不出票

本代码已在青创QC-FPGA开发板验证,青创QC-FPGA开发板如下,其他开发板可以修改管脚适配:

青创QC-FPGA开发板.png

设计及仿真文档.doc

1.工程文件

2.程序文件

3.程序编译

4.RTL图

5.仿真图

1. 整体仿真图

2. 二进制转BCD模块仿真图

3. 按键下降沿检测模块

4. 数码管显示模块

5. 地铁售票控制模块仿真

上图中,station_p按了3次,表示选择了3站(data_1=3),所以票价是2(data_2=2)元,按下confirm_p键后,开始投币,1,5,10,20分别投币一次,共投币36元(data_1=36),再按下confirm_p键后,开始找零,同时buy_succeed变为高电平表示购票成功,找零34元(data_2=34),再按下confirm_p键后表示取票成功。

部分代码展示:

module subway(
input clk_48M,
input resetin,
input confirm_key_n,
input station_key_n,
output [1:0]row_keys,
input[1:0]line_keys,
output buy_succeed,
output [7:0]data,
output [3:0]com
);
wire coin_1_p;
wire coin_5_p;
wire coin_10_p;
wire coin_20_p;
wire clk_1KHz;
wire [7:0] data_1;
wire [7:0] data_2;
wire confirm_p;
wire station_p;
key_jitter key_jitter_1(
. clkin(clk_1KHz),    
. key_in(confirm_key_n),
. key_negedge(confirm_p)
);
key_jitter key_jitter_2(
. clkin(clk_1KHz),    
. key_in(station_key_n),
. key_negedge(station_p)
);
matrix_key i_matrix_key
(
.clkin(clk_48M),
.resetin(resetin),
.row_keys(row_keys),
.line_keys(line_keys),
.clk_1KHz(clk_1KHz),
.coin_1(coin_1_p),
.coin_5(coin_5_p),
.coin_10(coin_10_p),
.coin_20(coin_20_p)
);
subway_ctrl i_subway_ctrl(
. clk(clk_1KHz),
. reset_n(resetin),
. confirm_p(confirm_p),
. station_p(station_p),
. coin_1_p(coin_1_p),
. coin_5_p(coin_5_p),
. coin_10_p(coin_10_p),
. coin_20_p(coin_20_p),
. buy_succeed(buy_succeed),
. data_1(data_1),
. data_2(data_2)
);
wire [3:0]data_1_ten;
wire [3:0]data_1_one;
wire [3:0]data_2_ten;
wire [3:0]data_2_one;
wire [7:0]data_1_BCD; 
wire [7:0]data_2_BCD; 
b_to_bcd i1_b_to_bcd
(
.clk(clk_48M),
.rst_n(resetin),
.binary(data_1),
.state_en(1'b1),
.BCD(data_1_BCD)
   );
b_to_bcd i2_b_to_bcd
(
.clk(clk_48M),
.rst_n(resetin),
.binary(data_2),
.state_en(1'b1),
.BCD(data_2_BCD)
   );
assign data_1_ten=data_1_BCD[7:4];
assign data_1_one=data_1_BCD[3:0];
assign data_2_ten=data_2_BCD[7:4];
assign data_2_one=data_2_BCD[3:0];
led_sm i_led_sm
(
.clkin(clk_48M),
.resetin(resetin),
.data_1_in(data_1_one),
.data_10_in(data_1_ten),
.data_100_in(data_2_one),
.data_1000_in(data_2_ten),
.data(data),
.com(com)
);
endmodule

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/342767
推荐阅读
相关标签
  

闽ICP备14008679号