如何使用通用移位寄存器实现序列生成器?

How can I implement a sequence generator using a universal shift register?

如何实现生成以下序列的序列生成器

0000 1000 0001 0011 0110 1101 1110 1111

使用通用移位寄存器?我需要使用的移位寄存器是下图的74LS194型号,其中输入S1,S0控制移位模式。

如果(S1,S0) = (0,0),则当前值锁定到下一个状态。 如果 (1,0),它向右移动。如果 (0,1),则向左移动,(1,1) 表示从并行数据输入并行加载。

如果要求只是使用我选择的触发器而不是移位寄存器,我认为这将是一个简单的问题,但对于这个要求我不知道从哪里开始。尽管我为每个数字绘制了 4 张卡诺图,但我似乎没有掌握任何线索。任何帮助,将不胜感激。提前致谢!

通用移位寄存器74LS194:


编辑:我接受了建议并用输入信号编写了下一个状态 table。 我注意到在绘制下一个状态时需要考虑的输入变量太多table。您必须考虑每个下一个状态 Qd、Qc、Qb、Qa 的 Qd Qc Qb Qa、CLR、S1、S0、RIn、LIn 信号,这意味着每个 Q 的 9 变量卡诺图,我知道这很荒谬。我在这里遗漏了什么吗?

首先要搞清楚换档模式(S1,S0)。在所有情况下,只有一个班次可以工作:

0000, 1101, 1110 => shift right
1000, 0001, 0011, 0110 => shift left
1111 => load all zeros

由于不是Q0-Q3的所有组合都用在序列中,所以从Q0-Q3到S0,S1有很多有效函数。我注意到你可以根据 1 位的数量做出决定。

既然您知道每个代码如何移位,您就可以计算输入位 (LSI/RSI)

0000, 1101, 1110 => LSI=1
1000, 0001, 0110 => RSI=1
0011 => RSI=0

看起来 LSI 可以一直是 1。

有很多函数对 RSI 有效。 RSI=NOT(Q0&Q1) 有效。