欢迎来到天天文库
浏览记录
ID:18280876
大小:127.00 KB
页数:14页
时间:2018-09-16
《自动售货机控制系统的设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程设计报告信息科学与工程学院课程设计报告(2008—2009学年第一学期)课程名称:VHDL与数字电路课程设计班级:电子0601学号:18姓名:庞金伟指导教师:谈宜育____2009年1月-13-课程设计报告课程设计题目:自动售货机控制系统的设计目的与任务:(1)进一步掌握MAX+PLUSⅡ软件的使用方法;(2)会使用VHDL语言设计小型数字电路系统;(3)掌握应用MAX+PLUSⅡ软件设计电路的流程;(4)掌握自动售货机的设计方法;(5)会使用GW48实验系统。内容和要求:设计一个简易的自动售货机,它能够完成钱数处理、找零、显示、退币等功能。(1)用3个键表示3种钱,再用3个键表示3
2、种物品。(2)用2个数码管显示输入的钱数,再用2个数码管显示所找的钱数,以元为单位。(3)买东西时,先输入钱,用数码管显示钱数,再按物品键,若输入的钱数大于物品的价格,用数码管显示所找的钱数,并用发光二极管表示购买成功。(4)若输入的钱数少于物品的价格,用数码管显示退出的钱数,并用发光二极管表示购买失败。-13-课程设计报告设计内容(原理图以及相关说明、调试过程、结果)一、系统设计方案根据系统要求,系统的组成框图如图1所示。时钟分频器控制器商品选择钱数输入译码显示图1系统组成框图系统按功能可分为分频模块、控制模块和译码输出模块。(1)分频模块的作用是获得周期较长的时钟信号,便于操作,且不
3、会产生按键抖动的现象。其原理是定义两个中间信号Q、DIV_CLK,Q在外部时钟CLK的控制下循环计数,每当计数到一个设定的值时DIV_CLK的值翻转,最后将DIV_CLK赋给NEW_CLK即可,改变设定值可改变分频的大小。-13-课程设计报告(2)控制模块是这个系统的核心模块,它具有判断按键、计算输入钱数总和、计算找零、控制显示四个作用。它的工作原理是每当时钟上升沿到来时,判断哪个按键按下,若按下的是钱数键,则将钱数保存于中间信号COIN,若下次按下的仍是钱数键,COIN的值则加上相应的值并显示于数码管;当物品键按下时,则将COIN的值与物品价格进行比较,然后控制找零。(3)由于钱数可能
4、大于9,所以译码显示模块的作用就是将钱数译码后用两个数码管显示,这样方便观察。根据各个功能模块的功能并进行整合,可得到一个完整的自动售货机系统的整体组装设计原理图,如图2所示。图2设计原理图一、系统主要VHDL源程序(1)分频器的源程序(外部时钟选用3MHz,实现3万分频)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCLKGENISPORT(CLK:INSTD_LOGIC;NEWCLK:OUTSTD_LOGIC);ENDCLKGEN;-13-课程设计报告ARCHITECTUREBEHAVEOFCLKGENISSIGNALQ:INTEGERRA
5、NGE0TO14999;SIGNALDIVCLK:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENIFQ<14999THENQ<=Q+1;ELSEDIVCLK<=NOTDIVCLK;Q<=0;ENDIF;ENDIF;ENDPROCESS;NEWCLK<=DIVCLK;ENDBEHAVE;(1)自动售货机控制器源程序(3种钱数为1元、2元、5元;3种物品的价格为2元、5元、10元)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENT
6、ITYSHOUHUOJIISPORT(CLK:INSTD_LOGIC;COIN1:INSTD_LOGIC;--1元信号COIN2:INSTD_LOGIC;--2元信号COIN3:INSTD_LOGIC;--5元信号PRICE1:INSTD_LOGIC;--2元商品PRICE2:INSTD_LOGIC;--5元商品-13-课程设计报告PRICE2:INSTD_LOGIC;--5元商品PRICE3:INSTD_LOGIC;--10元商品Y0:OUTSTD_LOGIC;--购买成功信号Y1:OUTSTD_LOGIC;--退币信号MONEY:OUTSTD_LOGIC_VECTOR(3DOWNTO
7、0);PAYBACK:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDSHOUHUOJI;ARCHITECTUREBEHAVOFSHOUHUOJIISSIGNALCOIN:STD_LOGIC_VECTOR(3DOWNTO0);--保存钱数SIGNALCOUT:STD_LOGIC_VECTOR(3DOWNTO0);--保存找零BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'TH
此文档下载收益归作者所有