新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于8086 CPU 的單芯片計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)

基于8086 CPU 的單芯片計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)

作者: 時(shí)間:2012-02-17 來(lái)源:網(wǎng)絡(luò) 收藏

1 引言

本文引用地址:http://butianyuan.cn/article/149649.htm

隨著超大規(guī)模集成電路工藝的發(fā)展,在一顆芯片上集成上百萬(wàn)甚至上億個(gè)晶體管已成為現(xiàn)實(shí)?,F(xiàn)在,芯片廠商都以面積最小化、功能最大化作為自己的發(fā)展方向,深亞微米效應(yīng)理論及IP 核技術(shù)越來(lái)越受到理論界和工業(yè)界的廣泛關(guān)注,系統(tǒng)芯片是當(dāng)前技術(shù)發(fā)展的必然趨勢(shì)。計(jì)算機(jī)的發(fā)展經(jīng)歷了電子管計(jì)算機(jī)、晶體管計(jì)算機(jī)、集成電路計(jì)算機(jī)和大規(guī)模集成電路計(jì)算機(jī),它的發(fā)展一直是將越來(lái)越多的功能集成在越來(lái)越小的空間內(nèi)??梢灶A(yù)見(jiàn),在某些特定領(lǐng)域,半導(dǎo)體制造業(yè)朝著整合型系統(tǒng)的總體趨勢(shì)將會(huì)日益明顯。

所謂計(jì)算機(jī)即是將傳統(tǒng)PC 機(jī)箱里的主板上的芯片組、、內(nèi)存、顯卡、聲卡和網(wǎng)卡等最大限度的集成在單個(gè)芯片中。計(jì)算機(jī)與傳統(tǒng)PC 相比,重量、體積和功耗大幅下降,從而系統(tǒng)性能將得到很大地改善,同時(shí)帶來(lái)價(jià)格的突破性下降,直接促進(jìn)計(jì)算機(jī)的迅速普及。

本文搭建的單芯片統(tǒng)標(biāo)準(zhǔn)8086 ,集成了AMBA 總線、SDRAM、8255、ROM 等外圍IP,并在Altera DE2 FPGA 開(kāi)發(fā)板上實(shí)現(xiàn)了功能演示。

2 單芯片計(jì)算機(jī)的發(fā)展概況

單芯片計(jì)算機(jī)是一個(gè)完整的統(tǒng),、存儲(chǔ)器和輸入輸出接口,通過(guò)總線連接,構(gòu)成了單芯片計(jì)算機(jī)的基本系統(tǒng)。單芯片計(jì)算機(jī)的系統(tǒng)級(jí),是以CPU 為核心開(kāi)展的I/O和外設(shè)集成過(guò)程,是基本的SoC 流程。

近幾年,Intel、AMD 和VIA 等微處理器制造商紛紛推出平臺(tái)策略,將微處理器和芯片組組合在一起,形成一個(gè)完整的解決方案,并計(jì)劃將來(lái)進(jìn)一步推出集成所有芯片的單芯片微處理器。Intel 公司頻推平臺(tái)策略,計(jì)劃進(jìn)一步推出整合所有芯片的單芯片計(jì)算機(jī),還*了一個(gè)由500 名工程師組成的研發(fā)團(tuán)隊(duì),開(kāi)發(fā)其單芯片電腦產(chǎn)品,希望將目前電腦主板上的32 顆芯片全部集成到單一的芯片中。 而在AMD 四核皓龍?zhí)幚砥髦?,四個(gè)獨(dú)立的CPU 核集成到單一硅片上,每個(gè)核具有單獨(dú)的64KB 一級(jí)數(shù)據(jù)緩存、64KB 一級(jí)指令緩存和512KB 的二級(jí)緩存,四個(gè)核心共享2MB(或者更大)的三級(jí)緩存。這樣每個(gè)CPU 核都能夠充分發(fā)揮各自的效能,從而大幅度提升整個(gè)處理器的性能。

單芯片計(jì)算機(jī)的,是一個(gè)某一種型號(hào)CPU 及其外圍I/O 接口的SoC 設(shè)計(jì)過(guò)程。因此,選擇哪種型號(hào)的CPU 就成了設(shè)計(jì)的首要問(wèn)題。綜合設(shè)計(jì)難度,工程進(jìn)度的因素,同時(shí)考慮所選CPU 要有一定的代表性,因此最終選擇標(biāo)準(zhǔn)Intel 8086 CPU。8086 的單芯片計(jì)算機(jī)基本結(jié)構(gòu),如圖1 所示。

3 單芯片統(tǒng)的設(shè)計(jì)

8086 CPU 芯片有兩種工作模式,最小模式與最大模式。所謂最小模式,是指系統(tǒng)中只有一個(gè)8086 微處理器,在這種情況下,所有的總線控制信號(hào),都直接由8086 CPU 產(chǎn)生,系統(tǒng)的總線控制邏輯電路被減到最少,該模式適用于規(guī)模較小的微機(jī)應(yīng)用系統(tǒng)。

本實(shí)驗(yàn)采用8086 的最小工作模式進(jìn)行單芯片計(jì)算機(jī)的設(shè)計(jì)。所謂單芯片計(jì)算機(jī)系統(tǒng)設(shè)計(jì),即除了包含CPU、ROM、RAM、總線、地址鎖存器、數(shù)據(jù)收發(fā)器、外設(shè)地址譯碼電路以外,集成一個(gè)或一個(gè)以上的外圍I/O 接口,從而構(gòu)成一個(gè)完整的系統(tǒng)。搭建的系統(tǒng)結(jié)構(gòu)圖如2 所示。

本論文所設(shè)計(jì)的8086 單芯片計(jì)算機(jī)系統(tǒng)集成了遵從AMBA 協(xié)議的總線、8255 通用并行接口,以及SDRAM 控制器。在這里,以8255 通用并行接口為例,介紹包含8255 應(yīng)用電路的單芯片計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)。8255 作為外圍I/O 設(shè)備通過(guò)AHB 總線與8086CPU 進(jìn)行通信。

單芯片計(jì)算機(jī)系統(tǒng)的RTL 級(jí)設(shè)計(jì)是一個(gè)SoC 的設(shè)計(jì)過(guò)程。包括CPU 子系統(tǒng)的設(shè)計(jì)、總線的選擇和接口設(shè)計(jì),以及存儲(chǔ)器單元的接口設(shè)計(jì)。

3.1 CPU 子系統(tǒng)的設(shè)計(jì)

CPU 子系統(tǒng)包括8086 CPU、數(shù)據(jù)收發(fā)控制器、地址鎖存器和存儲(chǔ)器譯碼電路等。

CPU 與存儲(chǔ)器(或I/O 端口)進(jìn)行交換時(shí),CPU 首先要送出地址信號(hào),然后再發(fā)出控制信號(hào)及傳送數(shù)據(jù)。因此需要加入地址鎖存器,先鎖存地址,使在讀寫(xiě)總線周期內(nèi)地址穩(wěn)定。

數(shù)據(jù)收發(fā)控制器相當(dāng)于一個(gè)總線開(kāi)關(guān),用來(lái)控制CPU 的數(shù)據(jù)總線選擇從存儲(chǔ)單元或I/O端口發(fā)送或接受數(shù)據(jù),匹配通信時(shí)序。

存儲(chǔ)器譯碼電路與74LS138 原理一樣,利用地址線生成ROM 和RAM 單元的片選信號(hào)。CPU 上電復(fù)位后地址為FFFF0H,首先從ROM 里讀出程序,該程序是無(wú)條件跳轉(zhuǎn)指令,能夠使CPU 跳轉(zhuǎn)到RAM 的地址。CPU 再?gòu)腟DRAM 里讀出程序。

3.2 總線的選擇和設(shè)計(jì)

總線的集成對(duì)縮小芯片的面積以及減少總線的扇出都有非常積極的意義。標(biāo)準(zhǔn)的8086CPU,一般采用的是傳統(tǒng)的三總線結(jié)構(gòu),就是地址總線、數(shù)據(jù)總線、控制總線,基于這個(gè)總線架構(gòu),還可以擴(kuò)展8255、顯示器、鍵盤/鼠標(biāo)、網(wǎng)卡之類的IP。

3.2.1 總線協(xié)議的選擇

傳統(tǒng)的8086 系列CPU 系統(tǒng)總線有ISA 總線、EISA 總線等。ISA 總線是16 位的系統(tǒng)總線,其工作頻率為8MHz,數(shù)據(jù)傳輸速率為16MB/s。EISA 是一種在ISA 總線基礎(chǔ)上擴(kuò)充的數(shù)據(jù)寬度為32 位的開(kāi)放總線標(biāo)準(zhǔn)。最大傳輸速率可以達(dá)到33MB/s。但是由于I/O 速度比較低,這兩種總線技術(shù)已經(jīng)逐漸被淘汰。

AMBA 擁有眾多第三方支持,在基于ARM 處理器內(nèi)核的SoC 設(shè)計(jì)中,已經(jīng)成為廣泛支持的現(xiàn)有互聯(lián)標(biāo)準(zhǔn)之一。2.0 版AMBA 標(biāo)準(zhǔn)定義了三組總線:AHB(AMBA 高性能總線)、ASB(AMBA 系統(tǒng)總線)、和APB(AMBA 外設(shè)總線)。AHB 的總線架構(gòu)的相互連接采用了傳統(tǒng)的帶有主模塊和從模塊的共享總線模式,接口與互連功能分離,這對(duì)芯片上模塊之間的互連具有重要意義。因此,本論文所選擇的總線遵從AHB 總線傳輸?shù)幕疽?guī)范,并在此基礎(chǔ)上針對(duì)8086CPU 的特點(diǎn)增加和修正了某些總線的接口。整個(gè)設(shè)計(jì)主要包括兩方面的內(nèi)容:AHB 和8086 傳輸時(shí)序的匹配;基于8086CPU 的總線接口的擴(kuò)展設(shè)計(jì)??偩€結(jié)構(gòu)圖如圖3 所示。

3.2.2 傳輸時(shí)序的匹配

因?yàn)锳HB 總線和CPU 的傳輸協(xié)議不同,所以需要匹配兩個(gè)接口的時(shí)序,以保證CPU與其他外圍IP 可以通過(guò)總線正常通信。相關(guān)接口控制信號(hào)如表1 所示。

接口模塊首先根據(jù)MIO 信號(hào)判斷訪問(wèn)的是存儲(chǔ)器還是I/O 設(shè)備,如果是I/O 設(shè)備,當(dāng)采樣到READY 信號(hào)為高電平時(shí),獲取AHB 的總線控制權(quán),與外圍I/O 設(shè)備進(jìn)行通信。設(shè)計(jì)的狀態(tài)機(jī)如圖4 所示。

T1:根據(jù)MIO 信號(hào)判斷當(dāng)前CPU 是否需要訪問(wèn)外圍I/O。如果8086 處理器核訪問(wèn)的是存儲(chǔ)器單元而不是AHB 總線上的設(shè)備(即MIO 為1),狀態(tài)機(jī)則保持T1 狀態(tài),并且不向AHB 總線發(fā)出總線請(qǐng)求信號(hào)(即HBUSREQ 信號(hào)置為0)。MIO 為低電平則跳轉(zhuǎn)到T2。

T2:狀態(tài)機(jī)進(jìn)入T2 狀態(tài)后,向AHB 總線發(fā)出總線請(qǐng)求信號(hào)(即HBUSREQ 信號(hào)置為1),向AHB 總線仲裁器請(qǐng)求訪問(wèn)總線。同時(shí)檢測(cè)READY 信號(hào),當(dāng)檢測(cè)到READY 信號(hào)為高電平,即AHB 總線仲裁器把總線訪問(wèn)權(quán)限交給8086 處理器核,狀態(tài)機(jī)在下個(gè)時(shí)鐘上升沿進(jìn)入T3 狀態(tài)。反之,如果READY 一直為低電平,表示目前8086 CPU 要訪問(wèn)的AHB 總線上的從設(shè)備沒(méi)有準(zhǔn)備就緒,要求8086 處理器核插入等待狀態(tài),狀態(tài)機(jī)一直保持T2 狀態(tài)不變。

T3:CPU 通過(guò)AHB 總線與外圍IP 進(jìn)行通信,直至通信結(jié)束,返回到T1 狀態(tài)。

8086 處理器核的讀寫(xiě)信號(hào)受READY 信號(hào)控制,當(dāng)READY 信號(hào)為高電平時(shí),可進(jìn)行數(shù)據(jù)的接收和發(fā)送,否則讀寫(xiě)信號(hào)保持。READY 信號(hào)由AHB 總線上從設(shè)備傳輸完成信號(hào)HREADYIn、AHB 總線允許信號(hào)HGRANT 以及從設(shè)備應(yīng)答信號(hào)HRESP 三者共同決定。而總線上的讀寫(xiě)控制信號(hào)HWRITE 由組合邏輯產(chǎn)生。其產(chǎn)生過(guò)程偽碼如表2 所示。


3.2.3 總線接口擴(kuò)展

8086CPU 除了數(shù)據(jù)、地址總線以及讀寫(xiě)和READY 等主要控制信號(hào)外,還有中斷請(qǐng)求和應(yīng)答以及外接DMA 設(shè)備的相關(guān)端口信號(hào)。而這些信號(hào)是標(biāo)準(zhǔn)AHB 總線所不具備的,因此還需要擴(kuò)展總線接口以匹配8086 CPU。總線接口的擴(kuò)展設(shè)計(jì)主要包括兩部分:中斷處理和DMA 數(shù)據(jù)通道。8086 CPU 關(guān)于中斷和DMA 的端口信號(hào)如表4 所示。

系統(tǒng)總線在接收到外設(shè)的中斷請(qǐng)求之后,會(huì)向CPU 提出中斷申請(qǐng),一旦接收到中斷響應(yīng),要向外設(shè)傳送中斷響應(yīng)信號(hào),同時(shí)修改譯碼單元,選通該外設(shè),保證在第二個(gè)中斷響應(yīng)期間能將中斷類型號(hào)通過(guò)總線傳送給CPU,使得CPU 能成功跳轉(zhuǎn)到中斷服務(wù)子程序。

DMA 控制器在執(zhí)行數(shù)據(jù)傳輸時(shí),需要掌握AHB 總線的控制權(quán),向片上存儲(chǔ)器或者總線上其他外設(shè)發(fā)出地址和控制信號(hào),即相當(dāng)于AMBA 的主設(shè)備;另一方面,在DMA 控制器啟動(dòng)工作之前,CPU 需要對(duì)其進(jìn)行預(yù)處理操作,以使其按照特定的配置參數(shù)進(jìn)行工作,在這個(gè)初始化階段,CPU 是AHB 總線上的主設(shè)備,DMA 控制器屬于從設(shè)備。基于DMA控制器的這種兩面性,在總線設(shè)計(jì)中配備了專門的DMA 通道與其相匹配:CPU 正常工作時(shí),

DMA 扮演從設(shè)備的角色,接受CPU 對(duì)其的初始化;利用HLDA 作仲裁信號(hào),當(dāng)CPU 響應(yīng)外設(shè)DMA 請(qǐng)求時(shí)(即HLDA 為高電平),讓出總線控制權(quán)給外設(shè),利用DMA 數(shù)據(jù)通道傳輸數(shù)據(jù),傳輸?shù)膮f(xié)議同樣遵從AMBA 協(xié)議。總線的時(shí)序控制模塊狀態(tài)如圖5 所示。

3.3 存儲(chǔ)單元的接口設(shè)計(jì)

存儲(chǔ)器子系統(tǒng)包括一個(gè)RAM 和一個(gè)ROM,8086CPU 支持20 位地址總線,具有1M 字節(jié)存儲(chǔ)空間,分為RAM 區(qū)和ROM 區(qū)。本文利用開(kāi)發(fā)板的片上ROM 資源配置成16k*16 的格式作為存儲(chǔ)器中的ROM 單元,采用DE2 開(kāi)發(fā)板上的8M 的SDRAM 配置成256K*16 位總線格式代替存儲(chǔ)器中的RAM 單元。

在各種隨機(jī)存儲(chǔ)器件中,SDRAM 的價(jià)格低,體積小,速度快,容量大,是比較理想的器件。但SDRAM 的控制邏輯比較復(fù)雜,對(duì)時(shí)序要求也十分嚴(yán)格,這就要求有一個(gè)專門的控制器:控制SDRAM 的初始化,刷新和預(yù)沖以及基本的讀寫(xiě)操作。同時(shí),需要匹配SDRAM控制器和8086 CPU 的讀寫(xiě)時(shí)序。該接口具體實(shí)現(xiàn)的狀態(tài)機(jī)如圖6 所示。

T1:當(dāng)RDY 為高電平時(shí),首先確定是進(jìn)行讀還是寫(xiě)操作,這時(shí)DONE 為0:讀:設(shè)置WR=0,RD=1; 寫(xiě):設(shè)置WR=1,RD=0。

T2:當(dāng)DONE 信號(hào)為高電平,表示可以進(jìn)行讀/寫(xiě)操作,跳轉(zhuǎn)到T3。

T3:CPU 通過(guò)SDRAM 控制器對(duì)SDRAM 進(jìn)行讀寫(xiě)操作。

T4:當(dāng)?shù)妥止?jié)有效信號(hào)bwl_n 為高電平時(shí),執(zhí)行低字節(jié)傳輸。

T5:當(dāng)高字節(jié)有效信號(hào)bwh_n 為高電平時(shí),執(zhí)行高字節(jié)傳輸。

T6:CPU 完成讀寫(xiě)操作,相關(guān)控制信號(hào)清零。

其中,DONE 信號(hào)用于指示是否讀寫(xiě)完成,只有DONE 為高電平時(shí)表示讀寫(xiě)完成,才能進(jìn)行下次讀寫(xiě)操作。RDY 信號(hào)表示SDRAM 是否做好準(zhǔn)備接受CPU 的訪問(wèn),由SDRAM的寫(xiě)請(qǐng)求信號(hào)(IN_REQ =1)和讀有效信號(hào)(OUT_VALID =1 )共同控制,其產(chǎn)生過(guò)程偽碼如表5 所示。

根據(jù)單芯片計(jì)算機(jī)系統(tǒng)級(jí)設(shè)計(jì)的組成結(jié)構(gòu),調(diào)用已經(jīng)編寫(xiě)完成的8086 IP 軟核、8255 IP軟核、SDRAM 控制器、SDRAM 模型IS42S16400、AHB 總線 IP 軟核以及譯碼器IP 軟核。

連接相應(yīng)的輸入輸出端口,同時(shí)對(duì)8086 相關(guān)的輸入端口進(jìn)行賦值,將未使用的輸出端口懸空,完成單芯片計(jì)算機(jī)系統(tǒng)的RTL 級(jí)設(shè)計(jì)。

4 單芯片計(jì)算機(jī)系統(tǒng)的仿真與驗(yàn)證

單芯片計(jì)算機(jī)的RTL 級(jí)設(shè)計(jì)只是全部設(shè)計(jì)流程的一部分,為保證最終設(shè)計(jì)的成功,必須對(duì)其進(jìn)行全面的軟件仿真與硬件驗(yàn)證,包括搭建測(cè)試平臺(tái),設(shè)計(jì)測(cè)試方案以及分析仿真結(jié)果,實(shí)現(xiàn)FPGA 驗(yàn)證。

4.1 測(cè)試方案的設(shè)計(jì)

在包含8255 應(yīng)用電路的單芯片計(jì)算機(jī)系統(tǒng)搭建完成的基礎(chǔ)上,要求實(shí)現(xiàn)八個(gè)開(kāi)關(guān)量控制八個(gè)LED 燈亮滅的功能。將八個(gè)開(kāi)關(guān)量連接8255 的PA0~PA7;將八個(gè)LED 燈驅(qū)動(dòng)電路連接8255 的PC0~PC7。在8086 CPU 的控制下,通過(guò)總線讀取連接在8255 PA 口的八個(gè)開(kāi)關(guān)量,將開(kāi)關(guān)值送往SDRAM 存儲(chǔ),再?gòu)腟DRAM 讀取開(kāi)關(guān)量發(fā)送到8255 PC 口,使其驅(qū)動(dòng)八個(gè)LED 燈的亮或滅。

4.2 仿真結(jié)果分析

單芯片計(jì)算機(jī)最小集的RTL 級(jí)仿真波形,如圖7 所示。在8086 CPU 的控制下,8255接口讀取連接在8255 PA 口的八個(gè)開(kāi)關(guān)量11000010 以后,將其發(fā)送到8255 的PC 口,驅(qū)動(dòng)輸出邏輯值11000010。

使用Quartus II 軟件成功編譯設(shè)計(jì),將布局布線生成的結(jié)果下載到FPGA 中,得到與設(shè)計(jì)等效的實(shí)際電路,對(duì)實(shí)際的電路用測(cè)試系統(tǒng)進(jìn)行測(cè)試,從而驗(yàn)證設(shè)計(jì)的正確性。將FPGA的驗(yàn)證結(jié)果經(jīng)邏輯分析儀讀取顯示,如圖8 所示。

5 結(jié)束語(yǔ)

本論文在基于集成電路設(shè)計(jì)方法學(xué)的指導(dǎo)下,探討了一種基于8086 CPU 核的單芯片計(jì)算機(jī)平臺(tái)的架構(gòu),研究了其與AMBA 總線、SDRAM、8255 等外圍IP 的集成。在此基礎(chǔ)上,設(shè)計(jì)基于8086 IP 軟核的單芯片計(jì)算機(jī)系統(tǒng),并實(shí)現(xiàn)了FPGA 功能演示。在后續(xù)的工作中,將考慮進(jìn)一步擴(kuò)展CPU 外圍接口IP 軟核;集成DMA 控制器,實(shí)現(xiàn)VGA 顯示功能;將DOS 操作系統(tǒng)加入8086 單芯片計(jì)算機(jī)平臺(tái),并開(kāi)發(fā)在操作系統(tǒng)下的設(shè)備驅(qū)動(dòng)程序和應(yīng)用軟件。

pic相關(guān)文章:pic是什么


晶體管相關(guān)文章:晶體管工作原理


存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理


晶體管相關(guān)文章:晶體管原理


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉