版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> MCS-51單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多功能I/O等一臺(tái)計(jì)算機(jī)所需要的基本功能部件,是業(yè)界廣泛使用的單片機(jī)系列?;贔PGA平臺(tái)的8051單片機(jī)CPU核與傳統(tǒng)MCS-51單片機(jī)完全兼容,但速度約為傳統(tǒng)單片機(jī)的 20倍,且在FPGA內(nèi)可輕松的集成許多高性能系統(tǒng)功能,這將使系統(tǒng)的設(shè)計(jì)效率和
2、系統(tǒng)性能獲得極大的提高,這也是現(xiàn)代電子設(shè)計(jì)技術(shù)的發(fā)展方向。本課題用硬件描述語(yǔ)言設(shè)計(jì)MCS-51 CPU核,從CPU的總體結(jié)構(gòu)到局部功能的實(shí)現(xiàn)采用了自頂向下的設(shè)計(jì)方法和模塊化的設(shè)計(jì)思想,利用FPGA,設(shè)計(jì)實(shí)現(xiàn)了八位CPU核。本設(shè)計(jì)的CPU兼容51指令,在時(shí)鐘頻率和指令的執(zhí)行效率指標(biāo)上均優(yōu)于傳統(tǒng)的MCS-51CPU。本設(shè)計(jì)以硬件描述語(yǔ)言代碼形式存在,可與任何綜合庫(kù)、工藝庫(kù)以及FPGA結(jié)合開(kāi)發(fā)出用戶(hù)需要的固核和硬核,可讀性好,易于擴(kuò)展使用,易
3、于升級(jí),比較有實(shí)用價(jià)值。本設(shè)計(jì)通過(guò)FPGA驗(yàn)證。</p><p> 關(guān)鍵字:Verilog HDL; CPU; FPGA</p><p><b> ABSTRACT</b></p><p> MCS-51 MCU is a single chip integrated CPU, RAM, ROM, timer / counters
4、 and multi-function I / O such as a computer's basic features required, is the industry's widely used microcontroller series. 8051 FPGA-based CPU platform with the traditional core is fully compatible with MCS-51
5、 microcontroller, but the speed is about 20 times that of traditional single chip, and the FPGA can be easily integrated within a number of high-performance system functions, which will enable the design of the system &l
6、t;/p><p> Keywords: Verilog HDL ; CPU ; FPGA</p><p><b> 目 錄</b></p><p><b> 摘 要</b></p><p><b> Abstract</b></p><p>
7、; 第1章 緒論...1</p><p> 1.1選題背景……………………………………………………………………………………1</p><p> 1.2國(guó)內(nèi)外發(fā)展及現(xiàn)狀…………………………………………………………………………1</p><p> 1.3課題的主要內(nèi)容……………………………………………………………………………2</p><p
8、> 第2章CPU的結(jié)構(gòu)及設(shè)計(jì)…………………………………………………………..4</p><p> 2.1 CPU的簡(jiǎn)介…………………………………………………………………………………4</p><p> 2.2 CPU的結(jié)構(gòu)…………………………………………………………………………………4</p><p> 2.2.1 時(shí)鐘發(fā)生器…………………………………
9、………………………………………..4 2.2.2 指令寄存器…………………………………………………………………………..5</p><p> 2.2.3 累加器………………………………………………………………………………..6</p><p> 2.2.4 算術(shù)運(yùn)算器…………………………………………………………………………..6</p><p> 2.2.5
10、數(shù)據(jù)控制器…………………………………………………………………………..7</p><p> 2.2.6 地址多路器……………………………………………………………………………8</p><p> 2.2.7程序計(jì)數(shù)器……………………………………………………………………………8</p><p> 2.2.8 狀態(tài)控制器……………………………………………………………
11、……………..9</p><p> 2.2.9 外圍模塊…………………………………………………………………………….11</p><p> 第3章 CPU的功能………………………………………………………………….13</p><p> 3.1 CPU的操作………………………………………………………………………………….13</p><p&g
12、t; 3.1.1 系統(tǒng)的復(fù)位和啟動(dòng)操作……………………………………………………………..13</p><p> 3.1.2 總線(xiàn)讀操作…………………………………………………………………………..13</p><p> 3.1.3 總線(xiàn)寫(xiě)操作……………………………………………………………………………13</p><p> 3.2 CPU的尋址方式和指令集………
13、………………………………………………………… 14</p><p> 3.3 匯編…………………………………………………………………………………………14</p><p> 第4章 CPU的仿真和驗(yàn)證…………………………………………………………...16</p><p> 4.1 CPU模塊的仿真…………………………………………………………………………… 16
14、</p><p> 4.2 CPU模塊的綜合…………………………………………………………………………… 18</p><p> 4.3 CPU模塊的優(yōu)化和優(yōu)局布線(xiàn)……………………………………………………………… 25</p><p> 第5章 總結(jié)和展望…………………………………………………………………...27</p><p> 參
15、考文獻(xiàn)……………………………………………………………………………..28</p><p> 致 謝…………………………………………………………………………………29</p><p><b> 第1章 緒論</b></p><p><b> 1.1選題背景</b></p><p> 單片機(jī)自
16、從被推出后開(kāi)始迅速發(fā)展,應(yīng)用領(lǐng)域也在不斷擴(kuò)大,現(xiàn)己成為微型計(jì)算機(jī)的重要分支,單片機(jī)處理數(shù)據(jù)的能力在不斷提高,速度也越來(lái)越快,長(zhǎng)期以來(lái)被廣泛的應(yīng)用在各領(lǐng)域。 同時(shí)隨著集成電路和計(jì)算機(jī)技術(shù)的飛速發(fā)展,電子設(shè)計(jì)自動(dòng)化(EDA)以計(jì)算機(jī)的硬件和軟件為基本的工作平臺(tái),已經(jīng)發(fā)展成為可以代 替設(shè)計(jì)者完成電子系統(tǒng)設(shè)計(jì)的重要工具。其中FPGA是一種新興的可編程邏輯器件(PLD),與其它可編程邏輯器件(PLD)相比,具有更高的密度、更快的工作速度和更大的編
17、程靈活性。FPGA是一種新興的可編程邏輯器件,可以取代現(xiàn)有的全部微機(jī)接口芯片,實(shí)現(xiàn)微機(jī)系統(tǒng)中的存儲(chǔ)器、地址譯碼等多種功能,具有更高的密度、更快的工作速度和更大的編程靈活性,被廣泛應(yīng)用于各種電子類(lèi)產(chǎn)品中。單片機(jī)具有性能價(jià)格比高、功能靈活、易于人機(jī)對(duì)話(huà)、良好的數(shù)據(jù)處理能力特點(diǎn);FPGA則具有高速、高可靠以及開(kāi)發(fā)便捷、規(guī)范等優(yōu)點(diǎn)。以此兩類(lèi)器件相結(jié)合的電路結(jié)構(gòu)會(huì)有很多的發(fā)展空間。</p><p> 基于FPGA的高密度
18、、高速度、現(xiàn)場(chǎng)可編程的能力和單片機(jī)強(qiáng)大的數(shù)據(jù)處理功能設(shè)計(jì)的CPU采用了與傳統(tǒng)單片機(jī)不同的實(shí)現(xiàn)架構(gòu),利用FPGA的邊沿觸發(fā)的特點(diǎn),單周期單指令,因而無(wú)論在時(shí)鐘頻率還是在匯編指令的執(zhí)行效率上都明顯優(yōu)于傳統(tǒng)的MCS-51單片機(jī)。這個(gè)設(shè)計(jì)的擴(kuò)展接口控制器部分很好地?cái)U(kuò)充了傳統(tǒng)單片機(jī)的功能,而且由于具有 較好的可移植性,可以只利用擴(kuò)展接口控制器部分實(shí)現(xiàn)對(duì)現(xiàn)有的單片機(jī)進(jìn)行升級(jí),節(jié)約更換高性能CPU而帶來(lái)的產(chǎn)品提升,達(dá)到適應(yīng)新的要求。目前以硬件描述語(yǔ)言
19、所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC 設(shè)計(jì)驗(yàn)證的技術(shù)主流。</p><p> 1.2國(guó)內(nèi)外發(fā)展及現(xiàn)狀</p><p> 微控制器簡(jiǎn)稱(chēng)MCU,又稱(chēng)單片機(jī),是指將計(jì)算機(jī)的CPU、RAM、ROM、定時(shí)計(jì)數(shù)器和多種I/O接口集 成在一塊芯片上,形成芯片級(jí)的計(jì)算機(jī)。單片機(jī)的出現(xiàn)的初衷是面向工業(yè)控制,目前它己經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域及各個(gè)行業(yè)。
20、</p><p> 1976年Intel公司推出低檔8位單片機(jī) (MCS-48系列)。在1980年Intel公司推出了 比MCS-48系列性能更為優(yōu)越的8位單片機(jī)8051(MCS-51系列)。1983年Intel公司又推 出了CMOS型80C51、16位單片機(jī)5096(MCS-96系列)。眾多公司先后推出了32位單片機(jī)、 64位單片機(jī)。盡管單片機(jī)的設(shè)計(jì)技術(shù)在不斷的發(fā)展,處理能力越來(lái)越強(qiáng),從4位到8位,再到16位
21、、32位,甚至出現(xiàn)了64位,但有一個(gè)現(xiàn)象卻十分有趣,8位單片機(jī)在經(jīng)歷了 三十多年之后,依然顯示出強(qiáng)大而旺盛的生命力,其市場(chǎng)占有率一直高居榜首。與從8位機(jī)迅速向16位、32位、64位過(guò)渡的通用計(jì)算機(jī)相比,8位微控制器從20 世紀(jì)70年代初期誕生至今,雖歷經(jīng)從單片微型計(jì)算機(jī)到微控制器、單片機(jī)和SoC的變遷, 8位機(jī)始終是嵌入式低端應(yīng)用的主要機(jī)型,而且在未來(lái)相當(dāng)長(zhǎng)的時(shí)間里,仍會(huì)保持這個(gè)勢(shì)頭。這是因?yàn)榍度胧较到y(tǒng)和通用計(jì)算機(jī)系統(tǒng)有完全不同的應(yīng)用特
22、性,從而走向完全不同的技術(shù)發(fā)展道路。在8位單片機(jī)能基本滿(mǎn)足其響應(yīng)速度要求后,數(shù)據(jù)寬度不是技術(shù)發(fā)展的主要矛盾。因此8位微控制器會(huì)穩(wěn)定下來(lái),其技術(shù)發(fā)展方向轉(zhuǎn)為最大限度地滿(mǎn)</p><p> 現(xiàn)今市場(chǎng)上流行的典型的8位微控制器,與傳統(tǒng)的8位單片機(jī)相比,大多數(shù)是由VerilogHDL實(shí)現(xiàn)的軟處理器IP Core,可以在各種FPGA上實(shí)現(xiàn),設(shè)計(jì)靈活方便而且易于進(jìn)行功能擴(kuò)展。因此,這些單片機(jī)將在基于可編程邏輯的應(yīng)用領(lǐng)域中發(fā)
23、揮積極的作用。各大單片機(jī)廠家都推出了自己的8位單片機(jī)內(nèi)核,如飛思卡爾的RS08內(nèi)核、NEC的78K0、Actel的Corc8051、Mkcrochip的PIC內(nèi)核等。因此研究8位單片機(jī)內(nèi)核具有廣泛的現(xiàn)實(shí)意義。由于其具有較高的處理性能和較少的資源占用,故具有更加廣泛的應(yīng)用前景。 </p><p> 1.3課題的工作內(nèi)容 </p><p> 本次畢業(yè)設(shè)計(jì)主要是對(duì)MCS-51單片機(jī) 進(jìn)行研究
24、。用硬件描述語(yǔ)言設(shè)計(jì)MCS-51 CPU核,對(duì)于CPU核的結(jié)構(gòu)進(jìn)行深入了解和認(rèn)知,討論并設(shè)計(jì)CPU的運(yùn)算邏輯單元、取址模塊、譯碼執(zhí)行模塊,確定正確的方案。對(duì)于硬件描述語(yǔ)言和相關(guān)仿真軟件進(jìn)行討論確定,并調(diào)試代碼,仿真通過(guò)。以MCS-51系列單片機(jī)的指令集為藍(lán)本,利用原理框圖和硬件描述語(yǔ)言的輸入方式完成實(shí)現(xiàn)了處理器的各種功能。在 ASIC或者FPGA 上進(jìn)行測(cè)試,完成所需要的邏輯功能。課題工作內(nèi)容如下,共分為以下幾步:</p>
25、<p> (1)確定CPU的總體結(jié)構(gòu),劃分與定義各個(gè)層次模塊的結(jié)構(gòu)和功能。根據(jù)設(shè)計(jì)的需要設(shè)計(jì)CPU體系架構(gòu)形式,并選取與MCS-51兼容的指令集作為設(shè)計(jì)的指令集。 </p><p> (2)研究MCS-51CPU的硬件架構(gòu)及所有指令的工作過(guò)程,深入理解工作 原理和設(shè)計(jì)方法,完成各個(gè)層次模塊功能的劃分與定義。</p><p> (3)使用硬件描述語(yǔ)言對(duì)CPU核進(jìn)行具體的描述
26、,書(shū)寫(xiě)代碼。</p><p> (4) 調(diào)試代碼,仿真通過(guò)。搭建測(cè)試平臺(tái),對(duì)設(shè)計(jì)完成的CPU進(jìn)行完備的功能測(cè)試。 </p><p> (5) 對(duì)通過(guò)功能測(cè)試的進(jìn)行優(yōu)化、布局布線(xiàn),進(jìn)行硬件驗(yàn)證。</p><p> 第2章 CPU的結(jié)構(gòu)及設(shè)計(jì)</p><p> 2.1 CPU的簡(jiǎn)介</p><p> CPU是一個(gè)
27、復(fù)雜的數(shù)字邏輯電路,包含八個(gè)基本部件:</p><p><b> 1)時(shí)鐘發(fā)生器</b></p><p><b> 2)指令寄存器</b></p><p><b> 3)累加器</b></p><p> 4)算術(shù)邏輯運(yùn)算單元</p><p&g
28、t;<b> 5)數(shù)據(jù)控制器</b></p><p><b> 6)狀態(tài)控制器</b></p><p><b> 7)程序計(jì)數(shù)器</b></p><p><b> 8)地址多路器</b></p><p> 各部件的具體結(jié)構(gòu)和邏輯關(guān)系在下面
29、的小節(jié)里逐一進(jìn)行介紹。</p><p> 2.2 CPU的結(jié)構(gòu)</p><p> 2.2.1 時(shí)鐘發(fā)生器</p><p> 圖2-1 時(shí)鐘發(fā)生器</p><p> 時(shí)鐘發(fā)生器 clkgen (如圖2-1所示)利用外來(lái)時(shí)鐘信號(hào)clk 來(lái)生成一系列時(shí)鐘信號(hào)clk1、fetch、alu_clk 送往CPU的其他部件。其中fetch是外來(lái)時(shí)
30、鐘 clk 的八分頻信號(hào)。利用fetch的上升沿來(lái)觸發(fā)CPU控制器開(kāi)始執(zhí)行一條指令,同時(shí)fetch信號(hào)還將控制地址多路器輸出指令地址和數(shù)據(jù)地址。clk1信號(hào)用作指令寄存器、累加器、狀態(tài)控制器的時(shí)鐘信號(hào)。alu_clk 則用于觸發(fā)算術(shù)邏輯運(yùn)算單元。</p><p> 時(shí)鐘發(fā)生器clkgen的波形見(jiàn)下圖 2-2所示:</p><p> 其Verilog HDL程序見(jiàn)下面的模塊:</p
31、><p> 2.2.2 指令寄存器</p><p> 圖2-3 指令寄存器</p><p> 指令寄存器如圖2-3所示,主要用于寄存指令。</p><p> 指令寄存器的觸發(fā)時(shí)鐘是clk1,在clk1的正沿觸發(fā)下,寄存器將數(shù)據(jù)總線(xiàn)送來(lái)的指令存入高8位或低8位寄存器中。但并不是每個(gè)clk1的上升沿都寄存數(shù)據(jù)總線(xiàn)的數(shù)據(jù),因?yàn)閿?shù)據(jù)總線(xiàn)上有時(shí)
32、傳輸指令,有時(shí)傳輸數(shù)據(jù)。什么時(shí)候寄存,什么時(shí)候不寄存由CPU狀態(tài)控制器的load_ir信號(hào)控制。load_ir信號(hào)通過(guò)ena 口輸入到指令寄存器。復(fù)位后,指令寄存器被清為零。</p><p> 每條指令為2個(gè)字節(jié),即16位。高3位是操作碼,低13位是地址。(CPU的地址總線(xiàn)為13位,尋址空間為8K字節(jié)。)本設(shè)計(jì)的數(shù)據(jù)總線(xiàn)為8位,所以每條指令需取兩次。先取高8位,后取低8位。而當(dāng)前取的是高8位還是低8位,由變量s
33、tate記錄。state為零表示取的高8位,存入高8位寄存器,同時(shí)將變量state置為1。下次再寄存時(shí),由于state為1,可知取的是低8位,存入低8位寄存器中。</p><p><b> 2.2.3 累加器</b></p><p> 圖2-4 累加器</p><p> 累加器如圖2-4所示,用于存放當(dāng)前的結(jié)果,它也是雙目運(yùn)算其中一個(gè)
34、數(shù)據(jù)來(lái)源。復(fù)位后,累加器的值是零。當(dāng)累加器通過(guò)ena口收到來(lái)自CPU狀態(tài)控制器load_acc信號(hào)時(shí),在clk1時(shí)鐘正跳沿時(shí)就收到來(lái)自于數(shù)據(jù)總線(xiàn)的數(shù)據(jù)。</p><p> 2.2.4 算術(shù)運(yùn)算器</p><p> 圖2-5 算術(shù)運(yùn)算器</p><p> 算術(shù)邏輯運(yùn)算單元(如圖2-5所示) 根據(jù)輸入的8種不同操作碼分別實(shí)現(xiàn)相應(yīng)的加、與、異或、跳轉(zhuǎn)等8種基本操作
35、運(yùn)算。利用這幾種基本運(yùn)算可以實(shí)現(xiàn)很多種其它運(yùn)算以及邏輯判斷等操作。</p><p> 2.2.5 數(shù)據(jù)控制器</p><p> 圖2-6 數(shù)據(jù)控制器</p><p> 數(shù)據(jù)控制器如圖2-6,它的作用是控制累加器數(shù)據(jù)輸出,由于數(shù)據(jù)總線(xiàn)是各種操作時(shí)傳送數(shù)據(jù)的公共通道,不同的情況下傳送不同的內(nèi)容。有時(shí)要傳輸指令,有時(shí)要傳送RAM區(qū)或接口的數(shù)據(jù)。累加器的數(shù)據(jù)
36、只有在需要往RAM區(qū)或端口寫(xiě)時(shí)才允許輸出,否則應(yīng)呈現(xiàn)高阻態(tài),以允許其它部件使用數(shù)據(jù)總線(xiàn)。 所以任何部件往總線(xiàn)上輸出數(shù)據(jù)時(shí),都需要一控制信號(hào)。而此控制信號(hào)的啟、停,則由CPU狀態(tài)控制器輸出的各信號(hào)控制決定。數(shù)據(jù)控制器何時(shí)輸出累加器的數(shù)據(jù)則由狀態(tài)控制器輸出的控制信號(hào)datactl_ena決定。</p><p> 2.2.6 地址多路器</p><p> 圖2-7 地址多路器</p&
37、gt;<p> 地址多路器如圖2-7,它用于選擇輸出的地址是PC(程序計(jì)數(shù))地址還是數(shù)據(jù)/端口地址。每個(gè)指令周期的前4個(gè)時(shí)鐘周期用于從ROM中讀取指令,輸出的應(yīng)是PC地址。后4個(gè)時(shí)鐘周期用于對(duì)RAM或端口的讀寫(xiě),該地址由指令中給出。地址的選擇輸出信號(hào)由時(shí)鐘信號(hào)的8分頻信號(hào)fetch提供。</p><p> 2.2.7 程序計(jì)數(shù)器</p><p> 圖2-8 程序計(jì)數(shù)器
38、</p><p> 程序計(jì)數(shù)器如圖2-8,它用于提供指令地址。以便讀取指令,指令按地址順序存放在存儲(chǔ)器中。有兩種途徑可形成指令地址:其一是順序執(zhí)行的情況,其二是遇到要改變順序執(zhí)行程序的情況,例如執(zhí)行JMP指令后,需要形成新的指令地址。下面就來(lái)詳細(xì)說(shuō)明PC地址是如何建立的。</p><p> 復(fù)位后,指令指針為零,即每次CPU重新啟動(dòng)將從ROM的零地址開(kāi)始讀取指令并執(zhí)行。每條指令執(zhí)行完需
39、2個(gè)時(shí)鐘,這時(shí)pc_addr已被增2,指向下一條指令。(因?yàn)槊織l指令占兩個(gè)字節(jié)。)如果正執(zhí)行的指令是跳轉(zhuǎn)語(yǔ)句,這時(shí)CPU狀態(tài)控制器將會(huì)輸出load_pc信號(hào),通過(guò)load口進(jìn)入程序計(jì)數(shù)器。程序計(jì)數(shù)器(pc_addr)將裝入目標(biāo)地址(ir_addr),而不是增2。</p><p> 2.2.8 狀態(tài)控制器</p><p> 圖2-9 狀態(tài)控制器</p><p>
40、 狀態(tài)控制器如圖2-9,它由兩部分組成:</p><p> 1)狀態(tài)機(jī)(上圖中的MACHINE部分)</p><p> 2)狀態(tài)控制器(上圖中的MACHINECTL部分)</p><p> 狀態(tài)機(jī)控制器接受復(fù)位信號(hào)RST,當(dāng)RST有效時(shí)通過(guò)信號(hào)ena使其為0,輸入到狀態(tài)機(jī)中停止?fàn)顟B(tài)機(jī)的工作。</p><p> 狀態(tài)控制器的Veril
41、ogHDL程序見(jiàn)下面模塊:</p><p> //------------------------------------------------------//</p><p> module machinectl( ena, fetch, rst);</p><p> output ena;</p><p> input fe
42、tch, rst;</p><p><b> reg ena;</b></p><p> always @(posedge fetch or posedge rst)</p><p><b> begin</b></p><p><b> if(rst)</b><
43、/p><p><b> ena<=0;</b></p><p><b> else</b></p><p><b> ena<=1;</b></p><p><b> end</b></p><p><b>
44、; endmodule</b></p><p> //------------------------------------------------------//</p><p> 狀態(tài)機(jī)是CPU的控制核心,用于產(chǎn)生一系列的控制信號(hào),啟動(dòng)或停止某些部件。CPU何時(shí)進(jìn)行讀指令讀寫(xiě)I/O端口,RAM區(qū)等操作,都是由狀態(tài)機(jī)來(lái)控制的。狀態(tài)機(jī)的當(dāng)前狀態(tài),由變量state記錄,s
45、tate的值就是當(dāng)前這個(gè)指令周期中已經(jīng)過(guò)的時(shí)鐘數(shù)(從零計(jì)起)。 </p><p> 指令周期是由8個(gè)時(shí)鐘周期組成,每個(gè)時(shí)鐘周期都要完成固定的操作。</p><p> 1)第0個(gè)時(shí)鐘,因?yàn)镃PU狀態(tài)控制器的輸出:rd和load_ir為高電平,其余均為低電平。指令寄存器寄存由ROM送來(lái)的高8位指令代碼。</p><p> 2)第1個(gè)時(shí)鐘,與上一時(shí)鐘相比只是inc_
46、pc從0變?yōu)?故PC增1,ROM送來(lái)低8位指令代碼,指令寄存器寄存該8位代碼。</p><p> 3)第2個(gè)時(shí)鐘,空操作。</p><p> 4)第3個(gè)時(shí)鐘,PC增1,指向下一條指令。若操作符為HLT,則輸出信號(hào)HLT為高。如果操作符不為HLT,除了PC增一外(指向下一條指令),其它各控制線(xiàn)輸出為零。</p><p> 5)第4個(gè)時(shí)鐘,若操作符為AND、ADD
47、、XOR或LDA,讀相應(yīng)地址的數(shù)據(jù);若為JMP,將目的地址送給程序計(jì)數(shù)器;若為STO,輸出累加器數(shù)據(jù)。</p><p> 6)第5個(gè)時(shí)鐘,若操作符為ANDD、ADD或XORR,算術(shù)運(yùn)算器就進(jìn)行相應(yīng)的運(yùn)算;若為L(zhǎng)DA,就把數(shù)據(jù)通過(guò)算術(shù)運(yùn)算器送給累加器;若為SKZ,先判斷累加器的值是否為0,如果為0,PC就增1,否則保持原值;若為JMP,鎖存目的地址;若為STO,將數(shù)據(jù)寫(xiě)入地址處。</p><p
48、> 7)第6個(gè)時(shí)鐘,空操作。</p><p> 8)第7個(gè)時(shí)鐘,若操作符為SKZ且累加器值為0,則PC值再增1,跳過(guò)一條指令,否則PC無(wú)變化。</p><p> 2.2.9 外圍模塊</p><p> 為了對(duì)CPU進(jìn)行測(cè)試,需要有存儲(chǔ)測(cè)試程序的ROM和裝載數(shù)據(jù)的RAM、地址譯碼器。</p><p><b> ?。?).
49、地址譯碼器</b></p><p> module addr_decode( addr, rom_sel, ram_sel);</p><p> output rom_sel, ram_sel;</p><p> input [12:0] addr;</p><p> reg rom_sel, ram_sel;</p
50、><p> always @( addr )</p><p><b> begin</b></p><p> casex(addr)</p><p> 13'b1_1xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b01;</p><p> 13&
51、#39;b0_xxxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;</p><p> 13'b1_0xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;</p><p> default:{rom_sel,ram_sel}<=2'b00;</p><p>&l
52、t;b> endcase</b></p><p><b> end</b></p><p><b> endmodule</b></p><p> 地址譯碼器用于產(chǎn)生選通信號(hào),選通ROM或RAM。</p><p> FFFFH---1800H RAM</p>
53、<p> 1800H---0000H ROM</p><p> ?。?).RAM和ROM</p><p> module ram( data, addr, ena, read, write );</p><p> inout [7:0] data;</p><p> input [9:0] addr;</p>
54、<p> input ena;</p><p> input read, write;</p><p> reg [7:0] ram [10'h3ff:0];</p><p> assign data = ( read && ena )? ram[addr] : 8'hzz;</p><p&g
55、t; always @(posedge write)</p><p><b> begin</b></p><p> ram[addr]<=data;</p><p><b> end</b></p><p><b> endmodule</b></p&g
56、t;<p> module rom( data, addr, read, ena );</p><p> output [7:0] data;</p><p> input [12:0] addr;</p><p> input read, ena;</p><p> reg [7:0] memory [13'
57、h1fff:0];</p><p> wire [7:0] data;</p><p> assign data= ( read && ena )? memory[addr] : 8'bzzzzzzzz;</p><p><b> endmodule</b></p><p> ROM用于裝
58、載測(cè)試程序,可讀不可寫(xiě)。RAM用于存放數(shù)據(jù),可讀可寫(xiě)。</p><p> 第3章 CPU的功能</p><p><b> 3.1 CPU操作</b></p><p> 1含U一個(gè)微機(jī)系統(tǒng)為了完成自身的功能,需要CPU執(zhí)行許多操作。以下是CPU的主要操作:</p><p> (1)系統(tǒng)的復(fù)位和啟動(dòng)操作;</p
59、><p><b> ?。?)總線(xiàn)讀操作;</b></p><p><b> ?。?)總線(xiàn)寫(xiě)操作。</b></p><p> 3.1.1 系統(tǒng)的復(fù)位和啟動(dòng)操作</p><p> CPU的復(fù)位和啟動(dòng)操作是通過(guò)reset引腳的信號(hào)觸發(fā)執(zhí)行的。當(dāng)reset信號(hào)一進(jìn)入高電平, CPU就會(huì)結(jié)束現(xiàn)行操作,并且只要
60、reset停留在高電平狀態(tài),CPU就維持在復(fù)位狀態(tài)。在復(fù)位狀態(tài),CPU各內(nèi)部寄存器都被設(shè)為初值,全部為零。數(shù)據(jù)總線(xiàn)為高阻態(tài),地址總線(xiàn)為0000H,所有控制信號(hào)均為無(wú)效狀態(tài)。reset回到低電平后,接著到來(lái)的第一個(gè)fetch上升沿將啟動(dòng)RISC_CPU開(kāi)始工作,從ROM的000處開(kāi)始讀取指令并執(zhí)行相應(yīng)操作。</p><p> 3.1.2 總線(xiàn)讀操作</p><p> 每個(gè)指令周期的前0-
61、-3個(gè)時(shí)鐘周期用于讀指令,在狀態(tài)控制器一節(jié)中已詳細(xì)講述,這里就不再重復(fù)。第3.5個(gè)周期處,存儲(chǔ)器或端口地址就輸出到地址總線(xiàn)上,第4--6個(gè)時(shí)鐘周期,讀信號(hào)rd有效,數(shù)據(jù)送到數(shù)據(jù)總線(xiàn)上,以備累加器鎖存,或參與算術(shù)、邏輯運(yùn)算。第7個(gè)時(shí)鐘周期,讀信號(hào)無(wú)效,第7.5個(gè)周期,地址總線(xiàn)輸出PC地址,為下一個(gè)指令做好準(zhǔn)備。</p><p> 3.1.3總線(xiàn)寫(xiě)操作</p><p> 每個(gè)指令周期的第3
62、.5個(gè)時(shí)鐘周期處,寫(xiě)的地址就建立了,第4個(gè)時(shí)鐘周期輸出數(shù)據(jù),第5個(gè)時(shí)鐘周期輸出寫(xiě)信號(hào)。至第6個(gè)時(shí)鐘結(jié)束,數(shù)據(jù)無(wú)效,第7.5時(shí)鐘地址輸出為PC地址,為下一個(gè)指令周期做好準(zhǔn)備。</p><p> 3.2 CPU尋址方式和指令集</p><p> CPU的指令格式如下圖3-1所示:</p><p> 圖3-1 CPU的指令格式</p><p&g
63、t; 它的指令系統(tǒng)僅由8條指令組成。</p><p> 1) HLT停機(jī)操作。該操作將空一個(gè)指令周期,即8個(gè)時(shí)鐘周期。</p><p> 2) SKZ為零跳過(guò)下一條語(yǔ)句。該操作先判斷當(dāng)前alu中的結(jié)果是否為零,若是零就跳過(guò)下一條語(yǔ)句,否則繼續(xù)執(zhí)行。</p><p> 3) ADD相加。該操作將累加器中的值與地址所指的存儲(chǔ)器或端口的數(shù)據(jù)相加,結(jié)果仍送回累
64、加器中。</p><p> 4) AND相與。該操作將累加器的值與地址所指的存儲(chǔ)器或端口的數(shù)據(jù)相與,結(jié)果仍送回累加器中。</p><p> 5) XOR異或。該操作將累加器的值與指令中給出地址的數(shù)據(jù)異或,結(jié)果仍送回累加器中。</p><p> 6) LDA讀數(shù)據(jù)。該操作將指令中給出地址的數(shù)據(jù)放入累加器。</p><p> 7)
65、STO寫(xiě)數(shù)據(jù)。該操作將累加器的數(shù)據(jù)放入指令中給出的地址。</p><p> 8) JMP無(wú)條件跳轉(zhuǎn)語(yǔ)句。該操作將跳轉(zhuǎn)至指令給出的目的地址,繼續(xù)執(zhí)行。</p><p> CPU是8位微處理器,一律采用直接尋址方式,即數(shù)據(jù)總是放在存儲(chǔ)器中,尋址單元的地址由指令直接給出。這是最簡(jiǎn)單的尋址方式。</p><p><b> 3.3匯 編</b>
66、</p><p> 匯編程序是為了調(diào)試軟核而開(kāi)發(fā)的,手工編寫(xiě)機(jī)器碼很容易出錯(cuò)并且工作量很大。在調(diào)試過(guò)程中修改指令集時(shí),匯編程序也要作相應(yīng)的修改。所以要求編譯器的結(jié)構(gòu)簡(jiǎn)單性能可靠,在程序中必要的地方可以用堆疊代碼方法實(shí)現(xiàn),不必考慮編程技巧和匯編器效率問(wèn)題。匯編程序用于測(cè)試CPU的基本指令集,如果CPU的各條指令執(zhí)行正確,停止在HLT指令處。如果程序在其它地址暫停運(yùn)行,則有一個(gè)指令出錯(cuò)。程序中,@符號(hào)后的十六進(jìn)制表
67、示存儲(chǔ)器的地址,每行的//后表示注釋。下面是本文設(shè)計(jì)的一小段程序代碼,編譯好的匯編機(jī)器代碼裝入虛擬ROM,要參加運(yùn)算的數(shù)據(jù)裝入虛擬RAM就可以開(kāi)始進(jìn)行仿真。 </p><p> 機(jī)器碼 地址 匯編助記符 注釋 @00 //地址聲明 101_11000 //00 BEGIN: LDA DATA_2 0000_0001 011_11000 //02 AND DATA_3 0000_0010 100_11
68、000 //04 XOR DATA_2 0000_0001 001_00000 //06 SKZ 0000_0000 000_00000 //08 HLT //AND does't work</p><p> 第4章CPU模塊的仿真和驗(yàn)證</p><p> 4.1 CPU模塊的仿真</p><p> 為了對(duì)所設(shè)計(jì)的CPU模型進(jìn)行驗(yàn)證,需要把CP
69、U包裝在一個(gè)模塊下,這樣其內(nèi)部連線(xiàn)就隱蔽起來(lái),從系統(tǒng)的角度看就顯得簡(jiǎn)潔,還需要建立一些必要的外圍器件模型,例如儲(chǔ)存程序用的ROM模型、儲(chǔ)存數(shù)據(jù)用的RAM和地址譯碼器等。這些模型都可以用VerilogHDL描述,由于不需要綜合成具體的電路只要保證功能和接口信號(hào)正確就能用于仿真。也就是說(shuō),用虛擬器件來(lái)代替真實(shí)的器件對(duì)所設(shè)計(jì)的CPU模型進(jìn)行驗(yàn)證,檢查各條指令是否執(zhí)行正確,與外圍電路的數(shù)據(jù)交換是否正常。可在下面的仿真中來(lái)代替真實(shí)的器件,用于驗(yàn)證
70、CPU模型是否能正確地運(yùn)行裝入ROM和RAM的程序。在CPU的電路圖上加上這些外圍電路把有關(guān)的電路接通,見(jiàn)圖4-1。最核心的就是的左邊RSC模塊,對(duì)指令的譯碼和執(zhí)行都是在RSC模塊內(nèi)部完成的,而且RSC模塊還對(duì)其余三個(gè)模塊進(jìn)行控制。 圖右上角是一塊有著256個(gè)字節(jié)的裝載數(shù)據(jù)的RAM,RSC有四個(gè)信號(hào)對(duì)它實(shí)現(xiàn)了讀寫(xiě)操作。第一個(gè)信號(hào)就是寫(xiě)使能write_ram;第二個(gè)信號(hào)就是讀使能read_ram;第三個(gè)信號(hào)是RAM的地址信號(hào)_addr_r
71、am<9..0>;最后一個(gè)就是通用數(shù)據(jù)總線(xiàn)data_ram<7..0>。圖右</p><p> 圖4-1 CPU總體模塊圖</p><p> 按照CPU總體模塊圖,可實(shí)現(xiàn)CPU模塊的仿真。步驟如下:首先按照表示各模塊之間連線(xiàn)的電路圖編制測(cè)試文件,即定義Verilog的wire變量作為連線(xiàn),連接各功能模塊之間的引腳,并將輸入信號(hào)引入,輸出信號(hào)引出。如若需要,可加
72、入必要的語(yǔ)句顯示提示信息。例如, cpu 的測(cè)試文件就是cputop.v。其次,使用仿真軟件進(jìn)行仿真,,以下介紹Modelsim的使用。在進(jìn)入Modelsim的環(huán)境之后,在file項(xiàng)選擇change direction來(lái)確定編制的文件所在的目錄,然后在design項(xiàng)選擇或創(chuàng)建一個(gè)library,完成后即可開(kāi)始編譯。在design項(xiàng)選compile…項(xiàng),進(jìn)入編譯環(huán)境,選定要編譯的文件進(jìn)行編譯。完成編譯后,還是在compile…項(xiàng),選擇lo
73、ad new design項(xiàng),選中編譯后提示的top module的名字,然后開(kāi)始仿真。在view項(xiàng)可選波形顯示,信號(hào)選擇,功能和操作簡(jiǎn)單明了,下圖4-2這是ModelSim SE6.0進(jìn)行波形仿真的結(jié)果。在ISE中可以運(yùn)行Timing Analyzer生成詳細(xì)的時(shí)序報(bào)告,本設(shè)計(jì)中Minimum period: 12.032ns (Max</p><p> 圖4-2 仿真時(shí)序圖</p><
74、;p> 4.2 CPU模塊的綜合</p><p> 在對(duì)所設(shè)計(jì)的CPU模型進(jìn)行驗(yàn)證后,如沒(méi)有發(fā)現(xiàn)問(wèn)題就可開(kāi)始做下一步的工作即綜合。綜合工作往往要分階段來(lái)進(jìn)行,這樣便于發(fā)現(xiàn)問(wèn)題。</p><p><b> 所謂分階段就是指:</b></p><p> 第一階段:先對(duì)構(gòu)成CPU模型的各個(gè)子模塊,如狀態(tài)控制機(jī)模塊(包括machine模塊
75、,machinectl模塊)、指令寄存器模塊(register模塊)、算術(shù)邏輯運(yùn)算單元模塊(alu模塊)等,分別加以綜合以檢查其可綜合性,綜合后及時(shí)進(jìn)行后仿真,這樣便于及時(shí)發(fā)現(xiàn)錯(cuò)誤,及時(shí)改進(jìn)。</p><p> 第二階段:把要綜合的模塊從仿真測(cè)試信號(hào)模塊和虛擬外圍電路模型(如ROM模塊、RAM模塊、顯示部件模塊等)中分離出來(lái),組成一個(gè)獨(dú)立的模塊,其中包括了所有需要綜合的模塊。然后給這個(gè)大模塊起一個(gè)名字,如本章中
76、的例子,我們要綜合的只是CPU并不包括虛擬外圍電路,可以給這一模塊起一個(gè)名字,例如稱(chēng)它為RSC_CHIP模塊。如用電路圖描述的話(huà),我們還需給它的引腳加上標(biāo)準(zhǔn)的引腳部件并加標(biāo)記,見(jiàn)圖4-3。</p><p> 圖4-3 RSC模塊</p><p> 第三階段:加載需要綜合的模塊到綜合器,本例所使用的綜合器是 Synplify, 選定的 FPGA 是 Altera FLEX10K,
77、針對(duì)它的庫(kù)進(jìn)行綜合。</p><p> 也可以使用QuartusII或其他綜合工具進(jìn)行綜合。綜合器綜合的結(jié)果會(huì)產(chǎn)生一系列的文件,其中有一個(gè)文件報(bào)告用了所使用的基本單元,各部件的時(shí)間參數(shù)以及綜合的過(guò)程。見(jiàn)下面的報(bào)告,它就是這個(gè)CPU芯片所用的綜合報(bào)告,綜合所用的庫(kù)為Altera FLEX10K系列的FPGA庫(kù),約定的失蹤頻率為80MHz。</p><p> //-------------
78、--- CPU芯片綜合結(jié)果報(bào)告開(kāi)始-----------------//</p><p> #Program:Synplify Pro 8.1</p><p> #OS:Windows_NT</p><p> $ Start of Compile</p><p> #Fri Jul 01 10:11:03 2009</p>
79、<p> Synplify Verilog Compiler, version 3.1.0, Build 049R,built May 3 2005</p><p> Copyright (C) 1994-2005, Synplicity Inc. All Rights Reserved</p><p> @I::”C:\Program File\Synplicity
80、\fpga_81\lib\altera\altera.v”</p><p> @I::”C:\Program File\Synplicity\fpga_81\lib\altera\altera_mf.v”</p><p> @I::”C:\Program File\Synplicity\fpga_81\lib\altera\altera_lpm.v”</p><p&
81、gt; @I::”C:\vlogexe\ex17_2\cpu.v”</p><p> @I:”C:\ vlogexe\ex17_2\cpu.v”:“C:\vlogexe\ex17_2\clk_gen.v”</p><p> @I:”C:\ vlogexe\ex17_2\cpu.v”:“C:\vlogexe\ex17_2\accum.v”</p><p> …
82、………………………</p><p> …………………………</p><p> Verilog syntax check successful!</p><p> Compiler output is up to date. No re-compile necessary</p><p> Selecting top level mod
83、ule cpu</p><p> @N:”C:\vlogexe\ex17_2\clk_gen.v”:2:7:2:13︱Synthesizing module clk_gen</p><p> @N: CL201:“C:\vlogexe\ex17_2\clk_gen.v”:18:0:18:5︱Trying to extract state machine for register sta
84、te</p><p> Extracted state machine for register state</p><p> State machine has 9 reachable states with original encodings of:</p><p><b> 00000000</b></p><
85、p><b> 00000001</b></p><p><b> 00000010</b></p><p><b> …………</b></p><p><b> …………</b></p><p> @N:”C:\vlogexe\ex17_2
86、\register.v”:4:7:4:14︱Synthesizing module register</p><p><b> …………</b></p><p><b> …………</b></p><p> @N: CL201:“C:\vlogexe\ex17_2\machine.v”:44:0:44:5︱Tryin
87、g to extract state machine for register state</p><p> Extracted state machine for register state</p><p> State machine has 8 reachable states with original encodings of:</p><p>&l
88、t;b> 000</b></p><p><b> 001</b></p><p><b> 010</b></p><p><b> …</b></p><p> @N:”C:\vlogexe\ex17_2\datactl.v”:11:7:11:1
89、3︱Synthesizing module datactl</p><p> @N:”C:\vlogexe\ex17_2\adr.v”:10:8:10:10︱Synthesizing module adr</p><p><b> …………</b></p><p><b> …………</b></p>&
90、lt;p><b> @END</b></p><p> Process took 0h:00m:01s realtime,0h:00m:01s cputime</p><p> #Fri Jul 01 10:11:03 2009</p><p> ##########################################
91、#########[</p><p> Version8.1</p><p> Synplicity Altera Technology Mapper,Version8.1.0,Build 539R,Built May 6 2005</p><p> Copyright(C)1994-2005,Synplicity Inc. All Rights Reserv
92、ed</p><p> Automatic dissolve at startup in view:work.cup(verilog) of m_counter(counter)</p><p> Automatic dissolve at startup in view:work.cpu(verilog) of m_adr(adr)</p><p><b
93、> …………</b></p><p><b> …………</b></p><p> RTL optimization done.</p><p> @N:”C:\vlogexe\ex17_2\counter.v”:19:0:19:5︱Found counter in view:work.cpu(verilog) ins
94、t m_counter.pc_addr[12:0]</p><p> Encoding state machine work.clk_gen(verilog)-state[8:0]</p><p> Original code->new code</p><p> 00000000->000000000</p><p>
95、00000001->000000011</p><p><b> …………</b></p><p> Encoding state machine work.machine_synplcty(verilog)-state[7:0]</p><p> Original code->new code</p><
96、p> 000->00000000</p><p> 001->00000011</p><p><b> …………</b></p><p> Writing Analyst data base C:\vlogexe\ex17_2\rev_1\cpu.srm</p><p> Writing V
97、erilog Netlist and constraint files</p><p> Writing.vqm output for Quartus</p><p> Writing Cross reference file for Quartus to C:\vlogexe\ex17_2\rev_1\cpu.xrf</p><p> Writing Ve
98、rilog Simulation files</p><p> Found clock cpu︱clk with period 12.50ns</p><p> Found clock machine︱inc_pc_derived_clock with period 12.50ns</p><p> #####START OF TIMING REPORT###
99、##[</p><p> #Timing Report written on Fri Jul 01 10:11:03 2009</p><p> Top view: cpu</p><p> Requested Frequency: 80.0MHz</p><p> Wire load mode:
100、 top</p><p> Paths requested: 5</p><p> Constraint File(s):</p><p> @N:MT195︱This timing report estimates place and route data.Please look at the place and route timing re
101、port for final timing..</p><p> @N:MT197︱Clock constraints cover only FF-to-FF paths associated with the clock..</p><p> Performance Summary</p><p> ************************</
102、p><p> Worst slack in design:10.158</p><p> Requested Estimated Requested Estimate Clock Clock</p><p> Starting Clock Frequency Frequency Period Period Sla
103、ck Type Group</p><p> …………………………………………………………………………………………………………………….</p><p> cpu︱clk 80.0MHz 427.0MHz 12.500 2.342 10.158 inferred Inferrd_clkgroup_0</p><
104、;p> machine︱inc_pc_derived_clock 80.0MHz 427.0MHz 12.500 2.342 10.158 derived Inferrd_clkgroup_0</p><p> Clock Relationships</p><p> *****************************</p><p>&l
105、t;b> …………</b></p><p><b> …………</b></p><p> Detailed Report for Clock:cpu︱clk</p><p> Starting Points with Worst Slack</p><p> *****************
106、*****************</p><p> Starting Arrival</p><p> Instance Reference Type Pin Net Time Slack</p><p><b> Cl
107、ock</b></p><p> …………………………………………………………………………………………………</p><p> m_accum.accum[0] cpu︱clk stratixii_lcell_ff regout accum_0 0.095 10.158</p><p> m_accum.accum[1] cpu︱clk strat
108、ixii_lcell_ff regout accum_1 0.095 10.194</p><p><b> …………</b></p><p><b> …………</b></p><p> Ending Points with Worst Slack</p><p> ***********
109、*******************</p><p><b> …………</b></p><p><b> …………</b></p><p> Worst Path Information</p><p> *******************************</p>
110、<p> Path information for path number 1:</p><p> Requested Period: 12.500</p><p> -Setup time: 0.403</p><p>
111、 =Required time: 12.097</p><p> -Propagation time: 1.939</p><p> =Slack (critical): 10.158</p><p
112、> Number of logic level(s): 9</p><p> Starting point: m_accum.accum[0]/regout</p><p> Ending point: m_alu.alu_out[7]/adatasda
113、ta</p><p> The start point is clocked by cpu︱clk[rising]on pin clk</p><p> The end point is clocked by cpu︱clk[rising]on pin clk</p><p> Instance/Net
114、 Pin Pin Arrival No. of</p><p> Name Type Name Dir Delay Time Fan Out(s)</p><p> ……………………………………………………………………………………………………</p><p>
115、 m_accum.accum[0] stratixii_lcell_ff regout Out 0.095 0.095 –</p><p> accum_0 Net - - 0.621 - 4</p><p> m_alu.un2_alu_out_carry_0 st
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---mcs-51單片機(jī)測(cè)溫系統(tǒng)的設(shè)計(jì)
- MCS-51 SOC設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)---基于mcs-51單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
- 基于MCS-51指令集的CPU硬核設(shè)計(jì).pdf
- 基于FPGA的MCS-51核的VHDL語(yǔ)言設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)--mcs-51單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)
- 基于mcs-51流水燈設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于mcs-51的多路溫度采集控制系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--mcs-51單片機(jī)實(shí)時(shí)多通道監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于mcs-51單片機(jī)的震動(dòng)式無(wú)聲鬧鐘設(shè)計(jì)
- 兼容MCS-51指令集的軟核設(shè)計(jì).pdf
- 基于MCS-51的PLU系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)--mcs-51單片機(jī)智能溫度控制 (含全套資料)
- 基于fpga的mcs-51單片機(jī)的邏輯運(yùn)算模塊設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于mcs-51單片機(jī)的萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--MCS-51單片機(jī)智能溫度控制 (含全套資料).doc
- 畢業(yè)設(shè)計(jì)---基于mcs-51單片機(jī)的ld自動(dòng)功率控制系統(tǒng)
- mcs-51指令
- mcs-51系列單片機(jī)課程設(shè)計(jì)
- 兼容MCS-51的微控制器設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論