您的位置:首頁 > 熱點 >

FPGA開發(fā)板快速教程(一)

前言FPGA在復雜邏輯電路以及數字信號處理領域中扮演者越來越重要的角色,SOC(片上系統(tǒng))以其低功耗,高性能,低成本,高可靠性等優(yōu)點成為嵌入式系統(tǒng)的發(fā)展趨勢。作為一個簡明的教程,主要宗旨是讓初學者快速地了解FPGA/SOPC(可編程片上系統(tǒng))開發(fā)的流程。目前IT技術的發(fā)展可以說是一日千里,以本人的觀點來講,如果希望在電子設計領域有所作為,則必須具備快速掌握新技術的能力。電子設計最重要的是實踐的積累,我們只要具備了一定的基礎,應當馬上投入實踐,否則很多概念都無法真正理解。有不少人包括我,當下決心要成為一個合格的電子設計工程師的時候,總是想如果把有關電路方面的理論都掌握了才能所向披靡,有底氣參加實際項目設計。當然如果能做到“把有關理論都掌握了”這樣的境界,我想應該是很理想的,但經驗發(fā)現(xiàn)這并不實際。據我所知,我所認識的不少電子設計牛人,他們的理論知識可能都比不上我們的本科生,但很多不錯的產品都是從他們的手中開發(fā)出來的,有了實踐的經驗后,他們掌握新技術的速度相當驚人。有人跟我說:“新技術是拿來用的,不是拿來學的。”他們認為掌握新的設計技術應當盡快掌握它的設計流程。因此,我參考朋友給我的意見,寫了這個簡易的教程,以非常詳細的實例來讓初學者了解基于QuartusII和NiosII IDE的FPGA/SOPC開發(fā)的基本流程,目的是為了讓初學者盡快上手FPGA/SOPC的開發(fā)流程,盡快投入到實踐中。為了易于說明問題,本教程中的一些概念并不是很嚴謹,如果讀者對某些提法有異議,請參考相關資料和教材,并以相關資料和教材為準。通過該簡明教程,初學者能快速了解FPGA/SOPC的基本開發(fā)流程,很多技巧和深入理解都靠長期的經驗積累,因此初學者應該在了解了基本流程以后,思維不能局限于此,應在實踐中提高水平,并參考更全面和權威的資料。 本教程配套CT-SOPCx系列FPGA/SOPC開發(fā)學習板套件(對于該套件的相關內容請參考附錄。)以實踐為基礎,適合具備基本的數字電路設計基礎的初學者。第一章是CPLD/FPGA的基本知識,這部分內容摘自互聯(lián)網并稍加刪改,對于CPLD/FPGA知識為零的初學者應先了解這部分內容;對于已經有了一定基礎的同學可以跳過這部分內容。第二章以兩個例子來讓初學者了解FPGA的基本開發(fā)流程,并熟悉QuartusII軟件的使用。第三章以一個例子來讓初學者了解基于NiosII軟CPU核的SOPC設計流程,并熟識SOPC Builder和NiosII IDE的基本使用。附錄是本文所涉及的例子的學習板相關的內容。 由于本人水平有限,錯漏和不嚴謹之處在所難免,歡迎大家批評指正。 嵌入式控制研究室              http://www.21control.com 2006年4月20日 目 錄 第一章PLD/FPGA的基本知識 ……………………………………………………………………… 第二章 FPGA基本教程 …………………………………………………………………………………… 第一節(jié) FPGA的基本開發(fā)流程 ……………………………………………………………………………… 第二節(jié) 基于QuartusII的實例………………………………………………………………………………… 實驗一 實驗板上的KEY1按鈕控制FPGA核心板上的第一個LED燈介紹 ……………………………… 實驗二 7段數碼管實驗 ………………………………………………………………………………… 實驗三 用FPGA設計串口數據收發(fā) ………………………………………………………………………… 第三章 SOPC的基本開發(fā)流程 ………………………………………………………………………………… 第一節(jié) SOPC vs MCU、DSP和FPGA ……………………………………………………………………… 第二節(jié) 基于QuantusII和NiosII的SOPC基本開發(fā)流程 …………………………………………………… 第三節(jié) 基于QuantusII和NiosII的SOPC實例 …………………………………………………………… 實驗一 核心板上的兩個LED交替閃爍 ………………………………………………………………… 實驗二 4位7段數碼管IP core設計以及flash的燒寫教程 ………………………………… 實驗三 LCD設備驅動開發(fā) ……………………………………………………………………… 實驗四 ALL_TEST綜合設計 …………………………………………………………………………… 第四章 FPGA開發(fā)板V3.0中嵌入Uclinux的步驟和方法…………………………………………………… 第一章 CPLD/FPGA的基本知識 (一)可編程邏輯器件的歷史和概述 隨著數字電路應用越來越廣泛,傳統(tǒng)通用的數字集成芯片已經難以滿足系統(tǒng)的功能要求,而且隨著系統(tǒng)復雜程度的提高,所需通用集成電路的數量呈爆炸性增值,使得電路的體積膨大,可靠性難以保證。此外,現(xiàn)代產品的生命周期都很短,一個電路可能需要在很短的周期內作改動以滿足新的功能需求,對于采用通用的數字集成電路設計的電路系統(tǒng)來說即意味著重新設計和重新布線。因此,系統(tǒng)設計師們希望自己設計專用集成電路(ASIC)芯片,而且希望ASIC的設計周期盡可能短,最好是在實驗室里就能設計出合適的ASIC芯片,并且立即投入實際應用之中,因而出現(xiàn)了現(xiàn)場可編程邏輯器件(FPLD),其中應用最廣泛的當屬現(xiàn)場可編程門陣列(FPGA)和復雜可編程邏輯器件(CPLD)。 早期的可編程邏輯器件只有可編程只讀存貯器(PROM)、紫外線可按除只讀存貯器(EPROM)和電可擦除只讀存貯器(EEPROM)三種。由于結構的限制,它們只能完成簡單的數字邏輯功能。 其后,出現(xiàn)了一類結構上稍復雜的可編程芯片,即可編程邏輯器件(PLD),它能夠完成各種數字邏輯功能。典型的PLD由一個“與”門和一個“或”門陣列組成,而任意一個組合邏輯都可以用“與一或”表達式來描述,所以, PLD能以乘積和的形式完成大量的組合邏輯功能。 這一階段的產品主要有PAL(可編程陣列邏輯)和GAL(通用陣列邏輯)。PAL由一個可編程的“與”平面和一個固定的“或”平面構成,或門的輸出可以通過觸發(fā)器有選擇地被置為寄存狀態(tài)。 PAL器件是現(xiàn)場可編程的,它的實現(xiàn)工藝有反熔絲技術、EPROM技術和EEPROM技術。還有一類結構更為靈活的邏輯器件是可編程邏輯陣列(PLA),它也由一個“與”平面和一個“或”平面構成,但是這兩個平面的連接關系是可編程的。 PLA器件既有現(xiàn)場可編程的,也有掩膜可編程的。 在PAL的基礎上,又發(fā)展了一種通用陣列邏輯GAL (Generic Array Logic),如GAL16V8,GAL22V10 等。它采用了EEPROM工藝,實現(xiàn)了電可按除、電可改寫,其輸出結構是可編程的邏輯宏單元,因而它的設計具有很強的靈活性,至今仍有許多人使用。 這些早期的PLD器件的一個共同特點是可以實現(xiàn)速度特性較好的邏輯功能,但其過于簡單的結構也使它們只能實現(xiàn)規(guī)模較小的電路。為了彌補這一缺陷,20世紀80年代中期。 Altera和Xilinx分別推出了類似于PAL結構的擴展型 CPLD(Complex Programmab1e Logic Dvice)和與標準門陣列類似的FPGA(Field Programmable Gate Array),它們都具有體系結構和邏輯單元靈活、集成度高以及適用范圍寬等特點。這兩種器件兼容了PLD和通用門陣列的優(yōu)點,可實現(xiàn)較大規(guī)模的電路,編程也很靈活。與門陣列等其它ASIC(Application Specific IC)相比,它們又具有設計開發(fā)周期短、設計制造成本低、開發(fā)工具先進、標準產品無需測試、質量穩(wěn)定以及可實時在線檢驗等優(yōu)點,因此被廣泛應用于產品的原型設計和小批量產品生產(一般在10,000件以下)之中。幾乎所有應用門陣列、PLD和中小規(guī)模通用數字集成電路的場合均可應用FPGA和CPLD器件。 (二)FPGA、CPLD 概述 FPGA(現(xiàn)場可編程門陣列)與 CPLD(復雜可編程邏輯器件)都是可編程邏輯器件,它們是在PAL,GAL等邏輯器件的基礎之上發(fā)展起來的。同以往的PAL,GAL等相比較,F(xiàn)PGA/CPLD的規(guī)模比較大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGA/CPLD實際上就是一個子系統(tǒng)部件。這種芯片受到世界范圍內電子工程設計人員的廣泛關注和普遍歡迎。經過了十幾年的發(fā)展,許多公司都開發(fā)出了多種可編程邏輯器件。比較典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,它們開發(fā)較早,占用了較大的PLD市場。通常來說,在歐洲用Xilinx的人多,在日本和亞太地區(qū)用ALTERA的人多,在美國則是平分秋色。全球PLD/FPGA產品60%以上是由Altera和Xilinx提供的??梢灾vAltera和Xilinx共同決定了PLD技術的發(fā)展方向。當然還有許多其它類型器件,如:Lattice,Vantis,Actel,Quicklogic,Lucent等。 (99年Lattice收購了Vantis,成為第三大PLD供應商。 本文引用地址:http://www.eepw.com.cn/article/201706/349482.htm 表1.2.1 1998年世界十大PLD公司

盡管FPGA,CPLD和其它類型PLD的結構各有其特點和長處,但概括起來,它們是由三大部分組成的:(1)一個二維的邏輯塊陣列,構成了PLD器件的邏輯組成核心;(2)輸入/輸出塊;(3)連接邏輯塊的互連資源,由各種長度的連線線段組成,其中也有一些可編程的連接開關,它們用于邏輯塊之間、邏輯塊與輸入/輸出塊之間的連接。

對用戶而言,雖然CPLD與FPGA的內部結構稍有不同,但其用法都一樣,所以多數情況下,不加以區(qū)分。FPGA/CPLD芯片都是特殊的ASIC芯片,它們除了具有ASIC的特點之外,還具有以下幾個優(yōu)點: (1) 隨著VlSI(Very Large Scale IC,超大規(guī)模集成電路)工藝的不斷提高單一芯片內部可以容納上百萬個晶體管, FPGA/CPLD芯片的規(guī)模也越來越大,其單片邏輯門數已達到上百萬門,它所能實現(xiàn)的功能也越來越強,同時也可以實現(xiàn)系統(tǒng)集成,即片上系統(tǒng)SOC。 (2) FPGA/CPLD芯片在出廠之前都做過百分之百的測試,不需要設計人員承擔投片風險和費用,設計人員只需在自己的實驗室里就可以通過相關的軟硬件環(huán)境來完成芯片的最終功能設計。所以, FPGA/CPLD的資金投入小,節(jié)省了許多潛在的花費。 (3) 用戶可以反復地編程、擦除、使用或者在外圍電路不動的情況下用不同軟件就可實現(xiàn)不同的功能。所以,用FPGA/PLD 試制樣片,能以最快的速度占領市場。 FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及版圖設計工具和編程器等全線產品,電路設計人員在很短的時間內就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作。當電路有少量改動時,更能顯示出FPGA/CPLD的優(yōu)勢。電路設計人員使用FPGA/CPLD進行電路設計時,不需要具備專門的IC(集成電路)深層次的知識, FPGA/CPLD軟件易學易用,可以使設計人員更能集中精力進行電路設計,快速將產品推向市場。 (4) 在線可編程技術(ISP)使得使用CPLD/FPGA的產品可以做到遠程升級。 (以上內容參照西電《CPLD技術及其應用》,有改動) (三)PLD/FPGA 結構與原理初步 一. 基于乘積項(Product-Term)的PLD結構 采用這種結構的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工藝),Xilinx的XC9500系列(Flash工藝)和Lattice,Cypress的大部分產品(EEPROM工藝)。我們先看一下這種PLD的總體結構(以MAX7000為例,其他型號的結構與此都非常相似):

這種PLD可分為三塊結構:宏單元(Marocell),可編程連線(PIA)和I/O控制塊。 宏單元是PLD的基本結構,由它來實現(xiàn)基本的邏輯功能。圖1.3.1中陰影部分是多個宏單元的集合(因為宏單元較多,沒有一一畫出)。可編程連線負責信號傳遞,連接所有的宏單元。I/O控制塊負責輸入輸出的電氣特性控制,比如可以設定集電極開路輸出,擺率控制,三態(tài)輸出等。圖1.3.1 左上的INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局時鐘,清零和輸出使能信號,這幾個信號有專用連線與PLD中每個宏單元相連,信號到每個宏單元的延時相同并且延時最短。宏單元的具體結構見下圖:

左側是乘積項陣列,實際就是一個與或陣列,每一個交叉點都是一個可編程熔絲,如果導通就是實現(xiàn)“與”邏輯。后面的乘積項選擇矩陣是一個“或”陣列。兩者一起完成組合邏輯。圖右側是一個可編程D觸發(fā)器,它的時鐘,清零輸入都可以編程選擇,可以使用專用的全局清零和全局時鐘,也可以使用內部邏輯(乘積項陣列)產生的時鐘和清零。如果不需要觸發(fā)器,也可以將此觸發(fā)器旁路,信號直接輸給PIA或輸出到I/O腳。 二. 乘積項結構PLD的邏輯實現(xiàn)原理下面我們以一個簡單的電路為例,具體說明PLD是如何利用以上結構實現(xiàn)邏輯的,電路如下圖:

假設組合邏輯的輸出(AND3的輸出)為f,則f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我們以!D表示D的“非”) PLD將以下面的方式來實現(xiàn)組合邏輯f:

A,B,C,D由PLD芯片的管腳輸入后進入可編程連線陣列(PIA),在內部會產生A,A反,B,B反,C,C反,D,D反8個輸出。圖中每一個叉表示相連(可編程熔絲導通),所以得到:f= f1 + f2 = (A*C*!D) + (B*C*!D) 。這樣組合邏輯就實現(xiàn)了。 圖3電路中D觸發(fā)器的實現(xiàn)比較簡單,直接利用宏單元中的可編程D觸發(fā)器來實現(xiàn)。時鐘信號CLK由I/O腳輸入后進入芯片內部的全局時鐘專用通道,直接連接到可編程觸發(fā)器的時鐘端??删幊逃|發(fā)器的輸出與I/O腳相連,把結果輸出到芯片管腳。這樣PLD就完成了圖1.3.3所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預)。 圖1.3.3的電路是一個很簡單的例子,只需要一個宏單元就可以完成。但對于一個復雜的電路,一個宏單元是不能實現(xiàn)的,這時就需要通過并聯(lián)擴展項和共享擴展項將多個宏單元相連,宏單元的輸出也可以連接到可編程連線陣列,再做為另一個宏單元的輸入。這樣PLD就可以實現(xiàn)更復雜邏輯。 這種基于乘積項的PLD基本都是由EEPROM和Flash工藝制造的,一上電就可以工作,無需其他芯片配合。 三. 表(Look-Up-Table)的原理與結構采用這種結構的PLD芯片我們也可以稱之為FPGA:如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。查找表(Look-Up-Table)簡稱為LUT,LUT本質上就是一個RAM。 目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的16x1的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發(fā)軟件會自動計算邏輯電路的所有可能的結果,并把結果事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應的內容,然后輸出即可。 下面是一個4輸入與門的例子:

四. 基于查找表(LUT)的FPGA的結構 altera的FLEX/ACEX等芯片的結構如下圖:

邏輯單元(LE)內部結構 FLEX/ACEX的結構主要包括LAB,I/O塊,RAM塊(未表示出)和可編程行/列連線。在FLEX/ACEX中,一個LAB包括8個邏輯單元(LE),每個LE包括一個LUT,一個觸發(fā)器和相關的相關邏輯。LE是FLEX/ACEX芯片實現(xiàn)邏輯的最基本結構(altera其他系列,如APEX、CYCLONE等的結構與此基本相同,具體請參閱數據手冊)。 五.查找表結構的FPGA邏輯實現(xiàn)原理 我們還是以這個電路的為例:

A,B,C,D由FPGA芯片的管腳輸入后進入可編程連線,然后作為地址線連到到LUT,LUT中已經事先寫入了所有可能的邏輯結果,通過地址查找到相應的數據然后輸出,這樣組合邏輯就實現(xiàn)了。該電路中D觸發(fā)器是直接利用LUT后面D觸發(fā)器來實現(xiàn)。時鐘信號CLK由I/O腳輸入后進入芯片內部的時鐘專用通道,直接連接到觸發(fā)器的時鐘端。觸發(fā)器的輸出與I/O腳相連,把結果輸出到芯片管腳。這樣PLD就完成了圖1.3.3所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預)。 這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發(fā)器就可以完成。對于一個LUT無法完成的的電路,就需要通過進位邏輯將多個單元相連,這樣FPGA就可以實現(xiàn)復雜的邏輯。 由于LUT主要適合SRAM工藝生產,所以目前大部分FPGA都是基于SRAM工藝的,而SRAM工藝的芯片在掉電后信息就會丟失,一定需要外加一片專用配置芯片,在上電的時候,由這個專用配置芯片把數據加載到FPGA中,然后FPGA就可以正常工作,由于配置時間很短,不會影響系統(tǒng)正常工作。也有少數FPGA采用反熔絲或Flash工藝,對這種FPGA,就不需要外加專用的配置芯片。 六.選擇PLD還是FPGA? 根據上述PLD的結構和原理可以知道,PLD分解組合邏輯的功能很強,一個宏單元就可以分解十幾個甚至20-30多個組合邏輯輸入。而FPGA的一個LUT只能處理4輸入的組合邏輯,因此,PLD適合用于設計譯碼等復雜組合邏輯。但FPGA的制造工藝確定了FPGA芯片中包含的LUT和觸發(fā)器的數量非常多,往往都是幾千上萬,PLD一般只能做到512個邏輯單元,而且如果用芯片價格除以邏輯單元數量,F(xiàn)PGA的平均邏輯單元成本大大低于PLD。所以如果設計中使用到大量觸發(fā)器,例如設計一個復雜的時序邏輯,那么使用FPGA就是一個很好選擇。

標簽: SOPC FPGA 快速教程 開發(fā)板

相關閱讀