版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、畢業(yè)設(shè)計(論文)設(shè)計(論文)題目 基于FPGA的微處理器設(shè)計姓 名:學 號:學 院:專 業(yè):年 級指導教師: ABSTRACT摘 要本文使用結(jié)構(gòu)化編程方法,將微處理器內(nèi)核按照功能劃分為不同的模塊,采用VHDL語言設(shè)計每一個模塊的內(nèi)部功能和外圍接口,設(shè)計實現(xiàn)了一種基于FPGA芯片的微處理器系統(tǒng)。該微處理器主要由控制器、運算器和寄存器組成,具有指令控制、操作控制、時間控制和數(shù)據(jù)加工等基本功能,可實現(xiàn)四位操作數(shù)的各種運算,其指令長度為16位定長,采用了直接尋址方式。最后采用QUARTUSII對設(shè)計進行了仿真測試,結(jié)果表明設(shè)計實現(xiàn)了微處理器的主要功能。關(guān) 鍵 字:FPGA,微處理器,VHDLABSTR
2、ACTA microprocessor on FPGA is realized by using structured programming. This microprocessor core is divided into several different function modules which are designed using VHDL.The microprocessor consists of controller, arithmetic unit and registers. It realizes the instruction control, operation
3、control, time sequence control and data processing functions. The direct addressing mode is adopted. The various operations for 4bit operand can be achieved. Its instruction length is 16 bit.The design is simulated by using QUARTUSII, and the results show that the main functions of a microprocessor
4、are achieved.Key Words: FPGA, CPU, VHDLII目錄目 錄摘 要IABSTRACTII第1章 緒論11.1 背景11.2 微處理器的概況11.3 課題研究方法及技術(shù)背景11.3.1 研究方法11.3.2 技術(shù)背景21.4 課題工作內(nèi)容3第二章 微處理器體系結(jié)構(gòu)42.1 CPU的功能和構(gòu)成42.2 指令系統(tǒng)分析52.2.1 RISC 與總線結(jié)構(gòu)52.2.2 指令系統(tǒng)62.3 指令時序分析82.3.1 RISC與流水線82.3.2 程序計數(shù)器與流水線82.4 CPU整體結(jié)構(gòu)即設(shè)計思想92.4.1 CPU的外部引腳規(guī)劃92.4.2 CPU的整體框圖102.4.3 C
5、PU結(jié)構(gòu)的層次劃分11第三章 CPU數(shù)據(jù)通路設(shè)計123.1 程序計數(shù)器模塊PC123.2 程序存儲器PC_RAM133.3 指令寄存器模塊143.4 時鐘發(fā)生器模塊143.5 寄存器堆TRAM153.6 ALU模塊16第四章 CPU控制單元的設(shè)計184.1 控制器Control模塊184.2 有限狀態(tài)機FSM模塊194.2.1 有限狀態(tài)機194.2.2 利用的VHDL語言進行狀態(tài)機描述19第五章 RISC CPU的仿真驗證215.1 各模塊的組合215.2 綜合RTL電路圖215.3 RISCCPU的功能仿真驗證245.3.1 算術(shù)運算類指令驗證245.3.2 邏輯運算類指令驗證255.3.3
6、 移位類指令驗證255.3.4 LD數(shù)據(jù)輸出指令仿真265.3.5 ST運算數(shù)據(jù)存儲仿真265.4 總結(jié)27第六章 總結(jié)和展望28參考文獻29致謝錯誤!未定義書簽。附錄30山東大學威海分校畢業(yè)設(shè)計(論文)第1章 緒論1.1 背景隨著數(shù)字通信和工業(yè)控制領(lǐng)域的高速發(fā)展,超大規(guī)模集成電路的集成度和工藝水平不斷提高,要求專用集成電路(ASIC)的功能越來越強,功耗越來越低,生產(chǎn)周期越來越短,這些都對芯片設(shè)計提出了巨大的挑戰(zhàn),傳統(tǒng)的芯片設(shè)計方法已經(jīng)不能適應(yīng)復雜的應(yīng)用需求了,將整個應(yīng)用電子系統(tǒng)集成在一個芯片中(SOC), 已成為現(xiàn)代電子系統(tǒng)設(shè)計的趨勢。簡單來說,SOC是一種將多個獨立的VLSI設(shè)計拼合在一
7、起,來形成某一應(yīng)用所需的全部功能的集成電路,以其高集成度、低功耗等優(yōu)點越來越受歡迎1。中國的電子信息產(chǎn)業(yè)現(xiàn)在增長迅速,主要集中在移動通信設(shè)備、數(shù)據(jù)通信設(shè)備、計算機及消費產(chǎn)品領(lǐng)域。考慮到我國電子信息市場的特殊性,即巨大的移動通信和數(shù)字家電市場的核心芯片主要依賴進口的狀況。巨大的市場的需求決定了開發(fā)SOC的必要性,現(xiàn)在數(shù)字家電的片上系統(tǒng)研究己經(jīng)成為研究的熱點之一。研究SOC的設(shè)計方法和驗證方法具有很大的現(xiàn)實意義2-3。其中CPU是SOC的重要組成部分,可以完成簡單的數(shù)據(jù)處理,內(nèi)存的調(diào)度,中斷處理等操作。隨著百萬門級的FPGA芯片、功能復雜的IP核、可重構(gòu)的嵌入式處理器核以及各種強大EDA的開發(fā)工具
8、的迅速發(fā)展,使得設(shè)計者在EDA工具的幫助下完成整個系統(tǒng)從行為算法級到物理結(jié)構(gòu)級的全部設(shè)計,并最終將一個電子系統(tǒng)集成到一片F(xiàn)PGA中,即SOPC??梢姡琒OPC是基于FPGA解決方案的SOC,是SOC發(fā)展的新階段。1.2 微處理器的概況微處理器是計算機系統(tǒng)中非常之重要的核心組成部分,它用來控制計算機的各種操作過程,通常也被稱為CPU,即中央處理器。隨著科學技術(shù)的迅速發(fā)展,微處理器的發(fā)展也是非常迅速,它的處理能力已經(jīng)由過去的4位發(fā)展到現(xiàn)在的64位,運算能力和處理能力大大提高,應(yīng)用領(lǐng)域也從計算機系統(tǒng)擴展到各個相關(guān)領(lǐng)域,例如通信、航天和工業(yè)控制等。通常,微處理器按照處理能力可以劃分為4位、8位、16位
9、、32位和64位微處理器,它的處理能力是逐步提高的。但是,在微控制器的發(fā)展過程中,8位機始終是嵌入式低端應(yīng)用的主要機型4。現(xiàn)今市場上流行的典型的8位微控制器,可以在各種FPGA上實現(xiàn),設(shè)計靈活方便而且易于進行功能擴展。因此研究8位CPU內(nèi)核具有廣泛的現(xiàn)實意義,由于其具有較高的處理性能和較少的資源占用,故具有更加廣泛的應(yīng)用前景。1.3 課題研究方法及技術(shù)背景1.3.1 研究方法本課題使用硬件描述語言VHDL采用自頂向下的設(shè)計方法設(shè)計一個滿足要求的8位CPU內(nèi)核及外部接口,使用EDA軟件QUARTUSII軟件完成編碼、仿真驗證。自頂向下的設(shè)計方法就是設(shè)計者首先從整體上規(guī)劃整個系統(tǒng)的功能和性能,然后
10、利用功能分割手段對系統(tǒng)進行劃分,分解為規(guī)模較小、功能較簡單的局部模塊,并確立它們之間的相互關(guān)系,將設(shè)計由上至下進行層次化和模塊化,即分層次、分模塊地對電子系統(tǒng)進行設(shè)計和仿真。不難看出,采用自頂向下的設(shè)計方法實際上就是基于芯片的系統(tǒng)設(shè)計方法,這種方法有助于在設(shè)計早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計中的錯誤,提高設(shè)計成功率。1.3.2 技術(shù)背景 1. 硬件描述語言VHDL 如今,大多數(shù)的EDA工具都采用VHDL作為主要的硬件描述語言,這主要源于VHDL強大的自身功能和特點,下面介紹一下VHDL的優(yōu)點。(1) 具有強大的描述能力VHDL既可以描述系統(tǒng)級電路,也可以描述門電路;既可以采用行為描述、寄存器描述或者結(jié)構(gòu)描述,
11、可以方便地建立電子系統(tǒng)模型。(2) 具有共享與復用能力VHDL采用基于庫的設(shè)計方法,從而大大減少了工作量,縮短了開發(fā)周期。(3) 具有獨立于器件和工藝設(shè)計的能力VHDL獨立于器件的特點可以使設(shè)計人員集中精力來進行電子系統(tǒng)的設(shè)計和性能優(yōu)化,而不需要考慮其他問題。(4) 具有良好的可移植能力。VHDL的可移植性源于它是一種標準化得硬件語言,因此同一個設(shè)計描述可以被不同的工具所支持。(5) 具有向ASIC移植的能力。2. CISC指令集和RISC指令集CISC是一種為了便于編程和提高內(nèi)存訪問效率的芯片設(shè)計體系。早期的計算機使用匯編語言編程,由于內(nèi)存速度慢且價格昂貴,使得CISC體系得到了用武之地。它
12、的設(shè)計目的是要用最少的機器語言指令來完成所需的計算任務(wù)。后來 功能需求越來越豐富,因此越來越多的復雜指令被加入到指令系統(tǒng)中,但是還必須保持著前向的兼容性。內(nèi)容的不斷擴充和兼容性的考慮,導致龐大的CISC指令系統(tǒng)形成了。在20世紀90年代中期之前,大多數(shù)的微處理器都采用CISC體系包括Intel的80x86和Motorola的6sK系列等6。CISC 體系結(jié)構(gòu)幾乎沒有考慮流水線的因素,使得指令執(zhí)行起來耗時而且尋址復雜。1975年,IBM的設(shè)計師提出了一種新的體系結(jié)構(gòu)和指令集設(shè)計方案,這就是RISC體系結(jié)構(gòu)。典型的RISC處理器具有以下特點:(1) 指令功能簡單,各指令的復雜度分布均衡,有利于形成
13、流水線;(2) 控制電路簡單,多采用硬連線方式來實現(xiàn)。因為不需要額外的存取微程序存儲器來完成指令的執(zhí)行,因此可以直接使用硬連線方式來設(shè)計;(3) 指令定長,指令格式簡單,指令編碼固定。這樣字段固定,使操作碼得譯碼與操作數(shù)的存取可以同時執(zhí)行,使得控制單元的設(shè)計簡單化;(4) ALU指令和訪存指令分開,并且訪存種類很少。(5) 以寄存器對寄存器的運算為主。寄存器對寄存器的運算有助于減少對存儲器的訪問次數(shù),提高數(shù)據(jù)的存取速度7-8。1.4 課題工作內(nèi)容本文一共分為七章。各章節(jié)內(nèi)容安排如下:第一章 緒論。第二章 微處理器的體系結(jié)構(gòu)。研究了CPU的整體設(shè)計,指令系統(tǒng)和時序分析以及流水線的實現(xiàn)。第三章 C
14、PU數(shù)據(jù)通路設(shè)計。詳細介紹了通路模塊中的程序計數(shù)器、指令寄存器、程序存儲器等的具體設(shè)計和功能實現(xiàn)。第四章 CPU控制單元的設(shè)計。詳細介紹了控制單元中的控制器和狀態(tài)機的設(shè)計和功能實現(xiàn)。第五章 CPU的仿真驗證。驗證CPU的部分功能。第六章 總結(jié)和展望。第二章 微處理器體系結(jié)構(gòu)2.1 CPU的功能和構(gòu)成CPU是計算機的核心組成部分。計算機進行信息處理可分為以下兩個步驟9。(1) 將數(shù)據(jù)和程序(即指令序列)輸入到計算機的存儲器中;(2) 從第一條指令的地址開始執(zhí)行該程序,得到所需的結(jié)果,結(jié)束運行。 CPU的作用是協(xié)調(diào)和控制計算機的各個部件,并執(zhí)行程序的指令序列,使其有條不紊的進行,因此必須具備以下基
15、本功能:取指令:當程序已在存儲器中時,首先根據(jù)程序入口地址取出一條程序,為此要發(fā)出指令的地址及相關(guān)的控制信號;分析指令:即指令譯碼,既對當前所取的指令進行分析,指出它要求什么操作,并產(chǎn)生相應(yīng)的操作所需要的控制命令;執(zhí)行指令:根據(jù)分析指令時產(chǎn)生的“操作命令”形成相應(yīng)的操作控制序列,通過運算器、存儲器及輸入輸出的執(zhí)行,實現(xiàn)每條指令的功能,其中包括對運算結(jié)果的處理及下條指令地址的形成。將CPU的功能進一步細化,可以概括如下。(1) 能對指令進行譯碼并執(zhí)行規(guī)定動作;(2) 可以進行算術(shù)和邏輯運算;(3) 能與存儲器和外設(shè)交換數(shù)據(jù);(4) 提供整個系統(tǒng)所需的控制。盡管各種CPU的性能指標和結(jié)構(gòu)細節(jié)各不相
16、同,但它們所能完成的基本功能相同,簡化CPU內(nèi)部結(jié)構(gòu)如圖2-1所示。圖2-1 簡化CPU內(nèi)部結(jié)構(gòu)2.2 指令系統(tǒng)分析指令系統(tǒng)結(jié)構(gòu)是微處理器體系結(jié)構(gòu)的一個重要部分,是微處理器設(shè)計的基礎(chǔ)。指令格式、尋址方式和指令系統(tǒng)是指令系統(tǒng)結(jié)構(gòu)的重要方面。目前主流CPU指令可以分為RISC和CISC,由上節(jié)介紹可知,RISC微處理器指令系統(tǒng)的指令種類少而經(jīng),尋址方式簡單,指令格式固定,所以本次設(shè)計采用RISC指令系統(tǒng)2.2.1 RISC 與總線結(jié)構(gòu)早期的計算機一般都采用馮.諾依曼(Von Neumann)結(jié)構(gòu),CISC架構(gòu)的微處理器常采用這種結(jié)構(gòu)。它是在同一個存儲空間取指令和數(shù)據(jù),采用單地址總線結(jié)構(gòu),即程序存儲
17、器和數(shù)據(jù)存儲器共用一條地址總線,限制了工作帶寬,使得控制電路復雜,功耗較大10-11。結(jié)構(gòu)見圖2-2所示:圖 2-2 馮.諾依曼結(jié)構(gòu)圖 這種結(jié)構(gòu)有兩個明顯的缺點:(1) CPU中控制器和運算器的速度必須與存儲器的速度相匹配;(2) 指令和數(shù)據(jù)的流動都通過同一條總線,使指令和數(shù)據(jù)的獨立性消弱;目前,RISC架構(gòu)的微處理器都采用哈佛結(jié)構(gòu),這種結(jié)構(gòu)具有分離地址總線的兩個存儲器,其中一個放程序,另一個放數(shù)據(jù),其指令和數(shù)據(jù)空間完全分開,可以同時訪問,且一次讀出,簡化控制電路,提高數(shù)據(jù)的吞吐率12。結(jié)構(gòu)如圖2-3所示。 圖2-3 哈佛結(jié)構(gòu)圖 這種結(jié)構(gòu)的優(yōu)點是:
18、(1) 允許數(shù)據(jù)從程序存儲器傳遞到SRAM,該功能也允許從程序存儲器 中讀取數(shù)據(jù)表。這對現(xiàn)代微控制器應(yīng)用十分重要,因為為了使掉電 后數(shù)據(jù)表不丟失,就要將它放在程序存儲器中,RISC架構(gòu)很好地解 決了這個問題。(2) 讀取指令和存儲器數(shù)據(jù)交換可以在多步流水線中同時進行,這在馮. 諾依曼單地址總線結(jié)構(gòu)中很難實現(xiàn)。基于以上兩種體系結(jié)構(gòu)特點的比較,本文設(shè)計的微處理器器采用了哈佛結(jié)構(gòu)的體系結(jié)構(gòu)。首先,哈佛結(jié)構(gòu)的指令總線和數(shù)據(jù)總線分開,可以使用不同位寬的指令和數(shù)據(jù),還有一個最大好處就是可以預(yù)取指令,這樣對流水線是很有用的。其次,該微處理器實現(xiàn)了兩級指令流水線,采用哈佛結(jié)構(gòu)可使流水實現(xiàn)的難度大為降低,在采用
19、流水線后,能夠有效地提高指令的執(zhí)行速度。再次,該微處理器采用了硬布線邏輯代替微程序控制的方法,提高了指令的執(zhí)行速度和效率。2.2.2 指令系統(tǒng)本文設(shè)計的微控制器采用兩級流水線、指令長固定、指令密度適中、控制單元簡單的類似RISC指令集,本文自定義指令集,該指令集僅有20條指令,尋址方式簡單。每條指令的字長都是16位,包含足夠的信息:指令操作碼,源操作數(shù)地址,目的操作數(shù)地址,立即數(shù)13-14。1、 指令集表1 是本文所涉及的CPU所有指令的一個集合指令名稱指令操作影響標志位周期算術(shù)與邏輯類指令A(yù)DD R1,R2Add Two RegisterC1SUB R1,R2Sub Two Register
20、Z1AND R1,R2And Two RegisterZ1OR R1,R2Or Two RegisterZ1位操作指令LSL R1Logical Shift LeftNone1LSR R1Logical Shift RightNone1數(shù)據(jù)傳送類指令MOV R1,#IIMove Between RegisterNone1LD R1Load Immediate from RegisterNone1SD R1Store Result to RegisterNone1停機指令SLEEPSleep(Wait for )NoneAny2、尋址方式本文指令系統(tǒng)的尋址方式為下面兩種直接尋址方式:(1) 單一
21、寄存器尋址。操作數(shù)在目的寄存器;(2) 雙寄存器尋址。操作數(shù)分別在目的寄存器和源操作寄存器中。3、指令格式定義正如以前所提到的,RISC總是有固定長度以便于譯碼。對設(shè)計的微處理,每個指令都是固定的16位長度,其中操作碼占用16 位指令字的高4 位。所有的指令碼都很容易譯碼。對兩個寄存器的指令,d選擇目的寄存器,:r選擇源寄存器,4位可以尋址16個寄存器,這種指令格式包括ADD,SUB,AND,OR。1514131211109876543210rrrrdddd對于僅需要一個寄存器的指令,d用來尋址目標寄存器。這種指令格式包括LD,LSL,LSR指令。1514131211109876543210d
22、ddd對于立即數(shù)指令,指令中間8位是8位常數(shù),其中H 代表常數(shù)的高四位,L代表常數(shù)的低四位,d用來尋址目的寄存器。這種指令格式包括MOV,SD。1514131211109876543210LLLLHHHHdddd4、指令編碼 確定了指令的格式,就可以對指令進行編碼,這樣指令就有唯一的身份識別。指令編碼結(jié)果如表2所示。 表2 指令編碼指令類型指令機器碼ADD0001 0000r r r rd d d dSUB0010 0000r r r rd d d dAND0011 0000r r r rd d d dOR0100 0000r r r rd d d dLSL0101 00000000 d d
23、d dLSR011000000000d d d dMOV0111LLLLHHHHd d d dST100000000000d d d dLD100100000000d d d dSLEEP10110000000000002.3 指令時序分析2.3.1 RISC與流水線指令的執(zhí)行分成兩個階段:取指階段和執(zhí)行階段。在取指階段,指令機器碼被取到指令寄存器,控制單元通過譯碼知道這是個什么樣的指令,需要執(zhí)行什么樣的操作,需要什么操作數(shù);在執(zhí)行階段當前指令以及取指完畢,上一條指令被執(zhí)行。這樣按順序第1條指令執(zhí)行完再取第2條指令,第2條執(zhí)行完在取第3條指令的順序執(zhí)行方式執(zhí)行一條指令最少需要兩個時鐘周期,如果
24、執(zhí)行10條指令那么就得需要10個時鐘周期,顯然這樣指令的執(zhí)行效率不高。為了解決這個問題,本次設(shè)計中引入了流水線(pipeline)操作。8位CPU采用兩級流水線技術(shù),指令的流水線可以用圖2-4來簡單的示意:圖2-4 流水線指令執(zhí)行由圖可以看出,盡管每條指令的完成需要兩個周期的時間,但是在流水線結(jié)構(gòu)中,當前指令的取值周期和上一條指令的執(zhí)行周期在時間上是重疊的,對于這種并行操作,從平均角度來看,相當于一個周期內(nèi)完成一條指令,因此可以大大提高指令的運行速度15。RISC架構(gòu)的處理器,每條指令有固定的長度,指令格式只有簡單的幾種,指令功能不交叉,尋址方式也簡單,所以更加有利于實現(xiàn)流水結(jié)構(gòu)。為了降低執(zhí)行
25、每條指令所需時鐘數(shù),本文也采用兩級流水,其功能分別定義為:第一級,取指;第二級,時鐘前半周期控制器譯碼、發(fā)出控制信號,時鐘后半周期進行對寄存器堆TRAM進行讀操作、ALU計算。這樣,很顯然也能降低執(zhí)行指令所需的時鐘數(shù),取指、執(zhí)行只用了一個時鐘。在時鐘上升沿PC產(chǎn)生進入PCRAM的地址,由于PCRAM 有反應(yīng)時間,經(jīng)過一段很短的時間讀出指令,在下一個時鐘上升沿到來時,指令寄存器鎖存指令,然后開始對指令進行譯碼,并產(chǎn)生操作數(shù)、目的存儲器寄存器地址、寫信號及各種控制信號。2.3.2 程序計數(shù)器與流水線程序計數(shù)器(PC)是程序中尋址取得指令的特殊單元。正是靠PC的移動,CPU才能一條一條的執(zhí)行指令。同
26、時,程序計數(shù)器也是和流水線密切相關(guān)的單元。在程序開始執(zhí)行前,CPU將它的起始地址送入PC,當指令執(zhí)行時,CPU 將自動修改PC 的內(nèi)容,所以PC中的內(nèi)容總是下一條指令的地址。由于指令通常是順序執(zhí)行的,所以修改的過程通常只是簡單的PC加1。表2說明了在引入流水線后PC的具體工作情況:表3 指令執(zhí)行中PC值的變化情況時鐘周期Reset周期1周期2周期3周期4PC0 1234第一條指令讀取指令0執(zhí)行指令0第二條指令讀取指令1執(zhí)行指令1第三條指令讀取指令2執(zhí)行指令2表3表明,在系統(tǒng)復位時,PC內(nèi)的值清0,第一個時鐘周期,指令寄存器取PC為0的地址的指令,同時PC的值加1;第二個時鐘周期,執(zhí)行0地址的指
27、令,同時讀取地址1的指令,同時PC的值加1;第三個時鐘周期,重復這樣的過程。這樣可以得到結(jié)論:如果當前CPU正在執(zhí)行的是第N條指令,那么指令寄存器正在讀取的是N+1條指令,此時PC的值應(yīng)該是N+2。2.4 CPU整體結(jié)構(gòu)即設(shè)計思想在設(shè)計CPU 之前整個結(jié)構(gòu)的特性及由哪些模塊組成,這些模塊之間的互連關(guān)系以及整個CPU的最后輸出信號等都是要事先定義好的.。2.4.1 CPU的外部引腳規(guī)劃從CPU外部看整個輸入輸出如圖2-5圖2-5 CPU外部引腳信號該CPU有5個輸入引腳,1個結(jié)果輸出端口以及一個運算溢出信號。系統(tǒng)的時鐘信號將直接驅(qū)動驅(qū)動整個CPU。WR信號是系統(tǒng)的異步指令輸入信號,高電平有效。當
28、WR信號有效時,整個CPU進入指令輸入狀態(tài),當WR低電平時CPU進入指令讀取并完成指令操作的狀態(tài),當CPU完成全部輸入指令時進入停機狀態(tài),此時Start信號重新啟動CPU,使其進入等待狀態(tài)。2.4.2 CPU的整體框圖系統(tǒng)的頂層結(jié)構(gòu)模塊圖如圖2-6圖2-6 系統(tǒng)的頂層結(jié)構(gòu)模塊圖 該模塊包含了系統(tǒng)的主要模塊及它們之間的連接關(guān)系。圖中的一個一個的模塊代表了各個功能模塊,將在下面的章節(jié)中分別做詳細的設(shè)計說明。每個模塊都將按照EDA設(shè)計中自下而上的設(shè)計原則分別獨立設(shè)計。有些模塊是比較簡單的像指令寄存器(IR),有些模塊則是比較難的像ALU模塊和控制單元模塊。 在設(shè)計微處理器的功能模塊之前,需
29、要決定如何邏輯實現(xiàn)和處理器鎖存數(shù)據(jù)。微處理器中有兩種不同的邏輯元件:(1) ALU、MUX、CONCROL單元的元件都是組合邏輯電路。它們的輸出僅僅依賴于當前的輸入狀態(tài),沒有內(nèi)部存儲功能;(2) 寄存器堆、臨時寄存器都是狀態(tài)單元,它的輸出不僅依賴于輸入,還有其自身內(nèi)部的狀態(tài)。時鐘用來決定狀態(tài)何時被寫入,一個狀態(tài)可以在任意時刻讀取。微處理器的時鐘采用邊沿觸發(fā)的方式,整個系統(tǒng)采用單時鐘電路,即提供一個系統(tǒng)時鐘,每當時鐘邊沿到來的時候,向狀態(tài)單元寫入數(shù)據(jù)。整個系統(tǒng)可以分為兩個單元:取指單元,執(zhí)行單元。取指單元負責取下條指令,執(zhí)行單元負責執(zhí)行當前指令。取指單元和執(zhí)行單元共同構(gòu)成了CPU的微控制單元。取
30、指單元的第一個模塊是程序計數(shù)器(PC),PC中是下條要執(zhí)行的指令的地址,它是指向程序存儲器單元(PROM)來尋址指令的??刂颇K是對從指令寄存器(IR)送出指令進行譯碼從而發(fā)出適當?shù)目刂菩盘枅?zhí)行程序的。系統(tǒng)中包括了很多寄存器的設(shè)計包括指令寄存器(IR),程序計數(shù)器(PC),這些寄存器大都在我們頂層可見的模塊的內(nèi)部,系統(tǒng)的工作也可以看作就是數(shù)據(jù)在這些寄存器之間的“遷移”,也即寄存器內(nèi)容的遷移。微處理器的功能就是體現(xiàn)在這些這些數(shù)據(jù)是如何傳遞的,在傳遞前的處理是如何處理的,所有這一系列寄存器數(shù)據(jù)之間的遷移轉(zhuǎn)換就組成了微處理器。2.4.3 CPU結(jié)構(gòu)的層次劃分正確合理的劃分系統(tǒng)是所有數(shù)字系統(tǒng)設(shè)計成功的
31、關(guān)鍵。子系統(tǒng)的劃分過程就是把總體任務(wù)劃分程若干分任務(wù)的過程。本設(shè)計將CPU分解為兩大子系統(tǒng):數(shù)據(jù)通路和控制通路。這種劃分將CPU的運算、執(zhí)行單元與控制部件分離開,是非常合理、自然的。數(shù)據(jù)通路和控制通路這兩大部分又可以細化為更小的模塊,ALU模塊(算術(shù)邏輯單元)、PC_RAM模塊(程序存儲器)和IR(指令寄存器)、TRAM(寄存器堆)屬于數(shù)據(jù)通路部分,ALU內(nèi)部又包含更小的模塊(加、減、與、或、移位模塊);控制模塊屬于控制通路部分,其中控制模塊又由FSM(狀態(tài)機)和CONTROL(控制器)構(gòu)成。具體的模塊功能實現(xiàn)將在下面兩章中詳細介紹。第三章 CPU數(shù)據(jù)通路設(shè)計從這一章開始將詳細介紹整個CPU的
32、細化設(shè)計模塊。通過上一章對CPU的結(jié)構(gòu)劃分,已經(jīng)知道CPU的整個設(shè)計分為兩個部分:數(shù)據(jù)通路和控制單元。在這一章中將細分數(shù)據(jù)通路模塊,數(shù)據(jù)通路是CPU中的執(zhí)行部件,數(shù)據(jù)傳輸、存儲、處理都是在數(shù)據(jù)通路中完成的。在整個CPU的結(jié)構(gòu)框圖中,除了控制單元部分,其余部分都是數(shù)據(jù)通路部分,包括程序計數(shù)器PC、程序存儲器PC_RAM、指令寄存器IR、寄存器堆TRAM、數(shù)據(jù)選擇器ALUMUX和算術(shù)與邏輯單元ALU。設(shè)計數(shù)據(jù)通路,有兩種不同的設(shè)計方案。第一種是在所有需要傳送數(shù)據(jù)的部件創(chuàng)建一條直接通路,采用多路選擇器或者緩沖器為那些有多個數(shù)據(jù)源的寄存器從多個可能的輸入中選擇一個,這種方案適用于規(guī)模比較小的微處理器設(shè)
33、計。另一種方案是在微處理器內(nèi)部創(chuàng)建一條總線,并且在各個部件之間使用總線傳數(shù)據(jù)。本設(shè)計采用的是第一種方案的設(shè)計方法。下面將一一介紹數(shù)據(jù)通路的各個模塊功能及其實現(xiàn)。3.1 程序計數(shù)器模塊PC程序計數(shù)器(PC)作為指向指令地址“指針”,決定著下一條要執(zhí)行的指令。正是有了PC的移動和變化,CPU才能按一定的順序或預(yù)想的情況進行指令的執(zhí)行。程序計數(shù)器PC中存放指令存儲器的地址,當一條指令被執(zhí)行時,程序計數(shù)器存放下一條指令的地址。在正常工作的條件下,控制信號選擇PC+1作為下一個PC的值輸出;當執(zhí)行JMP指令時,選擇來自指令中的跳轉(zhuǎn)地址決定新的PC值,但是在本次設(shè)計中沒有涉及到。圖3-1 PC模塊外部接口
34、信號圖3-1所示是從外部看的PC模塊的接口。其中輸出的PC是8BitS寬的,因此PC模塊可以尋址獨立的256個單元。PC_OUT地址輸出信號是直接與程序存儲器PCRAM相連的。PC_INC控制信號來自控制單元,若PC_INC有效則PC將執(zhí)行加1操作。EN信號是程序計數(shù)器PC的使能控制信號,只有當該信號有效時PC的相應(yīng)才能操作才能執(zhí)行。3.2 程序存儲器PC_RAM程序存儲器是存儲微處理器程序,即能執(zhí)行特定功能的一組指令組合。圖3-2顯示了程序存儲器的結(jié)構(gòu)圖。圖3-2 程序存儲器示意圖在設(shè)計程序存儲器模塊時,本文是自行設(shè)計寄存器堆型的存儲器,直接使用一個數(shù)組存放二進制數(shù)據(jù),通過 VHDL 編寫一
35、個一定長度的數(shù)組實現(xiàn)。因為程序計數(shù)器可以尋址到256條指令,所以程序存儲器也必需可以至少存放 128 條16 位的指令,這樣只需申請一個變量 Ram,有256個元素,每個元素16 位即可。第一個數(shù)組元素下標表示存貯器的0 號地址,第二個數(shù)組元素下標表示1 號地址,以此類推至第256個數(shù)組元素的下標,即11111111 號存貯器地址。程序存儲器是一個可讀可寫的模塊,其輸入端口接入外圍程序和地址輸入端口,由 WR 異步控制其讀寫狀態(tài),WR 高電平有效。當 WR 有效時,程序存儲器為寫狀態(tài),即將輸入程序存入其輸入地址對應(yīng)的存儲單元中, 即執(zhí)行操作 ram(conv_integer(waddr) &l
36、t;= wdata;當 WR 為低電平時,程序存儲器處于讀狀態(tài),其將程序計數(shù)器輸出地址 PC_OUT上 對應(yīng)的存儲單元中的指令輸出,即執(zhí)行操作instruction <= ram(conv_integer(pc_in)。這樣就可以通過存貯器數(shù)組元素和輸入地址間的相互賦值實現(xiàn)“讀存儲器”,“寫存儲器”,既簡單又容易實現(xiàn)。圖3-3程序存儲器外部接口信號程序存儲器模塊的外部接口信號如圖3-3所示,其中讀狀態(tài)地址來自PC模塊,輸出指令直接送往指令寄存器模塊,寫狀態(tài)地址來自CPU輸入地址,寫入指令存儲到對應(yīng)地址單元中。3.3 指令寄存器模塊指令寄存器在時鐘上升沿鎖入從程序存儲器PC_RAM中讀取的
37、指令,并保持到時鐘的下一個上升沿,一條指令的執(zhí)行從指令寄存器鎖入指令開始。所以指令寄存器的作用是暫時存放取到的指令,是從程序存儲器到控制單元和ALU模塊中的中間緩沖模塊。通過上一章的流水線分析部分、指令時序分析部分和程序存儲器模塊分析部分可以得到,在指令寄存器模塊中,當前存放的并不是CPU正在執(zhí)行的指令,而是下一條指令。同樣道理可知,送入控制單元并進行指令譯碼也是下一條指令。這是由兩級流水線的架構(gòu)決定的,在兩級流水線中,CPU在執(zhí)行當前指令的同時指令寄存器取到下一條指令,并且控制器將下一條指令進行譯碼。圖3-4指令寄存器外部接口圖3-4所示,指令寄存器的指令流向是:4位操作碼IR指令送往控制單
38、元已做譯碼使用,而根據(jù)不同指令分離出來的要操作的立即數(shù)DATA、源操作寄存器RR、目的操作寄存器RD送到寄存器堆TRAM模塊。指令寄存器外部輸入控制信號en是來自控制單元的輸入信號,En高電平有效,與PC模塊的使能en信號功能上基本一致,它控制著指令寄存器是否可以從程序存儲器中加載指令。當en有效時指令寄存器才能更新來自程序存儲器的指令。3.4 時鐘發(fā)生器模塊時鐘發(fā)生器TIME_CTRL利用時鐘信號CLK生成從時鐘信號CLKR,并送往CPU的寄存器堆TRAM中,作為其進行讀寫操作的時鐘信號。CLKR是將CLK延遲半個周期產(chǎn)生的,有利于流水線的完成。時鐘發(fā)生器的外部接口如圖3-5。圖3-5 時鐘
39、發(fā)生器的外部接口3.5 寄存器堆TRAM 寄存器堆與程序存儲器設(shè)計相同,都是直接使用一個數(shù)組存放二進制數(shù)據(jù),通過 VHDL 編寫一個一定長度的數(shù)組實現(xiàn),同樣可以通過集成器數(shù)組元素和輸入地址間的相互賦值實現(xiàn)“讀存儲器”,“寫存儲器”。在本次CPU設(shè)計中TRAM模塊用以完成以下幾個操作:1、 將立即數(shù)寫入指定寄存器中。2、 將指定目的操作寄存器地址中的數(shù)據(jù)讀出并輸出。3、 將指定源操作寄存器地址中的數(shù)據(jù)讀出。 圖3-6 寄存器堆TRAM外部接口 如圖12所示,fclkr時鐘信號是來自時鐘發(fā)生器,控制寄存器是否能進行讀寫操作。在CPU時鐘的前半周期,控制器進行譯碼并發(fā)出控制信號,為操作的施行鋪好路,
40、在時鐘的后半周期,也就是從時鐘信號fclkr的上升沿,TRAM在控制信號ram _ctrl、load、store的控制下進行讀寫操作。If (rising_edge(fclkr) then If (fstore =1) then ram (conv_integer(fromrd)<=fR0 /存儲上條指令運算得到的結(jié)果 elsif (fromram_ctrl = "11") thentoreg_rr<=ram(conv_integer(fromrr); toreg_rd<=ram(conv_integer(fromrd); /將指定寄存器的值輸出 elsi
41、f (fromram_ctrl = "01") then ram (conv_integer(fromrd)<=value2; / 存儲立即數(shù)到目的寄存器從這段代碼可以看出,當控制信號store有效時,TRAM可以完成將運算器的結(jié)果寫入目的操作寄存器中,若無效,則判斷控制信號ram_ctrl的值,根據(jù)不同的控制值可以將寄存器的儲存值分別寫入目的操作寄存器和源操作寄存器中,可以將立即數(shù)寫入目的操作寄存器中,可以讀出指定寄存器的值并輸出。3.6 ALU模塊ALU單元即算術(shù)運算單元,是CPU的核心處理的單元,不但能完成算術(shù)和邏輯運算,而且很多數(shù)據(jù)都要通過ALU送出到輸出端口
42、并輸出。在ALU中還可以細化成兩個功能單元:取操作數(shù)單元、執(zhí)行運算單元。取操作數(shù)單元負責對ALU的兩個操作數(shù)A和B的取值,執(zhí)行運算單元負責將取到的操作數(shù)進行相應(yīng)的操作。ALU整體框圖如圖37所示。圖3-7 ALU整體結(jié)構(gòu)圖算術(shù)邏輯單元ALU 是絕大多數(shù)指令必須經(jīng)過的單元,所有的運算都在ALU 中完成。取操作數(shù)單元在數(shù)據(jù)選擇的控制信號控制下,可以選取一個或者兩個操作數(shù)輸入執(zhí)行單元。在執(zhí)行運算單元中,根據(jù)指令的類型對兩個或一個8位輸入數(shù)據(jù)進行運算。4 位算術(shù)控制輸入信號alu_ctrl決定兩個輸入數(shù)據(jù)的算術(shù)操作類型,可以有16 種不同的功能組合。2位邏輯控制輸入信號Logic決定一個輸入數(shù)據(jù)的邏輯
43、操作類型,可以有4種不同的功能組合。在ALU的設(shè)計中主要還是根據(jù)指令來的,ALU所能執(zhí)行的指令是很多的,基本的指令可以分為4類,即ADD,SUB,LOGIC,LSL、LSR。指令A(yù)DD分為不帶進位和帶進位加法操作:SUB指令組分為執(zhí)行不帶進位和帶進位減法操作;LOGIC指令組分為或和與的邏輯操作;LSL指令組分為帶進位的循環(huán)右移和不帶進位的算術(shù)右移操作; LSR指令組分為帶進位的循環(huán)左移和不帶進位的算術(shù)左移操作;在本次設(shè)計中只完成加法、減法、與、或、不帶進位的左移和不帶進位的右移的運算功能,并輸出溢出信號。Process (a1, b1, fromalu_ctrl , fromlogic) B
44、egin case fromalu_ctrl is end case; case fromlogic is end case;end process;Process (clk) begin if (rising_edge(clk) then if fouten ='0' then R<="ZZZZZZZZ" elsif fload ='0' then R<=r1(7 downto 0); else R<=a1(7 downto 0); 由這段代碼可以看出ALU模塊是雙進程模塊,操作數(shù)運算是不受時鐘控制的,由控制信號直接控制并
45、計算。但是結(jié)果輸出是在下一個時鐘信號的上升沿進行的,這樣可以控制輸出的時間,保證其輸出正確,而且輸出控制信號outen控制CPU是否輸出數(shù)據(jù),若outen控制信號有效,則再判斷需要輸出何種類型的數(shù)據(jù),若load控制信號有效則將輸入數(shù)據(jù)直接輸出,完成從指定寄存器讀出數(shù)據(jù)的操作,若無效則將算術(shù)或邏輯運算的結(jié)果輸出。ALU模塊外部接口如圖3-9所示。圖3-11 ALU模塊外部接口第四章 CPU控制單元的設(shè)計在CPU中還有一個重要的模塊,即控制單元模塊,其功能是得到當前指令,得到需要的數(shù)據(jù),在正確的時間、用正確的值設(shè)置所有相關(guān)的控制信號,控制CPU的取指、譯碼和指令執(zhí)行等操作。因此這個模塊在整個CPU
46、的設(shè)計中是最關(guān)鍵的也是最難精準實現(xiàn)的模塊。流水線操作和數(shù)據(jù)通路各個模塊的所有控制信號都是來自控制單元??刂茊卧淖饔镁褪菍χ噶钭g碼,在不同的狀態(tài)發(fā)出不同的控制信號來處理流水線過程,另一方面在合適的時間對數(shù)據(jù)通路發(fā)出正確的控制信號來控制指令的正確執(zhí)行。為了實現(xiàn)控制模塊的功能,可以將該模塊細化為兩個部分,即控制指令操作的控制器和控制狀態(tài)轉(zhuǎn)換的有限狀態(tài)機(FSM)。4.1 控制器Control模塊控制器則是一個微處理器的核心部件之一,在每一個時鐘周期的上升沿,指令寄存器IR 從內(nèi)存中讀取指令字后,送入控制器中,控制器能夠根據(jù)輸入的4位操作碼進行譯碼,為其他每個功能單元產(chǎn)生相應(yīng)的主控制信號,并發(fā)出信號
47、狀態(tài)信號控制狀態(tài)機的狀態(tài)轉(zhuǎn)換,最終實現(xiàn)對CPU各個功能單元的控制,實現(xiàn)指令的順利執(zhí)行。圖4-1 控制器Control外部接口控制器根據(jù)4位操作碼IR進行譯碼,通過指令譯碼給出其它各單元的操作控制信號,包括ALU 單元的算術(shù)和邏輯運算控制信號、移位控制信號,操作數(shù)輸入選擇信號、結(jié)果輸出信號,TRAM 的讀寫控制、送入狀態(tài)機得停機控制信號。4.2 有限狀態(tài)機FSM模塊4.2.1 有限狀態(tài)機狀態(tài)機是CPU的又一個控制核心部件,是實現(xiàn)高效率高可靠邏輯控制的重要途徑,用于產(chǎn)生一系列的控制信號,啟動或停止某些部件。程序計數(shù)器PC值的改變、指令寄存器取指令以及CPU的復位等操作都是由狀態(tài)機來控制的。狀態(tài)機F
48、SM的當前狀態(tài),由變量state記錄。從狀態(tài)機的信號輸出上分,有Moore型和Mealy型兩種狀態(tài)機。從輸出時序上看,前者屬于同步狀態(tài)機,而后者屬于異步狀態(tài)機。Mealy型狀態(tài)機的輸出是當前狀態(tài)和所輸入信號決定的,它的輸出是在輸入變化后立即發(fā)生的,不依賴時鐘的同步16。Moore型狀態(tài)機的輸出則僅由當前狀態(tài)控制,這類狀態(tài)機在輸入發(fā)生變化還必須等待時鐘的到來,時鐘使狀態(tài)發(fā)生變化時才導致輸出變化。在本次CPU設(shè)計中,將采用Mealy型狀態(tài)機來實現(xiàn)時序和狀態(tài)的轉(zhuǎn)換。在整個CPU的狀態(tài)機中共設(shè)計了3個狀態(tài):執(zhí)行(exe),待機(sp),停機(tj)。圖16是各個狀態(tài)的狀態(tài)轉(zhuǎn)移圖。圖4-2 狀態(tài)轉(zhuǎn)移圖4
49、.2.2 利用的VHDL語言進行狀態(tài)機描述本次設(shè)計采用2個進程模塊,一個模塊用同步時序描述狀態(tài)轉(zhuǎn)移;另一個模塊用組合邏輯判斷狀態(tài)的邏輯輸出,其VHDL代碼如下:process (clk,wr,input,start)begin /第一個進程模塊用同步時序描述狀態(tài)轉(zhuǎn)移if wr = '1' thenstate <= sp; / 當寫信號有效時程序?qū)懭耄藭r狀態(tài)機保持待機elsif ( rising_edge(clk) then case state iswhen exe=>/ 利用case語句對每一個狀態(tài)建立一項case語句的分支 If input ='1
50、39; thenstate <= tj;elsestate <= exe;end if; /通過if-then-else語句指定相應(yīng)次態(tài)when sp =>when tj => end case;end if;end process;process (state)begin /第二個模塊用組合邏輯判斷狀態(tài)的邏輯輸出case state is /當狀態(tài)發(fā)生改變時,利用case語句輸出對應(yīng)狀態(tài)的信號when exe =>when sp =>when tj =>end case;end process;第五章 RISC CPU的仿真驗證5.1 各模塊的組合前
51、面兩章將CPU細化為多個功能模塊,為了使其能集合成一個完整的系統(tǒng)共同完成特定的功能執(zhí)行,各個模塊就需要組合起來配合工作。在構(gòu)建頂層文件的方法有語言描述和原理圖法。原理圖法就是將CPU中的每個綜合模塊以元件的形式,通過互連線將各個模塊像電路上畫原理圖一樣連接起來,系統(tǒng)規(guī)模比較大時,各個模塊連起來的互連線很多,操作起來很不方便,同時也容易出錯。在本次設(shè)計中由于各個模塊的互連信號比較多,所以將采用硬件語言描述的方法將各個模塊連接起來,即用VHDL語言將各個模塊組合起來從而形成一個最頂層的模塊。用VHDL語言引用一個模塊時是先用component來聲明這個模塊,模塊的接口要用port關(guān)鍵詞聲明,例如對
52、程序計數(shù)器模塊的引用聲明如下:COMPONENT pc IS PORT ( clk ,fen: IN STD_LOGIC ; fromnrst : IN STD_LOGIC ; frompc_inc : IN STD_LOGIC ; pcout : out unsigned(7 downto 0) ) ; END COMPONENT pc;對程序計數(shù)器模塊的聲明后再對該模塊的引用,引用時用的關(guān)鍵詞是 PORT MAP,通過如下程序段完成模塊引用: U1: pc PORT MAP (clk => clk,fen => en,fromnrst => nrst,frompc_inc
53、 => pc_inc, pcout => pc_out);各個模塊間的互連信號是用用signal類型的變量聲明的。SIGNAL en, nrst ,clkr: STD_LOGIC; SIGNAL outen :STD_LOGIC;將所有的功能模塊組合連接起來就成為一個整體,作為整個仿真的頂層模塊。5.2 綜合RTL電路圖利用硬件語言法構(gòu)建好頂層文件,把所有模塊組裝成了一個整體,在對這個整體進行編譯和綜合成功后即可對它進行功能仿真。用QUARTUSII對設(shè)計模塊進行編譯及綜合后生成的RTL綜合電路圖如圖51示。圖51 RTL綜合電路圖綜合后的電路結(jié)構(gòu)由程序計數(shù)器PC模塊、程序存儲器PC_RAM模塊、指令寄存器IR_RAM模塊、寄存器堆TRAM模塊、數(shù)據(jù)選擇器ALUMUX模塊、運算器ALU模塊、控制器CONTROL模塊、狀態(tài)機FSM模塊和時鐘發(fā)生器TIME_CTRL模塊組成。各模塊的輸出信號說明如表4所示。表4 各模塊引腳說明模塊產(chǎ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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度手機屏幕保護膜定制施工合同
- 2025年度個人對個人房產(chǎn)抵押借款合同3篇
- 2025版養(yǎng)老服務(wù)機構(gòu)投資管理合同范本4篇
- 2025年度影視廣告拍攝合同范本3篇
- 2025年度個人租賃戶外活動場地合同范本3篇
- 二零二五年度牛奶冷鏈物流配送合同模板4篇
- 2025版政府機關(guān)辦公計算機統(tǒng)一采購合同3篇
- 2025年度新型門窗材料采購安裝及技術(shù)研發(fā)合同4篇
- 2025年度智慧城市排水系統(tǒng)升級改造分項合同范本4篇
- 2025年度土地租賃合同中合同解除與違約責任規(guī)定
- 部編版二年級下冊道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 【京東倉庫出庫作業(yè)優(yōu)化設(shè)計13000字(論文)】
- 保安春節(jié)安全生產(chǎn)培訓
- 初一語文上冊基礎(chǔ)知識訓練及答案(5篇)
- 初中班級成績分析課件
- 勞務(wù)合同樣本下載
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評定第三方符合性標志的通用要求
- GB/T 13663.2-2018給水用聚乙烯(PE)管道系統(tǒng)第2部分:管材
- 同角三角函數(shù)的基本關(guān)系式同步練習
- 固定污染源自動監(jiān)控監(jiān)測系統(tǒng)現(xiàn)場端建設(shè)技術(shù)規(guī)范
評論
0/150
提交評論