官术网_书友最值得收藏!

第1章 基于Nios Ⅱ處理器的嵌入式系統(tǒng)

1.1 片上系統(tǒng)概述

數(shù)字電路高度集成化是現(xiàn)代電子發(fā)展的大勢所趨,片上系統(tǒng)(SOPC)的概念也就應(yīng)運而生。它是指在單個芯片上集成一個完整的系統(tǒng),一般包括系統(tǒng)級芯片控制邏輯模塊、微處理器/微控制器內(nèi)核模塊、數(shù)字信號處理器模塊、存儲器或存儲器控制模塊、與外部通信的各種接口協(xié)議模塊、含有ADC/DAC的模擬前端模塊、電源及功耗管理模塊,它是一個具備特定功能、應(yīng)用于特定產(chǎn)品的高度集成電路。

片上系統(tǒng)其實就是系統(tǒng)小型化的代名詞。如圖1.1所示,一個相對復(fù)雜的系統(tǒng)采用傳統(tǒng)的設(shè)計方案可能需要一個CPU做整體控制,一個FPGA做接口的邏輯粘合和一些信號的預(yù)處理,還需要一個DSPs做復(fù)雜的算法實現(xiàn),F(xiàn)lash和SDRAM分別作為程序存儲器和數(shù)據(jù)緩存器,此外還會有一些專用的外設(shè)模塊,這些器件都放置在一塊或者數(shù)塊電路板上。這樣一個系統(tǒng)顯得相當(dāng)繁雜,不僅調(diào)試難度大,而且系統(tǒng)維護也不方便。

圖1.1 傳統(tǒng)的復(fù)雜系統(tǒng)

基于FPGA的片上系統(tǒng)提出了這樣一種解決方案:如圖1.2所示,F(xiàn)PGA內(nèi)部集成了CPU、DSPs以及各種接口控制模塊,對有些存儲量要求不大的系統(tǒng)甚至集成了外部的Flash和SDRAM。

圖1.2 基于FPGA的片上系統(tǒng)

可以看出,SOPC就是一顆比MCU更強大的MCU。它的偉大之處在于系統(tǒng)的完全自主定制性,有了SOPC,設(shè)計者就不需要再拿著選型手冊海選既必須具有這個外設(shè)又必須滿足那個條件的處理器了;甚至有時都不需要考慮處理器都能夠掛上什么樣的存儲器來讀寫數(shù)據(jù)、運行程序。只要有SOPC,一切就能輕松搞定,想加什么外設(shè)就加什么,一切由你做主。這就是SOPC相對于以往的嵌入式系統(tǒng)設(shè)計最大的特點和優(yōu)勢。

SOPC需要一個強大的系統(tǒng)開發(fā)工具。Altera的FPGA開發(fā)工具Quartus Ⅱ中集成的Qsys可以幫助用戶定義并生成一個完整的片上可編程系統(tǒng)(System-on-Programmable-Chip),它比傳統(tǒng)的手動集成方式要方便得多。Qsys中可以添加各種Altera FPGA器件可以使用的硬核或軟核處理器、常用外設(shè)以及用戶自定義的定制外設(shè),非常靈活方便。Qsys使用起來就如同小朋友們的樂高積木一樣簡單,并沒有傳說中的那么“高深”,只要大家跟著教程一步一個腳印往下走,相信大家很快就可以玩轉(zhuǎn)基于Qsys的Nios Ⅱ嵌入式處理器系統(tǒng)。

用戶可以使用Qsys生成一個基于Nios Ⅱ處理器的嵌入式系統(tǒng)。然而,Qsys遠不止一個Nios Ⅱ處理器而已,它還可以生成一個不包含處理器或者包含Nios Ⅱ以外的軟核處理器的系統(tǒng)。

使用傳統(tǒng)的設(shè)計方法,用戶必須手動編寫HDL代碼用于連接各個子系統(tǒng)。而使用Qsys,用戶只要通過傻瓜的圖形界面接口(GUI)就可以自動生成各個組件的互連邏輯。Qsys生成了系統(tǒng)所有組件的HDL文件,頂層的HDL文件則例化好系統(tǒng)的所有組件。Qsys既能夠生成Verilog代碼也能夠生成VHDL代碼。

再看一個更接近實際應(yīng)用的嵌入式系統(tǒng)板卡,如圖1.3所示。在這塊PCB(Printed Circuit Board)上,單論芯片可能只有一片F(xiàn)PGA、一片作為協(xié)處理器(Co-Processor)的CPU、兩片DDR2 SDRAM存儲器分別掛在FPGA和協(xié)處理器上,還有一個叫作總線橋(Bus Bridge)的接口(也許只是簡單的連線,也許是一塊協(xié)議芯片)。這個系統(tǒng)中,看似簡單,其實不然,F(xiàn)PGA里大有文章可做。

從總線橋開始說,通俗地理解,橋就是用來連接河兩岸的,比如主板上的南橋和北橋(CPU和內(nèi)存居然還隔著條河?)。CPU很好很強大,可以處理海量數(shù)據(jù),但是再強大也沒法發(fā)出聲音、顯示圖像,術(shù)業(yè)有專攻,CPU就是負責(zé)數(shù)據(jù)運算和控制,別的基本不管。因此,CPU需要通過橋和外圍設(shè)備進行信息交互,把需要進行處理的數(shù)據(jù)接收進來,把處理完的數(shù)據(jù)發(fā)送出去,可能說得不是很專業(yè),但是基本就是這樣。那么總線又是什么?CPU的引腳終歸是有限的,如果一個CPU要和所有外設(shè)都搭個“獨木橋”,恐怕CPU要像巴掌那么大才夠在肚子底下容下那么多“腳”了。這么看,這個橋真不能是獨木橋,至少該是一座縱橫南北的“立交橋”,再形象一點說,這座立交橋的交錯中心點是貫通的,處于這個中心點的車可以通過處于任何高度的道路駛向四面八方。那么,CPU就處于這樣的核心位置。這里不再深入,總線其實就是CPU的一組滿足一定協(xié)議的引腳的集合,這組引腳可以和多個同樣滿足這個特定協(xié)議的不同外設(shè)進行連接。當(dāng)CPU要用這個總線和某個外設(shè)交互信息時,就會在它們之間搭起一座獨木橋,其他外設(shè)就只能望橋興嘆。總線從某種意義上看就是為了節(jié)約引腳而出現(xiàn)的,當(dāng)然從另一種意義上看,也是為了統(tǒng)一信息交互方式。這里FPGA外面掛了個“總線橋”,用于這個系統(tǒng)和外部設(shè)備交互,其實FPGA內(nèi)部的SOPC也有個總線橋,它的名字叫作Avalon,Avalon總線,以后大家越使用它越會發(fā)現(xiàn)它的強大。上面提到Nios Ⅱ只是一個處理器,而Avalon總線就是要把Nios Ⅱ和所有其他在FPGA內(nèi)(如圖1.3中的PIO)甚至FPGA外定制的外設(shè)(如圖1.3中的DDR2存儲器)連接起來。當(dāng)然也可以理解那個系統(tǒng)互連邏輯(System Interconnect Fabric)就是Avalon,但是Avalon只是系統(tǒng)互連邏輯的一種形式而已,想了解其他的形式就得讀者自己參考數(shù)據(jù)手冊。

圖1.3 FPGA上的SOPC系統(tǒng)實例

其實FPGA系統(tǒng)內(nèi)和常見的嵌入式系統(tǒng)的架構(gòu)有著異曲同工之妙,比如協(xié)處理器(Co-Proccessor)外面和系統(tǒng)模塊(System Module)內(nèi)的32位處理器(Proccessor,可認為它就是Nios Ⅱ)一樣,要掛接DDR2存儲器(Memory)。

圖1.3中的系統(tǒng)里最核心的東西就是FPGA。用FPGA搭一個SOPC的最大優(yōu)勢,就是靈活性。傳統(tǒng)的51單片機系統(tǒng)常常是一個MCU旁邊掛很多諸如74xxx的芯片,而當(dāng)16位、32位CPU在嵌入式系統(tǒng)中大行其道的時候,用戶依然常常困擾于系統(tǒng)擴展的各種接口之間無法有效的得到控制和管理,甚至?xí)杏X引腳數(shù)量受限,大大影響了系統(tǒng)的性能和擴展升級。因此,基于FPGA的SOPC被推上前臺。因為它有足夠的引腳,支持各式各樣不同的電壓標(biāo)準(zhǔn),可以并行處理各類復(fù)雜任務(wù),可以像一張白紙任大家涂畫……這就是大家學(xué)習(xí)它的理由。其實圖1.1和圖1.2已經(jīng)完全闡釋了FPGA上SOPC與以往系統(tǒng)的不同,基本上一片F(xiàn)PGA就可以集成大多數(shù)常用的外設(shè),無論從BOM成本上還是電路板面積上都有很大的優(yōu)勢。

主站蜘蛛池模板: 根河市| 全南县| 阜康市| 扬中市| 诸暨市| 北宁市| 佛冈县| 莱西市| 宁河县| 克拉玛依市| 花垣县| 佛学| 昂仁县| 辽阳县| 民乐县| 辽宁省| 乐至县| 日照市| 仙桃市| 正镶白旗| 大兴区| 咸宁市| 禹城市| 如东县| 邢台县| 通道| 弥渡县| 三门县| 临漳县| 手游| 廉江市| 凌云县| 宣威市| 靖安县| 伊宁县| 永新县| 福贡县| 封开县| 永平县| 平昌县| 柳江县|