单周期CPU搭建的细节记录
固定开场
你好!本文章为该博客的第1篇文章!
本文章将会记录我自己在尝试自行搭建第一个基于MIPS-C指令集架构(不包含特权和异常处理指令)产生的心得!
由于搭建的时候几乎完全是在闭门造车,所以里面的内容可能不正确/不严谨/难扩展/…,暂且请读者自行甄别内容好坏。
理理思路——怎样细化工作?
首先,问一个问题:我们要干什么?
当然,我们的回答可以是搭建一个单周期的CPU。
但是这个回答不够具体,我们不能通过这个回答搞清楚我们如何搭一个CPU。
所以我们根据理论课上的内容,添加一个简单的描述:我们希望把一些模块组合连接起来,搭成一个单周期的CPU。
那么,我们通过这个描述,对这个问题拆开一下,变成这样三个问题:
我们需要用到哪些模块构建这个CPU?
模块内是长什么样子的?
这些模块之间是如何连接的?
对于第一个问题,我们可以很快的用课上知识回答出绝大部分需要的元件:我们需要一个ALU用来计算,需要一块内存(或者两块,一块存指令,另一块存内存)保存数据,需要一些寄存器保存数据和数据交换,需要一个主要的控制器来控制数据的通断。
但是,对于剩下两个问题,如果我们不去关注自己要实现哪些指令的 ...
北航CO pre Logisim部分 斐波那契数列挑战思路引导
你好!本文章为测试博客用的文章,但是里面的内容确实可以帮到大家!
出于学术诚信考虑,本文章不包含本题目的完整答案,仅提供思路分析和设计上初步的引导,感谢理解!
题意简述
这个题的大意就是,在输入端给定一个32bit的无符号数 NNN,计算出斐波那契数列的第 NNN 项的最后32bit并输出。
其中:
题目对于斐波那契数列的定义是: f0=0,f1=1,∀n≥2,fn=fn−1+fn−2f_0=0,f_1=1,\forall n \ge 2,f_n=f_{n-1}+f_{n-2}f0=0,f1=1,∀n≥2,fn=fn−1+fn−2。
使用的主模块名称应为main。
在计算出结果之前,输出端应始终置为0,否则视为提交答案。
需要在64个时钟周期内给出答案。
思路分析
引入性质
这里我们不加说明的给出几个性质,没有这个性质的话后面讲述实在是推不下去:
(a+b) mod m=(a mod m+b mod m) mod m(a+b) \bmod m = (a\bmod m + b\bmod m) \bmod m(a+b)modm=(amodm+bmodm)modm。
(a∗b ...
问好。
你好!
这里是懒鱼,一个北航在读本科生,一个车万人,一个XCPCer。
建立这个博客的时候,其实我还没有具体要写什么的打算。也许未来我会选择把学习时候的各类思考,以及搞XCPC过程中的各个题目/算法笔记/游记(如果能打上比赛的话)等等的都丢上来。也许如果未来还有什么值得记录的活动的话,也会留一些内容上来。
毕竟是作为第一篇博客,而且脑袋空空不知道说些什么,那就随便测个功能就跑吧。
[Fn+1Fn]=[1110][FnFn−1]\begin{bmatrix}
F_{n+1} \\
F_n
\end{bmatrix}
=
\begin{bmatrix}
1 & 1 \\
1 & 0 \\
\end{bmatrix}
\begin{bmatrix}
F_n \\
F_{n-1} \\
\end{bmatrix}
[Fn+1Fn]=[1110][FnFn−1]
希望未来我们能一直见面!
为了终会到来的那天。