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