📢
本系列文章只提供课上测试的解读
所有课下作业的源代码请按下面指示前往我的Github仓库~

BUAA-2023-CO

通过阅读本文,您可以大致了解 2023 年秋季北航计算机组成原理课程 Pre 课上测试的题目内容、难度和解题思路
Pre 课上测试不计入课程分数。其主要内容是对预习部分的 logisim 、Verilog HDL 、 MIPS 汇编语言的综合考察
题目每年都会发生变化,题意描述大致清晰,但是可能与原题有一定差异

T0·简单模拟俄罗斯方块的有限状态机

本题考察 logisim 的使用,以及有限状态机的建模

题目描述

仅对一行8个方块进行模拟。
输入为一个8位二进制数(独热码),唯一的一位1代表将要放下方块的位置。
如果已经有方块,不能再放入方块,输出代表放入失败的结果00;
如果没有方块,可以放入方块,,且放入后一行未满,输出代表放入成功但未满的结果01;
如果没有方块,可以放入方块,,且放入后一行已满,输出代表放入成功且已满的结果10,本行方块清零消去

求解思路

Moore或者Mealy型状态机均可,可以按照题目具体要求。

次态逻辑

状态码也应该采用独热码,0代表该位置为空;1代表该位置有方块。在次态逻辑中,用当前状态输入进行或运算得到次态,并且需要比较次态1111 1111(判断是否已满),若相等则清零并通知输出逻辑;

输出逻辑

不难实现。
根据当前状态(和输入)判断是规则中的哪一种情况,对应输出。

T1·用 Verilog HDL 判断输入是否为不降序列

本题考察 Verilog HDL 的使用

题目描述

本题基本没有难度。
输入为一个 16 位二进制数,输出为10,代表输入是否为不降序列。
将输入按从高位到低位每 4 位拆分,分为从左到右 4 个部分,若从左往右都是不降的(data1 <= data2 <= data3 <= data4 ),则输出1,否则输出0

求解思路

用1个assign语句,将输入拆分为4个部分(如input[15:12]就是第一个数),用连续的三元条件运算符判断data1 <= data2 <= data3 <= data4 是否成立即可

T2·用 MIPS 判断最高海拔

本题考察 MIPS 汇编语言的使用

题目描述

先输入一个整数n,代表接下来有n个整数。
接下来向数组g输入n个整数,共n+1个点,起点海拔为0
g[i]代表第i个点到第i+1个点的海拔高度差。
输出最高海拔的值。

求解思路

先用C语言想一遍思路,有时间也可以写出来。
总体上分为三个步骤:

  1. 读入所有数据,并进行必要的存储。
  2. 计算每个点的海拔高度。
  3. 找出最高海拔高度。

我在实际操作中忘记考虑起点与其他点的比较,这点需要注意。