摘 要: 傳統ISA處理器內部有限的邏輯資源和外部固定的引腳封裝大大的限制了它的應用范圍。利用FPGA豐富的邏輯資源實現傳統MCU中的各個組成部分,底層采用可配置引腳降低硬件設計復雜度,各模塊間采用Wishbone總線結構的方式構建系統,可以達到傳統MCU無法完成的要求,具有很好的應用前景。使用硬件描述語言,自底向上設計處理核心80C51,并且與幾類通用外設互連組成系統,使用Virtex?Ⅱ Pro系列FPGA進行板級驗證。板級驗證結果表明實現了既定目標,與標準MCU兼容,系統運行穩定。
關鍵詞: 邏輯資源; VLSI; FPGA; C51處理器
中圖分類號: TN911?34; TP368.1 文獻標識碼: A 文章編號: 1004?373X(2013)12?0092?05
0 引 言
隨著社會的發展,工業控制及人們日常生活越來越追求精密控制,為了滿足這種需求,微控制器得到了快速的發展。隨著VLSI發展,MCU將原本分散的CPU,RAM,ROM,I/O等集中于一塊單晶芯片內,形成一種芯片級計算系統。MCU主要用于控制目的,MCU構成的系統有實時、快速的外部響應,能迅速采集到大量的數據,做出邏輯判斷與推理后實現對被控制對象的參數調整與控制[1]。MCU被廣泛應用于家用電器、科學教育、工業控制、自動生產及儀器儀表中。在移動互聯網快速發展的今天,MCU的應用領域進一步擴大。但是隨著時代的推進,對控制的要求逐步增大,所需滿足功能的逐漸增多,傳統MCU也越來越顯得捉襟見肘。使用ASIC器件在片內實現與傳統MCU相兼容的核心,選用合適的片內總線來連接外設,構成一個兼容傳統MCU平臺,這種方法必會延續傳統MCU的生命力,使其獲得更大的發展。
1 Virtex?Ⅱ Pro
FPGA采用了邏輯單元陣列(Logic Cell Array,LCA),內部包含了可配置的邏輯模塊(Configurable Logic Block,CLB)、輸入/輸出模塊(Input Output Block,IOB)和內部連線(Interconnect)。與傳統的可編程程器件相比,FPGA是ASIC電路中設計風險最小、開發費用最低、周期最短的器件之一。采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。同時FPGA的內部邏輯和I/O資源非常的豐富,可以說利用FPGA芯片進行小批量生產,對于提高系統有幫助的。
Virtex?Ⅱ Pro系列[2]在Virtex?Ⅱ的基礎上,增強了嵌入式處理能力,內嵌PowerPC405內核,還包括了先進的主動互聯技術,以解決高性能系統所面臨的挑戰。此外還增加了高速串行收發器,提供了千兆以太網的解決方案。主要特征如下[3?4]:
(1)核電壓為1.5 V,工作時鐘可以達到420 MHz;
(2)支持多達20種的I/O接口標準;
(3)增加了2個高性能RISC技術,頻率高達400MHz的PowerPc處理器;
(4)增加多個3.125 Gb/s速率的Rocket串行收發器;
(5)內嵌了多個硬核乘法器,提高了DSP處理能力;
(6)具有完全系統時鐘管理功能,多達8個DCM。
2 Virtual 80C51 Core 實現
2.1 存儲器管理
所有的8051器件都將程序存儲器(ROM)和數據存儲器(RAM)邏輯分離。這種邏輯分離對于允許8位的MCU的8位地址線訪問數據存儲器是非常有利的,而且可以進行快速的存取操作。
程序存儲器,使用內部BRAM,配置為ROM,用于存放存儲器,使用其中的11根地址線,配置為2 KB容量,當然用戶可以依據自己的需求來定制容量。數據存儲器,使用內部BRAM,配置為RAM,容量為128 b。內部數據存儲器包含了4個8 b的寄存器組和一個32 b的段,其結構如圖2所示。
2.2 定時/計數器
2.3 中斷管理
Virtual 8051 Core為了能更好完成任務,需要支持中斷,為此需要設計2路內部中斷和2路外部中斷。外部中斷,系統通過檢測外部中斷引腳,如果發生電平變換或者上升下降沿的到來時,便向系統產生一個中斷信號。內部中斷,當定時器/計數器,計數滿時,便向系統產生一個中斷信號。
當中斷到來,首先檢測中斷寄存器,是否允許中斷,如果中斷打開,則中斷控制器將會在適當的位置產生一個LCALL指令,除非有如下情況阻塞中斷:系統正在執行一個高優先級或者優先級相同的過程;上一條指令還沒有完全執行完畢。
中斷處理過程如下:當中斷產生后,硬件系統將會產生一個LCALL的指令;指令系統接受到LCALL指令后,保存現場,將PC(程序計數器)等寄存器壓入堆棧中;更新PC等寄存器,跳轉至中斷執行程序,并且清楚中斷標志位;中斷程序執行完畢后,自動恢復現場,將堆棧中的PC等寄存器值恢復。
2.4 ALU
ALU的實現較為簡單,采用模塊化設計,共劃分為3個模塊:控制模塊、加減法模塊和乘除法模塊。控制模塊負責簡單的控制功能,如功能選擇等。在本設計中加法功能使用超前進位法來設計的,而減法功能,則使用加補碼的方式通過加法功能實現;乘除法模塊我們可以使用了Virtex?Ⅱ Pro中集成了乘法單元和DSP模塊來實現,也可以使用加減法和移位寄存器的組合來實現。其具體方法可見參考文獻[6]。
2.5 譯碼控制器
Virtual C51 Core使用標準的C51的指令系統,這樣便可以做到最好的兼容性,其指令集主要分為如下幾類[7]:
(1)算術指令,其中包括ADD,INC,SUB,MUL,DIV,DEC等算術指令;
(2)邏輯指令,其中主要有ANL,ORL,XRL等邏輯操作;
(3)數據傳輸類指令,其中主要有MOV,PUSH,POP,XCH等;
(4)查找表指令,其中主要是MOVC;
(5)布爾指令,其中有JNC,JNB,JC等;
(6)跳轉指令,其中無條件跳轉指令有JMP,CALL,RET等,有條件跳轉JZ,JNZ,CJNE等;
(7)空指令,NOP。
指令按字節數可以分為單字節指令、雙字節指令和三字節指令。按照執行周期又可以分為單周期指令、雙周期指令和四周期指令。
當獲得一條指令,首先譯碼器進行指令譯碼,分解指令,獲得對應的指令操作類型,根據該操作類型來選擇后續操作邏輯單元塊;然后譯碼目的操作數,獲得目的操作數的位置,用于存儲結果,最后譯碼源操作數。
C51支持多種尋址方式:直接尋址、寄存器尋址、寄存器間接尋址、立即尋址、變址尋址、位尋址和相對選址[7]。正確譯碼獲取源操作數的地址,由控制器根據該地址獲取正確的值傳給運算模塊,進行運算。由于是早期的MCU,其支持的指令集較少,它的指令格式較為簡單,通過識別其操作碼便可以速的識別出其尋址方式,故其譯碼器設計較為簡單。
2.6 外設總線接口
Virtual C51 Core對于外設的訪問采用簡單的地址映射方式。采用這種方式,雖然比較浪費地址空間,但是實現較為簡單,無需增加額外設計,簡化設計。
80C51作為一款較為簡單的MCU,對其內部實現也較為簡潔,所使用的邏輯也較少,所以Virtual C51 Core 非常適合在低端的FPGA甚至是某些特定的CPLD中實現,而且作為早期發展至今的MCU,其相應驅動資源也較為豐富,對于上層軟件工程師而言,可以迅速的完成設計任務。
3 外設總線
在一個系統中光有處理器還是不夠的,需要有豐富的外設來滿足各種控制要求或者數據傳輸功能。而片內總線便是將處理器與總線相連接的重要路徑。Wishbone是一種開放并且完全免費的總線標準,Wishbone獨有的特點如下:
(1)Wishbone僅僅定義了Core之間的連接時需要的信號;
(2)支持多種連接模式:點對點,數據流,共享總線和十字交叉互聯;
(3)Wishbone總線的所有信號都與總線的時鐘同步;
(4)支持大小端模式,用戶可以根據自己的需求配置成不同的模式;
(5)Wishbone總線接口區分明確,分為主(Master)/從(Slave)。
(6)Wishbone有四種連接模式[8]:點對點、數據流、共享總線和十字交叉互聯,在此使用共享總線式連接方式,其中充當Master為Virtual Core,而外設為Slaver,如圖5所示。
4 測 試
4.1 測試工具
5 結 語
隨著MCU的應用范圍越來越寬,對MCU的要求也逐步提高。尤其在目前MCU逐漸進入SoC時代,IP核復用將會成為主流設計方法。為了能使老一代的MCU發揮延續其生命力,開發其兼容IP核,不僅能夠將以往的代碼迅速的移植到新系統上,而且還可以加快新系統的開發。而且可以將以往很多的分立件,使用邏輯功能實現,集成于ASIC中,降低外圍硬件電路的設計。
本文闡述了用FPGA等可編程ASIC元器件來虛擬出傳統的MCU 80C51的設計原理和方法。通過適度改變其內部結構,添加Wishbone總線,替代傳統MCU片內總線,用來完成MCU核與外設的連接。使用這種方式,可以充分的利用市場上已經成熟的外設核,避免重復設計,同時也方便對傳統的MCU進行裁剪和定制,這樣將會使傳統的MCU更加的靈活可變。
參考文獻
[1] 劉必慰,陳書明,汪東.先進微處理器體系結構及其發展趨勢[J].計算機應用研究,2007,24(3):16?20.
[2] Xilinx. Virtex?ii pro and Virtex?ii pro X platform FPGAs: complete data sheet [M]. USA: Xilinx, 2011.
[3] 田耘,徐文波,胡彬.Xilinx ise design suite 10.x FPGA開發指南[M].北京:人民郵電出版社,2008.
[4] 張春生,常青,肖山竹.基于PowerPC 405的SoPC簡單應用[J].微處理機,2007(6):117?120.
[5] 于冰,沈健,聶晶.高性能8位微控制器IP軟核設計[J].合肥工業大學學報,2007,30(8):1003?1006.
[6] 周殿鳳.基于FPGA的32位ALU軟核設計[J].電子科技,2010,23(11):80?81.
[7] 溫圣軍,王簡瑜,張魯國.80C51原始IP核內部RAM的擴展方案[J].單片機與嵌入式系統應用,2008(2):64?66.
[8] OpenCores. Wishbone B4 [R]. [S.l.]: OpenCores, 2010.