lec4 VHDL第四次作业

chapter 14 时序逻辑

14.3 改进交通灯控制器,修改表所示的交通灯控制器FSM,使其在某一个方向上变为绿灯之前,使得两个方向都变为红灯,持续一个周期。给出新得FSM得状态表和状态图

状态 下一个状态 输出
carew = 0 carew = 1
GNS GNS YNS 100 001
YNS GEW GEW 010 001
GEW YEW YEW 001 100
YEW GNS GNS 001 010

要使得变为路灯之前,两个方向下变为红灯,可以发现原表格只有当一个状态变为黄灯之后,下一个状态才会时一个方向为绿灯,另外也给方向为红灯,现在修改为下一个状态为两个方向设置为红灯,之后的状态才是一个红灯一个绿灯

状态 下一个状态 输出
carew = 0 carew = 1
GNS GNS YNS 100 001
YNS REW,RNS REW,RNS 010 001
REW,RNS GEW GEW 001 001
GEW YEW RNS 001 100
YEW REW,RNS REW,RNS 001 010
REW,RNS GNS GNS 001 010

14.4 改进交通灯的控制器,为14.3中改进的交通灯控制器选择一个状态分配,并导出计算下一个状态和输出的逻辑函数。给出下雨给状态变量和输出变量的卡诺图,以及FSM的门级示意图

为了识别两个方向为红灯之后,下一个状态哪个方向应该输出绿灯,哪一个状态应该输出红灯,新增加两个状态,分别为上一个状态为YNS,下一个状态为两个方向红灯,以及上一个状态为YEW,下一个状态为两个方向红灯,具体编码如下表所示。

状态 编码
GNS 000
YNS 001
RNS,REW 011
GEW 010
YEW 110
RNS,REW 100

根据当前状态计算出下一状态真值表如下图所示,一个方向为绿灯或者为黄灯,另外一个方向必为红灯

状态 carew 下状态(ns2ns1 ns0 备注
000 0 000 南北方向绿灯,carew=0
000 1 001 当前状态ns上为绿灯,carew=1
001 0 011 当前状态为NS方向上为黄灯,下一状态全红灯,carew = 0
001 1 011 当前状态为NS方向上为黄灯,下一状态全红灯,carew = 1
011 0 010 上一状态NS方向为黄灯,下一状态EW为绿灯,carew = 0
011 1 010 上一状态NS方向为黄灯,下一状态EW为绿灯,carew = 1
010 0 110 上一状态两个方向为红灯,下一状态EW为黄灯,carew = 0
010 1 110 上一状态两个方向为红灯,下一状态EW为黄灯,carew =1
110 0 100 上一状态EW方向上为绿灯,下一状态为全红灯,carew=0
110 1 100 上一状态EW方向上为绿灯,下一状态为全红灯,carew=1
100 0 000 上一状态为EW方向上为黄灯,下一状态为NS为绿灯,carew=0
100 1 000 上一状态为EW方向上为黄灯,下一状态为NS为绿灯,carew=1

可得到真值表ns2

c ns2\s1s0 00 01 11 10
00 0 0 0 1
01 0 0 0 1
11 0 0 0 1
10 0 0 0 1

ns2 = s0' * s1

同理可以得到ns1的真值表如下所示

c ns2\s1s0 00 01 11 10
00 0 1 1 1
01 0 0 0 0
11 0 0 0 0
10 0 1 1 1

ns1 = s2' * (s0 + s1)

可得到ns0的真值表如下

c ns2\s1s0 00 01 11 10
00 0 1 0 0
01 0 0 0 0
11 0 0 0 0
10 1 1 0 0

ns0 = (s1' * s2') * (s0 + c)

可以得到输出变量的逻辑函数如下所示。

gns = s0' * s1' * s2'

yns = s0 * s1' * s2'

rns = s1 + s2

gew = s0' * s1 * s2'

yew = s0' * s1 * s2

rns = (s0‘ * s1)'

可以的到逻辑图如下所示。经验证设计符合要求

1584243553

chapter 16数据通路的时序逻辑

16.8. 斐波那契数列,画出使用数据通路电路计算16位斐波那契数列的框图,在每个周期内,电路输出下一位斐波那契数(复位后从0开始)。当下一个数字大于16时,电路应该发出指示信号

每个周期,顺序输出0,1,2,3,5,8,13.....当复位信号来的时候,恢复输出从0开始,电路如下所示。

1584245602

寄存器a保存当前计算的结果,寄存器b保存上一次计算的结果,下一次的结果通过两次寄存器的值相加给出,要是超出16位,则vfo为1.

控制信号:当为上升沿时,寄存器a的结果打到b,寄存器a的结果为上一次两个寄存器相加的结果,要是两个寄存器都是初始态0,则寄存器a的结果为1,当发生复位时,res为1,两个寄存器的值都将会被清0。

经过验证,电路可以得到预期的结果,产生斐波那契数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容