EDA课设自动售邮票机
- 格式:docx
- 大小:36.24 KB
- 文档页数:10
辽宁工程技术大学集成电路EDA技术课程设计报告题目指导教师院(系、部)专业班级学号姓名日期自动售票机的设计李书艳电信学院______ 电子09-2班____________ 0906040202陈磊一、摘要20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA )的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA设计是当代电子信息人才必须要掌握的一门技术,本次课程设计中我运用VHDL语言和QuaertusU软件完成了自动售邮票机的设计。
着重介绍了VHDL语言的特点,在设计中体现了其基本原理、系统组成和主要功能;并分析讨论了用VHDL语言开发自动售货机系统的设计流程。
最终完成的自动售货机系统具有投币处理、商品选择、购货撤销、异常退币、计算存货等主要功能。
二、综述VHDL语言是一种用于电路设计的高级语言。
VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
本次课程设计将运用VHDL设计一款自动售邮票机,培养EDA操作技巧。
设计目的:1. 巩固所学的专业技术知识;2•了解并掌握VHDL语言设计方法,具备初步的独立设计能力;3. 提高综合运用所学理论知识、独立分析和解决问题的能力;4. 更好地将理论与实践相结合。
设计要求:有一个自动售邮票机,出售面值为6角和8角的邮票。
售票机有1角,5角和1元三个硬币投放口,售票机每次只能售出一枚邮票。
当所投硬币达到或者超过购买者所选面值时,售出一枚邮票,并找回零钱,售票机回到初始状态;当所投硬币不足邮票面值时,可以通过一个复位键退回所投硬币,售票机回到初始状态。
三、方案设计与分析思路分析1、题目分析:因为售票机有3个投放口,而每次只能出售一枚邮票,所以如果要买6角, 则购买方式有4种:0.1+0.5 0.5+1 1 0.1+1购买8角的可能为以下4种:1 0.1+0.5+1 0.1+1 0.5+1 (所投面值达到购买面值就自动售出,注意投币顺序),如上分析顾客的无论是选择6角还是8角都最多能有4种行为能够购买。
2、程序设计en tity 定义我们定义了系统的输入/输出端口信号,考虑顾客只有4种操作行为,即投币、选择、确定与取消,所以定义以下系统输入信号。
Reset:系统内部设置给其他顾客重新操作的复位信号;Clk :由外接信号发射器提供1024b/s的系统时钟信号Ok buy: 购买确认的按键信号;Can cle: 购买取消的按键信号;Coi n1 :投入1角硬币的动作按键Coin 5 :投入5角硬币的动作按键;Coin 10 :投入1元硬币的动作按键;Select 6 :选择6角邮票的按键信号;Select 8: 选择8角邮票的按键信号;在设计中我们用LED灯的熄灭来表示系统的信号处理结果有一个灯亮,后按着优先;硬币;硬币;VHDL 源代码: Library ieee;use ieee.std_logic_1164.all; use ieee.std 」o gic_arith.all; use ieee.std_logic_ un sig ned.all;use work my_pkg.all;-package in clud ing ---i nput and output pins declaract ion en tity vendor is port ( rese t in std logic;--power reset to another buying.Clk:in std logic; ok_ in std logic; can cle in std logic;Coin-1 : in std-logic; ——按钮投入1角硬币 coin_5: in std_ logic;--按钮投入 5 角硬币Led 6 ok : 灯亮显示还有6角邮票; Led 8 ok: 灯亮显示还有8角邮票;Led 6 sei:灯亮显示6角邮票选择按键被按;与Led 8 sel 只有—个灯亮,后按着优先; 灯亮显示8角邮票选择按键被按;与Led 6 sei 只Led 8 se :Led buy : 灯亮显示按了购买确认键; Led can cle : 灯亮显示按了购买取消键;Led one ( 1 to 8): Led five ( 1 to 2): 个LED ,投入1个1角硬币亮一个LED; 个LED ,投入1个5角硬币亮一个LED; Led ten (1 to 1): 个LED 投入1个1元硬币亮一个LED; Led one retur n: 个LED ,以每秒4次的闪烁代表被推出的 Led five renturn:个LED,以每秒4次的闪烁代表被推出的币:Led ten return: 个LED 以每秒4次的闪烁代表被推出的硬Led 6 out 灯亮显示 6角邮票已出货; Led 8 out:灯亮显示 8角邮票已出货;debounce ' componentcoin_10: in std_ logic;--按钮投入1 元硬币select 6 in std_ logic;--:按钮选择6 角邮票select 8 in std_ logic;--按钮选择8 角邮票led 6 ok:out std_ logic;--显示6 角邮票可用led 8 ok: out std_ logic;--显示8 角邮票可用led 6 set out std_ logic;--显示6角邮票被选择led 8 sel: out std_ logic;led buy: out std_ logic;--显示确定购买led cancle out std_ logic;--显示拒绝购买led five:out std_ logic vector(ltoO);--显示五角硬币个数led ten : out std_ logic vector(OtoO);Led one: out std-logic vector(0 to 7);led five return: out std_ logic vector(ltoO);-- 显示退出5 角硬币led ten ren turn:out std_ logic vector(OtoO);Led one return : out std-logic vector(O to 7);led 6 out: out std_ logic;--显示6 角邮票出货led 8 out: out std_ logic;End.3、仿真分析设定ok_buy,cancel_buy与reset三个系统输入信号,可观察到系统输出信号led_ok,led_ca ncel 与输出全局信号ok与can cel的波形,ok与can cel 信号用来维持ok_buy与cancel_buy按键操作的状态。
源代码--to check confiming or can celi ng buyingok or cancle block--i nput reset ok buy can cle buy--output led buy ok led can cel can celbegi n:process (reset ok buy) --to maintain the confimingPlstatusbegi nif reset= ‘1' than ok < =0led buy < =0els if rising dege (ok buy' ) thenok < =1led buy < =1end if ;end prcessp2 process ( reset cancle buy ) --tomaitain the can celi ng statusbegi nif reset < =1;the n can cel < = ‘ O';led_cancel<= ' 0' elsif risin g_edge(cancel_buy) the n.cancel<= ' 1':led_cancel<= ' 1';end if1.end process;end block;3、女口3-1所示3-1确认与取消电路仿真图设定elk与reset等系统输入信号,以及输入全局信号cancel ,total_amount_one,return_clk,6_out 与8_to信号后,可以观察到系统输出信号led_one_return,led_five_return 与输出全局信号money_ok的波形。
另外,局部信号total_amount仅用来暂存投入硬币的总金额,并不输出到模块外,正常交易时的系统反应。
如果操作期间按了取消键,则退币灯全亮,并立即退还所有硬币,退币与找零源代码:--to check total am ount and decide returned coins and twi nkle.--the leds.coi n_ returned:block.-in put:clk_reset.total_a mount_ten .total_a moun t_five.total_a mount_one -return_clk.ca ncel.----6_out.diet_out.-output:m on ey_ok.led_five_return .l ed_te n_return.led_o ne_return.-6_choice.diet_choice.sig nal total_a mount : in teger range 0 to 15;beg inprocess(reset.clk).beg inif reset= ' 1' then total_amount<= ' O'money_ok<= ' 0';Ied_five_retur n<=(others=> led_te n_retur n<=(others=>elsif risin g_edge(clk) the n.total_a moun t<=total_am ount_ten+total_am oun t_five+total_am ount_one;if total_amount>=6 then money_ok<=' 1'; else money_ok<=' O ';end if; if(cancel=' 1' ) then--if can celed_retur n all coins mmediately. for i in 0 to 2 loop.Ied_five_return(i)v=return_clk; end loop;for i in 0 to 1 loop.led_te n_ return(i)<=return_clk; end loop; elsif(diet_out=' 1' or cola_out= ' 1' ) then.--return coins after drink delivered. case total_am ount is.whe n 0 to 14 =>for i in 0 to 2 loop.Ied_five_return(i)v=return_clk; end loop;for i in 0 to 1 loop.led_te n_ return(i)<=return_clk; end loop; Whe n6=> null;When 10=>led_o ne_return(4)v=return_clk; Whe n15=>led_ on e_reture n( 9)<= retur n_clk;'O '); 'O ');whe n others=>led_te n_retur n(0) v=retur n_clk;led_te n_return(1)v=return_clk;end case; end if; end process; end block;信号仿真结果如图3-2,图3-3所示:四、结论本次课设中我进一步熟练的运用了 VHDL 语言来描述逻辑功能,课设完成 了售票机的基础功能和基本处理方法。