📢
本系列文章只提供课上测试的解读
所有课下作业的源代码请按下面指示前往我的Github仓库~
通过阅读本文,您可以大致了解 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 位二进制数,输出为1或0,代表输入是否为不降序列。
将输入按从高位到低位每 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语言想一遍思路,有时间也可以写出来。
总体上分为三个步骤:
- 读入所有数据,并进行必要的存储。
 - 计算每个点的海拔高度。
 - 找出最高海拔高度。
 
我在实际操作中忘记考虑起点与其他点的比较,这点需要注意。
