...可编程计数器的时序逻辑电路设计
戴天方
中图分类号:G882 文献标识码:A 文章编号:1009-914X(2018)30-0280-02
一、设计要求
有三种商品(咖啡、可乐、橙汁)可供选择,商品价格分别为4元、3元、2元。一次只能买一件商品,投钱后选择商品,得到商品并找零钱。
只有1个投币口:每次只能投1元,最多投5元。如果钱不够,即投钱后,若钱少于商品价格,此时所选商品会自动退款。
有取消功能,即投钱后,如果改变主意不想买了,则按下取消键,就无条件退款。
根据设计需要自行确定输入和输出变量个数。(请尽量从用户使用的角度设计好用的电路)。
要求给出详细的设计过程,然后利用仿真软件设计电路原理图,利用波形仿真进行仿真验证。
二、设计过程
设输入为 IN(投币)、CANCEL(取消)、COFFEE(咖啡)、COLA(可乐)、ORANGE(橙汁)。
投币结果输出为Q2、Q1、Q0; 找零或退币结果输出为P2、P1、P0; ,出货结果对应为COFFEE_OUT(出咖啡)、COLA_OUT(出可乐)、ORANGE_OUT(出橙汁)。
根据题目要求,做状态和输出表如表1:
将表1中的6种状态按下表赋值,得到转移和输出表
根据上表可以得到激励方程和逻辑表达式:
最后根据上面的方程搭建电路如图1:
图1中,5个输入均由按键开关控制,投入的钱数由上方的数码管(红色)显示出来,找零或退币结果由下方的数码管(蓝色)显示出来,出货结果显示为对应灯亮起来。
三、仿真验证
利用multisim 14软件,按照图1的电路原理图,得到如下仿真电路:
通过按IN按钮模拟投币动作,因为按键开关会自动断开,所以每按下一次按键,只产生一次时间有限的高电平信号。
红色数码管显示当前所投入的钱数,蓝色数码管在按下对应饮料的按键或取消按键后显示所找零或退币的多少,三個指示灯分别在钱的数目大于或等于饮料价格并且按下对应按键时会亮起,表示对应饮料出货。
以下为部分仿真结果(为便于显示,只截取部分电路):
1.投入33元,选择取消
a)投入3元后的结果(按IN键3次)
b)选择取消的结果(按下CANCEL键)
因为电路具有延迟,所以两个数码管的显示均为3.
2.投入66元,,选择咖啡
a)投入6元后的结果(按IN键6次)
如图5所示,投币结果为5元,并退出1元.
一段时间后,退币结果为0.
b)选择咖啡后的结果(按下COFFEE键)
如图7所示,因为投入的钱为5元,咖啡的价格为4元,足够支付咖啡的费
用,选择咖啡后,退币的结果为1元,同时COFFEE_OUT的指示灯亮起,代表咖啡出货。
3.投入22元,选择可乐
a)投入2元后的结果(按IN键2次)
b)选择可乐后的结果
如图9所示,因为投入的钱为2元,可乐的价格为3元,不足以支付可乐的费用,选择可乐后,退币结果为2元,并且没有指示灯亮起,代表没有出货.
四、结果分析
通过分析第三部分的仿真结果可知,此电路实现了题目所要求的功能,但也存在部分问题:
a)因为电路中存在延迟,所以两个数码管的显示会有相同或者红色数码管的显示滞留时间长的情况;
b)而且上升时间要短于下降时间,延迟也导致指示灯的显示时间非常短;
c)在G3状态进入G4状态时,可以看到蓝色数码管存在短暂显示为1的情况,分析为存在静态0冒险。