1、 数字系统课程设计报告数字系统课程设计报告 课题名称:自动售邮票机课题名称:自动售邮票机 一、一、 功能介绍功能介绍 机器有 3 个投币按键,代表 3 种硬币输入(1 元,5 角和 1 角) 。每按一键,表示投 入一枚硬币,购票者可选择的邮票面值有 1 元和 5 角两种,每次售出 1 枚邮票。 购票者投币后,按动确认键,机器将发出邮票和找零硬币,若所投金额不足则发出 “欠资”指示。 邮票面值(1 元,5 角)也各用一个按键代表,按动某个键,表示选购某种面值的邮 票同时可安排两只发光二极管指示所选的面值。 投入的总金额用两只数码管显示。其显示的数字应随着硬币的投入或找出而变化。 机器有两个输出孔
2、(这里用两个发光二极管代表) ,一个输出邮票,一个输出找回的 硬币。 欠资信号和拒收信号可用发光二极管或其它方法表示,两种信号应有所区别。 二、二、 原理概述原理概述 任何复杂的数字系统最终都可以分解成基本门电路和寄存器电路单元, 根据这个思路, 在 采用 VHDL 语言进行数字系统设计过程中,也可以将设计目标进行设计,在各层次上分别 设计;或者将目标分解成一些模块,各模块同时进行设计,最后进行组合联调,并在不同的 层次上进行仿真验证,即使发现错误并加以纠正。 我们在设计自动售邮票机时,根据系统结构将其分为三个模块(选票模块、计数模块、结 果模块) ,经过分析,要实现自动售邮,首先,要让机器接
3、受一个“所需何种邮票”的信号 来对系统进行初始化,即为计数器置数,为此我们设计了第一个模块选票模块;其次, 用户应该开始投币, 机器应根据用户的不同的投币信号做出不同的计数响应, 为此我们设计 了第二个模块计数模块;最后,当用户发出投币结束信号时,机器要根据用户最终的投 币情况做出出票、找零、或是警告等响应信号,来完成整个售邮过程,为此我们设计最后一 个模块结果模块。 之后,我们对各个模块同时进行了设计,分别编译,仿真验证,定义具体的模块端口,再 确认 取消 找零 拒收 欠资 邮票 找零 邮票面值 1 元 5 角 1 角 1 元 5 角 投 币 孔 图 21 自动售邮票机示意图 组合成一个系统
4、,各模块通过一些信号进行相互驱动,实现电路功能。 三、三、 设计过程设计过程 (1) 模块划分模块划分 根据原理分析可知,我们将电路分成三个模块:选票模块,计数模块,结果模块。 (2) 模块设计模块设计 选票模块选票模块 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY stamp_seller IS PORT( sel_1: in std_logic; sel_5: in std_logic; clk: in std_logic; cancel: in std_logic; sta_1: out std_logic; sta_5: out std_logic ); end stamp_seller; ARCHITECTURE rtl OF stamp_seller IS SIGNAL a:std_logic; SIGNAL b:std_logic; BEGIN process(se