基于8086 CPU 的單芯片計算機系統的設計
1 引言
本文引用地址:http://dyxdggzs.com/article/149649.htm隨著(zhù)超大規模集成電路工藝的發(fā)展,在一顆芯片上集成上百萬(wàn)甚至上億個(gè)晶體管已成為現實(shí)?,F在,芯片廠(chǎng)商都以面積最小化、功能最大化作為自己的發(fā)展方向,深亞微米效應理論及IP 核技術(shù)越來(lái)越受到理論界和工業(yè)界的廣泛關(guān)注,系統芯片是當前技術(shù)發(fā)展的必然趨勢。計算機的發(fā)展經(jīng)歷了電子管計算機、晶體管計算機、集成電路計算機和大規模集成電路計算機,它的發(fā)展一直是將越來(lái)越多的功能集成在越來(lái)越小的空間內??梢灶A見(jiàn),在某些特定領(lǐng)域,半導體制造業(yè)朝著(zhù)整合型單芯片系統的總體趨勢將會(huì )日益明顯。
所謂單芯片計算機即是將傳統PC 機箱里的主板上的芯片組、CPU、內存、顯卡、聲卡和網(wǎng)卡等最大限度的集成在單個(gè)芯片中。單芯片計算機與傳統PC 相比,重量、體積和功耗大幅下降,從而系統性能將得到很大地改善,同時(shí)帶來(lái)價(jià)格的突破性下降,直接促進(jìn)計算機的迅速普及。
本文搭建的單芯片計算機系統基于標準8086 CPU,集成了AMBA 總線(xiàn)、SDRAM、8255、ROM 等外圍IP,并在A(yíng)ltera DE2 FPGA 開(kāi)發(fā)板上實(shí)現了功能演示。
2 單芯片計算機的發(fā)展概況
單芯片計算機是一個(gè)完整的計算機系統,CPU、存儲器和輸入輸出接口,通過(guò)總線(xiàn)連接,構成了單芯片計算機的基本系統。單芯片計算機的系統級設計,是以CPU 為核心開(kāi)展的I/O和外設集成過(guò)程,是基本的SoC 設計流程。
近幾年,Intel、AMD 和VIA 等微處理器制造商紛紛推出平臺策略,將微處理器和芯片組組合在一起,形成一個(gè)完整的解決方案,并計劃將來(lái)進(jìn)一步推出集成所有芯片的單芯片微處理器。Intel 公司頻推平臺策略,計劃進(jìn)一步推出整合所有芯片的單芯片計算機,還*了一個(gè)由500 名工程師組成的研發(fā)團隊,開(kāi)發(fā)其單芯片電腦產(chǎn)品,希望將目前電腦主板上的32 顆芯片全部集成到單一的芯片中。 而在A(yíng)MD 四核皓龍處理器中,四個(gè)獨立的CPU 核集成到單一硅片上,每個(gè)核具有單獨的64KB 一級數據緩存、64KB 一級指令緩存和512KB 的二級緩存,四個(gè)核心共享2MB(或者更大)的三級緩存。這樣每個(gè)CPU 核都能夠充分發(fā)揮各自的效能,從而大幅度提升整個(gè)處理器的性能。
單芯片計算機的設計,是一個(gè)基于某一種型號CPU 及其外圍I/O 接口的SoC 設計過(guò)程。因此,選擇哪種型號的CPU 就成了設計的首要問(wèn)題。綜合設計難度,工程進(jìn)度的因素,同時(shí)考慮所選CPU 要有一定的代表性,因此最終選擇標準Intel 8086 CPU。基于8086 的單芯片計算機基本結構,如圖1 所示。
3 單芯片計算機系統的設計
8086 CPU 芯片有兩種工作模式,最小模式與最大模式。所謂最小模式,是指系統中只有一個(gè)8086 微處理器,在這種情況下,所有的總線(xiàn)控制信號,都直接由8086 CPU 產(chǎn)生,系統的總線(xiàn)控制邏輯電路被減到最少,該模式適用于規模較小的微機應用系統。
本實(shí)驗采用8086 的最小工作模式進(jìn)行單芯片計算機的設計。所謂單芯片計算機系統設計,即除了包含CPU、ROM、RAM、總線(xiàn)、地址鎖存器、數據收發(fā)器、外設地址譯碼電路以外,集成一個(gè)或一個(gè)以上的外圍I/O 接口,從而構成一個(gè)完整的系統。搭建的系統結構圖如2 所示。
本論文所設計的8086 單芯片計算機系統集成了遵從AMBA 協(xié)議的總線(xiàn)、8255 通用并行接口,以及SDRAM 控制器。在這里,以8255 通用并行接口為例,介紹包含8255 應用電路的單芯片計算機系統的設計。8255 作為外圍I/O 設備通過(guò)AHB 總線(xiàn)與8086CPU 進(jìn)行通信。
單芯片計算機系統的RTL 級設計是一個(gè)SoC 的設計過(guò)程。包括CPU 子系統的設計、總線(xiàn)的選擇和接口設計,以及存儲器單元的接口設計。
3.1 CPU 子系統的設計
CPU 子系統包括8086 CPU、數據收發(fā)控制器、地址鎖存器和存儲器譯碼電路等。
CPU 與存儲器(或I/O 端口)進(jìn)行交換時(shí),CPU 首先要送出地址信號,然后再發(fā)出控制信號及傳送數據。因此需要加入地址鎖存器,先鎖存地址,使在讀寫(xiě)總線(xiàn)周期內地址穩定。
數據收發(fā)控制器相當于一個(gè)總線(xiàn)開(kāi)關(guān),用來(lái)控制CPU 的數據總線(xiàn)選擇從存儲單元或I/O端口發(fā)送或接受數據,匹配通信時(shí)序。
存儲器譯碼電路與74LS138 原理一樣,利用地址線(xiàn)生成ROM 和RAM 單元的片選信號。CPU 上電復位后地址為FFFF0H,首先從ROM 里讀出程序,該程序是無(wú)條件跳轉指令,能夠使CPU 跳轉到RAM 的地址。CPU 再從SDRAM 里讀出程序。
3.2 總線(xiàn)的選擇和設計
總線(xiàn)的集成對縮小芯片的面積以及減少總線(xiàn)的扇出都有非常積極的意義。標準的8086CPU,一般采用的是傳統的三總線(xiàn)結構,就是地址總線(xiàn)、數據總線(xiàn)、控制總線(xiàn),基于這個(gè)總線(xiàn)架構,還可以擴展8255、顯示器、鍵盤(pán)/鼠標、網(wǎng)卡之類(lèi)的IP。
3.2.1 總線(xiàn)協(xié)議的選擇
傳統的8086 系列CPU 系統總線(xiàn)有ISA 總線(xiàn)、EISA 總線(xiàn)等。ISA 總線(xiàn)是16 位的系統總線(xiàn),其工作頻率為8MHz,數據傳輸速率為16MB/s。EISA 是一種在ISA 總線(xiàn)基礎上擴充的數據寬度為32 位的開(kāi)放總線(xiàn)標準。最大傳輸速率可以達到33MB/s。但是由于I/O 速度比較低,這兩種總線(xiàn)技術(shù)已經(jīng)逐漸被淘汰。
AMBA 擁有眾多第三方支持,在基于A(yíng)RM 處理器內核的SoC 設計中,已經(jīng)成為廣泛支持的現有互聯(lián)標準之一。2.0 版AMBA 標準定義了三組總線(xiàn):AHB(AMBA 高性能總線(xiàn))、ASB(AMBA 系統總線(xiàn))、和APB(AMBA 外設總線(xiàn))。AHB 的總線(xiàn)架構的相互連接采用了傳統的帶有主模塊和從模塊的共享總線(xiàn)模式,接口與互連功能分離,這對芯片上模塊之間的互連具有重要意義。因此,本論文所選擇的總線(xiàn)遵從AHB 總線(xiàn)傳輸的基本規范,并在此基礎上針對8086CPU 的特點(diǎn)增加和修正了某些總線(xiàn)的接口。整個(gè)設計主要包括兩方面的內容:AHB 和8086 傳輸時(shí)序的匹配;基于8086CPU 的總線(xiàn)接口的擴展設計??偩€(xiàn)結構圖如圖3 所示。
3.2.2 傳輸時(shí)序的匹配
因為AHB 總線(xiàn)和CPU 的傳輸協(xié)議不同,所以需要匹配兩個(gè)接口的時(shí)序,以保證CPU與其他外圍IP 可以通過(guò)總線(xiàn)正常通信。相關(guān)接口控制信號如表1 所示。
接口模塊首先根據MIO 信號判斷訪(fǎng)問(wèn)的是存儲器還是I/O 設備,如果是I/O 設備,當采樣到READY 信號為高電平時(shí),獲取AHB 的總線(xiàn)控制權,與外圍I/O 設備進(jìn)行通信。設計的狀態(tài)機如圖4 所示。
T1:根據MIO 信號判斷當前CPU 是否需要訪(fǎng)問(wèn)外圍I/O。如果8086 處理器核訪(fǎng)問(wèn)的是存儲器單元而不是AHB 總線(xiàn)上的設備(即MIO 為1),狀態(tài)機則保持T1 狀態(tài),并且不向AHB 總線(xiàn)發(fā)出總線(xiàn)請求信號(即HBUSREQ 信號置為0)。MIO 為低電平則跳轉到T2。
T2:狀態(tài)機進(jìn)入T2 狀態(tài)后,向AHB 總線(xiàn)發(fā)出總線(xiàn)請求信號(即HBUSREQ 信號置為1),向AHB 總線(xiàn)仲裁器請求訪(fǎng)問(wèn)總線(xiàn)。同時(shí)檢測READY 信號,當檢測到READY 信號為高電平,即AHB 總線(xiàn)仲裁器把總線(xiàn)訪(fǎng)問(wèn)權限交給8086 處理器核,狀態(tài)機在下個(gè)時(shí)鐘上升沿進(jìn)入T3 狀態(tài)。反之,如果READY 一直為低電平,表示目前8086 CPU 要訪(fǎng)問(wèn)的AHB 總線(xiàn)上的從設備沒(méi)有準備就緒,要求8086 處理器核插入等待狀態(tài),狀態(tài)機一直保持T2 狀態(tài)不變。
T3:CPU 通過(guò)AHB 總線(xiàn)與外圍IP 進(jìn)行通信,直至通信結束,返回到T1 狀態(tài)。
8086 處理器核的讀寫(xiě)信號受READY 信號控制,當READY 信號為高電平時(shí),可進(jìn)行數據的接收和發(fā)送,否則讀寫(xiě)信號保持。READY 信號由AHB 總線(xiàn)上從設備傳輸完成信號HREADYIn、AHB 總線(xiàn)允許信號HGRANT 以及從設備應答信號HRESP 三者共同決定。而總線(xiàn)上的讀寫(xiě)控制信號HWRITE 由組合邏輯產(chǎn)生。其產(chǎn)生過(guò)程偽碼如表2 所示。
3.2.3 總線(xiàn)接口擴展
8086CPU 除了數據、地址總線(xiàn)以及讀寫(xiě)和READY 等主要控制信號外,還有中斷請求和應答以及外接DMA 設備的相關(guān)端口信號。而這些信號是標準AHB 總線(xiàn)所不具備的,因此還需要擴展總線(xiàn)接口以匹配8086 CPU??偩€(xiàn)接口的擴展設計主要包括兩部分:中斷處理和DMA 數據通道。8086 CPU 關(guān)于中斷和DMA 的端口信號如表4 所示。
系統總線(xiàn)在接收到外設的中斷請求之后,會(huì )向CPU 提出中斷申請,一旦接收到中斷響應,要向外設傳送中斷響應信號,同時(shí)修改譯碼單元,選通該外設,保證在第二個(gè)中斷響應期間能將中斷類(lèi)型號通過(guò)總線(xiàn)傳送給CPU,使得CPU 能成功跳轉到中斷服務(wù)子程序。
DMA 控制器在執行數據傳輸時(shí),需要掌握AHB 總線(xiàn)的控制權,向片上存儲器或者總線(xiàn)上其他外設發(fā)出地址和控制信號,即相當于A(yíng)MBA 的主設備;另一方面,在DMA 控制器啟動(dòng)工作之前,CPU 需要對其進(jìn)行預處理操作,以使其按照特定的配置參數進(jìn)行工作,在這個(gè)初始化階段,CPU 是AHB 總線(xiàn)上的主設備,DMA 控制器屬于從設備?;贒MA控制器的這種兩面性,在總線(xiàn)設計中配備了專(zhuān)門(mén)的DMA 通道與其相匹配:CPU 正常工作時(shí),
DMA 扮演從設備的角色,接受CPU 對其的初始化;利用HLDA 作仲裁信號,當CPU 響應外設DMA 請求時(shí)(即HLDA 為高電平),讓出總線(xiàn)控制權給外設,利用DMA 數據通道傳輸數據,傳輸的協(xié)議同樣遵從AMBA 協(xié)議??偩€(xiàn)的時(shí)序控制模塊狀態(tài)如圖5 所示。
3.3 存儲單元的接口設計
存儲器子系統包括一個(gè)RAM 和一個(gè)ROM,8086CPU 支持20 位地址總線(xiàn),具有1M 字節存儲空間,分為RAM 區和ROM 區。本文利用開(kāi)發(fā)板的片上ROM 資源配置成16k*16 的格式作為存儲器中的ROM 單元,采用DE2 開(kāi)發(fā)板上的8M 的SDRAM 配置成256K*16 位總線(xiàn)格式代替存儲器中的RAM 單元。
在各種隨機存儲器件中,SDRAM 的價(jià)格低,體積小,速度快,容量大,是比較理想的器件。但SDRAM 的控制邏輯比較復雜,對時(shí)序要求也十分嚴格,這就要求有一個(gè)專(zhuān)門(mén)的控制器:控制SDRAM 的初始化,刷新和預沖以及基本的讀寫(xiě)操作。同時(shí),需要匹配SDRAM控制器和8086 CPU 的讀寫(xiě)時(shí)序。該接口具體實(shí)現的狀態(tài)機如圖6 所示。
T1:當RDY 為高電平時(shí),首先確定是進(jìn)行讀還是寫(xiě)操作,這時(shí)DONE 為0:讀:設置WR=0,RD=1; 寫(xiě):設置WR=1,RD=0。
T2:當DONE 信號為高電平,表示可以進(jìn)行讀/寫(xiě)操作,跳轉到T3。
T3:CPU 通過(guò)SDRAM 控制器對SDRAM 進(jìn)行讀寫(xiě)操作。
T4:當低字節有效信號bwl_n 為高電平時(shí),執行低字節傳輸。
T5:當高字節有效信號bwh_n 為高電平時(shí),執行高字節傳輸。
T6:CPU 完成讀寫(xiě)操作,相關(guān)控制信號清零。
其中,DONE 信號用于指示是否讀寫(xiě)完成,只有DONE 為高電平時(shí)表示讀寫(xiě)完成,才能進(jìn)行下次讀寫(xiě)操作。RDY 信號表示SDRAM 是否做好準備接受CPU 的訪(fǎng)問(wèn),由SDRAM的寫(xiě)請求信號(IN_REQ =1)和讀有效信號(OUT_VALID =1 )共同控制,其產(chǎn)生過(guò)程偽碼如表5 所示。
根據單芯片計算機系統級設計的組成結構,調用已經(jīng)編寫(xiě)完成的8086 IP 軟核、8255 IP軟核、SDRAM 控制器、SDRAM 模型IS42S16400、AHB 總線(xiàn) IP 軟核以及譯碼器IP 軟核。
連接相應的輸入輸出端口,同時(shí)對8086 相關(guān)的輸入端口進(jìn)行賦值,將未使用的輸出端口懸空,完成單芯片計算機系統的RTL 級設計。
4 單芯片計算機系統的仿真與驗證
單芯片計算機的RTL 級設計只是全部設計流程的一部分,為保證最終設計的成功,必須對其進(jìn)行全面的軟件仿真與硬件驗證,包括搭建測試平臺,設計測試方案以及分析仿真結果,實(shí)現FPGA 驗證。
4.1 測試方案的設計
在包含8255 應用電路的單芯片計算機系統搭建完成的基礎上,要求實(shí)現八個(gè)開(kāi)關(guān)量控制八個(gè)LED 燈亮滅的功能。將八個(gè)開(kāi)關(guān)量連接8255 的PA0~PA7;將八個(gè)LED 燈驅動(dòng)電路連接8255 的PC0~PC7。在8086 CPU 的控制下,通過(guò)總線(xiàn)讀取連接在8255 PA 口的八個(gè)開(kāi)關(guān)量,將開(kāi)關(guān)值送往SDRAM 存儲,再從SDRAM 讀取開(kāi)關(guān)量發(fā)送到8255 PC 口,使其驅動(dòng)八個(gè)LED 燈的亮或滅。
4.2 仿真結果分析
單芯片計算機最小集的RTL 級仿真波形,如圖7 所示。在8086 CPU 的控制下,8255接口讀取連接在8255 PA 口的八個(gè)開(kāi)關(guān)量11000010 以后,將其發(fā)送到8255 的PC 口,驅動(dòng)輸出邏輯值11000010。
使用Quartus II 軟件成功編譯設計,將布局布線(xiàn)生成的結果下載到FPGA 中,得到與設計等效的實(shí)際電路,對實(shí)際的電路用測試系統進(jìn)行測試,從而驗證設計的正確性。將FPGA的驗證結果經(jīng)邏輯分析儀讀取顯示,如圖8 所示。
5 結束語(yǔ)
本論文在基于集成電路設計方法學(xué)的指導下,探討了一種基于8086 CPU 核的單芯片計算機平臺的架構,研究了其與AMBA 總線(xiàn)、SDRAM、8255 等外圍IP 的集成。在此基礎上,設計基于8086 IP 軟核的單芯片計算機系統,并實(shí)現了FPGA 功能演示。在后續的工作中,將考慮進(jìn)一步擴展CPU 外圍接口IP 軟核;集成DMA 控制器,實(shí)現VGA 顯示功能;將DOS 操作系統加入8086 單芯片計算機平臺,并開(kāi)發(fā)在操作系統下的設備驅動(dòng)程序和應用軟件。
pic相關(guān)文章:pic是什么
晶體管相關(guān)文章:晶體管工作原理
存儲器相關(guān)文章:存儲器原理
晶體管相關(guān)文章:晶體管原理
評論