T1 未出现的最小正整数(组合逻辑)
题目大意
输入五个8位无符号整数,输出这些数中未出现的最小正整数。例如输入为3,1,0,5,7;则输出为2
input | output |
---|---|
[7:0] | [7:0] |
[7:0] | |
[7:0] | |
[7:0] | |
[7:0] |
思路(不一定好)
很显然,答案最大为6,那么暴力枚举1-6,看看谁先没在五个数中出现,然后输出即可。
T2 回型导航(时序逻辑,Mealy状态机)
题目大意
有一个各位置编号如下的一个回型走廊
7 | 8 | 1 |
---|---|---|
6 | 2 | |
5 | 4 | 3 |
一个同学初始在1处,他每个周期向东南西北四个方向中的一个走一格,若他前进的方向存在格子,则他来到这个格子,并输出这个格子的编号。否则,他不移动,并输出所在格子的编号。约定如下:
00 北
01 西
10 南
11 东
input | 方向[1:0] |
---|---|
clk | |
rst | |
output | 编码[4:0] |
思路
一个比较典型的Mealy状态机。我们可以在输出的时候,仅以次态做为输出的依据来简化逻辑(其实也没怎么简化)。需要注意的是格子编号和状态编码之间的关系
T3 16进制序列匹配(时序逻辑,Moore状态机)
题目大意
每个周期输入一个16进制数,若之前三个周期的输入符合以下三种:
EEE
A0E
0A0
则对应输出
1
2
3
否则输出0
input | num[3:0] |
---|---|
clk | |
rst | |
output | 编码[1:0] |
思路
不妨设0、A、E对应的编码为00、01、10,而11代表除了它们外的其它数字。那么状态机就很好画了。利用logisim的真值表设计电路即可。需要注意的是,输出仅和当前状态有关,绝不能用次态来计算输出。
(此处本应放我自己画的状态机,但是画的实在是,自己都绷不住,就不影响大家的眼睛了)