地铁自动售票机(基于FPGA)设计 下载本文

coin=coin+1; // coin是投入总额 end 1: begin

coinl=2; coinh=coinh; coin=coin+1; end 2: begin

coinl=3; coinh=coinh; coin=coin+1; end 3: begin

coinl=4; coinh=coinh; coin=coin+1; end 4: begin

coinl=5; coinh=coinh; coin=coin+1; end 5: begin

coin=6;

coinh=coinh; coin=coin+1; end 6: begin

coinl=7; coinh=coinh; coin=coin+1; end 7: begin

coinl=8; coinh=coinh; coin=coin+1; end

8: begin

coinl=9; coinh=coinh; coin=coin+1; end 9: begin

coinl=0;

coinh=coinh+1; coin=coin+1; end endcase end

else if(coin_5) //投入5元 begin

case(coinl) //coinl是投入总额的个位数字 0: begin

coinl=6;

coinh=coinh; // coinh是投入总额的十位数字 coin=coin+5; // coin是投入总额 end 1: begin

coinl=6; coinh=coinh; coin=coin+5; end 2: begin

coinl=7; coinh=coinh; coin=coin+5; end 3: begin

coinl=8; coinh=coinh; coin=coin+5; end 4: begin

coinl=9;

coinh=coinh; coin=coin+5; end 5: begin

coinl=0;

coinh=coinh+1; coin=coin+5; end 6: begin

coinl=1;

coinh=coinh+1; coin=coin+5; end 7: begin

coinl=2;

coinh=coinh+1; coin=coin+5; end 8: begin

coinl=3;

coinh=coinh+1; coin=coin+5; end 9: begin

coinl=4;

coinh=coinh+1; coin=coin+5; end endcase end

else if(coin_10) //投入10元 begin

coinl=coinl; // coinl是投入总额的个位数字 coinh=coinh+1; // coinh是投入总额的十位数字 coin=coin+5'b01010; // coin是投入总额 end

else if(coin_20) //投入10元 begin

coinl=coinl; // coinl是投入总额的个位数字

coinh=coinh+4'b0010;;// coinh是投入总额的十位数字 coin=coin+5'b10100; // coin是投入总额 end end endmodule

经过编译后建立波形文件,波形仿真图如图所示:

在此波形仿真图中,将coin_1,coin_5,coin_10依次置了一个时钟周期的高电平作为输入,输出显示总额低位为6,高位为1,所投钱币总额为16,说明达到此钱币处理模块的预期功能。

2.3 余额计算模块

余额计算模块主要完成出票找零操作。通过所投钱币总额coin和应付总额cost计算找赎余额,然后用发光二极管点亮表示出票和找零。钱数不够票价的,退出所投钱币数。

余额计算模块如图所示:

1)输入

①rd:模块复位信号,将所有输出信号清零。 ②clk:模块的时钟信号。

③finish:用户使用的确定按键。此信号置为高电平后,开始判断是否出票,计算找赎余额。

④pri_in[3:0]:输入乘客所选的线路和票价,用来判断出票时具体出哪张票。

⑤cost_in[3:0],coin_in[4:0]:输入应付总额和所投钱币总额,用来判断是否出票,是否找赎,计算找赎余额。

2)输出

①act[3:0]:表示出票。车票共有4种,用4个发光二极管的点亮来表示具体出哪张票,若都不亮则表示不出票。

②act_1:表示找赎。若信号为‘1’,用1个发光二极管