<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于LEON微處理器的SOC原型平臺設計

基于LEON微處理器的SOC原型平臺設計

——
作者:高 鵬 時(shí)間:2005-06-13 來(lái)源:電子產(chǎn)品世界 收藏

高 鵬

上海同濟大學(xué)電子信息學(xué)院   200092

摘 要:本文首先簡(jiǎn)要介紹了LEON2微處理器,然后論述在A(yíng)ltera的FPGA開(kāi)發(fā)板上建立基于LEON2的原型平臺,從硬件設計和軟件結構兩個(gè)方面詳細介紹了設計思路。

關(guān)鍵字:LEON2 現場(chǎng)邏輯門(mén)陣列 片上系統 原型平臺

Design a prototype platform based on LEON2
Gao peng
E-mail: gaopeng828@hotmail.com

Abstract: This paper first introduce LEON2 micro-processor, then tell how to design prototype platform based on LEON2 in Altera’s FPGA development board. It specify our think of hardware design and software architecture.

Keywords: LEON2   FPGA      Prototype-platform

  隨著(zhù)IC制造工藝水平的快速發(fā)展,片上系統(SOC)在設計中得到廣泛應用。微處理器IP核是SOC片上系統的核心部分。但是大多數公司和研究機構沒(méi)有足夠的財力與人力開(kāi)發(fā)自己的處理器,所以業(yè)界比較流行的做法就是購買(mǎi)微處理器的IP核,例如ARM核或MIPS核,但需要數十萬(wàn)美金的許可證費用的投入。

  除了昂貴的ARM核與MIPS核以外,我們還有另外一種選擇,就是選擇開(kāi)放源代碼的微處理器的IP核。目前可以實(shí)際使用的開(kāi)放源代碼處理器有LEON系列與OPENRISC系列兩種。本文就介紹了LEON2微處理器核,快速的建立起一個(gè)SOC的平臺的原型對于驗證系統性能與加快軟件開(kāi)發(fā)都是相當重要的。本文還詳細闡述了如何在A(yíng)ltera的FPGA開(kāi)發(fā)板上建立基于LEON2微處理器的SOC原型平臺。

1 LEON2微處理器

  LEON處理器系列是歐洲航天局的下屬的研究所開(kāi)發(fā)的32位微處理器,應用在航天局的各種芯片內。目前有LEON2,LEON3系列。LEON系列處理器是一個(gè)可配置,可綜合適于在SOC設計中應用的微處理器核。LEON2處理器是一個(gè)使用SPARC V8指令集的32位的RISC處理器,它的源代碼由可綜合的VHDL代碼構成。同時(shí)LEON2的性能也很不錯,使用Dhrystone2.1的測試平臺,LEON可以達到大約0.85MIPS/MHz。更大的好處是LEON處理器是一個(gè)公開(kāi)源代碼,遵循GNU LGPL協(xié)議。任何人都可以其網(wǎng)站上免費下載其硬件代碼和各種開(kāi)發(fā)軟件工具與相關(guān)文檔。并且在自己項目中使用。

  LENO2的處理器具有以下的特點(diǎn):

  內部使用了5級流水線(xiàn),兼容SPARC V8指令集。

  具有硬件乘法,除法和MAC的功能。

  具有分開(kāi)的指令和數據cache結構(哈佛結構),可以根據需求靈活的配置cache的容量,大小范圍是1-64kbyte。

  片上總線(xiàn)規范使用了AMBA2.0規范,支持APB,和AHB標準。

  具備一些片上常用外設,包括UART,中斷控制,I/O端口,實(shí)時(shí)時(shí)鐘,看門(mén)狗等。

  支持硬件調試功能。

  從上面的介紹可以看出,LEON2的性能相當不錯,但是作為一個(gè)處理器,除了本身的性能以外,同時(shí)還必須要有高效的編譯器軟件開(kāi)發(fā)環(huán)境,各種應用軟件和操作系統的支持。ARM和MIPS在嵌入式的廣泛應用,與其背后的高效的軟件編譯開(kāi)發(fā)工具,以及眾多支持ARM和MIPS的實(shí)時(shí)操作系統軟件有很大關(guān)系。很多公司選擇ARM或MIPS,不僅看重微處理器的性能,更大的方面是看重其背后的軟件支持環(huán)境。雖然LEON系列在這一點(diǎn)上不如商用微處理器,但是也是相當不錯了。和硬件代碼一起,可以下載LECCS,一個(gè)基于GCC的免費的C/C++的交叉編譯系統,同時(shí)也可以使用GDB調試工具做源代碼級別的調試。開(kāi)源社區還提供免費的實(shí)時(shí)系統RTEMS,UClinux,eCos等免費實(shí)時(shí)操作系統。上述實(shí)時(shí)操作系統都已在LEON2處理器上移植成功了。

  由于LEON2處理器的源代碼是公開(kāi)的,任何人都可以免費得到和使用。很多研究機構和公司沒(méi)有自己的處理器的核,如果去開(kāi)發(fā),需要大量的人力物力支持,而且附帶的各種軟件編譯器的開(kāi)發(fā)也需要大量的工作,對于中小型的公司或研究院很難做到。如果通過(guò)購買(mǎi)ARM或者M(jìn)IPS的核,通常都需要幾十萬(wàn)美金的許可證的費用,同時(shí)以后的產(chǎn)品也必須要付一定的費用。而LEON系列處理器就給了這些公司和研究機構另外的一種選擇。雖然在功耗和性能上同常用的ARM,MIPS等處理器還有些不足,但是完全可以使用。LEON處理器是經(jīng)過(guò)了多個(gè)ASIC芯片流片成功的實(shí)踐檢驗。目前基于LEON系列的ASIC芯片也有幾十個(gè)項目。

2 在FPGA開(kāi)發(fā)板上建立基于LEON2的SOC原型平臺

  隨著(zhù)片上系統復雜性的不斷增加,為了克服片上系統(SOC)設計的挑戰,半導體業(yè)界正在采取一種基于系統原型的平臺設計方法。這種方法就是通過(guò)將片上系統映射到FPGA,這樣可以在接近運行速度的前提下,驗證硬件和軟件。這樣不僅給為軟件部分能盡早的進(jìn)行開(kāi)發(fā)與調試工作提供了一個(gè)原型,同時(shí)也可以在實(shí)際運行中發(fā)現一些在系統設計中沒(méi)有注意的地方。這樣最終可以縮短設計周期,同時(shí)為ASIC設計一次成功提供了更大的把握。

  在我們的設計中,為了上述的目的,所以決定在FPGA開(kāi)發(fā)板上建立基于LEON2處理器的SOC平臺。使用這個(gè)原型系統,就可以很容易驗證系統的性能,并且加速軟件開(kāi)發(fā)調試流程。圖2 就是我們的一個(gè)基于LEON2的平臺的模塊框圖。LEON2處理器作為核心部分,片內ROM存放monitor負責系統初始化和將程序拷貝到片外SRAM內的任務(wù),片外RAM是FPGA開(kāi)發(fā)板上memory,用來(lái)存放程序和數據。我們自己設計的IP核通過(guò)AHB總線(xiàn)和LEON2相互交互。

  FPGA開(kāi)發(fā)板是Altera公司的FPGA開(kāi)發(fā)板NIOS。板上主要有以下資源,一塊APEX20KE的FPGA,256K字節的RAM(2個(gè)64K*16bit的片子),JTAG接口(通過(guò)JTAG接口我們可以從PC機上對APEX20KE進(jìn)行編程),串行口和計算機的COM1口相連。APEX20KE是Altera公司的可編程邏輯器件,標準門(mén)數為20萬(wàn)門(mén)左右,片上可配置RAM或ROM為10K。

  開(kāi)發(fā)流程如圖3開(kāi)發(fā)流程圖。

  硬件流程: LEON2軟核用VHDL代碼編寫(xiě)的,和我們的VHDL設計文件一起使用Synplify綜合工具生成FPGA的網(wǎng)表文件,然后使用Altera公司的布局布線(xiàn)和下載的工具Quartus生成相應的SOF文件。通過(guò)JTAG端口將SOF文件下載到片子上去。對FPGA硬件進(jìn)行配置。由于Quartus軟件可以預先配置APEX20KE片上ROM,所以我們可以利用這一點(diǎn),在LEON2的片上ROM預先配置好1K大小的Monitor軟件。

  軟件開(kāi)發(fā)流程,當軟件代碼完成以后,使用LEON2的基于GCC的LECCS交叉編譯系統對C代碼編譯,得到二進(jìn)制代碼以后,就可以通過(guò)串行口下載到FPGA開(kāi)發(fā)板上。

3 軟硬件詳細設計

  在LEON的開(kāi)發(fā)網(wǎng)站上可以下載VHDL代碼, LEON2是一個(gè)可配置的處理器核,可以根據具體系統的應用范圍,對處理器的性能進(jìn)行權衡。例如可以將指令和數據cache進(jìn)行設置,選擇從1kbyte到64kbyte的大小。同時(shí)選擇處理器是否要支持硬件乘法器。是否要有硬件debug的功能等等。圖四是LEON2的處理器配置的界面,將各個(gè)選項部分配置完畢,系統生成對應的VHDL代碼。

  在最終的設計中,選取了指令和數據cache分別是1kbyte,不帶有硬件乘法功能的模塊。得到LEON2的VHDL代碼,然后加入我們自己設計的HDL代碼,使用modelsim做簡(jiǎn)單的功能仿真。等功能仿真通過(guò)后,使用synplify對VHDL綜合,應用 APEX20KE器件,最終的綜合結果是:占用 FPGA資源是5800個(gè)LE,可以達到的時(shí)鐘頻率最大46M。應當注意的是,由于A(yíng)PEX20KE器件是Altera公司2000年的產(chǎn)品,如果采用Altera新一代的FPGA器件,例如StratixII器件,時(shí)鐘頻率可以達到107M,可以滿(mǎn)足大多數的應用領(lǐng)域。

  使用quartus進(jìn)行布局布線(xiàn)時(shí),需要將LEON2和外圍的memory連接起來(lái), LEON2對程序存儲器和數據存儲器是統一尋址。但是在FPGA原型平臺設計時(shí),軟件需要多次修改調試,所以不能采取將程序固化在片外flash這種做法。所以采用了圖5的結構,LEON2核同片內ROM和片外SRAM連接。其中ROM存放了一個(gè)monitor程序。由于這個(gè)部分是整個(gè)平臺正常工作的核心,所以下面我專(zhuān)門(mén)對它做詳細的解釋。

   LEON2的平臺中有兩個(gè)memory,分別是片內ROM,片外SRAM,LEON2對存儲器是統一尋址的。分配如下:

 

    地址范圍

     大小

       映射

0x00000000- 0x1FFFFFFF

     512 M

       Prom

0x20000000- 0x3FFFFFFF

     512 M

        I/O

0x40000000- 0x7FFFFFFF

     1G

        SRAM

  Monitor的主要作用是在LEON2系統reset初始化的時(shí)候首先對處理器初始化,對LEON2的存儲配置寄存器進(jìn)行配置。然后向UART口發(fā)送啟動(dòng)信息,然后等待從UART信息。當軟件部分使用交叉編譯器LECCS在PC上編譯完畢后, PC機通過(guò)UART口和FPGA開(kāi)發(fā)板相互通信,就可以將編譯好的srec文件下載到FPGA開(kāi)發(fā)板上去,放置在片內rom里面的monitor程序就讀入程序的內容以及程序的起始地址。起先monitor將srec程序拷貝到SRAM程序區,等全部程序下載好以后, monitor最后一條程序就會(huì )自動(dòng)跳轉到程序的起始位置,執行SRAM里的程序。

  使用圖5的連接。由于data_to_leon[31:0]的數據線(xiàn)是單向的,我們使用多路復用器來(lái)選擇從外部SRAM的數據輸入或者內部ROM數據輸入和data_to_leon[31:0]相互連接,使用romsn[0]來(lái)選擇。romsn[0]只有當訪(fǎng)問(wèn)PROM時(shí)才會(huì )置低,也就是地址為0x00000000-0x1FFFFFFF的時(shí)候。根據上面的描述只有系統reset初始化的時(shí)候訪(fǎng)問(wèn)PROM,也就是romsn[0]置低,等下載的程序全部都拷貝到SRAM程序區以后,monitor會(huì )控制LEON2處理器跳轉到程序的起始位置,也就是片外的SRAM內,這時(shí)候romsn[0]保持高電平,也就是data_to_len[31:0]于ram_datain[31:0]連接。這樣系統就只會(huì )接收外部SRAM的數據。

  也就是,程序下載完畢后,就只會(huì )執行下載的程序。這樣就可以反復修改程序,反復下載程序??梢栽诶眠@個(gè)原型平臺開(kāi)發(fā)和調試軟件硬件程序。圖6是monitor的程序框圖。

  最終,在FPGA里根據上面圖5的連接將LEON2分別和片內ROM,片外SRAM相互連接,其中片內rom放入了前面所說(shuō)的monitor的程序。使用quartus做布局布線(xiàn)和下載。最終在FPGA開(kāi)發(fā)板上建立了LEON2的SOC原型平臺,系統可以穩定的工作在33M的時(shí)鐘下,并且由于FPGA的可多次配置的特性,極大的方便了軟件模塊和硬件模塊的開(kāi)發(fā)調試工作。

4 總結和題外話(huà)

  上面的內容論述了如何利用Altera的FPAG開(kāi)發(fā)板資源,使用開(kāi)放源代碼的LEON2微處理器,建立一個(gè)基于LEON2的SOC原型開(kāi)發(fā)平臺。并且從軟件結構和硬件設計的兩個(gè)方面詳細介紹了這個(gè)平臺的建立。經(jīng)過(guò)實(shí)際使用,完全滿(mǎn)足要求,加快了我們的項目開(kāi)發(fā)進(jìn)度。

參考文獻:

1 單片機原理及接口技術(shù)    李朝青 編著(zhù) 北京航空航天大學(xué)出版社 1994年第一版

2 Nios Embedded Processor Development board  Altera Corporation  March   2002, ver2.0

3 Nios Embedded Processor Getting Started      Altera Corporation  January  2002 ver2.0

4 Nios board schematic                      Altera Corporation  January  2002 ver2.0

5 The LEON-2 Process User’s Mannual          Version 1.0.13  August    2003

http://www.gaisler.com/index.html



關(guān)鍵詞: LEON微處理器 SOC SoC ASIC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>