CO review:P0


L0 五人投票

题目概述

裁判组有一个组长和四个组员(组员编号依次为 2'b00,2'b01,2'b10,2'b11)。
每个组员都可以赞成、反对或是弃权。组长还拥有屏蔽投票权:屏蔽一位组员的投票,无论该组员投什么票,都视为弃权。投票的输入信息和输入信号对应如下:

意义赞成反对弃权屏蔽投票
组长2'b002'b012'b102'b11
组员2'b002'b01, 2'b112'b10-

当赞成票大于反对票时,表决结果为通过;反之为不通过。

输入输出描述

端口名称方向位宽功能
LVI[1:0]组长投票
LII[1:0]组长屏蔽组员的编号
T0I[1:0]组员 2'b00 的投票
T1I[1:0]组员 2'b01 的投票
T2I[1:0]组员 2'b10 的投票
T3I[1:0]组员 2'b11 的投票
OO-表决结果(通过为 1,反之为 0)

考场思路

这题几乎就是一个分线器的应用。
大概写了 20min 左右。
不过呢,为了避免重复四次一样的电路,可以创建一个 circuit 专门用于处理组员投票,注意输入应该是两个,一个投票信号,一个使能端(用于表示组长是否屏蔽了这个人)。

Bug 分析

这题又遇到了 logisim 的 bug。有时候连完线发现线红了或者蓝了,还修不好,不过保存后重启解决一切问题。

L1 文本匹配

题目概述

你需要匹配字符串 0121 和 1210。请使用 Mealy 自动机。
输入信号的含义:

2'b002'b012'b102'b11
012不会出现

输入输出描述

端口名称方向位宽功能
clkI-时钟信号,在时钟上升沿转移状态
rstI-异步复位信号
inI[1:0]当前周期输入
outO[1:0]0: 无匹配
1: 匹配 0121
2: 匹配 1210s

考场思路

列出状态转移就可以啦。如下图所示:

  • 当 $st=110$ 且 $in=10$ 时,输出 1
  • 当 $st=011$ 且 $in=00$ 时,输出 2
  • 其他时候输出 0

bug 分析

这个题 WA 了一次,错在串 01210
因为我的 110 在 $in=1$ 时转移去了 001 而不是 011……

L2 斐波那契数列改

题目概述

数列 ${s_n}$ 定义如下:

$$
s_n =
\begin{cases}
0 & n=0,2 \\
1 & n=1,3 \\
s_{n-1} + (s_{n-2} \oplus s_{n-3}) & \text{if $n$ is even} \\
(s_{n-1} \oplus s_{n-2}) + s_{n-3} & \text{if $n$ is odd}
\end{cases}
$$

输入 $n$ 输出 $s_n$,时限:64 个周期。

输入输出描述

端口名称方向位宽功能
inI[4:0]输入
outO[31:0]输出

考场思路

同预习的斐波那契数列。
就是递推转移啦……
不过有人似乎直接打表……

bug 分析

还是要搭建好一会儿的,主要是保存并维持输出,还有计数,以及电路延迟问题。


评论
  目录