大佬们,是这样的,这边要求的是用触发器级去做,就挺难搞,以前没怎么碰过,能再给个思路吗![]() |
用预置数计数器,就可以实现。芯片型号可以百度。 |
画出真值表,列出卡诺图,写出逻辑关系式,画图。 |
很久以前,在一所技术学校,我做了一个类似的“数字机器”,其中的代码是乱序给出的。 理论。 总体思路是: - 当前代码存储在一组时钟 D 触发器中(因为操作发生在脉冲的边缘); - “代码转换器”的输入连接到 D 触发器的输出; - D触发器的输入连接到“代码转换器”的输出; - 下一个代码由“转码器”准备,所需代码在下一个脉冲前沿“写入”D 触发器。 “转码器”是一个小容量的可编程存储芯片(我只有 32 字节)。 实用的解决方案。 在您的情况下,您将需要 3 个时钟 D 型触发器和一个 eprom 芯片(如 28C16 或类似芯片,我找不到更少的)。 D 触发器的输出 Q1、Q2、Q3 连接到地址输入 ADR0、ADR1、ADR2 eprom。 输出 DATA0、DATA1、DATA2 eprom 连接到 D 触发器 D1、D2、D3 的输入。 让DATA7 eprom输出为“CO”信号(“传输输出”) 在地址 000 处的 eprom 中,我们写入二进制 0000`0001(即在下一个周期,我们“传递”到代码 001 和 CO=0),然后: - 在地址 001 我们写入二进制 1000`0110(即在下一个周期我们“传递”到代码 110 和 CO = 1) - 在地址 110,我们写入二进制 0000`0111(即在下一个周期,我们“传递”到代码 111 并且 CO = 0) - 在地址 111,我们写入二进制 0000`0000(即在下一个周期,我们“传递”到代码 000 和 CO = 0)。 对于所有其他 eprom 地址,必须写入二进制 0000`0000,以便“数字机器”从“禁止”(非工作)状态“返回”到已知的初始状态。 这种方法可能看起来过于复杂,但实际上它允许您实现任何(!!)“数字机器”并且非常容易实现(尤其是在现代 FPGA 上)。 (对不起我的语言 - 机器翻译并不完美) |
根据最原始的要求,设计逻辑,然后简化逻辑,设计电路。 |
可用可半装载初值的4位二进制计数器如74LS161通过逻辑电路控制装载引脚LD,D3D2D1D0设置所需开始的初始值,CP脉冲可用NE555芯片构成多谐电路产生。 |