本文针对序列串行发生需求,以00011000为例,基于 74 系列中规模芯片,在 Multisim 中实现两种可直接使用的序列发生器方案:移位寄存器型、计数器 + 数据选择器型,均可以稳定输出目标串行序列。
一、设计原理:序列发生的核心逻辑
序列发生器的核心是按照固定顺序循环输出预设的二进制序列,本次目标序列为00011000(8 位),两种方案的核心逻辑分别是:
- 移位寄存器型:利用移位寄存器的移位特性,将目标序列预存在寄存器中,通过时钟控制循环移位输出
- 计数器 + 数据选择器型:利用计数器的地址输出,控制数据选择器按顺序输出预设序列
核心器件及真值表
1. 74HC194(4 位双向移位寄存器)
本次用它的并行载入 + 循环移位功能,实现序列的循环输出
| 输入控制 | 功能 |
|---|---|
| \(\overline{CLR}\)=0 | 异步清零,所有输出置 0 |
| \(\overline{CLR}\)=1,\(S_1S_0\)=11 | 并行载入:将\(D_0-D_3\)的输入载入到\(Q_0-Q_3\) |
| \(\overline{CLR}\)=1,\(S_1S_0\)=01 | 右移位:时钟上升沿时,\(Q_0\leftarrow D_{SR}\),\(Q_1\leftarrow Q_0\),\(Q_2\leftarrow Q_1\),\(Q_3\leftarrow Q_2\) |
| \(\overline{CLR}\)=1,\(S_1S_0\)=00 | 保持状态:输出不变 |
2. 74HC161(4 位同步计数器)
本次用它的模 8 计数功能,生成 8 个地址信号,用于控制数据选择器
| 输入控制 | 功能 |
|---|---|
| \(\overline{CLR}\)=0 | 异步清零,所有输出置 0 |
| \(\overline{CLR}\)=1,\(\overline{LOAD}\)=0 | 并行载入:将\(D_0-D_3\)的输入载入到\(Q_0-Q_3\) |
| \(\overline{CLR}\)=1,\(\overline{LOAD}\)=1,\(EN_P=EN_T=1\) | 同步计数:时钟上升沿时,\(Q_0-Q_3\)加 1 |
3. 74HC151(8 选 1 数据选择器)
和之前的序列检测中功能一致,根据地址选择输入的序列数据输出
| 地址输入\(A_2A_1A_0\) | 输出 Y |
|---|---|
| 000 | \(D_0\) |
| 001 | \(D_1\) |
| 010 | \(D_2\) |
| 011 | \(D_3\) |
| 100 | \(D_4\) |
| 101 | \(D_5\) |
| 110 | \(D_6\) |
| 111 | \(D_7\) |
二、Multisim 电路实现
方案 1:移位寄存器型(74HC194 级联)
1. 电路接线逻辑
本次目标序列是 8 位,所以使用两片 74HC194 级联实现 8 位移位寄存器
- 第一片 74HC194(低位,对应序列的第 1-4 位:
0001)- \(\overline{CLR}\)(1 脚):接 5V(禁止清零)
- \(S_1S_0\)(9、10 脚):先接 11(并行载入模式),载入完成后改接 01(右移位模式)——S0一直是1,S1先1后0
- \(D_0-D_3\)(3-6 脚):按序列低 4 位
0001连接,\(D_0=0\)(接地)、\(D_1=0\)(接地)、\(D_2=0\)(接地)、\(D_3=1\)(接 5V) - \(D_{SR}\)(7 脚):接第二片的\(Q_0\)(12 脚),实现循环移位
- CLK(2 脚):接 1kHz 的时钟源(数字时钟源,TTL 电平)
- \(Q_0-Q_3\)(12-15 脚):\(Q_3\)作为串行输出端的低位输出,同时\(Q_3\)接第二片的\(D_{SL}\)(8 脚)
- 第二片 74HC194(高位,对应序列的第 5-8 位:
1000)- \(\overline{CLR}\)(1 脚):接 5V(禁止清零)
- \(S_1S_0\)(9、10 脚):和第一片保持一致,先 11 后 01
- \(D_0-D_3\)(3-6 脚):按序列高 4 位
1000连接,\(D_0=1\)(接 5V)、\(D_1=0\)(接地)、\(D_2=0\)(接地)、\(D_3=0\)(接地) - \(D_{SL}\)(8 脚):接第一片的\(Q_3\)(15 脚)
- CLK(2 脚):和第一片接同一个 1kHz 时钟源(同步移位)
- \(Q_0-Q_3\)(12-15 脚):\(Q_0\)接第一片的\(D_{SR}\)(7 脚),\(Q_3\)作为串行输出端的高位输出
2. 操作与验证![]()
- 先将两片 74HC194 的\(S_1S_0\)接 11,给一个时钟上升沿,完成并行载入,此时两片的输出分别为
0001(低位)和1000(高位) - 将\(S_1S_0\)改接 01,之后每一个时钟上升沿,序列会循环右移:
- 第 1 个时钟:输出
0(第 1 位) - 第 2 个时钟:输出
0(第 2 位) - 第 3 个时钟:输出
0(第 3 位) - 第 4 个时钟:输出
1(第 4 位) - 第 5 个时钟:输出
1(第 5 位) - 第 6 个时钟:输出
0(第 6 位) - 第 7 个时钟:输出
0(第 7 位) - 第 8 个时钟:输出
0(第 8 位) - 第 9 个时钟:回到第 1 位,循环输出
- 第 1 个时钟:输出
- 可以在串行输出端接示波器,观察到连续的
00011000串行波形
方案 2:计数器 + 数据选择器型(74HC161+74HC151)
1. 电路接线逻辑
- 74HC161(模 8 计数器,生成地址)
- \(\overline{CLR}\)(1 脚):接 5V(禁止清零)
- \(\overline{LOAD}\)(9 脚):接 5V(禁止并行载入)
- \(EN_P、EN_T\)(7、10 脚):接 5V(使能计数)
- CLK(2 脚):接 1kHz 的时钟源(数字时钟源,TTL 电平)
- \(Q_0-Q_3\)(14-11 脚):取\(Q_0-Q_2\)(14、13、12 脚)接 74HC151 的地址端\(A_0-A_2\)(1、2、3 脚),实现模 8 计数(0-7 循环)
- RCO(15 脚):悬空,本次用不到进位输出
- 74HC151(8 选 1 数据选择器,输出序列)
- \(\overline{EN}\)(7 脚):接地(使能选择器)
- \(D_0-D_7\)(11、10、9、6、5、4、13、12 脚):按目标序列
00011000依次连接:- \(D_0=0\)(接地)、\(D_1=0\)(接地)、\(D_2=0\)(接地)、\(D_3=1\)(接 5V)
- \(D_4=1\)(接 5V)、\(D_5=0\)(接地)、\(D_6=0\)(接地)、\(D_7=0\)(接地)
- Y(5 脚):作为串行序列的输出端,可接示波器观察波形
2. 操作与验证
- 打开时钟源,74HC161 会开始模 8 计数,\(Q_0-Q_2\)依次输出
000、001、010、011、100、101、110、111循环 - 74HC151 会根据地址依次选择\(D_0-D_7\)输出,最终在Y端得到串行序列
00011000循环输出 - 如果需要修改输出序列,只需要修改\(D_0-D_7\)的接线即可,扩展性强
三、总结
本次实现的两种序列发生器方案,都可以在 Multisim 中稳定输出00011000序列:
- 移位寄存器型:适合需要循环移位输出的场景,电路的时序连贯性更好
- 计数器 + 数据选择器型:修改序列更灵活,适合需要经常更换输出序列的场景