国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì)

這篇具有很好參考價(jià)值的文章主要介紹了計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

基于proteus的小型CPU的設(shè)計(jì)

摘要

本文詳細(xì)介紹了該小型CPU的設(shè)計(jì)模板及預(yù)估實(shí)現(xiàn)的功能,然后對(duì)模塊的原理進(jìn)行詳實(shí)的概述。之后對(duì)項(xiàng)目設(shè)計(jì)進(jìn)行了分析,從原理圖和電路設(shè)計(jì)圖方面進(jìn)行了完整的呈現(xiàn)。在介紹完基本的設(shè)計(jì)框架后,本文對(duì)項(xiàng)目中的每個(gè)模塊包括ALU、CM、MM等關(guān)鍵模塊的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了細(xì)致的分析,還有對(duì)測(cè)試程序的編寫(xiě)以及運(yùn)算器溢出(CF)等一系列標(biāo)志字的設(shè)計(jì)。在功能分析部分,本文主要基于編寫(xiě)好的機(jī)器程序,給出ROM中燒寫(xiě)的機(jī)器程序以及運(yùn)行時(shí)關(guān)鍵位置的截圖以表明CPU實(shí)現(xiàn)的正確性。同時(shí)本文也分享了筆者的經(jīng)驗(yàn)教訓(xùn),包括實(shí)驗(yàn)中出現(xiàn)的一些問(wèn)題及解決;還分享了在項(xiàng)目設(shè)計(jì)過(guò)程中得到的一些思考和對(duì)于過(guò)程的反思。在本文的結(jié)尾,筆者對(duì)該項(xiàng)目做了總結(jié),留下了寄語(yǔ)。

關(guān)鍵詞proteusCPU、機(jī)器指令微指令、存儲(chǔ)器、控制器

目錄

第一章?前言

第二章??項(xiàng)目準(zhǔn)備

2.1 目標(biāo)

2.2 項(xiàng)目功能分析

2.3 項(xiàng)目元器件

2.4 部分模塊原理

第三章?項(xiàng)目設(shè)計(jì)

3.1項(xiàng)目設(shè)計(jì)內(nèi)容

3.1.1?機(jī)器指令設(shè)計(jì)

3.1.2指令尋址方式設(shè)計(jì)

3.1.3操作數(shù)尋址方式設(shè)計(jì)

3.1.4?微指令設(shè)計(jì)

3.2指令流程圖

3.3 電路設(shè)計(jì)

3.3.1總體結(jié)構(gòu)圖

3.3.2 搭建的電路圖

? ? 第四章:項(xiàng)目實(shí)現(xiàn)

4.1.微指令控制存儲(chǔ)器CM的實(shí)現(xiàn)

4.2運(yùn)算器模塊的實(shí)現(xiàn)

4.3存儲(chǔ)器部分(MM)的實(shí)現(xiàn)

4.4?測(cè)試程序的編寫(xiě)以及運(yùn)算器溢出(CF)等一系列標(biāo)志字的設(shè)計(jì)

第五章?功能測(cè)試分析

5.1測(cè)試test3程序

5.2?測(cè)試test2程序

5.3?測(cè)試溢出情況

5.4?測(cè)試NOT_NOTD程序

5.5?對(duì)Mulit_2程序進(jìn)行測(cè)試

第六章?項(xiàng)目總結(jié)

6.1項(xiàng)目設(shè)計(jì)中遇到的問(wèn)題及解決

6.2?項(xiàng)目設(shè)計(jì)的思考與過(guò)程總結(jié)

6.3?項(xiàng)目設(shè)計(jì)總結(jié)與心得

結(jié)語(yǔ)

參考文獻(xiàn)

附錄

附錄一:常見(jiàn)指令格式表

附錄二:控存中存儲(chǔ)的微指令集


正文


第一章?前言

計(jì)算機(jī)組成原理是計(jì)算機(jī)專業(yè)的核心專業(yè)基礎(chǔ)課,也是我們作為計(jì)算機(jī)專業(yè)的學(xué)生應(yīng)該要好好掌握的重要學(xué)科。通過(guò)計(jì)算機(jī)組成原理理論課和實(shí)驗(yàn)課的學(xué)習(xí),我們不僅了解到了計(jì)算機(jī)的組成以及和計(jì)算機(jī)體系結(jié)構(gòu)有關(guān)的很多理論知識(shí),還學(xué)會(huì)了運(yùn)用Proteus來(lái)進(jìn)行軟硬件的模擬和設(shè)計(jì)。

綜合系統(tǒng)設(shè)計(jì)屬于設(shè)計(jì)型實(shí)驗(yàn),不僅鍛煉簡(jiǎn)單計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)能力,也考驗(yàn)創(chuàng)新思維,而且通過(guò)進(jìn)行設(shè)計(jì)及實(shí)現(xiàn),進(jìn)一步提高分析和解決問(wèn)題的能力,對(duì)于計(jì)算機(jī)組成原理知識(shí)的學(xué)習(xí)應(yīng)用意義重大。

因此在學(xué)期的末尾,按照老師的要求,基于軟件proteus進(jìn)行設(shè)計(jì),以計(jì)算機(jī)組成原理理論課及實(shí)驗(yàn)課學(xué)習(xí)的一系列知識(shí)為基礎(chǔ),實(shí)現(xiàn)一個(gè)小型CPU作為課程設(shè)計(jì)來(lái)檢驗(yàn)這半學(xué)期實(shí)驗(yàn)課的學(xué)習(xí)成果。該小型CPU麻雀雖小五臟俱全,具有基本的CPU的功能,包括指令控制,操作控制,時(shí)間控制,數(shù)據(jù)加工,也實(shí)現(xiàn)了LOAD,JUMP,ADD等一系列指令,運(yùn)用微程序來(lái)對(duì)進(jìn)行程序控制。

第二章??項(xiàng)目準(zhǔn)備

2.1 目標(biāo)

基于所學(xué)的的機(jī)器指令集和微程序流程圖作為基礎(chǔ),proteus設(shè)計(jì)知識(shí)作為參考,實(shí)現(xiàn)一個(gè)小型CPU。具體設(shè)計(jì)功能如下:

(1)整機(jī)系統(tǒng)能支持自動(dòng)和單步運(yùn)行方式,能正確地執(zhí)行存放在主存中的程序的功能,對(duì)主要的數(shù)據(jù)流和控制流通過(guò)LED適時(shí)顯示信息。

(2)支持算術(shù)運(yùn)算,邏輯運(yùn)算,存儲(chǔ)器讀寫(xiě),寄存器間接數(shù)據(jù)傳送等幾類指令;

(3)支持基本的尋址方式。

(4)支持10條以上的指令;

(5)運(yùn)行給定機(jī)器指令集的一段程序,程序執(zhí)行功能正確。

2.2 項(xiàng)目功能分析

這是一個(gè)比較復(fù)雜的設(shè)計(jì)任務(wù),需要考慮到多個(gè)方面,包括硬件和軟件兩個(gè)層面。下面對(duì)每個(gè)功能進(jìn)行分析

(1)整機(jī)系統(tǒng)能支持自動(dòng)和單步運(yùn)行方式,能正確地執(zhí)行存放在主存中的程序的功能,對(duì)主要的數(shù)據(jù)流和控制流通過(guò)LED適時(shí)顯示信息。

這個(gè)功能可以通過(guò)設(shè)計(jì)包含CPU、主存、以及系統(tǒng)控制模塊的電路來(lái)實(shí)現(xiàn)。其中主存用于存儲(chǔ)機(jī)器指令和數(shù)據(jù),CPU負(fù)責(zé)處理指令并與主存交互,系統(tǒng)控制模塊則用于控制整個(gè)系統(tǒng)的運(yùn)行狀態(tài)(比如單步運(yùn)行還是自動(dòng)運(yùn)行)。

對(duì)于LED的顯示,可以將特定數(shù)據(jù)或控制信號(hào)與LED燈連接,當(dāng)這些信號(hào)改變時(shí),LED燈就會(huì)亮起來(lái)。例如,可以將CPU的寄存器值(如PC和IR)與LED燈連接,用于顯示當(dāng)前執(zhí)行的指令和指令地址等信息。

(2)支持算術(shù)運(yùn)算,邏輯運(yùn)算,存儲(chǔ)器讀寫(xiě),寄存器間接數(shù)據(jù)傳送等幾類指令;

這個(gè)功能需要實(shí)現(xiàn)多個(gè)指令,包括算術(shù)運(yùn)算指令(如加、減、乘、除等)、邏輯運(yùn)算指令(如與、或、非等)、存儲(chǔ)器讀寫(xiě)指令以及寄存器間接數(shù)據(jù)傳送指令等。可以通過(guò)類似于微指令設(shè)計(jì)的方式來(lái)實(shí)現(xiàn)這些指令,即將每個(gè)指令分解為多個(gè)基本操作(如寄存器讀取、加法運(yùn)算、寫(xiě)回結(jié)果等),由CPU的控制邏輯依次執(zhí)行這些基本操作。

(3)支持基本的尋址方式。

這個(gè)功能需要支持多種尋址方式,包括立即數(shù)尋址、直接尋址、間接尋址、相對(duì)尋址等。這些尋址方式可以在指令中用特定的編碼來(lái)表示,CPU的控制邏輯根據(jù)指令中的編碼來(lái)決定使用哪種尋址方式。

(4)支持10條以上的指令;

這個(gè)功能涉及到具體的指令設(shè)計(jì),需要設(shè)計(jì)不少于10條的指令集,覆蓋算術(shù)運(yùn)算、邏輯運(yùn)算、存儲(chǔ)器讀寫(xiě)和數(shù)據(jù)傳送等多個(gè)方面??梢詤⒖汲R?jiàn)的RISC指令集設(shè)計(jì)思路,保證指令集簡(jiǎn)潔清晰,并且能夠覆蓋核心的功能需求。

(5)可運(yùn)行給定機(jī)器指令集的一段程序,程序執(zhí)行功能正確。

這個(gè)功能需要實(shí)現(xiàn)指令的解析和執(zhí)行過(guò)程,確保能夠正確地解析出每一條指令,并按照指令的要求執(zhí)行相應(yīng)的操作。要保證程序的正確性,需要設(shè)計(jì)充分的測(cè)試用例來(lái)測(cè)試不同指令和數(shù)據(jù)的組合情況,以確保程序能夠正確地執(zhí)行。

總的來(lái)說(shuō),此次綜合系統(tǒng)設(shè)計(jì)需要綜合考慮多個(gè)方面,包括指令設(shè)計(jì)、硬件電路設(shè)計(jì)、控制邏輯設(shè)計(jì)等。

2.3 項(xiàng)目元器件

由于本實(shí)驗(yàn)為仿真實(shí)驗(yàn),元器件均為proteus中引用的仿真器件

7SEG-BCD、7SEG-BCD-GRN

74LS273、74LS112、74LS138、74LS139、74LS157、74LS160、74LS161、74LS163、74LS175、74LS181、74LS192、74LS194、74LS240、74LS244、74LS273、74LS373、74LS374

74LS00、74LS04、74LS08、74LS10、74LS11、74LS32、74LS73、74LS74

2764、4078、6116

BUTTON、DIPSWC_8、LAMP、LED-GREEN、LED-RED、LED-YELLOW

OR、RES、RESPACK-8、SW-SPDT、74ALS244

2.4 部分模塊原理

(1)ALU模塊

ALU是算術(shù)邏輯單元的縮寫(xiě),是CPU中的一個(gè)重要組成部分。它主要負(fù)責(zé)實(shí)現(xiàn)各種算術(shù)運(yùn)算和邏輯運(yùn)算,并將運(yùn)算的結(jié)果傳遞給寄存器或其他器件。

CPU中的ALU通常由一組處理器件組成,其中包括加法器、減法器、比較器、位移器等。通過(guò)這些處理器件,ALU能夠?qū)崿F(xiàn)各種算術(shù)和邏輯操作,比如加、減、乘、除、與、或、非、異或等。

ALU在CPU中起到了至關(guān)重要的作用。它是CPU能夠完成各種數(shù)據(jù)處理和運(yùn)算的核心部分,負(fù)責(zé)處理大量的數(shù)據(jù)和指令。當(dāng)CPU需要執(zhí)行某個(gè)指令時(shí),它會(huì)將指令送到控制器中進(jìn)行解碼,然后根據(jù)指令的類型將操作數(shù)送到ALU中進(jìn)行運(yùn)算,最終將運(yùn)算結(jié)果保存到寄存器或內(nèi)存中。

除此之外,ALU還負(fù)責(zé)實(shí)現(xiàn)一些控制邏輯,比如條件分支、跳轉(zhuǎn)等操作。這些操作也需要通過(guò)ALU來(lái)實(shí)現(xiàn),從而實(shí)現(xiàn)程序流程的控制。

總之,ALU是CPU中非常重要的一個(gè)部分,它能夠?qū)崿F(xiàn)各種算術(shù)和邏輯運(yùn)算,并且負(fù)責(zé)實(shí)現(xiàn)程序流程控制,是CPU能夠完成各種處理和運(yùn)算的基礎(chǔ)。

(2)微指令控制存儲(chǔ)器CM

微指令控制存儲(chǔ)器(Control Memory,簡(jiǎn)稱CM)是CPU中的一種存儲(chǔ)器,它主要用于保存微指令。微指令是CPU執(zhí)行指令時(shí)所需的一些基本操作,比如寄存器讀取、算術(shù)運(yùn)算、數(shù)據(jù)傳送等操作。這些微指令被存儲(chǔ)在CM中,并由CPU按照特定的順序進(jìn)行執(zhí)行,完成指令的執(zhí)行過(guò)程。

微指令控制存儲(chǔ)器在CPU中起到了非常重要的作用。它為CPU提供了一種可編程的控制方式,使得CPU能夠支持各種不同的指令和操作。通過(guò)編寫(xiě)不同的微指令序列,可以實(shí)現(xiàn)不同的操作和功能,從而使得CPU具有更高的靈活性和可擴(kuò)展性。

此外,微指令控制存儲(chǔ)器還能夠?qū)崿F(xiàn)流水線控制、異常處理等功能。通過(guò)合理地設(shè)計(jì)微指令序列,可以實(shí)現(xiàn)流水線控制,提高CPU的執(zhí)行效率;同時(shí),通過(guò)在微指令中加入異常處理代碼,可以及時(shí)響應(yīng)各種異常情況,保證CPU的正確性和穩(wěn)定性。

(3)存儲(chǔ)器部分(MM)

CPU中存儲(chǔ)器部分(Memory Management,簡(jiǎn)稱MM)是計(jì)算機(jī)系統(tǒng)中非常重要的一個(gè)組成部分,它主要負(fù)責(zé)管理計(jì)算機(jī)系統(tǒng)中的內(nèi)存資源。在計(jì)算機(jī)系統(tǒng)中,內(nèi)存是用于存儲(chǔ)數(shù)據(jù)和程序的一種硬件設(shè)備,而CPU需要通過(guò)MM來(lái)管理這些內(nèi)存資源,并且實(shí)現(xiàn)對(duì)內(nèi)存的訪問(wèn)和控制。

MM在CPU中扮演著多個(gè)重要角色,包括:

內(nèi)存分配:當(dāng)CPU需要將數(shù)據(jù)或程序加載到內(nèi)存中時(shí),MM會(huì)負(fù)責(zé)管理內(nèi)存的分配。在內(nèi)存資源有限的情況下,MM需要能夠高效地管理內(nèi)存,以盡可能地使用可用的內(nèi)存資源,從而提高計(jì)算機(jī)系統(tǒng)的性能和效率。

內(nèi)存保護(hù):在計(jì)算機(jī)系統(tǒng)中,不同的進(jìn)程可能同時(shí)運(yùn)行,這些進(jìn)程需要訪問(wèn)內(nèi)存中的數(shù)據(jù)和程序。為了保障每個(gè)進(jìn)程的安全性和穩(wěn)定性,MM需要能夠?qū)崿F(xiàn)對(duì)內(nèi)存資源的保護(hù),防止某個(gè)進(jìn)程意外地破壞其他進(jìn)程中的數(shù)據(jù)或程序。

虛擬內(nèi)存:為了提高計(jì)算機(jī)系統(tǒng)的性能和效率,MM還可以實(shí)現(xiàn)虛擬內(nèi)存的功能。虛擬內(nèi)存是一種將計(jì)算機(jī)硬盤(pán)上的空間作為內(nèi)存使用的技術(shù),可以將部分不常用的內(nèi)存數(shù)據(jù)或程序保存到硬盤(pán)上,并在需要時(shí)進(jìn)行加載。通過(guò)虛擬內(nèi)存技術(shù),MM可以提高計(jì)算機(jī)系統(tǒng)的內(nèi)存使用率,從而提高計(jì)算機(jī)的性能和效率。

綜上所述,CPU中存儲(chǔ)器部分(MM)是計(jì)算機(jī)系統(tǒng)中非常重要的組成部分,它主要負(fù)責(zé)管理計(jì)算機(jī)系統(tǒng)中的內(nèi)存資源,包括內(nèi)存分配、內(nèi)存保護(hù)、虛擬內(nèi)存和內(nèi)存回收等功能。MM可以提高計(jì)算機(jī)系統(tǒng)的性能和效率,從而對(duì)于整個(gè)計(jì)算機(jī)系統(tǒng)的運(yùn)行起到至關(guān)重要的作用。

第三章?項(xiàng)目設(shè)計(jì)

3.1項(xiàng)目設(shè)計(jì)內(nèi)容

3.1.1?機(jī)器指令設(shè)計(jì)

本次指令設(shè)計(jì)格式遵循常見(jiàn)指令格式設(shè)計(jì)原則,機(jī)器指令共占8位,其中高四位為操作碼OP,低四位為操作數(shù)地址ADDR,見(jiàn)以下描述:

7——4位?OP

3——0位 ?ADDR

3.1.2指令尋址方式設(shè)計(jì)

(1)順序?qū)ぶ罚焊鶕?jù)PC(74LS161)計(jì)數(shù)器自動(dòng)增1,順序讀取下一條指令;

(2)跳躍尋址:根據(jù)PC(74LS161)的PC-SET功能,依照跳躍指令內(nèi)容往計(jì)數(shù)器中預(yù)置打入數(shù)據(jù),從而跳轉(zhuǎn)到相應(yīng)地址。

3.1.3操作數(shù)尋址方式設(shè)計(jì)

(1)寄存器尋址:利用AC(74LS373)寄存器進(jìn)行尋址;

(2)直接尋址:根據(jù)指令中的ADDR所指向的地址得到主存相應(yīng)數(shù)據(jù);

(3)隱含尋址:利用AC(74LS373)寄存器,對(duì)于需要雙操作數(shù)的機(jī)器指令只提供一個(gè)操作數(shù),另一操作數(shù)隱含在AC中。

常見(jiàn)機(jī)器指令集見(jiàn)附錄一

3.1.4?微指令設(shè)計(jì)

微指令設(shè)計(jì)思想:此次設(shè)計(jì)選取12條指令,分別是取址公操作、store存儲(chǔ)指令、load導(dǎo)入指令、jump跳轉(zhuǎn)指令、加、減、與、或、非、地址非、異或等運(yùn)算指令,以及最后的停機(jī)指令。指令采用雙周期、自動(dòng)執(zhí)行。

微指令設(shè)計(jì)方案:根據(jù)具體的電路原理決定采取16個(gè)微程序控制點(diǎn),然后通過(guò)對(duì)各個(gè)控制點(diǎn)的值來(lái)實(shí)現(xiàn)對(duì)微指令的編碼(即各個(gè)控制點(diǎn)的值取0或1),不同的指令所對(duì)應(yīng)的各個(gè)控制點(diǎn)的編碼會(huì)有不同。

控存中存儲(chǔ)的微指令集見(jiàn)附錄二

需要注意的是,這個(gè)微指令集特殊的的一點(diǎn)就在于本身微程序設(shè)計(jì)簡(jiǎn)單,沒(méi)有設(shè)置下址字段,每條機(jī)器指令對(duì)應(yīng)的微程序在執(zhí)行周期的微程序里只有一條微指令來(lái)實(shí)現(xiàn)所有的操作。同時(shí),微程序在控存中的地址直接由對(duì)應(yīng)機(jī)器指令的OP碼來(lái)標(biāo)識(shí)。

我認(rèn)為這樣的設(shè)計(jì)有利有弊。優(yōu)點(diǎn)很顯然,就是簡(jiǎn)單,由于沒(méi)有下址字段自然也就沒(méi)有了微指令的地址轉(zhuǎn)移邏輯等等負(fù)責(zé)的電路邏輯需要實(shí)現(xiàn)。但另一方面,缺點(diǎn)也是明顯的,這種只有一條微指令的微程序,能實(shí)現(xiàn)的操作顯然是十分有限的。但是,綜合來(lái)說(shuō),這種設(shè)計(jì)雖然簡(jiǎn)單,但是同樣能夠體現(xiàn)微程序CPU的設(shè)計(jì)與實(shí)現(xiàn)原理。

3.2指令流程圖

?我們的實(shí)際實(shí)現(xiàn)中的指令流程:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-533949.html

當(dāng)然,以上的流程圖中出于簡(jiǎn)單的考慮,沒(méi)有標(biāo)注相關(guān)的控制信號(hào),對(duì)于微周期的時(shí)鐘控制也不在畫(huà)圖的考量中。

3.3 電路設(shè)計(jì)

3.3.1總體結(jié)構(gòu)圖

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

?運(yùn)算通路由181作運(yùn)算,373鎖存組合成的電路,其中包括了AC,DR1,DR2等設(shè)計(jì)。存儲(chǔ)通路由6116作主存,2816作控存的主控存分開(kāi)方式。同時(shí)為方便置數(shù),直接讓指令的數(shù)據(jù)部分與161的輸入相連。

3.3.2 搭建的電路圖

?計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

上圖中各個(gè)區(qū)域的劃分如標(biāo)注所示。其中CM為微指令控制存儲(chǔ)器,MM為主存,CLOCK UNIT為時(shí)鐘控制信號(hào)單元,CONTROL LOGIC為控制邏輯電路實(shí)現(xiàn)的集中區(qū)。TEST LAB為與本CPU主邏輯無(wú)直接聯(lián)系的測(cè)試電路,大部分已刪除,只留下了一小塊用于手動(dòng)測(cè)試ALU芯片工作邏輯的電路。

其中控制邏輯的表達(dá)式主要如下:

(以下用?& 表示與運(yùn)算,||表示或運(yùn)算,上劃線表示非運(yùn)算,以電路實(shí)際為準(zhǔn))

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

?限于篇幅,其他的具體實(shí)現(xiàn)不再贅述。

? ? 第四章:項(xiàng)目實(shí)現(xiàn)

4.1.微指令控制存儲(chǔ)器CM的實(shí)現(xiàn)

此部分主要是論述微指令控制存儲(chǔ)器CM設(shè)計(jì)的討論和實(shí)現(xiàn)。微指令控制存儲(chǔ)器用于存放實(shí)現(xiàn)全部指令系統(tǒng)的所有微程序,主要用到74LS273和2764兩種芯片。

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

圖4.1 控制存儲(chǔ)器

74LS273是一種帶清除功能的8D觸發(fā)器,1D~8D為數(shù)據(jù)輸入端,1Q~8Q為數(shù)據(jù)輸出端,正向脈沖觸發(fā),低電平清除

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

圖4.2 74LS273 引腳圖

2764 是一種存儲(chǔ)芯片,用于存儲(chǔ)數(shù)據(jù);A0到A12為13條地址信號(hào)輸入線,容量為8K, D0到D7為數(shù)據(jù)線,表示芯片的每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié);CE為輸入信號(hào),低電平有效;OE為輸出允許信號(hào),低電平有效;PGM為編程脈沖輸入端,當(dāng)對(duì)芯片編程時(shí),由此端加入編程脈沖信號(hào),讀取數(shù)據(jù)時(shí)PMG的值為1;Vpp是電源,正常工作時(shí)是+5V。

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

?計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

4.4??2764 真值表

4.2運(yùn)算器模塊的實(shí)現(xiàn)

此部分主要是論述運(yùn)算器模塊(ALU模塊)設(shè)計(jì)的討論和實(shí)現(xiàn)。

運(yùn)算器模塊(ALU模塊)數(shù)據(jù)通路如下圖所示:

?計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

?

在運(yùn)算器通路中,來(lái)自主存MM的數(shù)據(jù)首先打入上行UP緩沖器74LS244中,然后再打入鎖存器DR1(74LS373)中。AC累加器(74LS373)是運(yùn)算器中非常重要的一個(gè)器件,從指令系統(tǒng)可以知道,AC不僅負(fù)責(zé)提供很多運(yùn)算指令的一個(gè)操作數(shù),還將儲(chǔ)存運(yùn)算的結(jié)果。2塊74LS181級(jí)聯(lián)而成的8位加法器負(fù)責(zé)運(yùn)算,并將結(jié)果打入DR2(74LS373)中鎖存起來(lái),并最終打入AC。

在這個(gè)運(yùn)算通路中,之所以設(shè)計(jì)出UP和DOWN兩個(gè)部件,是為了區(qū)分從存儲(chǔ)器MM中讀數(shù)據(jù)或是存數(shù)據(jù)。但是由于某些原因,我們組的store指令最終并沒(méi)有實(shí)現(xiàn),所以DOWN部件并沒(méi)有發(fā)揮其作用,但是為了使運(yùn)算器通路更加完整,也還是將其保留了下來(lái)。

通過(guò)上面這個(gè)運(yùn)算器通路,可以完成2個(gè)8位的操作數(shù)(一個(gè)存在指令制定的主存存儲(chǔ)單元中,另一個(gè)存在AC中)的加、減、與、或、取反等功能。為了增強(qiáng)使用者的體驗(yàn)感,還特意設(shè)置了2個(gè)數(shù)碼管顯示AC累加器的數(shù)值。最終的電路圖如下所示:

?計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

?計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

4.3存儲(chǔ)器部分(MM)的實(shí)現(xiàn)

此部分主要是論述存儲(chǔ)器部分MM的設(shè)計(jì)的討論和功能實(shí)現(xiàn)。

這部分主要包括PC端和IR以及主存兩部分。PC——程序計(jì)數(shù)器負(fù)責(zé)對(duì)程序警示計(jì)數(shù),保證程序能夠連續(xù)執(zhí)行下去;IR——指令寄存器負(fù)責(zé)暫存當(dāng)前正在執(zhí)行的指令。主存由ROM組成。

由于設(shè)計(jì)的機(jī)器指令的格式為??7——4位?OP???3——0位 ?ADDR??,因此只需要四位ROM即可,為什么采用ROM而不用其他,原因有:我們用Proteus的話RAM不可燒錄程序,故必須組裝一個(gè)RAM+ROM作為內(nèi)存。而這樣的話,由于機(jī)器指令設(shè)計(jì)是4位的地址碼,如果再加一個(gè)RAM,ROM可用的空間就很少,對(duì)測(cè)試程序的條數(shù)限制比較大。故我們的選擇是使用一片ROM作為主存,依舊實(shí)現(xiàn)store指令相關(guān)的控制信號(hào),但是沒(méi)有RAM的情況下,寫(xiě)回信號(hào)是無(wú)效的,也就是說(shuō)store指令的執(zhí)行不會(huì)對(duì)內(nèi)存中的數(shù)據(jù)有實(shí)際的影響。至此主存設(shè)計(jì)完畢。

而對(duì)于PC和IR的話就是:程序計(jì)數(shù)器PC中裝入第一條指令地址,然后根據(jù)PC中的內(nèi)容從指存中讀取該條指令到IR之中,接著程序計(jì)數(shù)器加一,為下一條指令做準(zhǔn)備。如果遇到JMP指令時(shí),則在將PC加一操作改為將IR中指定的地址打入PC中,然后等待下一條指令執(zhí)行。電路圖如下

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

?

接下來(lái)分析存儲(chǔ)器的讀寫(xiě)過(guò)程及部分實(shí)現(xiàn)

構(gòu)思的存儲(chǔ)通路是由6116作主存,2816作控存的主控存分開(kāi)方式。此部分通路中,主要為一片6116做主存,其IO輸出數(shù)據(jù)通過(guò)一片373緩沖然后經(jīng)過(guò)一片157選擇高四位送給作為寄存器的395芯片,然后送入作為控存的2816芯片中,低四位作為數(shù)據(jù)地址傳回內(nèi)存,讀取操作數(shù)。

4.4?測(cè)試程序的編寫(xiě)以及運(yùn)算器溢出(CF)等一系列標(biāo)志字的設(shè)計(jì)

本實(shí)驗(yàn)設(shè)計(jì)的部分測(cè)試程序如下所示。

由于STORE指令不可用

1.JUMP to 0111:

之前:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

取出JUMP指令后:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

執(zhí)行:?

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

2.在跳轉(zhuǎn)后執(zhí)行LOAD 01H

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器??

?

5.3?測(cè)試溢出情況

cf_test程序:

1.ADD 01H:

進(jìn)行加法前:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

?

2.進(jìn)行加1后:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

?計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

?

5.4?測(cè)試NOT_NOTD程序

程序:

1.初始LOAD 0AH:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

?NOT 0AH:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

(結(jié)果為F5H)

  1. 每一個(gè)測(cè)試程序都是單獨(dú)的一個(gè)文件
    
    //test1.asm這是測(cè)試(1-2+2)&3
    ORG?0H
    ????DB?00010101?//LOAD?1(數(shù)存放在0101的地址中)
    ????DB?01000110?//ADD?2
    ????DB?01010111?//SUB?2
    ????DB?01101000?//AND?3
    ????DB?11001111?//END
    ????DB?00000001?//操作數(shù)1
    ????DB?00000010?//操作數(shù)2
    ????DB?00000010?//操作數(shù)2
    ????DB?00000011?//操作數(shù)3
    
    //test2.asm這是測(cè)試跳轉(zhuǎn)和load,store的程序
    ORG?0H
    ????DB?00010011?//LOAD?0011
    ????DB?00110111?//JUMP到0111
    ????DB?10101010?//0011中原本存的數(shù)
    ????DB?00000000?//0100中存的數(shù)
    ????DB?00000000?//0101中存的數(shù)
    
    ORG?7H
    ????DB?00010100?//LOAD?0100
    ????DB?11001111?//END
    
    //test3.asm這是測(cè)試程序?[(8+7)加8]?+?9異或6乘2與6減7
    ORG?0H
    ????DB?00000000?//開(kāi)始
    ????DB?00011010?//LOAD?8
    ????DB?01001011?//ADD?7
    ????DB?01001010?//ADD?8
    ????DB?01111100?//或?9
    ????DB?10101101?//異或?6
    ????DB?10111110?//乘?2
    ????DB?01101101?//與?6
    ????DB?01011011?//減?7
    ????DB?11001110?//END
    ????DB?00001000?//操作數(shù)?8
    ????DB?00000111?//操作數(shù)?7
    ????DB?00001001?//操作數(shù)?9
    ????DB?00000110?//操作數(shù)?6
    ????DB?00000010?//操作數(shù)?2
    下面是一個(gè)關(guān)于溢出測(cè)試的程序
    
    cf_test.asm
    
    ORG?0000H
    ????DB?00010011B;?LOAD?FFH
    ????DB?01000100B;?ADD?1
    ????DB?11001111B;?HLT
    ????DB?11111111B;?NUM?FFH
    ????DB?00000001B;?NUM?1
    END

    具體的測(cè)試文件如下所示

  2. 計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    測(cè)試程序主要測(cè)試的是CPU中的算術(shù)運(yùn)算和邏輯運(yùn)算,以及JUMP,LOAD還有溢出標(biāo)志位測(cè)試。我首先根據(jù)我們的測(cè)試程序的需要,將程序編寫(xiě)出來(lái),然后編譯生成HEX文件,再在測(cè)試時(shí)將HEX文件燒制進(jìn)所設(shè)計(jì)的MM里面去,這樣就可以對(duì)著程序來(lái)進(jìn)行測(cè)試了。

    此部分設(shè)計(jì)的內(nèi)容還有運(yùn)算器(ALU)部分的溢位等標(biāo)準(zhǔn)字,這個(gè)部分主要組成部分是一個(gè)74LS73,74LS73是一個(gè)帶清除功能的8D觸發(fā)器,正脈沖觸發(fā),低電平清除,當(dāng)所有位都為0時(shí),由一個(gè)或非門(mén)得出判斷ZF為1,等一個(gè)CLK信號(hào)來(lái)時(shí),打入ZF,同理得SF和CF。

    運(yùn)算器溢位等標(biāo)志字的相關(guān)電路設(shè)計(jì)如下圖所示。

  3. 計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    ?

    第五章?功能測(cè)試分析

    功能測(cè)試分析部分將主要基于編寫(xiě)好的機(jī)器程序(存放在工程文件的PROGRAM文件夾下),將會(huì)給出ROM中燒寫(xiě)的機(jī)器程序以及運(yùn)行時(shí)關(guān)鍵位置的截圖以表明CPU實(shí)現(xiàn)的正確性。

    5.1測(cè)試test3程序

    主要涉及運(yùn)算指令

    程序:

    ORG 0000H
    
    ????DB?00011010B ;LOAD 0FH
    
    ????DB?01001011B ;ADD 08H?17H
    
    ????DB?01001010B ;ADD 0FH?26H
    
    ????DB?01111100B ;or 09H?2FH
    
    ????DB?10101101B ;xor 06H?29H
    
    ????DB?01101101B ;and 06H?00H
    
    ????DB?01011011B ;sub 08H?F8H
    
    ????DB?11001110B ;END
    
    ????
    
    ORG 1010B
    
    ????DB?00001111B ;num 15
    
    ????DB?00001000B ;num 8
    
    ????DB?00001001B ;num 9
    
    ????DB?00000110B ;num 6
    
    EN

    1.指令:LOAD 0FH:

    ??運(yùn)行LOAD前

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    運(yùn)行LOAD后?

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

    2.ADD 08H:

    ?執(zhí)行ADD 08H后ALU顯示,結(jié)果寄存DR2

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

    結(jié)果打回AC中

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    ?3.ADD 0FH:

    ??執(zhí)行ADD 0FH后ALU顯示,結(jié)果寄存DR1

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    ?結(jié)果26H打回AC

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器??

  4. or 09H:
  5. 執(zhí)行指令or 09H

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

    ?結(jié)果打回AC

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器5.xor 06H:

  6. test3-9 指令xor 06

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    結(jié)果打回AC?

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    6.and 06H:

  7. 指令and 06H

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    ?

    ?結(jié)果打回AC

    ?

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

    7.指令sub 08H

    sub 08H:

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

    ?

    ?結(jié)果打回AC

    計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

    ?

    5.2?測(cè)試test2程序

    STORE_JUMP:

    ORG?0000H
    ?DB?00011100B;?LOAD?3
    ?DB?00101101B;?STORE?(useless)
    ?DB?00110111B;?JUMP?to?0111
    ?
    ORG?0111B
    ?DB?00011101B;?LOAD?1
    ?DB?11001111B;?HALT
    ?
    ORG?1100B
    ?DB?00000011B;?num?3
    ?DB?00000001B;?num?1
    END
  8. ORG?0000H
    ????DB?00010011B;?LOAD?FFH
    ????DB?01000100B;?ADD?1
    ????DB?11001111B;?HLT
    ????DB?11111111B;?NUM?FFH
    ????DB?00000001B;?NUM?1
    END
  9. ORG?0000H
    ????DB?00011010B?;LOAD?0AH
    ????DB?10010000B?;NOT?0AH???F5H
    ????DB?10001011B?;NOTD?08H?F7H
    ????DB?11001110B?;END
    ????
    ORG?1010B
    ????DB?00001010B?;num?0AH
    ????DB?00001000B?;num?08H
    END

NOTD 08H:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器?

(結(jié)果為F7H)?

5.5?對(duì)Mulit_2程序進(jìn)行測(cè)試

程序:

MULTI 2

乘2前為0AH:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

乘2:

計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)/計(jì)算機(jī)組成原理,proteus,計(jì)算機(jī)組成原理,CPU,綜合系統(tǒng)設(shè)計(jì),設(shè)計(jì)模式,存儲(chǔ)器

?(結(jié)果為14H)

第六章?項(xiàng)目總結(jié)

6.1項(xiàng)目設(shè)計(jì)中遇到的問(wèn)題及解決

(1)在做這個(gè)實(shí)驗(yàn)的過(guò)程中也出現(xiàn)過(guò)很多問(wèn)題,印象較深的是對(duì)于jump指令的執(zhí)行。由于我比較執(zhí)著于指令執(zhí)行的操作應(yīng)該保證在執(zhí)行期做,同時(shí)也認(rèn)為這種取巧的做法存在導(dǎo)致其他指令出錯(cuò)的可能,因而產(chǎn)生很多疑問(wèn)。而后,參考了查找的的指令集進(jìn)行分析后,發(fā)覺(jué)我的做法應(yīng)該會(huì)導(dǎo)致出錯(cuò),同時(shí)不是很節(jié)省器件,最后還是對(duì)此進(jìn)行了改進(jìn)。

(2)在存儲(chǔ)器和ALU的完整原型搭建了出來(lái)后,發(fā)現(xiàn)我們所使用的6116RAM在Proteus中是無(wú)法燒錄程序的,但是如果使用ROM則無(wú)法實(shí)現(xiàn)store指令,使用ROM+RAM的組合又會(huì)增加過(guò)多的復(fù)雜度而且會(huì)使有限的地址空間變得更加緊迫。最終考慮很久后后決定放棄store指令的實(shí)現(xiàn),直接以ROM作為主存使用。

(3)對(duì)于ALU運(yùn)算的檢查中,有一次在進(jìn)行運(yùn)算時(shí)明明所有狀態(tài)位經(jīng)過(guò)反復(fù)檢查都是正確的,而且拿另外獨(dú)立的181芯片手動(dòng)測(cè)試結(jié)果也是正確的,但是,對(duì)于181這種內(nèi)部沒(méi)有時(shí)序的芯片,同樣的輸入竟然會(huì)導(dǎo)致不一樣的輸出。后來(lái)修改了程序中幾條機(jī)器的次序,對(duì)于同樣的數(shù)據(jù)運(yùn)算竟然又正常了,感覺(jué)實(shí)在是難以理解,后來(lái)也不可復(fù)現(xiàn)。目前我也只能是懷疑Proteus本身存在的Bug或者是軟件破解存在的問(wèn)題,當(dāng)然也不排除是自己操作出了失誤。

6.2?項(xiàng)目設(shè)計(jì)的思考與過(guò)程總結(jié)

(1)微程序指令集上文已有展示,在前期書(shū)寫(xiě)時(shí)以為簡(jiǎn)單抄表即可,后來(lái)發(fā)現(xiàn)格式出錯(cuò),在進(jìn)行多次修改后正確完成。在總體線路完成后,進(jìn)行測(cè)試程序的測(cè)試。進(jìn)行測(cè)試的程序有test3.asm(測(cè)試LOAD、ADD、SUB、or、xor、and指令)、STORE_JUMP.asm(測(cè)試JUMP指令)、cf_test(測(cè)試溢出、符號(hào)變化、零三種運(yùn)算結(jié)果)、NOT_NOTD.asm(測(cè)試NOT、NOTD指令)、Mulit2(測(cè)試乘2指令)。依次燒入每個(gè)測(cè)試程序,并對(duì)其測(cè)試前后變化截圖(結(jié)果分析中的程序截圖),改正程序的一些小錯(cuò)誤及一些燒入程序生成二進(jìn)制文件的對(duì)應(yīng)錯(cuò)誤。

(2)在最開(kāi)始做此實(shí)驗(yàn)時(shí),由于對(duì)于計(jì)組一些知識(shí)并不是很熟悉,所以存在很多誤解,不過(guò)后來(lái)期末的復(fù)習(xí)階段倒是給了我一個(gè)糾正這些錯(cuò)誤認(rèn)知的機(jī)會(huì),對(duì)于課設(shè)中實(shí)際要完成的工作有了更加清晰的認(rèn)知,也意識(shí)到計(jì)組的知識(shí)挺有必要通過(guò)這樣的大作業(yè)來(lái)進(jìn)行實(shí)踐,才能掌握得比較牢固。在Proteus中進(jìn)行實(shí)際的電路排布時(shí),由于我對(duì)于Proteus的使用并不熟悉,所以我花了很多時(shí)間去熟悉計(jì)組知識(shí)與在軟件proteus的實(shí)際操作之間的融合。

6.3?項(xiàng)目設(shè)計(jì)總結(jié)與心得

(1)首先就知識(shí)的學(xué)習(xí)上,感覺(jué)自己相當(dāng)于重新學(xué)了一遍計(jì)組。

其實(shí)自己在做本次大作業(yè)前很長(zhǎng)一段時(shí)間對(duì)計(jì)組課沒(méi)怎么上心,而后為了要完成計(jì)組8086實(shí)驗(yàn)和本次綜合設(shè)計(jì)實(shí)驗(yàn),花了幾天重新啃了課本中微程序的相關(guān)章節(jié),感覺(jué)教材寫(xiě)的挺好的,在要點(diǎn)的講解上十分清晰,對(duì)于我理解小型CPU的設(shè)計(jì)起到了很大的幫助。而通過(guò)綜合系統(tǒng)的設(shè)計(jì)的實(shí)踐,又進(jìn)一步鞏固了這些知識(shí),讓我對(duì)于微程序CPU的原理和設(shè)計(jì)有了一個(gè)清晰的認(rèn)識(shí)。此外,我也借此機(jī)會(huì)學(xué)會(huì)了Proteus的“高階”操作,對(duì)于電路圖的搭建、仿真,測(cè)試程序的編寫(xiě)和燒錄也比較熟練了。

(2)學(xué)會(huì)了程序調(diào)試的相關(guān)方法,因?yàn)榇舜尉C合設(shè)計(jì)實(shí)驗(yàn)是分成各個(gè)部分來(lái)進(jìn)行設(shè)計(jì)的,所以在設(shè)計(jì)過(guò)程中,很多的東西是缺失的,比如最為典型的,在運(yùn)算器的設(shè)計(jì)過(guò)程中,我們的數(shù)以及關(guān)于時(shí)鐘的部分是缺失的,但我們?cè)O(shè)計(jì)出來(lái)以后也不能保證我們的設(shè)計(jì)是一定沒(méi)有問(wèn)題的,所以這需要一定的調(diào)試技巧,比如用撥碼開(kāi)關(guān)等形式來(lái)代替時(shí)鐘信號(hào)和數(shù)據(jù)來(lái)源,這樣我就可以很方便地來(lái)對(duì)設(shè)計(jì)的部分進(jìn)行檢查了。

(3)學(xué)習(xí)和了解了關(guān)于計(jì)算機(jī)硬件設(shè)計(jì)相關(guān)的知識(shí),對(duì)計(jì)算機(jī)組成和體系結(jié)構(gòu)有了更為深入的了解,即使以后可能不會(huì)從事相關(guān)的工作,我也算是對(duì)計(jì)算機(jī)有了一定的了解。

  1. ORG?0000H
    ????DB?00011010B?;LOAD?0AH
    ????DB?10010000B?;NOT?0AH???F5H
    ????DB?10001011B?;NOTD?08H?F7H
    ????DB?11001110B?;END
    ????
    ORG?1010B
    ????DB?00001010B?;num?0AH
    ????DB?00001000B?;num?08H
    END
  2. ?

結(jié)語(yǔ)

在這一次的計(jì)算機(jī)組成原理課程綜合系統(tǒng)設(shè)計(jì)中,我學(xué)到了很多東西,不僅僅是課本上的知識(shí),還有動(dòng)手能力。在做課程設(shè)計(jì)之前已經(jīng)在proteus軟件上做過(guò)相關(guān)的一些小實(shí)驗(yàn),如算術(shù)邏輯運(yùn)算器、加法器、8086最小系統(tǒng)的設(shè)計(jì),但都是根據(jù)老師所給出的實(shí)驗(yàn)步驟和內(nèi)容進(jìn)行操作,驗(yàn)證程序,并沒(méi)有自己去搭建一個(gè)cpu因?yàn)橹皩?shí)驗(yàn)電路圖的模型和設(shè)計(jì)步驟都有給出,對(duì)proteus的使用也僅限于找尋器件、基本模式連線、父子圖綜合設(shè)計(jì)、總線模式連線等基本操作,并不是很清楚proteus軟件中一些功能的作用和芯片的位置,但在這一次課設(shè)中因?yàn)橐约赫倚酒?,所以?duì)proteus的使用也更熟練。還有對(duì)指令的了解也更深刻,對(duì)程序運(yùn)行的過(guò)程也更清晰,這些都是課本之外的知識(shí)。

總之,在這一次的課程設(shè)計(jì)中鞏固了課堂知識(shí),也增強(qiáng)了動(dòng)手能力,收獲很大。因?yàn)闀r(shí)間的關(guān)系,并沒(méi)有對(duì)這個(gè)小型CPU做更多定制的功能和擴(kuò)展,如果以后有機(jī)會(huì)的話,一定會(huì)把它做得更好。

在報(bào)告的最后,還要感謝袁老師在計(jì)算機(jī)組成原理實(shí)驗(yàn)課上的指導(dǎo),讓我通過(guò)這些仿真實(shí)驗(yàn)對(duì)理論知識(shí)有了更深的理解?,也讓我實(shí)踐能力得到了提升。雖然您也是第一次負(fù)責(zé)計(jì)算機(jī)組成原理實(shí)驗(yàn)課的教學(xué),但您依舊從容地給我們安排

實(shí)驗(yàn)任務(wù),讓我們?cè)谝淮斡忠淮蔚膶?shí)驗(yàn)課上學(xué)到知識(shí),掌握能力,得到真正的提升!

參考文獻(xiàn)

[1] ?賴曉錚.基于Proteus的計(jì)算機(jī)系統(tǒng)實(shí)驗(yàn)教程:邏輯、組成原理、體系結(jié)構(gòu)、微機(jī)接口.?機(jī)械工業(yè)出版社,2017.

[2]?秦磊華,王小蘭.?計(jì)算機(jī)組成原理實(shí)驗(yàn)指導(dǎo)及課程設(shè)計(jì)指導(dǎo)書(shū)(基于EDA平臺(tái)).?武漢:華中科技大學(xué)出版社,2010.

[3]?秦磊華,吳非,莫正坤.計(jì)算機(jī)組成原理.?北京:清華大學(xué)出版社,2011.

[4]?DAVID A.PATTERSON(美).計(jì)算機(jī)組成與設(shè)計(jì)硬件/軟件接口(原書(shū)第3版).北京:機(jī)械工業(yè)出版社. 2007.

[5]?袁春風(fēng)編著.?計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu).?北京:清華大學(xué)出版社,2011.

附錄

附錄一:常見(jiàn)指令格式表

指令全稱

指令地址

指令功能

LOAD???ADDR

0001

取操作數(shù)指令,將ADDR所指向的內(nèi)存單元中的操作數(shù)取出,然后打入AC中

STORE??ADDR

0010

回存指令,將計(jì)算結(jié)果回存打入地址ADDR所指向的內(nèi)存單元MM中

JMP????ADDR

0011

跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到地址ADDR所指向的單元,然后讀取下一條指令(依賴PC)

ADD???ADDR

0100

加法指令,實(shí)現(xiàn)(AC)加(ADDR),且將結(jié)果打入AC

SUB????ADDR

0101

減法指令,實(shí)現(xiàn)(AC)減(ADDR),且將結(jié)果打入AC

AND???ADDR

0110

與指令,實(shí)現(xiàn)(AC)&(ADDR),且將結(jié)果打入AC

OR????ADDR??

0111

或指令,實(shí)現(xiàn)(AC)&(ADDR),且將結(jié)果打入AC

NOT??ADDR

1000

取反指令,實(shí)現(xiàn),且將結(jié)果打入AC

NOT

1001

取反指令,實(shí)現(xiàn),且將結(jié)果打入AC

A異或B

1010

異或指令,實(shí)現(xiàn)(AC)異或(ADDR),且將結(jié)果打入AC

A加A

1011

乘2指令,實(shí)現(xiàn)(AC)加(AC),且將結(jié)果打入AC

END

1100

結(jié)束指令,程序終止運(yùn)行

附錄二:控存中存儲(chǔ)的微指令集

指令

地址

C15

STOP

C14

LOAD

C13

161_置數(shù)

C12

DR2_CONT

C11

DR2_G

C10

AC_G

C9

DR1_G

C8

DOWN_244

C7

UP_244

C6

S3

C5

S2

C4

S1

C3

S0

C2

M

C1

Cn

C0

6116_WE

取址

0000

0???

0

1

1

0

0

0

1

1

0

0

0

0

0

1

0

LOAD

0001

0

1

1

1

0

1

0

1

0

0

0

0

0

0

1

0

STORE

0010

0

0

1

0

1

0

0

0

1

0

0

0

0

0

1

1

JMP

0011

0

0

0

1

0

0

0

1

1

0

0

0

0

0

1

0

ADD

0100

0

0

1

0

1

1

1

1

0

1

0

0

1

0

1

0

SUB

0101

0

0

1

0

1

1

1

1

0

0

1

1

0

0

0

0

AND

0110

0

0

1

0

1

1

1

1

0

1

0

1

1

1

1

0

0111

0

0

1

0

1

1

1

1

0

1

1

1

0

1

1

0

NOTD

1000

0

0

1

0

1

1

1

1

0

0

1

0

1

1

1

0

NOT

1001

0

0

1

0

1

1

0

1

1

0

0

0

0

1

1

0

異或

1010

0

0

1

0

1

1

1

1

0

0

1

1

0

1

1

0

乘2

1011

0

0

1

0

1

1

1

1

1

1

1

0

0

0

1

0

END

1100

1

0

1

1

0

0

0

1

0

0

0

0

0

0

1

0

2023-06-18

?

到了這里,關(guān)于計(jì)算機(jī)組成原理綜合實(shí)驗(yàn)設(shè)計(jì):基于proteus的小型CPU的設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包