简易地铁自动售票系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数字电路与逻辑设计实验实验报告题目:简易地铁自动售票系统学院:信息与通信工程学院专业:电子信息工程一、设计课题的任务要求基本要求:a)地铁票价统一为每张两元,只能投入币值为五元的人民币进行购票。b)能够开机自检,检验显示器件正常。c)通过按键开关BTN输入购票张数和投入的人民币张数并恰当显示相应信息。d)设置适当的声音提示或显示提示表示取票和找零。e)一次购票成功后系统能够恰当地转入下一次购票等待状态。f)系统能够复位。提高要求:将投币种类增加为1元、5元和10元三种。二、系统设计本次实验中采用的是自自顶向下的设计方法,即从整个系统功能出发,按一定原则将系统划分为若干子系统,再将每个子系统分为若干功能模块,再将每个模块分成若干较小的模块……直至分成许多基本模块实现。1.外部呈现结构CAT5,CAT4:用数码管显示购票张数CAT3,CAT2:显示总共输入的钱数BTN7:开始购票按键BTN6:输入购票张数确定按键BTN5:输入钱数确定按键/确定购买按键BTN4:复位键/取消键BTN3:通过按键按下次数输入购票张数BTN2:每按下1次,输入1张1元纸币BTN1:每按下1次,输入1张5元纸币BTN0:每按下1次,输入1张10元纸币LED7-0:通过8个灯不同的亮灭显示不同的状态全亮:开机自检及复位状态LED7亮:输入购票张数状态LED6亮:输入总钱数状态LED5,2亮:显示购票成功亮灭亮灭亮灭亮灭:显示找零状态2、模块划分及功能1、计算模块:计算用户投币的总金额,以及用户的余额。2、显示模块:将计算的结果及用户操作信号译码后显示在数码管或LED灯上。3、输入模块:通过按键,开关输入信息4、信号模块:系统对系统时钟,用户的买、选择、完成信号,显示开关信号等信号的设置。3、自动售货机系统总体框图4、流程图时钟按键数据投币控制器译码RAM分频器显示5、MSD图S0:waite_stateS1:select_stateS2:insert_stateS3:ticket_stateS4:change_state三、仿真波形及波形分析1、仿真波形2、波形分析上面的波形只是仿真其中一个情况,顺序输入信息,中间没有按过取消,且输入钱数大于总票价,通过波形可以看出,购票成功且有找零,跟所预期吻合,说明仿真成功。四、源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysubwayisport(clk:instd_logic;buy:instd_logic;yes:instd_logic;ok:instd_logic;start:instd_logic;no:instd_logic;count1:instd_logic;count2:instd_logic;count3:instd_logic;count0:instd_logic;f:outstd_logic_vector(6downto0);sell:outstd_logic_vector(5downto0);ticket_out:outstd_logic_vector(2downto0);change_out:outstd_logic_vector(3downto0);present_state:outstd_logic;a,b,c,d:outstd_logic:='0';--count_2,count_3:outstd_logic;afford:outstd_logic;beep:outstd_logic;led:outstd_logic_vector(7downto0));endsubway;architecturebehaveofsubwayistypestate_typeis(waiting_state,select_state,insert_state,ticket_state,change_state);signalstate:state_type;signalclk_out100,clk_out200:std_logic;signalcount_0,count_1,count_2,count_3:std_logic;signaltmp1:integerrange0to4999;signaltmp2:integerrange0to9999;signalcount0temp,count1temp,count2temp,count3temp:std_logic;signalcount0tempp,count1tempp,count2tempp,count3tempp:std_logic;signalticket_count:std_logic_vector(2downto0);signaltotal_money:std_logic_vector(3downto0);begin----------------------------------------------------------分频-------------------------------------------------------------p1:process(clk)//2次分频,一次分为10Khz,一次分为5Khz,一个用于数码管扫描begin一个用于按键消抖if(clk'eventandclk='1')theniftmp1=4999thentmp1=0;elsetmp1=tmp1+1;endif;endif;endprocessp1;p11:process(clk)beginif(clk'eventandclk='1')theniftmp2=9999thentmp2=0;elsetmp2=tmp2+1;--shumaguanshizhongendif;endif;endprocessp11;p2:process(tmp1,tmp2)beginiftmp1=4999thenclk_out200='1';elseclk_out200='0';endif;iftmp2=9999thenclk_out100='1';elseclk_out100='0';endif;endprocessp2;--process(clk)--begin--clk_out100=clk;--clk_out200=clk;--endprocess;-----------------------------------------按键消抖---------------------------------------------------------------------p3:process(clk_out100,count1,count2,count3)beginIF(clk_out100'EVENTANDclk_out100='0')THENcount1tempp=count1temp;count1temp=count1;count2tempp=count2temp;count2temp=count2;count3tempp=count3temp;count3temp=count3;count0tempp=count0temp;count0temp=count0;ENDIF;count_1=clk_out100ANDcount1tempAND(NOTcount1tempp);count_2=clk_out100ANDcount2tempAND(NOTcount2tempp);count_3=clk_out100ANDcount3tempAND(NOTcount3tempp);count_0=clk_out100ANDcount0tempAND(NOTcount0tempp);ENDPROCESSp3;-----------------------------------------------按键输入及计算-----------------------------------------------------------process(clk_out100,count_1,count_2,count_3)beginIF(clk_out100'EVENTANDclk_out100='1')THENif(buy='1')thenticket_count=000;total_money=0000;endif;if(no='1')thenticket_count=000;total_money=0000;endif;if(count_0='1')thena='1';ticket_count=ticket_count+001;endif;if(count_1='1')thenc='1';total_money=total_money+0001;endif;if(count_2='1')thenb='1';total_money=total_money+0101;endif;if(count_3='1')thend='1';total_money=total_money+1010;endif;endif;endprocess;--------------------------------------------------各状态转换及输出-----------------------------------------------------p4:process(clk_out100,total_money,ticket_count)variableflag:std_logic;variablesign:std_logic:='0';variabletotal_price:std_logic_vector(3downto0);variabletemp:std_logic_vector(3downto0);variabletotal_money1:std_logic_vector(3downto0);variableticket_temp:std_logic_vector(2downto0);variablei,j,k:integerrange0to9999;beginIF(clk_out100'EVENTANDclk_out100='1')THENcasestateiswhenwaiting_state=led=11111111;present_state='0';flag:='0';temp:=0000;total_price:=1011;ticket_out=001;change_out=0000;present_state='0';i:=0;j:=0;k:=0;ticket_temp:=000;total_money1:=0000;if(yes='1')thenpresent_state='1';state=select_state;elsestate=waiting_state;endif;whenselect_state=led=10000000;caseticket_countiswhen001=total_price:=0010;ticket_temp:=001;when010=total_price:=0100;ticket_temp:=010;when011=total_price:=0110;ticket_temp:=011;when100=total_price:=1000;ticket_temp:=100;when101=total_price:=1010;ticket_temp:=101;when110=total_price:=1100;ticket_temp:=110;when111=total_price:=1110;ticket_temp:=111;whenothers=state=sele

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功