单周期CPU全自动测试思路(Logisim)
这是一篇针对计组P3的自动化测试学习
写在开头通过阅读本文,你可以了解到如何蒟蒻合理生成不会陷入死循环不会报错的指令,并了解到对logisim进行自动化测试的相关方法。
全自动测试的开端:设施准备要完成logisim的自动测试,需要使用到Logisim的命令行操作对输出进行重定向,所以我们需要.jar版的logisim来实现,该文件上网找找就有,我也已经上传至百度网盘,提取码:ozsw,需要的uu可以自取。
命令行学习logisim的命令行官方文档是有介绍的,感兴趣的可以去看看:这里我直接贴出有用的命令行,并对其做出解释,方便速通。1java -jar logisim-generic-2.7.1.jar CPU名称.circ -tty table > 输出.txt这句话的意思是运行该.circ文件并将顶层模块的输出全部进行输出,注意是顶层模块,子模块不会输出任何结果!意味着若你想得到你需要的数据,你就需要在主模块将其作为输出进行输出。对于一个xxxx.asm程序,我们需要通过命令行运行mars使其输出机器码文件:1java -jar Mars4_5.jar xxxx.asm ...
单周期CPU设计文档(Logisim)
Logisim 单周期CPU设计文档
CPU设计方案综述(一)总体设计概述
使用Logisim设计开发一个初步的单周期CPU,总体概述如下:
此CPU为32位CPU
此CPU为单周期
此CPU支持的指令集为:{add, sub, addu, subu, ori, lw, sw, beq, lui, nop, j}
nop的机器码为0x00000000
addu,subu不支持溢出
(二)关键模块定义
1.IFU
(1) 端口说明
表 1-IFU端口说明
序号
信号名称
方向
描述
1
CLK
I
时钟信号
2
RESET
I
异步复位信号,将PC值置为0x00000000 0:无效 1:复位
3
PCN[31:0]
I
PC的下一个值
4
Instr[31:0]
O
输出IM中将要执行的指令
5
PC[31:0]
O
输出当前PC值
(2) 功能定义
表 2-IFU功能定义
序号
功能
描述
1
复位
当RESET有效时,将PC值置为0x00000000
2
更新PC值
PC\<=NPC
3
输出指令
根据PC的 ...
状态机实验秒杀——模板化做题
这是一篇适用于P0,P1状态机的做题思路分享
写在开头在度过Pre通过的快乐或是不通过的悲伤之后,很快我们会迎来真正的考验,从P0开始一直到P1,我们将要面对的一个主要问题就是状态机,而状态机一般在P0中占据两题的位置,P1中占据三题的位置,所以我们可以说,状态机这一关过不去,我们的实验将止步于P0。但是,在笔者看来,状态机反而是最为简单,最为模板化的一类题,一旦掌握,则成竹在胸,很难出现意外。今天我们就来聊一聊状态机的是是非非。虽然笔者也极力反对这种刻板化做题的行为,但不得不说,对于状态机而言,一直用一直爽!
状态机基础知识Moore型状态机关键点:输出信号仅与当前状态相关
Mealy型状态机关键点:输出信号与当前状态及输入信号有关没错,做题只需要知道这么多,两句话两个图!
做题模板Logisim仔细观察笔者每一道题,细心的大家一定会发现,笔者的搭建完全按照状态机基础知识中的那两个图进行搭建,线多也只是因为笔者图方便,每一条线代表一位,而基础知识中的那几个图一条线代表很多位,经此而已,所以,搭建:输入-状态转移模块-寄存器-输出模块-输出的框架,这便是第一步。第 ...
成熟的孩子要自己找题做——获取CSCore白金版
这是一篇针对CSCore的Selenium学习
历史背景在北航,有这样一群人,他享有着别人所羡慕不来的东西——白金版CSCore,他可以查看自己的统计图,看到自己学习的时长与成果;他可以被计组邮箱推题,评测别人看不到的题。我们至今未能得知白金版CSCore的来源,或许正如助教所说,这是未开发功能,只供部分人试用,又或许这是来自计组平台对于不好好做Pre的小可爱的一种Push,我们不得而知。笔者很不幸运,便是普通版的一员,即使拿到了统计图的网址,点进去也会被骗到BiliBili的《never gonna give you up》。然而我们是成年人了,要学会自己去获取资源,要有自己去拿到王者版CSCore的决心与努力,因此,我们就要学习WEB自动化工具——Selenium当然,不学习也可以,它毕竟只是一个自动化软件,选择用勤劳的双手创造财富也可以,再不济,笔者也为大家提供了亡灵版CSCore,点击直接使用即可~
Selenium安装Selenium是Python的一个工具包,所以我们需要先有Python,这里笔者推荐在安装解释器时直接使用Anaconda,其为Pyth ...
何为从代码看Logisim?
这是一篇针对Logisim的做题思路学习
何为从代码看Logisim?• MIPS中对于递归可以直接翻译C代码,那么Logisim是否可以?这就是这个问题的来源:• 从代码看Logisim,即类比程设思想解决logisim问题,那么如何类比?如何解决?我想引用组合电路一种类型题——投票类型问题对其做出解释,方便大家理解,并提供解决投票问题普通投票部分的一个可行思路。当然这里我只谈思路,不谈实现,小小的抛砖引玉一波,具体怎么应用就看大家了。
Example 1 补码解决投票问题题面及分析这是一道考试真题,大概意思是说有几个人进行投票,统计票数,要求通过输出1,不通过则输出0,这其实是一类问题,因为有时候大家权重一样进行投票,有时候大家权重不一样进行投票(一票否决),这都是会可能出的题。听起来很简单的样子,但实现上其实是有一定难度的。主要难度体现在对于如何判断是否通过的输出上。下面我们谈一谈我当初的解法:
解法• 在初看投票类型题前,如果用C的想法去解这种题该怎么解? 主体思路便是:同意为1,弃权为0,反对为-1. 加起来看是否大于0就可以了。那么既然C可以这样实现,C ...
写在北航计算机组成总结的开头语
弹剑作歌奏苦声,曳裾王门不称情
获得通过阅读本博客,你可以获得:• 北航计算机组成从Pre到P8的一些经验与思考• 北航计算机组成一些往年题题面及class文件(侵删)• 北航计算机组成实用的Mars等工具• 北航计算机组成从P3到P7的自动化测试思路分享• 北航计算机组成从P3到P7的所有全自动强度较高的测试化程序• 北航计算机组成从P3到P8的设计文档• 北航计算机组成对笔者帮助很大的学长学姐博客传送门
行文思路笔者希望写一些有启发性,有独特性,有更深意义的计组学习文章,所以在笔者的博客中,你将不止看到往年题,更多的可能是一些技术性,思考性的文章,也是为了避免博客的同质化。再次先谢过大家的捧场了Orz
计组实验内容• Pre:课下内容:学习Logisim,Verilog,MIPS课上内容:5-10道选择/填空题+3道编程题(Logisim,Verilog,MIPS各一道)要求:3道编程题全部通过• P0:课下内容:学习Logisim状态机写法并进一步加深Logisim的学习课上内容:3道Logisim编程题要求:3过2• P1:课下内容:学习Verilog状态机写法并进一 ...