logisim|計算機組成結課設計|16bit-CPU|調試

本文從基礎使用開始假褪,說明16bit-CPU中各個參數(shù)的意義款票,同時舉幾個例子谱醇。

基礎使用

.s文件對應massem.pl,basic_microcode文件對應uassem.pl夺蛇,兩個分別編譯出一個.ram文件與兩個.rom文件疚漆。

ram文件編譯
rom文件編譯

然后分別向RAM和ROM中Load image以上三個文件,就能夠將你的程序寫入這個CPU開始執(zhí)行了刁赦。

接下來來講ram和rom的編譯語言規(guī)則娶聘,我們不會講如何修改兩個pl文件,只講關于.s文件和basic_microcode文件的文字規(guī)則甚脉,以及整個線路的各引腳作用丸升。

各個元件

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屬于單數(shù)字型 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第二個參數(shù)
10:alout當前ALU計算輸出
11:sreg當前reg的steg輸出位

imload=1對應了

  • sw猴凹、li單數(shù)字賦值 di型
li r5,x  
#給寄存器reg中r5位存x
sw  r0, 256  
#給內存RAM中第256字節(jié)存r0的數(shù)值夷狰,十進制的256是十六進制的100

以上不是用語不是很貼合,但是盡可能做到好理解郊霎。


如何在ram內構造循環(huán)沼头?

ram中任意一行開頭使用以下方式可以存儲一個值在x中,x的值為x所在行书劝。

~~~~
x:~~~~
jnez r1,x
#這段的意思是如果r1进倍!=0,則返回x所在行庄撮,x可是設置為一個數(shù)字背捌,可也以和這段一樣實現(xiàn)一個for循環(huán)

ram常用語句

除了各種語句和其匹配 參數(shù)的調用,還有以下這些:

  • a:
    在每行開頭使用可以將a=此行行數(shù)洞斯,之后可以用a作為一個數(shù)字參數(shù)使用毡庆,編譯自動識別數(shù)字。
  • goto xxx:
    到xxx語句烙如,運行完本行就會進入這條語句么抗,編譯出來的decisionROM為xxx語句在controlROM中所在行。
  • if z then pcincr else jump
    z代表了ALU的z參數(shù)亚铁,pcincr和jump都是語句蝇刀,如果z就是ALU輸出為zero,運行pcincr徘溢,else吞琐,運行jump捆探。

rom

在rom里創(chuàng)建新的語句首先要理解rom控制器每一個輸出控制位置對應的作用。

如何在rom中制作循環(huán)站粟?

rom文件編譯

我們先來看這段編譯黍图,我們可以看出來,代碼分成了兩個部分奴烙,一部分是后面的語句助被,一部分是前面的數(shù)字,那么前面的數(shù)字代表了什么呢切诀?

后面的語句對應了前面的兩組數(shù)字揩环,兩組數(shù)字前后分別對應了控制cpu線路的control ROM和控制control ROM的decision ROM。

舉個例子幅虑,jnez(40:)的代碼丰滑。

第一句:前側數(shù)字為00004000 8282,其中,00004000對應了二進制的第十五位為1其他為0翘单,控制了imload吨枉;而8282對應了decision輸出兩條數(shù)字82/82,這個數(shù)字通過cond位選擇z\n\c中的一個來選擇是第一條還是第二條哄芜。
(關于znc在ALU段說明)(此時cond位:17貌亭、18位=00)

控制imload作用為讓immed讀入RAM程序中的數(shù)字,這里.s文件中在0006行用loop:存儲了一個數(shù)loop=0006认臊,在編譯.s到.ram中會把loop變成常數(shù)0006來使用圃庭。(上文我的程序有做修改,源文件中l(wèi)oop在0006行)

第二句:進入82行失晴,前側數(shù)字位00000021 8687,其中剧腻,00000021對應了aluop(0001)和op2sel(10),控制ALU用減法涂屁,op2sel控制ALU低位輸入為0000书在;而86/87分別對應下一條指令。

下面是jnez循環(huán)的重點拆又,在RAM接收jnez前7個控制字的時候儒旬,后面數(shù)字字第二組為jnez語法的第一個參數(shù),ALU高位輸入是這個參數(shù)帖族,即r1栈源。


原程序r1為參數(shù)

r2為參數(shù)

以上,此時ALU計算得r1-0000竖般,計算結果輸出在aluout甚垦,但是ALU中加配了z參數(shù),所以還有一個輸出是z,當輸出為zero時艰亮,z=1闭翩。也就是r1=0,z=1迄埃,其他時候z=0.
所以當r1男杈!=0,下一條指令從86行讀取调俘,r1==0,下一條指令從87行讀取旺垒。


r1!=0
r1=00

第三句:進入86/87行彩库,前側數(shù)字位00000800 0000/00000a00 0000。對應下一條指令都是0000先蒋,說明要進行下一次輪回了骇钦。
00000800,控制pcload=1竞漾,即pc+1眯搭,進入下一條RAM中的語句。
00000a00业岁,控制pcsle=01鳞仙,pcload=1,pcsle選擇下一條語句為immed中存儲的行數(shù)笔时,第一局中我們將loop作為行數(shù)輸入進了immed中棍好,此時又進入到了loop所在行,完成了循環(huán)允耿。

以上就是jnez語句的解析借笙,現(xiàn)在我們了解了jnez語句在電路和ROM中的運行了,總結出以下幾點:

  • immed可以作為我們while循環(huán)的開頭存點
    當然较锡,如果要做老師說的第二層业稼,我們就要封裝到ROM中,所以簡單的loop:加jnez語句的應用是不足夠的蚂蕴。作為一個語句低散,所以我們不僅要會使用,我們要理解底層掂墓,然后才能做出jnez級別的語句谦纱。
  • z可以作為判斷我們while循環(huán)的跳出判斷
  • 通過z改變decisionROM中的下一位選擇,就可以通過線路中(reg或者ram)的數(shù)據(jù)來讓計算機判斷接下來進行的步驟君编。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末跨嘉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吃嘿,更是在濱河造成了極大的恐慌祠乃,老刑警劉巖梦重,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異亮瓷,居然都是意外死亡琴拧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門嘱支,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚓胸,“玉大人,你說我怎么就攤上這事除师∨嫔牛” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵汛聚,是天一觀的道長锹安。 經常有香客問我,道長倚舀,這世上最難降的妖魔是什么叹哭? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮痕貌,結果婚禮上风罩,老公的妹妹穿的比我還像新娘。我一直安慰自己芯侥,他們只是感情好泊交,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柱查,像睡著了一般廓俭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唉工,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天研乒,我揣著相機與錄音,去河邊找鬼淋硝。 笑死雹熬,一個胖子當著我的面吹牛,可吹牛的內容都是我干的谣膳。 我是一名探鬼主播竿报,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼继谚!你這毒婦竟也來了烈菌?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芽世,沒想到半個月后挚赊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了通铲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔑鹦,死狀恐怖,靈堂內的尸體忽然破棺而出箕宙,到底是詐尸還是另有隱情举反,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布扒吁,位于F島的核電站,受9級特大地震影響室囊,放射性物質發(fā)生泄漏雕崩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一融撞、第九天 我趴在偏房一處隱蔽的房頂上張望盼铁。 院中可真熱鬧,春花似錦尝偎、人聲如沸饶火。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肤寝。三九已至,卻和暖如春抖僵,著一層夾襖步出監(jiān)牢的瞬間鲤看,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工耍群, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留义桂,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓蹈垢,卻偏偏與公主長得像慷吊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子曹抬,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361