It has been 519 days since the last update, the content of the article may be outdated.
📢
本系列文章只提供课上测试的解读
所有课下作业的源代码请按下面指示前往我的Github仓库~
通过阅读本文,您可以大致了解 2023 年秋季北航计算机组成原理课程 P1 课上测试的题目内容、难度和解题思路
P1 课上测试 3题做出2题 通过。主要内容是对 Verilog 的使用综合考察
题目每年都会发生变化,题意描述大致清晰,但是可能与原题有一定差异
T0·向量点乘
题目描述
在实现矩阵乘操作时,往往可以将其分解为若干向量的点乘操作来执行。现在,请你设计一个向量点乘模块,实现向量的点乘操作。
简介
为了简化题目,我们用两个位宽为 32 的 wire 型变量来表示两个需要点乘的 32 维向量,也就是说,向量任何一个维度的值只能为 0 或 1。你需要将两个向量同一位置相乘并将所有位置的乘积相加输出。
输入输出
名称 | 功能 | 位宽 | 方向 |
---|---|---|---|
vector_a[31:0] | 需要点乘的向量a | 32 | I |
vector_b[31:0] | 需要点乘的向量b | 32 | I |
result[5:0] | 结果 | 6 | O |
求解思路
很简单。
各位相乘再求和(0位到31位)。
T1·涂色问题
题目描述
小 B 同学准备对一列格子进行涂色,他想要使用红色,绿色,蓝色三种颜色,但是要求如下:同一颜色不得连续出现三次,红色不得与绿色相连。
简介
我们将在每个周期通过 color 端口输入一个颜色代号:0(红色),1(绿色),2(蓝色),你需要设计 Moore 状态机来检测该涂色序列的合法性,并在检测到不合法的序列之后将输出端口 check 置为 1。
另外,在检测到不合法序列之后,小 B 同学会将最近的一次涂色擦除,重新涂色。
输入输出
名称 | 功能 | 位宽 | 方向 |
---|---|---|---|
color | 颜色输入 | 2 | I |
rst_n | 异步复位信号,低电平有效 | 1 | I |
clk | 时钟信号 | 1 | I |
check | 结果 | 1 | O |
求解思路
个人建议不必按题目要求,可以用 Mealy 型状态机,更好理解。
次态逻辑
状态表示识别情况,共7个状态3位二进制表示。
状态(十进制) | 识别情况 |
---|---|
0 | 空,没有任何颜色 |
1 | 单个红色 |
2 | 单个绿色 |
3 | 单个蓝色 |
4 | 两个相连红色 |
5 | 两个相连绿色 |
6 | 两个相连蓝色 |
需要注意的是,除正常地识别转换外,如果发现当前输出使次态非法,那么次态实际上应该回到当前状态。(题中所讲的擦除当前颜色)
输出逻辑
按照输出规则即可。
很抱歉,由于特殊原因,没有T2和助教问答的相关数据
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MossDream's Blog!
评论