logisim|计算机组成结课设计|16bit-CPU|调试

本文从基础使用开始,说明16bit-CPU中各个参数的意义,同时举几个例子。

基础使用

.s文件对应massem.pl,basic_microcode文件对应uassem.pl,两个分别编译出一个.ram文件与两个.rom文件。

ram文件编译
rom文件编译

然后分别向RAM和ROM中Load image以上三个文件,就能够将你的程序写入这个CPU开始执行了。

接下来来讲ram和rom的编译语言规则,我们不会讲如何修改两个pl文件,只讲关于.s文件和basic_microcode文件的文字规则,以及整个线路的各引脚作用。

各个元件

ram相关

RAM各位控制

计算机中有很多种代码:

  • add、mul等属于计算型0~15 dst型
add r1, r2, r3  #r1=r2+r3
mul r1, r2, r3  #r1=r2*r3
sub r1, r2, r3  #r1=r2-r3
  • jnez属于单数字型 sti型
jnez    r1, aa #跳转到aa行运行
----------------------------------------
40: addrsel=pc  imload=1
    aluop=sub  op2sel=0
这段是jnez 的底层代码,

addrsel=pc对应了'addrsel=pc' =>     0 << 7
意思是第0左移七位,即第八位为0.
addrsel对应的第七第八位是PC的多路复用器的选择位,对应关系如下
00:pc
01:immed存储的是jnez第二个参数
10:alout当前ALU计算输出
11:sreg当前reg的steg输出位

imload=1对应了

  • sw、li单数字赋值 di型
li r5,x  
#给寄存器reg中r5位存x
sw  r0, 256  
#给内存RAM中第256字节存r0的数值,十进制的256是十六进制的100

以上不是用语不是很贴合,但是尽可能做到好理解。


如何在ram内构造循环?

ram中任意一行开头使用以下方式可以存储一个值在x中,x的值为x所在行。

~~~~
x:~~~~
jnez r1,x
#这段的意思是如果r1!=0,则返回x所在行,x可是设置为一个数字,可也以和这段一样实现一个for循环

ram常用语句

除了各种语句和其匹配 参数的调用,还有以下这些:

  • a:
    在每行开头使用可以将a=此行行数,之后可以用a作为一个数字参数使用,编译自动识别数字。
  • goto xxx:
    到xxx语句,运行完本行就会进入这条语句,编译出来的decisionROM为xxx语句在controlROM中所在行。
  • if z then pcincr else jump
    z代表了ALU的z参数,pcincr和jump都是语句,如果z就是ALU输出为zero,运行pcincr,else,运行jump。

rom

在rom里创建新的语句首先要理解rom控制器每一个输出控制位置对应的作用。

如何在rom中制作循环?

rom文件编译

我们先来看这段编译,我们可以看出来,代码分成了两个部分,一部分是后面的语句,一部分是前面的数字,那么前面的数字代表了什么呢?

后面的语句对应了前面的两组数字,两组数字前后分别对应了控制cpu线路的control ROM和控制control ROM的decision ROM。

举个例子,jnez(40:)的代码。

第一句:前侧数字为00004000 8282,其中,00004000对应了二进制的第十五位为1其他为0,控制了imload;而8282对应了decision输出两条数字82/82,这个数字通过cond位选择z\n\c中的一个来选择是第一条还是第二条。
(关于znc在ALU段说明)(此时cond位:17、18位=00)

控制imload作用为让immed读入RAM程序中的数字,这里.s文件中在0006行用loop:存储了一个数loop=0006,在编译.s到.ram中会把loop变成常数0006来使用。(上文我的程序有做修改,源文件中loop在0006行)

第二句:进入82行,前侧数字位00000021 8687,其中,00000021对应了aluop(0001)和op2sel(10),控制ALU用减法,op2sel控制ALU低位输入为0000;而86/87分别对应下一条指令。

下面是jnez循环的重点,在RAM接收jnez前7个控制字的时候,后面数字字第二组为jnez语法的第一个参数,ALU高位输入是这个参数,即r1。


原程序r1为参数

r2为参数

以上,此时ALU计算得r1-0000,计算结果输出在aluout,但是ALU中加配了z参数,所以还有一个输出是z,当输出为zero时,z=1。也就是r1=0,z=1,其他时候z=0.
所以当r1!=0,下一条指令从86行读取,r1==0,下一条指令从87行读取。


r1!=0
r1=00

第三句:进入86/87行,前侧数字位00000800 0000/00000a00 0000。对应下一条指令都是0000,说明要进行下一次轮回了。
00000800,控制pcload=1,即pc+1,进入下一条RAM中的语句。
00000a00,控制pcsle=01,pcload=1,pcsle选择下一条语句为immed中存储的行数,第一局中我们将loop作为行数输入进了immed中,此时又进入到了loop所在行,完成了循环。

以上就是jnez语句的解析,现在我们了解了jnez语句在电路和ROM中的运行了,总结出以下几点:

  • immed可以作为我们while循环的开头存点
    当然,如果要做老师说的第二层,我们就要封装到ROM中,所以简单的loop:加jnez语句的应用是不足够的。作为一个语句,所以我们不仅要会使用,我们要理解底层,然后才能做出jnez级别的语句。
  • z可以作为判断我们while循环的跳出判断
  • 通过z改变decisionROM中的下一位选择,就可以通过线路中(reg或者ram)的数据来让计算机判断接下来进行的步骤。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349