基于微程序控制器(主控存分開)_的簡單計算機(jī)設(shè)計與實(shí)現(xiàn)_第1頁
基于微程序控制器(主控存分開)_的簡單計算機(jī)設(shè)計與實(shí)現(xiàn)_第2頁
基于微程序控制器(主控存分開)_的簡單計算機(jī)設(shè)計與實(shí)現(xiàn)_第3頁
基于微程序控制器(主控存分開)_的簡單計算機(jī)設(shè)計與實(shí)現(xiàn)_第4頁
基于微程序控制器(主控存分開)_的簡單計算機(jī)設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、計算機(jī)組成原理課程設(shè)計說明書題目:基于微程序控制器(主控存分開)的簡單計算機(jī)設(shè)計與實(shí)現(xiàn)姓名:靳淑蕉學(xué)號:U200915337班級:信息安全0903同組者:潘瑩實(shí)驗(yàn)臺號:49完成日期:2012年1月19日指導(dǎo)老師:王曉蘭、周建國、秦磊華華中科技大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院一實(shí)驗(yàn)題目1二實(shí)驗(yàn)?zāi)康?三實(shí)驗(yàn)要求1四實(shí)驗(yàn)流程2五設(shè)計方案21.芯片選擇22.設(shè)計原理圖4數(shù)據(jù)通路4增加回存功能5增加機(jī)器指令部分6增加微指令部分83.設(shè)計微程序控點(diǎn)104.微指令設(shè)計12取指公操作13取數(shù)微指令14加法微指令14回存微指令14停機(jī)微指令155.指令周期流程圖15取指公操作:15取數(shù)微指令15加法運(yùn)算指令16乘2微指

2、令17回存微指令186.時序設(shè)計187.時序圖208.設(shè)計接線圖21六檢查過程23七布線調(diào)試時遇到的問題及解決辦法23八實(shí)現(xiàn)心得體會26九參考文獻(xiàn)27一 實(shí)驗(yàn)題目基于微程序控制方式的主控存分開的簡單計算機(jī)系統(tǒng)的設(shè)計與實(shí)現(xiàn)二 實(shí)驗(yàn)?zāi)康?. 加深對馮諾依曼體系結(jié)構(gòu)計算機(jī)組成及其各部分功能的理解,進(jìn)一步建立整機(jī)的概念。2. 加深對計算機(jī)數(shù)據(jù)通路的理解,加深對計算機(jī)指令系統(tǒng)、微指令的認(rèn)識,并通過時序控制,完整地設(shè)計一個簡單的計算機(jī)系統(tǒng)。3. 鍛煉學(xué)生初步的計算機(jī)系統(tǒng)分析和設(shè)計能力。4. 鍛煉學(xué)生分析、定位和排除故障的能力。三 實(shí)驗(yàn)要求1. 利用各單元實(shí)驗(yàn)和課堂上所學(xué)知識,選擇適當(dāng)?shù)男酒O(shè)計簡單的計算

3、機(jī)系統(tǒng)。2. 在完成數(shù)據(jù)通路設(shè)計并驗(yàn)證數(shù)據(jù)通路功能的基礎(chǔ)上增加指令和微指令控制的功能。3. 以自己所設(shè)計的計算機(jī)系統(tǒng)為硬件環(huán)境,設(shè)計出完成指定功能的各指令周期流程圖,并設(shè)計出相應(yīng)的微命令。 4. 以手動方式產(chǎn)生各指令執(zhí)行過程中所需要的微命令,控制指令的執(zhí)行。5. 設(shè)計控存,并將各指令的微程序存放在CM中,經(jīng)過適當(dāng)?shù)臅r序控制,通過微程序自動控制指令的執(zhí)行。四 實(shí)驗(yàn)流程在課程設(shè)計開始前,我們檢查了各個芯片是否能正常工作。按照實(shí)驗(yàn)指導(dǎo)書上面所給定的各個芯片的功能進(jìn)行測試,在確定所用的芯片都是好的之后再開始進(jìn)行接下來的工作。在整個課程設(shè)計的過程中,我們依照的是課程設(shè)計指導(dǎo)書上面的三步走方法:第一步:打

4、通數(shù)據(jù)通路,可向存儲器6116中存數(shù),向寄存器中打入,用手動實(shí)現(xiàn)算術(shù)或邏輯運(yùn)算。第二步:由PC尋址加載機(jī)器指令,完成指定算術(shù)或邏輯運(yùn)算;并將結(jié)果存入存儲器中。第三步:由機(jī)器指令的操作碼部分加載微指令,由機(jī)器指令的地址碼部分加載操作數(shù),同時,由它加載的各個微信號,進(jìn)行運(yùn)算完成一條機(jī)器指令的執(zhí)行。五 設(shè)計方案1. 芯片選擇在這次的課程設(shè)計中,我們選擇的芯片類型及數(shù)量如下:74LS2442片74LS3735片1812片74LS1611片74LS1571片74LS3951片61161片28162片關(guān)于各個芯片的選擇理由如下:74LS244芯片:該芯片具有“選通”和“高阻”兩種狀態(tài),適合用來作為數(shù)據(jù)輸入

5、或是流通時的閘門,所以我們采用了兩片244。一片用來向6116中存入機(jī)器指令,另外一片用來控制向6116中回存運(yùn)算的結(jié)果。73LS373芯片:該芯片又稱八D鎖存器,從它的功能表中也可以看出它具有“選通”和“鎖存在已建立的數(shù)據(jù)電平”兩種狀態(tài),所以該芯片適合用來作為寄存器。因此我們采用了5片373芯片,其中一片寄存181的運(yùn)算結(jié)果并輸出顯示,一片作為數(shù)據(jù)累加器AC,一片作為IR寄存機(jī)器指令,剩下兩片作為IR存放從控存中讀出的微指令。181芯片:181芯片是進(jìn)行算術(shù)或邏輯運(yùn)算必不可少的芯片,而運(yùn)算的數(shù)據(jù)是存放在6116中的,每個單元的數(shù)據(jù)有8位,因此我們需要兩片181并聯(lián)實(shí)現(xiàn)8位數(shù)據(jù)的運(yùn)算。74LS

6、161芯片:該芯片又稱同步四位計數(shù)器,從它的名字就可以看出它具有計數(shù)的功能,同時我們在實(shí)現(xiàn)中還利用到了它的清零功能。161芯片是用來作為PC使用的,通過它的4位輸出一共可以選擇到主存6116中的16個地址單元。74LS157芯片:該芯片又稱2選1數(shù)據(jù)選擇器,一共有兩個輸入數(shù)據(jù)流,每一個數(shù)據(jù)流是4位的,通過使能端S可以選通其中任意一個數(shù)據(jù)流,因此該芯片非常適合用來作為主存6116的地址選擇控制。當(dāng)需要機(jī)器指令的時候,157選擇PC送來的地址;當(dāng)需要數(shù)據(jù)的時候157選擇IR的低四位送來的數(shù)據(jù)地址。74LS395芯片:該芯片有兩個功能,“清零”和“置數(shù)”,我們選擇它作為PC。由于在每執(zhí)行完一條機(jī)器指

7、令之后都要再執(zhí)行取指公操作,因此我們選擇將取值公操作存放在控存的0號單元。取指階段將395清零,執(zhí)行取指公操作;執(zhí)行階段395置數(shù),執(zhí)行具體功能。6116芯片:該芯片的類型是RAM,我們選擇它作為主存。由于主存中需要根據(jù)不同的表達(dá)式反復(fù)寫入各種機(jī)器指令,而6116的數(shù)據(jù)存入要相對2816簡單一點(diǎn),因此主存采用的是6116芯片。2816芯片:該芯片的類型是ROM,因此使得它具有斷電之后還能保存數(shù)據(jù)的優(yōu)勢。選擇兩片2816作為控存,存放微指令。因?yàn)槲⒅噶钪恍枰谠O(shè)計好了之后,一次性的打入,以后都不需要再修改了,所以2816無疑是最好的選擇。此外還有若干邏輯門 2. 設(shè)計原理圖在原理圖的設(shè)計過程中,

8、我們是分步走的。首先是從最基本的數(shù)據(jù)通路開始,然后再一點(diǎn)點(diǎn)的像壘積木一樣的往上添加各種芯片逐步實(shí)現(xiàn)各個功能。現(xiàn)在將該過程做一個詳細(xì)的介紹如下:2.1 數(shù)據(jù)通路輸入端。因?yàn)樵谧鰷p法時是A-B,為了能正確進(jìn)行連續(xù)的減法運(yùn)算就必須將AC存放的數(shù)據(jù)從A端輸入,而將從主存中取出來的數(shù)據(jù)從B端輸入。最后設(shè)計的數(shù)據(jù)通路電路圖如下:圖1按照該電路連接之后,能夠手動實(shí)現(xiàn)各種基本的數(shù)據(jù)運(yùn)算。具體的步驟為:將數(shù)據(jù)事先存放到存儲器的某些單元中,再通過手動選擇地址選中數(shù)據(jù),手動調(diào)節(jié)運(yùn)算指令,手動操作各個芯片的使能端,從而能夠進(jìn)行連續(xù)的算術(shù)或邏輯運(yùn)算,并將結(jié)果顯示。2.2 增加回存功能在按照2.1中設(shè)計的電路連接之后,我

9、們發(fā)現(xiàn)所設(shè)計的數(shù)據(jù)通路沒有回存功能,因此我們需要在原來的電路上進(jìn)行一些改進(jìn)。我們認(rèn)為回存和開始的時候向主存6116中打入數(shù)據(jù)其實(shí)是同樣的原理,不過就是要能夠控制回存的時機(jī),也即需要回存的時候才將運(yùn)算結(jié)果回存到主存的某一個單元,其余時候不會影響到主存中存放的數(shù)據(jù)。因此我們?nèi)匀徊捎?44芯片,以A寄存器的結(jié)果為輸入,輸出連到6116的輸入/輸出端,然后通過手動選擇244的使能端來控制回存的時機(jī)。這樣設(shè)計的電路如下:圖22.3 增加機(jī)器指令部分在完成了數(shù)據(jù)通路,并多次測試確認(rèn)無誤的基礎(chǔ)上,我們開始在上面實(shí)現(xiàn)機(jī)器指令。此時的機(jī)器指令的意思就是能夠通過PC選址加載8位的機(jī)器指令到指令寄存器IR中。這8位

10、機(jī)器指令得到高4位是操作碼,由這4位操作碼直接連到181運(yùn)算器的S3-S0端,去控制各種運(yùn)算類型;8位機(jī)器指令的低4位則是地址碼,會回到主存6116中去選擇運(yùn)算需要的數(shù)據(jù)。按照這樣的需求,我們增加了一片373作為指令寄存器IR,增加了一片157用于在4位地址碼和PC輸出的地址中做二路選擇。這樣設(shè)計出來的電路如下:圖32.4 增加微指令部分從這里開始,就到了整個實(shí)驗(yàn)的關(guān)鍵部分了。所謂增加微指令也就是通過一系列的設(shè)計,把之前的那些需要我們手動控制的各個芯片的使能端全部都通過微指令的0、1狀態(tài)控制起來。個使能端,現(xiàn)在各個芯片,比如181的M端、Cn非端、各個373的使能G端都要用微指令來控制。我們統(tǒng)

11、計了一下,這個需要控制的點(diǎn)超過了8個,因此我們需要兩片373作為微指令寄存器IR,這樣就可以設(shè)計16位的微指令(實(shí)際上用不到16位)。微指令是存放在控存中的,對于控存我們選用的是2816。之所以選擇2816主要是看中了它是ROM類型的存儲器,能夠在斷電之后依然保存所存儲的數(shù)據(jù),而恰好微指令也只需要在設(shè)計完畢之后一次性的存入,以后一般這樣就可以免除了我們多次寫控存的工作。PC我們選用的是395芯片,主要是因?yàn)樵撔酒幸粋€清零功能。我們在每個機(jī)器指令執(zhí)行前我們需要先執(zhí)行取指公操作,然后再執(zhí)行具體功能的微指令。這樣395的清零功能就為我們提供了很大的便利,我們只需要將取指微指令放在控存的0號單元,然

12、后在每個指令周期的開頭將PC清零,就可以進(jìn)行取指操作了。綜上所述,我們在機(jī)器指令的基礎(chǔ)上添加了一片395.兩片2816和兩片373,最后設(shè)計出的電路如下所示:圖43. 設(shè)計微程序控點(diǎn)在設(shè)計微指令之前,我們先分析整個電路中的各個芯片的控點(diǎn),其中有些是需要控制的;有些是不需要變動的,始終接到一個電位就行了。首先是不需要控制的控點(diǎn):輸入244芯片:OEa非和0Eb非控點(diǎn)并接,然后接到一個開關(guān)上,只在寫機(jī)器指令的時候選0,寫完后一直為1。這個由手動控制,不需要微指令控制。主存6116芯片:CE非始終接0,OE非始終接0(我們選用WE非為0,OE非為0的那個寫功能)。多余的地址線接到一起,始終接0(或者

13、接1也可以)。PC 161芯片:MR非端接開關(guān),只在開機(jī)的時候手動置0,清零之后再置1。但是后來發(fā)現(xiàn)其實(shí)可以將start非接到MR非端實(shí)現(xiàn)自動清零,因?yàn)閟tart非端也是只在開機(jī)的時候?yàn)?,其余時候一直為1。157芯片:使能端E非始終為0。DR373、AC373、IR373、IR373:輸出控制始終接0??卮?816芯片:CE非始終接0,WE非始終接1,OE非始終接0。(因?yàn)榭卮媸冀K是讀狀態(tài))。多余的地址線接到一起,始終接0(或者接1也可以)。PC 395芯片:PE始終接1,OE非始終接0。接下來是需要控制的控點(diǎn):6116芯片:WE非157芯片:SPC 161芯片:CPPC 395芯片:MR非

14、、CP非IR373、IR373、DR373、AC373:使能G回存244芯片:OEa非、OEb非并接在一起控制根據(jù)那些需要控制的控點(diǎn),我們設(shè)計出來的微指令的每一個控點(diǎn)的狀態(tài)及其所表示的意義如下表所示:微指令控點(diǎn)意義表 取值控點(diǎn)01C14運(yùn)行停機(jī)C13清零置數(shù)C12-C9181的S3-S0控制端C8181有進(jìn)位181無進(jìn)位C7算術(shù)運(yùn)算邏輯運(yùn)算C6IR不變IR置數(shù)C5DR不變DR置數(shù)C4AC不變AC置數(shù)C3回存244無效回存244有效C2主存寫主存讀C1157地址選PC157地址選地址碼C0PC不變PC加1現(xiàn)在對這15個微指令控點(diǎn)做一一的解釋如下:C14:該位直接連到時序部分的STOP端口,平時該

15、位一直為0,只有當(dāng)最后需要停機(jī)時才將該位置為1。通過該位可以實(shí)現(xiàn)自動停機(jī)。C13:該位會連到作為PC的395的清零端MR非和CP非,配合時序來控制PC的置數(shù)和清零。通過將該位置0,來使得PC清零,通過將該位置1,來使得PC置數(shù)。通過該位,可以讓PC在恰當(dāng)?shù)臅r候置數(shù)取到相應(yīng)的微指令,在恰當(dāng)?shù)臅r候又可以清零執(zhí)行取指公操作。C12-C9:這四個控制位會直接連到181的S3-S0四個控制端口,通過這四個控制位的0/1狀態(tài)來進(jìn)行不同的運(yùn)算。C8:該位會直接連到低位181的低位進(jìn)位端,然后低位181的向高位的進(jìn)位端再連到高位181的低位進(jìn)位端。通過選擇該位為1表示沒有進(jìn)位,而通過選擇該位為0表示有進(jìn)位。該

16、位的設(shè)置主要是為了實(shí)現(xiàn)減法運(yùn)算,因?yàn)?81只有A-B-1的運(yùn)算,為了正確的實(shí)現(xiàn)減法,就用一位進(jìn)位來抵消。該位平時一直置1,只有減法運(yùn)算的時候才置為0。C7:該位直接連到181芯片的M端,這樣可以控制進(jìn)行的是算術(shù)運(yùn)算還是邏輯運(yùn)算。C6:該位是控制作為IR的373芯片的選通和保持狀態(tài)的,當(dāng)該位為1時IR選通,存放在主存中的機(jī)器指令會送到IR中去;當(dāng)該位為0時IR會保持當(dāng)前的輸出不變,也就相當(dāng)于此事的輸入端無效。之所以要設(shè)置該位是因?yàn)閺闹鞔嬷凶x到的數(shù)既有機(jī)器指令又有運(yùn)算數(shù)據(jù),因此從主存輸出的數(shù)據(jù)不是每一次都可以讀到IR中去的,因此需要控制IR何時有效。C5:該位是控制作為DR的373芯片的,DR是存

17、放181的運(yùn)算結(jié)果的,當(dāng)該位為0時,DR處于不選通狀態(tài),而只有當(dāng)該位置1時DR才選通,181的運(yùn)算結(jié)果才能存放到DR中去。C4:該位是控制作為AC的373芯片的,AC是累加器,用來存放上一次運(yùn)算為止的運(yùn)算結(jié)果,通過AC實(shí)現(xiàn)連續(xù)運(yùn)算的功能。C3:該位控制作為回存的244芯片。回存功能只有在最后運(yùn)算全部完畢的時候,才將最后的運(yùn)算結(jié)果送回到主存中去,而其余時候是不會向主存輸入數(shù)據(jù)的。因此通過選擇該位為0,則將244選通,此時可以回存數(shù)據(jù);通過選擇該位為1,則將244置為高阻狀態(tài),即沒有輸出。C2:該位直接連到主存6116芯片的WE非端。當(dāng)該位為1時主存讀數(shù)據(jù),該位為0時主存寫入數(shù)據(jù)。該位的設(shè)置主要是

18、為了配合完成回存功能,一般情況下主存都是處于讀數(shù)據(jù)狀態(tài),只有當(dāng)回存時主存才會寫入數(shù)據(jù)。C1:該位直接連到157芯片的輸入選擇S端,該位為1時選擇的是I1端口的輸入有效,也即IR中存放的機(jī)器指令的低4位地址碼有效;該位為0時選擇的是I0端口的輸入有效,也即PC的地址有效。之所以要設(shè)置該位是因?yàn)?,在主存中存放的有兩種數(shù)據(jù),一種是機(jī)器指令,它的地址是根據(jù)PC來選擇的;另外一種是進(jìn)行運(yùn)算所需的數(shù)據(jù),它的地址是根據(jù)機(jī)器指令的地址碼部分來選擇的。通過該位即可控制主存中各種數(shù)據(jù)的正確取得。4. 微指令設(shè)計根據(jù)上面設(shè)計出來的微指令的控點(diǎn),我們開始設(shè)計具體的微指令。先將每一條微指令列舉如下:微指令C15C14C

19、13C12C11C10C9C8C7C6C5C4C3C2C1C0空停機(jī)PCS3S2S1S0Cn非MIRDRAC回存主存157PC取指0010000101001101取數(shù)0001010110111110加0001001100111110與非0000100110111110減0000110000111110乘20001100100111110異或0000110110111110或非0000001110111110非0000000110111110與0001011110111110回存0000000100110010停機(jī)0100000100001100現(xiàn)在對上述微指令的設(shè)計設(shè)計過程做一一的介紹如下:(

20、其中各種算術(shù)/邏輯運(yùn)算指令就選取加法指令為代表)4.1 取指公操作取指公操作階段,顯然系統(tǒng)還在運(yùn)行,故C14位設(shè)為0。此時PC應(yīng)該置數(shù),置數(shù)的內(nèi)容為IR中存放的機(jī)器指令的高4位操作碼,然后才能根據(jù)PC所置的數(shù)到控存中去取對應(yīng)的微指令,故C13位置1。取指階段不涉及到運(yùn)算器的功能,故C12-C9、C8、C7的取值任意,我們設(shè)為0000、1、0。指令寄存器此時應(yīng)該選通,因?yàn)橐x取機(jī)器指令進(jìn)來,故C6位置1。同樣的此時沒有涉及到運(yùn)算功能,故DR、AC應(yīng)該保持當(dāng)前的輸出不變,C5和C4設(shè)為11。不涉及到回存,回存244設(shè)為高阻,內(nèi)存為讀狀態(tài),故C3和C2設(shè)為11。此時157應(yīng)該選擇PC的輸入,根據(jù)PC

21、的輸入選取機(jī)器指令,故C1位置0。取值階段的最后PC的值要自動加一,以便下一次取指能取到下一條機(jī)器指令,故C0位置1。4.2 取數(shù)微指令所謂取數(shù)微指令,也就是進(jìn)行了一次邏輯運(yùn)算“F=B”。此時不用停機(jī),C14置0。PC需要在取數(shù)指令執(zhí)行的最后清零,以便后面執(zhí)行取值公操作,故C13置0。根據(jù)F=B的運(yùn)算,相應(yīng)的置C12-C9為1010。進(jìn)位端C8任意,我們設(shè)為1。運(yùn)算類型為邏輯運(yùn)算,C7置為1。機(jī)器指令已經(jīng)在取指階段取到,此時IR無效,C6置0。運(yùn)算的結(jié)果要存放到DR和AC中,故DR、AC都要選通,C5和C4置為11。此時不涉及到回存,故回存244高阻,主存為讀,C3和C2設(shè)為11。157應(yīng)該選

22、擇IR輸入的地址碼,到內(nèi)存中去取運(yùn)算需要的數(shù)據(jù),故C1設(shè)為1。沒有取機(jī)器指令,PC的值不變,C0為0。4.3 加法微指令加法指令的設(shè)計主要是在運(yùn)算器部分。不用停機(jī),C14為0。P需要在加法指令執(zhí)行的最后清零,以便后面執(zhí)行取指公操作,故C13為0。根據(jù)加法運(yùn)算,設(shè)置C12-C9為1001;無進(jìn)位,C8為1;算術(shù)運(yùn)算,C7為0。IR保持當(dāng)前輸出不變,C6為0。DR、AC都要選通,故C5和C4設(shè)為11。不涉及到回存,主存處于讀狀態(tài),故C3和C2設(shè)為11。157選擇IR輸入的地址碼,到內(nèi)存中去取數(shù),故C1設(shè)為1。沒有取新的機(jī)器指令,PC的值不變,故C0為0。4.4 回存微指令回存指令設(shè)計的重點(diǎn)在于回存

23、244芯片和主存的狀態(tài)。系統(tǒng)仍在運(yùn)行,停機(jī)位C14為0?;卮嬷噶畹淖詈笮枰獙C清零,以便后面執(zhí)行取指公操作,故C13為0。回存不涉及到運(yùn)算功能,故C12-C9、C8、C7的值任意,我們設(shè)為0000、1、0。IR保持當(dāng)前輸出不變,C6為0。DR、AC、回存的244芯片都應(yīng)該選通,故C5、C4、C3分別為1、1、0。主存應(yīng)該為寫入狀態(tài),故C2為0?;卮娴牡刂酚苫卮鏅C(jī)器指令的低4位地址碼給出,控制157的C1為1。PC不變,C0為0。4.5 停機(jī)微指令停機(jī)微指令的設(shè)計重點(diǎn)在于停機(jī)位C14,只要在這時才會被設(shè)為1。PC會在最后清零,故C13為0。不涉及到運(yùn)算,同樣C12-C9、C8、C7的取值任意,

24、我們設(shè)為默認(rèn)值0000、1、0。此時IR、DR、AC、回存244、主存、157芯片、PC都不再有效,因此接下來的C6-C0我們設(shè)為0001100。5. 指令周期流程圖每一條機(jī)器指令的執(zhí)行都分為兩個階段:取指階段、執(zhí)行階段。每一條微指令的執(zhí)行流程圖如下所示:5.1 取指公操作:所以設(shè)計出來的取指微指令為0010 0001 0100 11015.2 取數(shù)微指令所以設(shè)計出來的取數(shù)微指令為0001 0101 1011 11105.3 加法運(yùn)算指令(其余雙目算術(shù)/邏輯運(yùn)算指令同此)所以設(shè)計出來的加法微指令為0001 0011 0011 1110同理:減法微指令為0000 1100 0011 1110與非

25、微指令為0000 1001 1011 1110異或微指令為0000 1101 1011 1110或非微指令為0000 0011 1011 1110與微指令為0001 0111 1011 11105.4 乘2微指令(其余單目算術(shù)/邏輯運(yùn)算指令同此)所以設(shè)計出來的乘2微指令為0001 1001 0011 1110同理:非微指令為0000 0001 1011 11105.5 回存微指令所以設(shè)計出來的回存微指令為0000 0001 0011 00106. 時序設(shè)計在設(shè)計了微指令各個控制位的0/1狀態(tài)之后還需要配合時序來完成整個的系統(tǒng)的自動運(yùn)行。時序設(shè)計的基礎(chǔ)是手動操作一定要熟練掌握,對于先控制哪個芯片

26、,后控制哪個芯片自己心中要做到非常的熟悉。接下就是將這些有先后次序的人工作業(yè)轉(zhuǎn)換為各個T時間內(nèi)的作業(yè)。開機(jī)前,手動將PC、PC清零。開機(jī)時,控存取到0號單元存放的取指微指令,然后接下來不斷取到后面的指令去執(zhí)行,直到停機(jī)指令。現(xiàn)在對于各個芯片的控制端的時序設(shè)計解釋如下:PC 395芯片:PC在每條指令執(zhí)行完畢后,也即下一條指令執(zhí)行的開始清零,執(zhí)行取值公操作,故清零端MR非=T0·C13。取指微指令發(fā)出之后,PC就應(yīng)該置數(shù),故CP非=T1·C13。IR 373芯片:IR會在兩個時候置數(shù),一個是PC清零時取到取指微指令,另外一個是PC置數(shù)后取到具體的執(zhí)行的微指令。由于T0時刻PC

27、清零,T1時刻置數(shù),故IR的使能G端=T0·C13+T2·C0??卮?816:控存始終處于讀狀態(tài),WE非置1,OE非置0,CE非置0。IR 373芯片:IR用來存放從主存中讀出的機(jī)器指令,只有在取指微指令發(fā)出之后IR才能選通。由于PC在T0時刻清零,故IR在T1時刻選通,使能G端=T1·C6。157芯片:157芯片負(fù)責(zé)從PC和IR兩個輸入端選擇地址,不需要時序控制合適有效,輸入選擇S直接接IR的輸出控制位。181芯片:181芯片的使能端有S3-S0、Cn非、M,這六個使能端都不需要用時序來控制,直接從IR的輸出端連過來。DR 373芯片:DR會在181運(yùn)算完畢后選

28、通,使得運(yùn)算結(jié)果存放到DR中去。T2時刻控存的微指令才到達(dá)IR,故我們讓DR在T3時刻選通,其使能G端=T3·C5。AC 373芯片:在數(shù)據(jù)存放到DR之后,AC才能選通,數(shù)據(jù)從DR到AC。DR在T3時刻存放數(shù)據(jù),故AC在T4時刻選通,其使能G端=T4·C4。主存 6116芯片:主存平時一直為讀狀態(tài),只有在回存時才處于寫入狀態(tài)。因此其WE非端=T4非·C2?;卮?44芯片:回存功能是在最后將運(yùn)算的結(jié)果寫入到主存中,由于在T3時刻運(yùn)算結(jié)果才寄存到DR中,因此回存功能放在T4時刻實(shí)現(xiàn)。其OEa非/OEb非=T4非·C3PC 161芯片:PC在指令執(zhí)行過程的最后

29、加1,故放在T4時刻進(jìn)行,CP=T4·C0。7. 時序圖我們設(shè)計的每條機(jī)器指令的執(zhí)行包含兩個階段,第一個是取指階段,第二個是執(zhí)行階段。如下圖所示:指令在各個T時間內(nèi)的操作如下表所示:指令在各個T的操作表指令T0T1T2T3T4取指PC清零CM->IRMM->IRIR.op->PCCM->IRNULLPC+1取數(shù)NULLMM->IRIR.op->PCCM->IRMM、AC->181181->DRDR->AC加NULLMM->IRIR.op->PCCM->IRMM、AC->181181->DRDR-

30、>AC與非NULLMM->IRIR.op->PCCM->IRMM、AC->181181->DRDR->AC減NULLMM->IRIR.op->PCCM->IRMM、AC->181181->DRDR->AC乘2NILLMM->IRIR.op->PCCM->IRAC->181181->DRDR->AC異或NULLMM->IRIR.op->PCCM->IRMM、AC->181181->DRDR->AC或非NULLMM->IRIR.op->P

31、CCM->IRMM、AC->181181->DRDR->AC非NULLMM->IRIR.op->PCCM->IRAC->181181->DRDR->AC與NULLMM->IRIR.op->PCCM->IRMM、AC->181181->DRDR->AC回存NULLMM->IRIR.op->PCCM->IRNULL回存244打開主存寫入 8. 設(shè)計接線圖根據(jù)設(shè)計出的電路圖:圖4我們設(shè)計最后的接線圖如下:圖5六 檢查過程在檢查時老師給我們的表達(dá)式是:(3 Å 4)或非8

32、5;2+7取非內(nèi)存存放的內(nèi)容為:地址內(nèi)容解釋000010110取3101100111異或4201111000或非8301010000乘2400101001加7510000000取非60000001137000001004800001000890000011171010110000停機(jī)按照上述內(nèi)容寫好主存之后,將PC、PC清零,按下START的脈沖,開始運(yùn)行最后結(jié)果正確。七 布線調(diào)試時遇到的問題及解決辦法在整個課程設(shè)計的過程中,我們碰到了各種各樣的問題。這些問題有一些確實(shí)很麻煩,但是也有一些問題在現(xiàn)在看來覺得非常的低級但是當(dāng)時也困擾了我們很久。不管如何,這些問題在每一個同學(xué)進(jìn)行課程設(shè)計的過程中都

33、或多或少會碰到一些,現(xiàn)在我將這些問題以及它們的解決辦法一一敘述如下,希望能對以后進(jìn)行組原課設(shè)的同學(xué)一點(diǎn)參考的價值:1. VCC1和VCC2沒有的接地端沒有短接。問題的解決過程:在課設(shè)第一天我們的工作是檢查芯片。由于對各種設(shè)備還不太熟悉,準(zhǔn)備工作做得不充分,導(dǎo)致VCC1和VCC2的接地端沒有短接到一起,后來檢查時出現(xiàn)了一些非常奇怪的現(xiàn)象。后來我們跑去找老師,說我們的芯片壞了,老師一看就發(fā)現(xiàn)了問題,并且要我們看指導(dǎo)書的第4面,我們這才知道原來是因?yàn)槲覀兊臏?zhǔn)備工作沒有做好,頓時覺得非常不好意思。這個錯誤都要?dú)w結(jié)于我們沒有好好閱讀實(shí)驗(yàn)臺的使用說明。2. 244輸入控制沒有高阻,導(dǎo)致其和6116輸出沖突

34、。問題的解決過程:這個問題是我們在測試6116芯片時發(fā)現(xiàn)的,我們當(dāng)時是把0號單元存0,1號單元存1,依次類推。全部存好后我們開始回過頭來讀,看數(shù)據(jù)有沒有存放正確,但是卻發(fā)現(xiàn)結(jié)果很不對,有些燈也是花的。現(xiàn)在要我檢查,我當(dāng)然很清楚這是由于244的輸出沒有高阻導(dǎo)致的沖突,但是當(dāng)時我完全沒有意識到這個問題,后來也是老師幫我么看了后,就發(fā)現(xiàn)了244的問題。3. 如何測試數(shù)據(jù)通路的正確性?問題的解決過程:數(shù)據(jù)通路連接好后,我們開始測試數(shù)據(jù)通路是否連接正確,我記得這個是在實(shí)驗(yàn)第一天的晚上進(jìn)行的,當(dāng)時我們對于各種芯片的操作非常的不熟悉,對于整個數(shù)據(jù)通路的工作流程也不是很清楚。所以當(dāng)我們照著指導(dǎo)書實(shí)驗(yàn)五的參考電

35、路一連線完畢后,一下子不知道要如何操作。剛開始我們測試最簡單的F=A+B的運(yùn)算,但是結(jié)果卻總是不正確,后來我們一直糾結(jié)到晚上也沒弄出個結(jié)果。晚上回到寢室之后,我仔細(xì)得回想覺得我們的電路連接的絕對不會用問題,因?yàn)槲颐看芜x通DR,輸出的結(jié)果都會變化,只是結(jié)果不對,問題應(yīng)該是出現(xiàn)在我們測試的方法上面了,現(xiàn)在看來確實(shí)是這樣的。當(dāng)時有DR和AC的使能端需要我們控制,DR先選通然后立即鎖住,AC后選通同樣也要立即鎖住。但是當(dāng)時我們對于這些使能端可以說不知道如何操作,打開了之后有時候鎖住了有時候又忘了鎖,導(dǎo)致結(jié)果十分不穩(wěn)定。后來我們找出了問題,并且知道了如何去操控這些使能端,以及它們的先后次序。4. 壞開關(guān)

36、導(dǎo)致結(jié)果異常。問題的解決過程:在連接好數(shù)據(jù)通路后,測試181的減法運(yùn)算的過程中,我們讓S3-S0為0110,Cn非為0,M為0,A為1111,B為0001,運(yùn)算的正確結(jié)果應(yīng)該是1110但是我們得到的結(jié)果卻是0110,由于開始時對于如何檢查錯誤還沒有經(jīng)驗(yàn),我一下子被卡在這里,不知道如何去檢查。后來找來老師,聽完我們描述的問題之后,只見老師拿著一根導(dǎo)線接到了一個燈,然后導(dǎo)線的另外一端對著各個孔一個個的檢查,并且教我們自己辨別這些燈的電位高低,最終檢查發(fā)現(xiàn)原來時候一個輸入的開關(guān)壞了。之前我們只檢查了芯片,還沒有檢查開關(guān),所以接下來我們又檢查了所有的開關(guān)發(fā)現(xiàn)9、14號開關(guān)都是壞的。檢查完了我們的問題之

37、后,老師還教我們說要學(xué)會他的檢查方法,首先自己要對每個點(diǎn)的電位十分清楚,然后再拿著一根導(dǎo)線去一個一個孔的去檢查、排錯,逐漸將問題的范圍縮小,最終發(fā)現(xiàn)問題。這個方法對我后來的查錯很有幫助,我也慢慢的學(xué)會了這種查錯技巧。5. 161芯片的1、7、9、10引腳沒有接高。問題的解決過程:后來我們在手動測試回存功能的時候,給了PC脈沖,但是發(fā)現(xiàn)主存的輸出沒有變化,因此我們懷疑是161芯片給的地址不對,用逐個孔檢查的方法一一檢查之后發(fā)現(xiàn)確實(shí)問題出在161芯片,但是我們所接的線都會正確的,這是我們突然發(fā)現(xiàn)161芯片的1、7、9、10孔是空的,沒有接任何東西,回過頭去翻書才發(fā)現(xiàn)原來老師講過161芯片的1、7、

38、9、10引腳要接高,果然我們這樣做了之后之前的問題沒有了。6. 395芯片OE非沒有接低。問題的解決過程:我們在實(shí)現(xiàn)微指令階段加了一塊395芯片作為PC,在檢查芯片的時候發(fā)現(xiàn)給了脈沖但是395不能置數(shù),我們當(dāng)時只注意到了MR非、CP非、PE三個使能端,沒有注意到OE非使能端的作用,以為這個使能端不用管。所以我們很確定是芯片壞了,后來換了一個新芯片之后問題依然存在,所以我們?nèi)ピ儐柪蠋?,老師來后檢查了一下,看我OE非原來沒有接低。照著老師說的去做了之后,395芯片工作正常了。7. 2816不能寫入數(shù)據(jù)。問題的解決過程:我們在編寫完微指令之后,準(zhǔn)備將微指令寫入控存CM,控存我們選用的是2816,因?yàn)?/p>

39、它斷電之后仍然可以保存數(shù)據(jù)。經(jīng)過詢問同學(xué)我們得知2816的使用方法和6116一樣,所以我們就開始放心的去寫2816,可是寫了再回過頭來讀,發(fā)現(xiàn)每個單元都沒有寫進(jìn)去,還是默認(rèn)的全1狀態(tài)。后來我又去問一個已經(jīng)寫好了控存的同學(xué),他告訴我一個經(jīng)驗(yàn):2816的WE非、OE非在寫入數(shù)據(jù)的時候打成低、高,然后再把兩個都打成高、高,再讀才能寫入數(shù)據(jù)。我照著他的指點(diǎn)去寫控存,果然數(shù)據(jù)都寫進(jìn)去了,看來這2816在寫數(shù)據(jù)時還有這么一點(diǎn)和6116不相同的地方,如果不是那位同學(xué)指點(diǎn)我恐怕弄一天也弄不好了。8. 回存功能我們在數(shù)據(jù)通路階段設(shè)計的回存功能能夠正確實(shí)現(xiàn),但是最后在微指令階段加入回存不能實(shí)現(xiàn)功能。由于時間問題,我們最后沒有實(shí)現(xiàn)自

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論