基于VHDL的自动售货机控制系统设计与实现

4星 · 超过85%的资源 需积分: 13 48 下载量 122 浏览量 更新于2024-08-02 4 收藏 127KB DOC 举报
"庞金伟同学的VHDL与数字电路课程设计报告,主题为自动售货机控制系统的设计。该设计旨在让学生掌握MAX+PLUSⅡ软件的使用、VHDL语言编写数字电路系统、电路设计流程以及自动售货机工作原理。设计要求包括钱数处理、找零、显示和退币功能,通过3个键代表3种钱和3种物品,2个数码管分别显示输入和找零金额,使用发光二极管反馈购买状态。系统由分频模块、控制模块和译码输出模块构成,其中分频模块用于产生稳定的时钟信号,控制模块负责按键判断、金额计算和找零控制,译码输出模块则将金额转换为数码管显示。" 该设计中,自动售货机的控制系统基于VHDL语言,这是一种硬件描述语言,用于描述数字系统的逻辑功能。设计的核心是控制模块,它包含了以下关键功能: 1. **按键判断**:通过检测按键输入,识别用户是选择投入货币还是选择商品。3个货币键代表不同面额的钱币,3个商品键对应不同的商品。 2. **金额计算**:用户投入货币后,系统会累计输入的金额,并在2个数码管上显示。每次按键,系统都会更新当前的金额。 3. **找零计算**:当用户选择商品后,系统会将输入金额与商品价格进行比较。如果输入金额大于商品价格,系统会在数码管上显示应找回的金额,并通过发光二极管指示购买成功。若输入金额不足,系统会显示需退出的金额,发光二极管提示购买失败。 4. **分频模块**:此部分用于产生稳定、频率较低的时钟信号,以避免按键抖动的问题。它通过内部计数器在外部时钟信号的控制下产生新的时钟信号,确保系统操作的精确性。 5. **译码输出模块**:为了在数码管上显示输入和找零的金额,需要将数值译码成7段数码管可以显示的形式。由于金额可能超过9,译码模块必须能处理两位数的显示。 在实际实现中,设计者可能利用MAX+PLUSⅡ软件进行电路的仿真和综合,最终将设计下载到GW48实验系统中进行硬件验证。这个过程涉及到VHDL代码的编写、逻辑功能的验证以及硬件平台的适配,全面锻炼了学生的数字系统设计能力。