版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
FPGA嵌入式項目開發(fā)(\h第1篇FPGA基礎(chǔ)知識篇)目錄\h第1章FPGA入門了解\h1.1FPGA特點和應(yīng)用\h1.2FPGA體系結(jié)構(gòu)\h1.2.1FPGA基本結(jié)構(gòu)\h1.2.2FPGA的結(jié)構(gòu)特點\h1.2.3FPGA的編程工藝\h1.3FPGA常用芯片與選用\h1.3.1FPGA常用芯片\h1.3.2FPGA器件的選用\h第2章集成開發(fā)工具MAX+plusII\h2.1功能與菜單說明\h2.2MAX+plusII設(shè)計過程\h2.3MAX+plusII綜合設(shè)計選擇項\h2.3.1LPM庫的使用\h2.3.2項目層次結(jié)構(gòu)與文件系統(tǒng)\h2.3.3全局邏輯綜合方式\h2.3.4設(shè)置全局定時要求、定時分析\h2.3.5與第三方EDA軟件接口\h2.3.6設(shè)置器件的下載編程方式\h2.3.7FPGA器件燒寫方法\h第3章QuartusII使用詳解\h3.1QuartusII設(shè)計流程\h3.2QuartusII設(shè)計方法\h3.2.1自上而下與自下而上的設(shè)計方法比較\h3.2.2自上而下的漸進式編譯設(shè)計流程\h3.2.3自下而上的漸進式編譯設(shè)計流程\h3.3QuartusII各功能詳解\h3.3.1使用模塊編輯器\h3.3.2項目設(shè)置\h3.3.3時序分析報告\h3.3.4仿真\h3.3.5下載\h3.4時序約束與分析\h3.4.1時序約束與分析基礎(chǔ)\h3.4.2設(shè)置時序約束的方法\h3.4.3最小化時序分析\h3.5設(shè)計優(yōu)化\h3.5.1優(yōu)化流程\h3.5.2使用DSE\h3.5.3設(shè)計優(yōu)化的初次編譯\h3.5.4資源利用優(yōu)化\h3.5.5I/O時序優(yōu)化\h3.5.6最高時鐘頻率優(yōu)化\h3.6SignalTapII\h3.6.1設(shè)計中創(chuàng)建SignalTapII\h3.6.2通過SignalTapII察看數(shù)據(jù)\h3.6.3SignalTapII的高級配置第1章FPGA入門了解FPGA是現(xiàn)場可編程門陣列(FieldProgramableGateArray)的簡稱,是常用的嵌入式處理器之一,現(xiàn)在廣泛應(yīng)用于通信開發(fā)、消費電子、汽車電子、工業(yè)控制等領(lǐng)域。作為本書第1章,將首先介紹FPGA體系結(jié)構(gòu)和常用芯片,使讀者對FPGA的特點有一些入門性的了解。1.1FPGA特點和應(yīng)用FPGA是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物,是作為ASIC領(lǐng)域中的一種半定制電路而出現(xiàn)的。FPGA技術(shù)既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。1.FPGA的基本特點歸納起來,F(xiàn)PGA的基本特點有:(1)采用FPGA設(shè)計ASIC電路(專用集成電路),用戶不需要投片生產(chǎn),就能得到適用的芯片。(2)FPGA可做其他全定制或半定制ASIC電路的中試樣片。(3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。(4)FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。(5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。2.FPGA典型應(yīng)用在應(yīng)用方面,F(xiàn)PGA邏輯功能有:控制接口、總線接口、格式變換/控制、通道接口、協(xié)議控制接口、信號處理接口、成像控制/數(shù)字處理、加密/解密、錯誤探測等。FPGA的典型應(yīng)用則如表1-1所列。表1-1FPGA的典型應(yīng)用1.2FPGA體系結(jié)構(gòu)目前FPGA的品種很多,有Xilinx的XC系列、TI公司的TPC系列、Altera公司的FIEX系列等。其中,邏輯單元是FPGA內(nèi)部架構(gòu)的最基本單元,每個基本邏輯一般均包括兩個部分,一部分為實現(xiàn)組合邏輯部分,另一部分為實現(xiàn)時序邏輯部分。但系列產(chǎn)品不同,其定義不同,例如Altera的產(chǎn)品,每個基本單元LE含一個暫存器;Xilinx的產(chǎn)品,每個基本邏輯單元slices含兩個暫存器。故一般不用“門(gate)”的數(shù)量來衡量FPGA的大小,而用暫存器的多少來衡量芯片的容量大小。1.2.1FPGA基本結(jié)構(gòu)FPGA具有掩膜可編程門陣列的通用結(jié)構(gòu),它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來實現(xiàn)不同的設(shè)計。FPGA一般由3種可編程電路和1個用于存放編程數(shù)據(jù)的靜態(tài)存儲器SRAM組成。這3種可編程電路是:可編程邏輯塊(CLB——ConfigurableLogicBlock)、輸入/輸出模塊(IOB——I/OBlock)和互連資源(IR——InterconnectResource)。可編程邏輯塊CLB是實現(xiàn)邏輯功能的基本單元,它們通常規(guī)則地排列成一個陣列,散布于整個芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連線線段和一些可編程連接開關(guān),它們將各個CLB之間或CLB、IOB之間以及IOB之間連接起來,構(gòu)成特定功能的電路。1.可編程邏輯CLBCLB是FPGA的主要組成部分。圖1-1是CLB基本結(jié)構(gòu)框圖,它主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。CLB中3個邏輯函數(shù)發(fā)生器分別是G、F和H,相應(yīng)的輸出是G’、F’和H’。G有4個輸入變量G1、G2、G3和G4;F也有4個輸入變量F1、F2、F3和F4。這兩個邏輯函數(shù)發(fā)生器是完全獨立的,均可以實現(xiàn)4輸入變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器H有3個輸入信號:前兩個函數(shù)發(fā)生器的輸出G’和F’,而另一個輸入信號是來自信號變換電路的輸出H1。這個函數(shù)發(fā)生器能實現(xiàn)3輸入變量的各種組合函數(shù)。這3個函數(shù)發(fā)生器結(jié)合起來,可實現(xiàn)多達9變量的邏輯函數(shù)。圖1-1CLB基本結(jié)構(gòu)CLB中有許多不同規(guī)格的數(shù)據(jù)選擇器(4選1,2選1等),通過對CLB內(nèi)部的數(shù)據(jù)選擇器編程,邏輯函數(shù)發(fā)生器G、F和H的輸出可以連接到CLB內(nèi)部觸發(fā)器,或者直接連到CLB輸出端X或Y,并用來選擇觸發(fā)器激勵輸入信號、時鐘有效邊沿、時鐘使能信號以及輸出信號。這些數(shù)據(jù)選擇器的地址控制信號均由編程信息提供,從而實現(xiàn)所需的電路結(jié)構(gòu)。CLB中的邏輯函數(shù)發(fā)生器F和G均為查找表結(jié)構(gòu),其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過查找ROM中的地址表可以得到相應(yīng)的組合邏輯函數(shù)輸出。邏輯函數(shù)發(fā)生器F和G還可以作為器件內(nèi)高速RAM或小的可讀/寫存儲器使用,它由信號變換電路控制。2.輸入/輸出模塊(IOB)IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。它主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸出緩沖器組成,其結(jié)構(gòu)如圖1-2所示。圖1-2IOB基本結(jié)構(gòu)每個IOB控制一個引腳,它們可被配置為輸入、輸出或雙向I/O功能。當IOB控制的引腳被定義為輸入時,通過該引腳的輸入信號先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路經(jīng)延時幾納秒(或者不延時)送到輸入通路D觸發(fā)器,再送到數(shù)據(jù)選擇器。通過編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來自輸入緩沖器,還是來自觸發(fā)器。當IOB控制的引腳被定義為輸出時,CLB陣列的輸出信號OUT也可以有兩條傳輸途徑:一條是直接經(jīng)MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器再送至輸出緩沖器。IOB輸出端配有兩只MOS管,它們的柵極均可編程,使MOS管導(dǎo)通或截止,分別經(jīng)上拉電阻或下拉電阻接通VCC、地線或者不接通,用以改善輸出波形和負載能力。3.可編程互連資源IR可編程互連資源IR可以將FPGA內(nèi)部的CLB和CLB之間、CLB和IOB之間連接起來,構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要由許多金屬線段構(gòu)成,這些金屬線段帶有可編程開關(guān),通過自動布線實現(xiàn)各種電路的連接。片內(nèi)連線按相對長度分單長度線、雙長度線和長線3種。單長度線連接結(jié)構(gòu)如圖1-3(a)所示。CLB輸入和輸出分別接至相鄰的單長度線,進而可與開關(guān)矩陣相連。通過編程,可控制開關(guān)矩陣將某個CLB與其他CLB或IOB連在一起。雙長度線連接結(jié)構(gòu)如圖1-3(b)所示。雙長度線金屬線段長度是單長度線金屬線段長度的兩倍,要穿過兩個CLB之后,這些金屬線段才與可編程的開關(guān)矩陣相連。因此,通用雙長線可使兩個相隔(非相鄰)的CLB連接起來。長線連接結(jié)構(gòu)如圖1-3(c)所示。由長線網(wǎng)構(gòu)成的金屬網(wǎng)絡(luò),布滿了陣列的全部長和寬,這些每條長線中間有可編程分離開關(guān),使長線分成兩條獨立的連線通路,每條連線只有陣列的寬度或高度的一半。CLB的輸入可以由鄰近的任一長線驅(qū)動,輸出可以通過三態(tài)緩沖器驅(qū)動長線。圖1-3IR基本結(jié)構(gòu)單長度線和雙長度線提供了相鄰CLB之間的快速互連和復(fù)雜互連的靈活性,但傳輸信號每通過一個可編程開關(guān)矩陣,就增加一次延時。因此,F(xiàn)PGA內(nèi)部延時與器件結(jié)構(gòu)和邏輯布線等有關(guān),它的信號傳輸延時不可確定。長線不經(jīng)過可編程開關(guān)矩陣,信號延時時間短。長線用于高扇出、關(guān)鍵信號的傳播。提示:CLB、IOB、IR是XilinxFPGA的內(nèi)部基本結(jié)構(gòu),分別對應(yīng)AlteraFPGA的LAB、IOE、快速互連通道。如AlteraEPF10K20RC240-4中邏輯資源有1152個LE,8個LE組成1個LAB,即144個LAB,安排在6行24列中。每行中心2KB的存儲器模塊EAB,共6個。布線資源有:每個LAB都有22個來自各行的輸入信號和8個來自邏輯元件的信號,還有4個控制信號和2個局部進位、串級內(nèi)連。采取快速寬帶行總線和列總線(捷徑內(nèi)連)。每行總線144線寬,每列24信道。1.2.2FPGA的結(jié)構(gòu)特點FPGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一,其特點主要有:●采用FPGA設(shè)計ASIC,不需要投片生產(chǎn),設(shè)計周期短、開發(fā)費用低、風(fēng)險小?!馞PGA可做其他全定制或半定制ASIC電路的中試樣片?!馞PGA內(nèi)部有豐富的觸發(fā)器和I/O引腳?!馞PGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。下面,把Altera公司的FLEX/ACEX系列FPGA與Xilinx公司的FPGA結(jié)構(gòu)進行比較,兩者內(nèi)部結(jié)構(gòu)分別如圖1-4和圖1-5所示,有以下區(qū)別。圖1-4AlteraFPGA內(nèi)部結(jié)構(gòu)圖1-5XilinxFPGA內(nèi)部結(jié)構(gòu)(1)結(jié)構(gòu)不同AlteraFPGA:嵌入式陣列塊EAB、邏輯陣列塊LAB、FastTrack、I/O單元。XilinxFPGA:CLB、IOB、布線資源(ICR)。(2)RAM的使用不同AlteraFPGA:EAB可用作大型的RAM,LE中的查找表也可構(gòu)成RAM。XilinxFPGA:沒有專門的RAM,需要時可由CLB中的LUT構(gòu)成。(3)基本單元不同AlteraFPGA:LE(8個LE組成1個LAB,1個LE帶1個觸發(fā)器)。XilinxFPGA:CLB(1個CLB帶2個觸發(fā)器)。(4)布線不同AlteraFPGA:FastTrack,局部互連、進位鏈和級聯(lián)鏈。XilinxFPGA:單長線、雙長線、長線。(5)時鐘的同步方式不同AlteraFPGA:使用時鐘鎖定和時鐘自舉方法。XilinxFPGA:有一個時鐘網(wǎng)用于時鐘的同步,在Virtex器件中使用DLL(Delaylocked-loop)技術(shù),縮短了信號輸出時間,提高了I/O的速度。(6)另外,XilinxFPGA中有專門的乘法器。1.2.3FPGA的編程工藝FPGA的功能由邏輯結(jié)構(gòu)的配置數(shù)據(jù)決定。工作時,這些配置數(shù)據(jù)存放在片內(nèi)的SRAM或熔絲圖上?;赟RAM的FPGA器件,在工作前需要從芯片外部加載配置數(shù)據(jù),配置數(shù)據(jù)可以存儲在片外的EPROM或其他存儲體上。用戶可以控制加載過程,在現(xiàn)場修改器件的邏輯功能,即所謂現(xiàn)場編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無需專用的FPGA編程器,只需用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FP-GA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對其編程。1.3FPGA常用芯片與選用FPGA常用芯片主要包括Altera芯片和Xilinx芯片,下面對它們分別做簡單的介紹。1.3.1FPGA常用芯片1.Altera芯片Altera元件命名,以AlteraEPF10K20RC240-4為例,解釋如下:EPF10K20RC240-4(1)MAX7000S/AE系列:E2POM工藝,Altera銷量最大的產(chǎn)品,已生產(chǎn)5000萬片,32~1024個宏單元。MAX3000A是1999年推出3.3V的低價格E2POM工藝PLD,從32~512個宏單元,結(jié)構(gòu)與MAX7000基本一樣。MAX系列芯片如表1-2所列。表1-2MAX系列(2)FLEX10KE系列:1998年推出的2.5VSRAM工藝,從3萬門到25萬門,觸發(fā)器位數(shù)720~12624位,I/O數(shù)134~470,主要有10K30E、10K50E、10K100E,帶嵌入式存儲塊EAB。ACEX1K:2000年推出的2.5V低價格SRAM工藝,結(jié)構(gòu)與10KE類似,帶EAB,部分型號帶PLL,主要有1K10、1K30、1K50、1K100。FLXE10K和ACEX1K系列芯片如表1-3所列。表1-3FLXE10K和ACEX1K系列(3)FLEX6000系列:5V/3.3VSRAM工藝,較低價格的CPLD/FPGA,結(jié)構(gòu)與10KE類似,但不帶嵌入式存儲塊,目前使用較少,逐漸被ACEX1K和Cyclone取代。(4)APEX20K/20KE系列:1999年推出的大規(guī)模2.5V/1.8VSRAM工藝CPLD(FPGA),帶PLL、CAM、EAB、LVDS,從3萬門到150萬門。(5)APEXII系列:高密度SRAM工藝的FPGA,規(guī)模超過APEX,支持LVDS、PLL、CAM,用于高密度設(shè)計。(6)Stratix系列:最新一代SRAM工藝大規(guī)模FPGA,集成硬件乘加器。(7)Cyclone(颶風(fēng))系列:Altera最新一代SRAM工藝中等規(guī)模FPGA,與Stratix結(jié)構(gòu)類似,是一種低成本FPGA系列,配置芯片也改用新的產(chǎn)品。Cyclone系列芯片如表1-4所列。表1-4Cyclone系列(8)Excalibur系列:片內(nèi)集成CPU(ARM922T)的PLD/FPGA產(chǎn)品,如表1-5所列。表1-5Excalibur系列(9)Mercury系列:SRAM工藝FPGA,8層全銅布線,I/O性能及系統(tǒng)速度有很大提高,I/O支持CDR(時鐘—數(shù)據(jù)自動恢復(fù)),支持DDRSDRAM接口,內(nèi)部支持4端口存儲器,LVDS接口最高支持到1.25Gbps,用于高性能高速系統(tǒng)設(shè)計,適合做高速系統(tǒng)的接口。(10)StratixGX系列:Mercury的下一代產(chǎn)品,基于Stratix器件的架構(gòu),集成3.125Gbps高速傳輸接口,用于高性能高速系統(tǒng)設(shè)計。2.Xilinx芯片Xilinx公司FPGA產(chǎn)品的型號由若干含義不同的字段組成。主要包括:公司代號,產(chǎn)品類別,表征邏輯門的數(shù)字,表征器件工作頻率的數(shù)字表征器件封裝形式的符號,表征引腳數(shù)的數(shù)字,表征器件生產(chǎn)工藝級別標準和使用溫度范圍的符號等。下面以XC2018-50PG84B為例進行說明?!窆敬枺篨C—Xilinx公司產(chǎn)品。●產(chǎn)品類別:20—XC2000,30—XC3000系列,31—XC3loo系列,40—XC4000系列。●邏輯門數(shù):對XC2000系列,XC3000/XC3100系列,18—1800門,20—2000門,30—3000門,依次類推,唯有XC2064例外;對XC4000系列,02—2000門,03—3000門,04—4000門,依次類推?!袼俣鹊燃墸ǚ聪嗥鞯那袚Q速率):50MHz~75MHz,75MHz~175MHz,余類推。不同型號的FPGA其反向器的切換速率不同,主要有33MHz,50MHz,75MHz,100MHz,125MHz,150MHz,175MHz和200MHz幾種。系統(tǒng)的時鐘頻率與反向器的切換速率的關(guān)系取決于器件的具體結(jié)構(gòu),一般說來,系統(tǒng)時鐘頻率是切換速率的1/3~1/2左右?!穹庋b形式:PG—PGAA封裝,PLCC—PLCC封裝,QFP—QFP封裝?!褚_數(shù):84—84腳,132—132腳等等。通常PLCC封裝以68腳、84腳為多見;PGA形式的封裝以84腳、120腳、132腳、156腳、175腳和191腳為多見;QFP形式的封裝以106腳、160腳、196腳和208腳為多見。XC2000系列也有DIP封裝48引腳結(jié)構(gòu)?!窆に嚰墑e和溫度范圍:B-Mil-STD-833工藝標準,B—美國軍用品;C—商業(yè)用品,使用溫度為0~70℃;I—工業(yè)用品,使用溫度為-40~85℃;M—軍用品,使用溫度為-55~125℃。以下是Xilinx公司一些芯片的資料敘述。(1)XC9500系列:Flash工藝PLD,常見型號有XC9536,XC9572,XC95144。型號后2位表示宏單元數(shù)量;CoolRunner-II:最新一代1.8V低功耗PLD產(chǎn)品;C4000:主要有XC4000E(5V),XC400XL/XLA(3.3V),XC4000XV(2.5V)容量從64到8464個CLB,屬較早期的產(chǎn)品,基本不推廣。(2)Spartan系列:中等規(guī)模SRAM工藝FPGA。(3)SpartanII系列:2.5VSRAM工藝FPGA,Spartan的升級產(chǎn)品;SpartanIIE系列:1.8V中等規(guī)模FPGA,與Virtex-E的結(jié)構(gòu)基本一樣,是Virtex-E的低價格版本。(4)Virtex/Virtex-E系列:大規(guī)模SRAM工藝FPGA。(5)VirtexII系列:新一代大規(guī)模SRAM工藝FPGA產(chǎn)品;VirtexIIpro系列:基于VirtexII的結(jié)構(gòu),內(nèi)部集成CPU的FPGA產(chǎn)品。(6)SpartanIII系列:新一代FPGA產(chǎn)品,結(jié)構(gòu)與VirtexII類似,90nm工藝。1.3.2FPGA器件的選用在開發(fā)選擇器件時,一般遵循“多”、“快”、“好”、“省”4個原則。“多”就是芯片功能多,“快”就是芯片速度快,“好”就是芯片的性價比高,“省”就是芯片的功耗低、省電。所以在選擇產(chǎn)品時,一般需要考慮以下技術(shù)因素:門密度、內(nèi)存容量、最大的時鐘頻率、工作電壓、最大I/O引腳數(shù)、封裝形式等。1.器件的邏輯資源量的選擇適當估測一下功能資源以確定使用什么樣的器件,對于提高產(chǎn)品的性能價格比是有好處的。不同的PLD公司在其產(chǎn)品的數(shù)據(jù)手冊中描述芯片邏輯資源的依據(jù)和基準不一致,所以有很大出入。對于FPGA的估測應(yīng)考慮到其結(jié)構(gòu)特點。由于FPGA的邏輯顆粒比較小,即它的可布線區(qū)域是散布在所有的宏單元之間的,因此,F(xiàn)PGA對于相同的宏單元數(shù)將比CPLD對應(yīng)更多的邏輯門數(shù)。以Altera的EPF10PC84為例,它有576個宏單元,若以7128S為2500個邏輯門計算,則它應(yīng)約有1萬個邏輯門,但若以1032E為基準,則應(yīng)有2.7萬門;再考慮其邏輯結(jié)構(gòu)的特點,則應(yīng)約有3.5萬門。實際開發(fā)中,邏輯資源的占用情況涉及因素是很多的,大致有:(1)硬件描述語言的選擇、描述風(fēng)格的選擇,以及HDL綜合器的選擇。(2)綜合和適配開關(guān)的選擇。如選擇速度優(yōu)化,則將耗用更多的資源;若選擇資源優(yōu)化,則反之。(3)邏輯功能單元的性質(zhì)和實現(xiàn)方法。一般情況,許多組合電路比時序電路占用的邏輯資源要大,如并行進位的加法器、比較器,以及多路選擇器。2.芯片速度的選擇隨著可編程邏輯器件集成技術(shù)的不斷提高,F(xiàn)PGA的工作速度也不斷提高,Pinto-Pin延時已經(jīng)達到ns級,在一般使用中,器件的工作頻率已經(jīng)足夠了。目前,Altera和Xilinx公司的器件標稱工作頻率最高都超過300MHz。具體設(shè)計中應(yīng)對芯片的速度的選擇做綜合考慮,并不是速度越高越好。芯片速度的選擇應(yīng)與所設(shè)計的系統(tǒng)的最高工作速度相一致。使用了速度過高的器件將加大電路板PCB設(shè)計的難度。這是因為器件的高速性能越好,則對外界微小毛刺信號的反映敏感性越好,若電路處理不當,或編程前的配置選擇不當,極易使系統(tǒng)處于不穩(wěn)定的工作狀態(tài)。3.價格的選擇FPGA價格較昂貴,但隨著微細化的進步,F(xiàn)PGA芯片面積縮小,價格迅速下降,市場發(fā)展加快。例如,Altera的ACEX1K2.5V產(chǎn)品系列的密度達到10萬門,價格從3.50美元到11.95美元不等。Xilinx的Spartan-3平臺器件,密度范圍從5萬門到5百萬門,SpartanXC3S50(5萬門)最低價格僅3.50美元,100萬門的FPGA器件價格不到20美元,而400萬門的FPGA器件不到100美元。4.器件功耗的選擇由于在線編程需要,F(xiàn)PGA工作電壓越來越低,3.3V和2.5V甚至更低的工作電壓的使用已十分普遍。推薦使用3.3V、2.5V或更低的元器件。因此,就低功耗、高集成度方面,F(xiàn)PGA具有絕對的優(yōu)勢。相對而言,Xilinx公司的器件的性能比較穩(wěn)定,功耗較低,用戶I/O利用率高。例如,XC3000系列器件一般只有2電源、2個地;而密度大體相當?shù)腁ltera器件則可能有8個電源、8個地。5.應(yīng)用場合的選擇FPGA一般應(yīng)用在大規(guī)模的邏輯設(shè)計、ASIC設(shè)計或單片機系統(tǒng)設(shè)計的場合。FP-GA保存邏輯功能的物理結(jié)構(gòu)多為SRAM型,即掉電后將丟失原有的邏輯信息。所以在實用中需要為FPGA芯片配置一個專用ROM,需要將設(shè)計好的邏輯信息燒錄在此ROM中。電路一旦上電,F(xiàn)PGA就能自動從ROM中讀取邏輯信息。FPGA的使用途徑主要有以下4個方面:(1)直接使用。FPGA通常必須附帶ROM以保存軟信息,對于ROM的編程,要求有一臺能對FPGA的配置ROM進行燒寫的編程器。必要時,也可以使用能進行多次編程配置的ROM。也能使用諸如ACTEL的不需要配置ROM的一次性FPGA。(2)間接使用。這個過程類似于8051MCU的掩模生產(chǎn)。這樣獲得的FPGA無需配置ROM,單片成本要低很多。(3)硬件仿真。在仿真過程中,可以通過下載線直接將邏輯設(shè)計的輸出文件通過計算機和下載適配電路配置進FPGA器件中,而不必使用配置ROM和專用編程器。(4)專用集成電路ASIC設(shè)計仿真。對產(chǎn)品產(chǎn)量特別大,需要專用的集成電路,或是單片系統(tǒng)的設(shè)計。6.FPGA封裝的選擇FPGA器件的封裝形式很多,主要有PLCC、PQFP、TQFP、RQFP、VQFP、MQFP、PGA和BGA等,每一芯片的引腳數(shù)從28至484不等。常用的PLCC封裝的引腳數(shù)有28、44、52、68、84等規(guī)格?,F(xiàn)成的PLCC插座插拔方便,一般開發(fā)中,比較容易使用,適用于小規(guī)模的開發(fā)。缺點是需要添加插座的額外成本、I/O口線有限以及容易被人非法解密。PQFP屬貼片封裝形式,無需插座,引腳間距為零點幾個毫米,直接或在放大鏡下就能焊接,適合于一般規(guī)模的產(chǎn)品開發(fā)或生產(chǎn)。RQFP或VQFP引腳間距比PQFQ要小,徒手難于焊接,多數(shù)大規(guī)模、多I/O的器件都采用這種封裝。PGA封裝的成本比較高,價格昂貴,形似586CPU,一般不直接用作系統(tǒng)器件。BGA封裝的引腳屬于球狀引腳,是大規(guī)模PLD器件常用的封裝形式。BGA封裝的引腳結(jié)構(gòu)具有更強的抗干擾和機械抗振性能。對于不同的設(shè)計項目,應(yīng)使用不同的封裝。對于邏輯含量不大,而外接引腳的數(shù)量必較大的系統(tǒng),需要大量的I/O口線才能以單片形式將這些外圍器件的工作系統(tǒng)協(xié)調(diào)起來,因此選貼片形式的器件比較好。7.其他因素的選擇相對而言,在3家PLD主流公司的產(chǎn)品中,Altera和Xilinx的設(shè)計比較靈活,器件利用率比較高,器件價格比較便宜,品種和封裝形式比較豐富。但Xilinx的FPGA產(chǎn)品需要外加編程器件和初始化時間,保密性較差,延時較難事先確定,信號等延時較難實現(xiàn)。第2章集成開發(fā)工具MAX+plusIIFPGA開發(fā)工具比較多,最常用開發(fā)工具是MAX+plusII、QuartusII。其中,MAX+plusII開發(fā)工具是Altera自行設(shè)計的EDA軟件,是完全集成開發(fā)環(huán)境的軟件,可以不需要使用第三方軟件,支持30000門以下所有設(shè)計。MAX+plusII全稱是MultipleArrayMatrixandProgrammableLoigicUserSystem(多陣列矩陣和可編程用戶系統(tǒng)),在Max+plusII上可以完成設(shè)計輸入、元件適配、時序仿真和功能仿真、編程下載整個流程。它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,使設(shè)計者能方便地進行設(shè)計輸入、快速處理和器件編程。2.1功能與菜單說明MAX+plusII的界面友好,使用便捷,具有原理圖輸入和VHDL、Verilog文本輸入,以及波形與EDIF等格式的文件作為設(shè)計輸入,并支持這些文件的任意混合設(shè)計。1.MAX+plusII的功能MAX+plusII將用戶所設(shè)計的電路原理圖或電路描述轉(zhuǎn)變?yōu)镃PLD/FPGA內(nèi)部的基本邏輯單元,寫入芯片中,從而在硬件上實現(xiàn)用戶所設(shè)計的電路。該CPLD/FP-GA可用于正式產(chǎn)品,也可作為對最終實現(xiàn)的ASIC芯片的硬件驗證。此功能描述可以簡單地由圖2-1來表示:圖2-1MAX+plusII的功能描述MAX+plusII的具體功能如圖2-2所示,包括:支持原理圖和文本(AHDL、VHDL、VerilogHDL)設(shè)計,自帶綜合器、仿真器,支持波形輸入,支持波形模擬,時間分析,編譯及下載。圖2-2MAX+plusII具體功能由圖2-2所示,MAX+plusII提供功能強大、直觀便捷和操作靈活的原理圖輸入設(shè)計功能,同時還配備了適用于各種需要的元件庫,其中包含基本邏輯元件庫(如與非門、反向器、D觸發(fā)器等)、宏功能元件(包含了幾乎所有74系列的器件),以及功能強大,性能良好的類似于IPCore的兆功能塊LPM庫。但更重要的是,MAX+plusII還提供原理圖輸入多層次設(shè)計功能,使得用戶能設(shè)計更大規(guī)模的電路系統(tǒng),以及使用方便、精度良好的時序仿真器。MAX+plusII具有門級仿真器,可以進行功能仿真和時序仿真,能夠產(chǎn)生精確的仿真結(jié)果。在適配之后,MAX+plusII生成供時序仿真用的EDIF、VHDL和Verilog共3種不同格式的網(wǎng)表文件。但是,由于MAX+plusII是針對可編程芯片而設(shè)計的,因此它不支持系統(tǒng)行為級的描述和仿真,不支持門數(shù)多的新型CPLD/FPGA,另外某些VHDL語言中的語句如wait語句也得不到支持。如果遇到VHDL語法問題,可以用專業(yè)VHDL語言綜合工具進行綜合,如Syn-opsys公司FPGAExpress、Mentor公司GraphicsLeonardSpectrum、Mentor公司ModelSim,綜合以后將生成*.edif文件給MAX+plusII做布線。另外,如果遇到規(guī)模較大的設(shè)計,可以用Altera新推出的功能更強大的編程工具QuartusII,這在第3章將會講述。2.MAX+plusII的版本與安裝MAX+plusII目前有3個版本:商業(yè)版、基本版和學(xué)生版。(1)商業(yè)版:可以進行各種文件和圖像的輸入,并可以進行功能分析、時序分析、下載Altera的各種已設(shè)計芯片。商業(yè)版本為避免盜版,在并行口上需要再增加一個硬件“狗”,出售的系統(tǒng)除光盤外,還應(yīng)帶一個“狗”。該“狗”中存有一長串由英文大、小寫字符和數(shù)字組成的密碼。每次系統(tǒng)啟動都要通過“狗”來核對用戶的合法性。(2)基本版:在商業(yè)版上對功能加以限制,時序分析、VHDL語言綜合等功能不能使用。系統(tǒng)啟動不需要硬件“狗”支持,只要向Altera公司申請一個基本版授權(quán)碼就可以工作了。(3)學(xué)生版:在商業(yè)版基礎(chǔ)上加以限制。安裝MAX+plusII的計算機有如表2-1所列的要求。表2-1MAX+plusII安裝要求提示:MAX_Plus_II_v10.2安裝后軟件大小約:336MB。軟件下載(安裝前47.1MB)請登陸https:///support/software/download/altera_design/mp2_baseline/dnl-baseline.jsp。該軟件支持FLEX、ACEX和MAX系列芯片。MAX+plusIIE+MAX的目前最高版本是10.2,可編譯VHDL文件,但只支持MAX系列。安裝結(jié)束后,C盤根目錄下會有兩個子目錄C:\maxplus2和C:\max2work。前一個目錄存放了MAX+plusII的庫文件、包配置和IP核等;后一目錄是專門給用戶設(shè)計仿真存放文件用的。3.設(shè)置License安裝完MAX+plusII,可將license.dat文件復(fù)制到硬盤的任何一個目錄下。如果沒有l(wèi)icense文件,將無法進入原理圖編輯窗或VHDL文本編輯窗,如有可能可以去Altera公司的網(wǎng)站申請免費的license,方法如下。首先進入MAX+plusII軟件,選擇菜單項Options→LicenseSetup→SystemIn-fo,先取得硬盤序列號(driveserialnumber),或者在DOS模式下敲入dirc:/w,即可看到serialnumber。在第2行中就會顯示32bit,8位十六進制數(shù)的硬盤序列號,如:4235-16F7。也可以通過開始菜單→運行→winipcfg,在彈出窗口的設(shè)配器地址一欄,即可以獲得網(wǎng)卡號(NIC)。然后在Altera主頁去登記,登陸https:///login/signin.asp,有網(wǎng)卡就填NIC,沒有網(wǎng)卡就填硬盤序列號,寫完后單擊“Continue”,然后選擇Version10.2或其他版本,填寫部分個人信息,逐步完成。注意,E-mail地址不要寫錯,寫完了單擊“Continue”。注冊完后,Altera會向所給的信箱發(fā)一封E-mail,Email里一般會有“License.dat”的文件(一般是作為附件),這就是注冊文件了,把它保存到硬盤里。最后再運行MAX+plusII,還是在“Option”菜單中選擇“LicenseSetup”這一項第一行的“Browse”,找到剛才保存的那個“l(fā)icense.dat”文件,把附件license.dat保存到硬盤,如圖2-3所示。圖2-3License設(shè)置最后在Options→LicenseSetup→Browse菜單項中,如圖2-4所示,選擇剛才保存的(*.dat)導(dǎo)入license文件,就可以使用軟件進行工作。圖2-4導(dǎo)入license.dat文件提示:license文件可以通過網(wǎng)卡號(NIC)或硬盤序列號(serialnumber)獲取,有網(wǎng)卡就只需記下NIC,若沒有網(wǎng)卡,只有記硬盤序列號,然后通過撥號上網(wǎng)申請license。網(wǎng)卡號由12位的十六進制數(shù)組成,如00-00-E8-D3-B6-88。4.常用菜單和工具說明比較常用的菜單和工具說明如圖2-5和圖2-6所示。圖2-5MAX+plusII菜單圖2-6MAX+plusII工具欄2.2MAX+plusII設(shè)計過程本節(jié)中將介紹用MAX+plusII進行電路原理圖和VHDL語言設(shè)計的過程。利用MAX+plusII進行原理圖輸入設(shè)計的優(yōu)點是:設(shè)計者能利用原有的電路迅速入門,完成大規(guī)模的電路系統(tǒng)設(shè)計,而不必具備許多諸如編程技術(shù)、硬件語言等新知識,而且直觀,運用數(shù)字電路的知識即可完成。下面以簡單的2選1電路為例講述如何用MAX+plusII進行電路原理圖設(shè)計??梢杂脙蓚€與門、一個或門、一個非門連接而成。設(shè)輸入信號為d0,d1,sel,當sel=0時選擇d0,sel=1時選擇d1,用VHDL描述有q<=d0whensel='o'elseb。1.輸入設(shè)計項目和存盤任何一項設(shè)計都是一項工程(project),都必須首先為此工程建立一個文件夾,放置與此工程相關(guān)的所有文件。此文件夾將被EDA軟件默認為工程庫(WorkLibrary)。一般不同的設(shè)計項目最好放在不同的文件夾中。提示:在開始工作之前,首先應(yīng)了解“工程”的概念。一個工程是一個設(shè)計的總和,它包含所有的子設(shè)計文件和設(shè)計過程中產(chǎn)生的所有輔助文件。所有的子設(shè)計文件是底層文件,各子設(shè)計文件可以是并列關(guān)系,也可以是包含關(guān)系,層次的深度沒有限制。最頂層文件同子設(shè)計文件一樣,也可以是圖形或文本文件。為了區(qū)分方便,最好在C:\max2work下建立一個以自己英文名字命名的一級文件夾,一級文件夾下建立一些二級文件夾,比如叫vhdl_1,vhdl_2……。但是注意:文件夾不能用中文,也不能有空格。打開MAX+plusII,執(zhí)行菜單File→New,彈出如圖2-7所示的新建文件對話框,文件類型(FileType)依次在對話框中列出。圖2-7新建文件對話框注意:圖形輸入即輸入電路原理圖,不僅可使用MAX+plusII中豐富的圖形器件庫,而且可以識別標準EDIF網(wǎng)表文件、VHDL網(wǎng)表文件及Xilinx網(wǎng)表文件等。而波形輸入允許設(shè)計者通過只編輯輸入波形,由系統(tǒng)自動生成其功能模塊。在FileType窗中選擇原理圖編輯輸入項GraphicEditorFile,按OK后將打開原理圖編輯窗。其左面的繪圖工具條說明,如圖2-8所示。圖2-8繪圖工具條說明小技巧:當連接功能打開時,移動元件,則連接在元件的連線跟著移動,不改變原有的連線;否則,移動元件,連線不跟著相應(yīng)地移動,從而改變原有連線。2.編輯電路原理圖在原理圖編輯窗中的任何一個位置上右擊(選擇輸入元件的位置),將彈出一個選擇窗,選擇此窗中的輸入元件項EnterSymbol;或者直接執(zhí)行菜單System→EnterSymbol;又或者直接在原理圖編輯窗中的任何一個位置上雙擊鼠標左鍵,都將彈出如圖2-9所示的輸入元件選擇窗。圖2-9元件輸入選擇窗雙擊文件庫“SymbolLibraries”中的C:\maxplus2\max2lib\prim\*項,在SymbolFiles窗中即可看到基本邏輯元件庫prim中的所有元件,選擇所需元件(也可以在圖中的SymbolName用鍵盤直接輸入所需元件名)再按OK鍵,即可將元件調(diào)入原理圖編輯窗中。分別調(diào)入元件and2(兩個信號的與)、or2(或)、not(非)、input(輸入引腳)和output(輸出引腳),如圖2-10所示。把這些元件移動到合適的位置,連接好。然后分別在input和output的PIN_NAME上雙擊使其變成黑色(或者在元件任何區(qū)域內(nèi)右擊,執(zhí)行EditPinName),再用鍵盤分別輸入各引腳名:d0、d1、sel、q。圖2-102選1電路原理圖提示:連線時,如果需要連接兩個元件端口,則將鼠標移動到其中的一個端口上,這時鼠標指示符會自動變?yōu)椤?”形,然后按住鼠標左鍵并拖動鼠標至第二個端口(或其他地方),松開鼠標可畫出一條連線。如果兩個元件端口并未在同一水平線或垂直線上,先拖動鼠標到合適位置,松開后在此處繼續(xù)拖動鼠標左鍵,即可改變?yōu)檎劬€。如果需要刪除某連線,左鍵選擇該線為紅色,按“Delete”鍵即可。粗線是多位數(shù)據(jù)線,細線是單位數(shù)據(jù)線,單位數(shù)據(jù)不能用粗線連,多位數(shù)據(jù)只能用粗線連。對n位寬的總線A命名時,可采用A[n-1..0]形式,其中單個信號用A0,A1,A2,…,An形式。選擇某個元件、連線(變?yōu)榧t色),則進行復(fù)制、移動、刪除等操作。細線表示單根線,粗線表示總線。通過選擇可以改變連線的性質(zhì),方法是先單擊該線,使其變紅,然后選擇Option→LineStyle,即可在彈出的窗口中選取所需的線段。進行粘貼操作時,要預(yù)先選擇粘貼點位置,選擇的位置最好和其他元件、連線遠一些。連線盡量不要和元件外部的虛線重疊在一起。右擊單個的元件、連線,可以通過彈出菜單進行包括旋轉(zhuǎn)、改變連線的粗細操作。使用工具箱的選擇工具框選擇元件和連線,可進行選擇區(qū)域的移動、刪除等操作,如File→Size可以改變電路圖紙的大小。圖2-10中and2左下部的淺色標號1是輸入元件(EnterSymbol)時軟件的自動順序標號。編譯時如果該元件有錯誤,會提示[ID:1]錯誤,因為一個設(shè)計原理圖里面可能有多個and元件,而ID只有一個,第一個輸入的元件標為1,第二個輸入的元件標為2……然后執(zhí)行菜單File→Save,或單擊工具箱中的保存按鈕,選出剛才為自己的工程建立的文件夾c:\max2work\vhdl_1,將已設(shè)計好的圖文件取名為:mux2_1.gdf(注意后綴是.gdf),并存在此目錄內(nèi)。如果剛才未建目錄,也可以在FileName處輸入:“c:\max2work\vhdl_1\mux2_1.gdf”,直接新建文件夾。注意:原理圖的文件名可以用設(shè)計者認為合適的任何英文名(VHDL文本存盤名有特殊要求),如加法器adder.gdf,但是不要和所用的元件名重名,名稱也最好和其功能相聯(lián)系。
------2選1電路原理圖用RTL描述對應(yīng)的VHDL程序------
libraryieee;
useieee.std_logic_1164.all;
entitymux2_1is
port(d0,d1,sel:inbit;
q:outbit);
endmux2_1;
--architecturebehofmux2_1is--方法1
--begin
--q<=d0whensel'o'elsed1;
--endbeh;
architecturelmqofmux2_1is--方法2
begin
dudu:process(d0,d1,sel)
variabletmp1,tmp2,tmp3:bit;
begin
tmp1:=d0andsel;
tmp2:=d1and(notsel);
tmp3:=tmp1ortmp2;
q<=tmp3;
endprocess;
endlmq;
3.將設(shè)計項目設(shè)置成工程文件(Project)為了對輸入的設(shè)計項目進行各項處理,必須將設(shè)計文件設(shè)置成Project。如果設(shè)計項目由多個設(shè)計文件組成,則應(yīng)該將它們的主文件,即頂層文件設(shè)置成Project;如果要對其中某一底層文件進行單獨編譯、仿真和測試,也必須首先將其設(shè)置成Project。即需要對哪個設(shè)計項目進行編譯、仿真等操作,就設(shè)定哪個項目為工程。將設(shè)計項目(如mux2_1.gdf)設(shè)定為工程項目,有兩個途徑:●如圖2-11所示,執(zhí)行菜單File→Project→SetProjecttoCurrentFile,即將當前設(shè)計文件設(shè)置成Project。選擇此項后可以看到菜單上面的標題欄顯示出所設(shè)文件的路徑。這點特別重要,此后的設(shè)計應(yīng)該特別關(guān)注此路徑的指向是否正確!如果已經(jīng)指向待編譯的文件,就不必在此設(shè)置為工程。圖2-11將設(shè)計項目設(shè)置成工程文件●如果設(shè)計文件未打開,執(zhí)行菜單File→Project→Name,然后再跳出的ProjectName窗中找到文件夾及文件名,此時即選定此文件夾為本次設(shè)計的工程文件了。4.選擇目標器件并編譯在對文件編譯前最好先選定實現(xiàn)本設(shè)計項目的目標器件,執(zhí)行菜單Assign→Device,彈出如圖2-12所示Device窗口。此窗口中DeviceFamily是器件序列欄,應(yīng)該首先在此欄中選定目標器件對應(yīng)的序列名,如EPM7128S對應(yīng)的是MAX7000S系列、EPF10K10對應(yīng)的是FLEX10K、EP1K30對應(yīng)的是ACEX1K系列等。為了選擇EPF10K10LC84-4器件,應(yīng)將此欄下方標有ShowOnlyFastestSpeedGrades的勾消去,以便顯示出所有速度級別的器件。完成器件選擇后,按OK鍵。圖2-12選擇目標器件然后啟動編譯器。首先選擇左上角菜單MAX+plusII選項,在其下拉菜單中選擇編譯器項Compiler。此編譯器的功能包括網(wǎng)表文件提取、設(shè)計文件排錯、邏輯綜合、邏輯分配、適配(結(jié)構(gòu)綜合)、時序仿真文件提取和編程下載文件裝配等。編譯器窗口如圖2-13所示。圖2-13編譯器口MAX+plusII編譯器將檢查項目是否有錯,并對項目進行邏輯綜合,然后配置到一個Altera器件中,同時將產(chǎn)生報告文件、編程文件和用于時間仿真的輸出文件。編譯器各功能項目塊含義如表2-2所列。表2-2編譯器各功能項目塊含義啟動編譯器后,單擊Start,開始編譯。如果發(fā)現(xiàn)有錯,一般情況下,會告訴用戶錯誤的位置和情況,雙擊編譯信息(Message-Compiler)窗錯誤信息條,會直接跳到錯誤位置,或者在Message窗口單擊某一條錯誤,按Locate鍵就會跳到錯誤位置,然后回到原理圖排除錯誤后再次編譯。如圖2-14所示,顯示錯誤Error有重復(fù)的引腳名d0,返回原圖修改即可。圖2-14編譯錯誤提示提示:錯誤位置是用元件左下部的淺色數(shù)字顯示的,該數(shù)字是用戶在輸入元件(EnterSymbol)的時候自動順序編號的。一般錯誤信息的紅色表示Error,藍色表示的是警告Warning,而編譯成功后Message窗口就會出現(xiàn)綠色的信息Information。在編譯過程中,可能需要等待一段時間,這由程序的復(fù)雜性所決定,可以按下Stop/ShowStatus鍵,就可以看到圖2-15所示的編譯過程中每個部分的狀態(tài)。圖2-15編譯狀態(tài)圖5.波形編輯接下來應(yīng)該測試設(shè)計項目的正確性,即邏輯仿真。簡單地說,仿真就是人為模擬輸入信號,觀察輸出信號的變化,判斷是否合乎預(yù)計的設(shè)計要求。具體步驟如下:首先建立波形文件。按照以上“步驟(2)”,為此設(shè)計建立一個波形測試文件。選擇File項及其New選項,再選擇圖2-5中WaveformEditer項,打開波形編輯器,如圖2-16所示。提示:賦值不定值“X”就是未知的狀態(tài)值,賦值高阻態(tài)“Z”就是雙向數(shù)據(jù)總線出現(xiàn)的高阻狀態(tài)值??刹楸?-3給出的“0”、“1”、“X”、“Z”的總線狀態(tài)關(guān)系值,如果總線上出現(xiàn)“1”和“0”兩值的疊加,則由表2-3第1行第2列知道,總線將取值“X”。賦值取反就是對“黑色”時間段的信號取反碼,如1→0、1→0、B9→46,時鐘周期賦值和總線順序賦值請參考圖2-17和圖2-18,而最后兩個一般情況下用的較少。表2-3總線狀態(tài)值關(guān)系表圖2-17時鐘周期賦值圖2-18總線順序賦值提示:當門電路的輸出上拉管導(dǎo)通而下拉管截止時,輸出為高電平;反之就是低電平。如上拉管和下拉管都截止時,輸出端就相當于浮空(沒有電流流動),其電平隨外部電平高低而定,即該門電路放棄對輸出端電路的控制。輸入信號節(jié)點才能對信號進行賦值。執(zhí)行Node→EnterNodesfromSNF輸入信號節(jié)點。在圖2-19彈出的窗口中首先單擊List鍵,這時左窗口將列出該項設(shè)計所有信號節(jié)點。由于設(shè)計有時只需要觀察其中部分信號的波形,因此要利用中間的“=>”鍵將需要觀察的信號節(jié)點選擇到右欄中,然后單擊OK鍵即可。波形編輯窗口變成如圖2-20所示。圖2-19列出并選擇需要觀察的信號節(jié)點圖2-20調(diào)入所有節(jié)點后的圖形編輯窗口設(shè)置波形參量。圖2-20所示的波形編輯窗中已經(jīng)調(diào)入了2選1電路的所有節(jié)點信號,在為編輯2選1輸入信號d0/d1、sel設(shè)定必要的測試電平之前,首先設(shè)定相關(guān)的仿真參數(shù)。如圖2-21所示,在Options選項中消去網(wǎng)格對齊的SnaptoGrid的選項(消去勾)。消去勾以后,才可以任意設(shè)置時鐘頻率。圖2-21消去網(wǎng)格對齊小技巧:消去網(wǎng)格對齊能夠任意設(shè)置輸入電平的位置,或設(shè)置輸入時鐘信號的周期。再設(shè)定仿真時間寬度。執(zhí)行菜單File→EndTime選項,在EndTime選擇窗中選擇適當?shù)姆抡鏁r間域,如可選3μs(3微秒),以便有足夠長的觀察時間,但是時間設(shè)定不要太長,否則,仿真工作量大,占用的機時太長,對內(nèi)存和CPU要求也越大。軟件默認仿真時間為1μs。接著執(zhí)行菜單Option→GridSize選項,可以設(shè)定一個網(wǎng)格的時間大小,如圖2-22所示。系統(tǒng)默認的GridSize是20.0ns,一般不需改動。輸入時鐘信號的ClockPeriod為GridSize基準的兩倍,為20.0ns×2=40.0ns,在設(shè)定網(wǎng)格大小后不能再改變,所以仿真前最好根據(jù)自己的需要設(shè)定恰當?shù)腉ridSize。圖2-22一個網(wǎng)格的時間大小現(xiàn)在就可以設(shè)定輸入信號了??梢詾檩斎胄盘杁0和d1設(shè)定測試電平,利用必要的功能鍵為d0/d1、sel加上適當?shù)碾娖?,以便仿真后能測試q輸出信號。如果需要對輸入信號sel在某段時間間隔內(nèi)賦值,在該信號的該段時間起點拖動鼠標,移動到該段時間終點,使之變成黑色,然后單擊左側(cè)工具箱中的相應(yīng)賦值按鍵。如果對信號從頭至尾(EndTime)賦值,只需要鼠標在左部的Name區(qū)單擊相應(yīng)的位置,該信號會全部變黑,表示全選。圖2-23是信號賦值的結(jié)果,其中sel手動0/1賦值,d0是時鐘周期賦值1分頻,d1是2分頻,即多路選擇器mux2_1的輸入端口d0和d1輸入時鐘周期分別為40ns和80ns的“時鐘周期賦值”信號。這樣賦值的目的是,當控制段sel為高電平時,q的輸出為d1的低頻率信號,而當sel為低電平時,q的輸出為d0的高頻率信號。圖2-23信號賦值結(jié)果有時,為了觀察方便需要將某些信號作為一組來觀察,步驟如下。(1)鼠標在Name區(qū)選擇d0使之全部變黑,按住Alt鍵,向下拖動鼠標,復(fù)制一個d0;或者全黑后,單擊右鍵后選擇Copy,在其他空白區(qū)域再單擊右鍵后選擇Paste;然后再用同樣的方法復(fù)制一個d1?;蛘哂貌藛蜰ode→EnterNodesfromSNF,再加上一個d0和d1。建議d0在d1的上面,且二者相鄰。(2)將鼠標移動到Name的d0上(不要在帶紅線的“信號性質(zhì)說明”上),按下鼠標左鍵并向下拖動鼠標至d1,松開鼠標左鍵后,可選中信號d0、d1?;蛘哌x擇d0時按住shift鍵,然后再選擇d1,效果都是一樣的。(3)在選中區(qū)域(黑色)上,單擊鼠標右鍵,在浮動菜單上選擇EnterGroup,或直接執(zhí)行菜單Node→EnterGroup,出現(xiàn)如圖2-24所示的設(shè)置組對話框。圖2-24設(shè)置組對話框(4)選擇合適進制后,選擇OK,可得到如圖2-25所示的波形圖。在此雙擊鼠標也可以改變總線數(shù)據(jù)顯示的格式,重新進入圖2-24所示的對話框進行設(shè)置。圖2-25組顯示結(jié)果(二進制)提示:在以后的仿真時,對于多位的數(shù)據(jù),雙擊Value區(qū),也可以改變數(shù)據(jù)的顯示格式,可以直觀顯示。步驟(1)不一定是必須的。但是Group的高位是所選數(shù)據(jù)最上面的那個,低位是所選數(shù)據(jù)的最下面的那個。輸入數(shù)據(jù)也可以編組,有時在信號賦值時比較方便。最后將波形文件存盤。執(zhí)行菜單File→Save,按OK鍵即可。由于存盤窗中的波形文件名是默認的(這里是mux2_1.scf),所以直接存盤即可。也可以以文本格式(.vec)創(chuàng)建仿真文件,然后打開仿真器窗口,在file菜單中選擇Input/Output項,將.vec文件轉(zhuǎn)換成.scf文件。下一步就可以進行時序仿真和分析了。6.時序仿真運行仿真器。執(zhí)行菜單MAX+plusII→Simulator選項,單擊跳出的圖2-26所示的仿真器窗口的Start鍵,對話框中顯示“0errors,0warnings”。圖2-27是仿真運算完成后的時序波形。如果沒有變化,看看是否因為顯示比例太大,可以單擊圖左邊工具欄的縮小按鈕或顯示全部按鈕。圖2-26仿真器窗口圖2-27mux2_1仿真波形結(jié)果當仿真器結(jié)束工作時,按下OpenSCF按鈕,將看到仿真的結(jié)果?;氐絎aveformEditor窗口觀察分析波形。很明顯,圖2-27顯示的時序波形是正確的。當sel=0時選擇的是d0,當sel=1時選擇的是d1,但器件有延時,所以需要好好觀察。圖中的豎線是測試參考線(基準線),它上方(與Ref數(shù)據(jù)框處相同)標出的139.6ns是此線所在的位置;鼠標箭頭(該線右側(cè)‘+’處)所在處時間顯示在Time數(shù)據(jù)框里,為150.4ns;兩者的時間差顯示在窗口上方的Interval小窗中。由圖可見輸入與輸出波形間有一個小的延時量10.8ns。另外可以通過時間分析器TimingAnalyzer進一步了解信號的延時情況。為了精確測量2選1電路輸入與輸出波形間的延時量,可打開時序分析器,方法是選擇左上角MAX+plusII項及其中的TimingAnalyzer選項,單擊跳出的圖2-28分析器窗口中的Start鍵,延時信息即刻顯示在圖表中。其中左排列出的是輸入信號,上排列出輸出信號,中間是對應(yīng)的延時量,這個延時量是精確針對EPF10KLC84-4器件的。從圖2-28中的延時分析看,跟上面的分析結(jié)果大致一樣。圖2-28時序分析器仿真結(jié)束后,包裝元件入庫。重新回到mux2_1.gdf中,執(zhí)行File→EnterSymbol將設(shè)計文件保存為mux2_1.sym,并放置在工程路徑指定的目錄(c:\max2work\vhdl_1)中,以備后用?;蛘咴贔ile菜單中選擇CreateDefaultSymbol項,即可創(chuàng)建一個設(shè)計的符號。該符號可被高層設(shè)計調(diào)用,如圖2-29所示。圖2-29包裝元件入庫7.引腳鎖定如果只需要仿真而不需要在CPLD/FPGA芯片下載程序,則這一操作步驟不是必須的,具體的實現(xiàn)細節(jié)在以后的章節(jié)里還將詳細講述。如果第5步的仿真測試結(jié)果正確無誤,就可以將設(shè)計編程下載至選定的目標器件中,做進一步的硬件測試,以便最終了解設(shè)計項目的正確性。這就必須根據(jù)評估板、開發(fā)電路系統(tǒng)或EDA實驗板的要求對設(shè)計項目輸入輸出引腳賦予確定的引腳,以便能夠?qū)ζ溥M行實測。為了下載驗證,應(yīng)該選用合適的CPLD/FPGA電路結(jié)構(gòu)圖。對于本設(shè)計,為了進行實測,就必須有外部設(shè)備,能使兩個輸入引腳d0、d1,一個輸入控制引腳sel能進行高低電平的變化;同時應(yīng)能比較直觀的觀察輸出引腳q的電平值。選擇合適的硬件電路,對于本例,sel信號為“0”、“1”改變,最好選擇按鍵是“高低電平發(fā)生器”的電路,其具體高低電平由相應(yīng)的二極管顯示。為了直觀起見,把兩個輸入信號接CLK0、CLK5,分別對應(yīng)256Hz、1024Hz,輸出q接到蜂鳴器。很多電路圖都可以實現(xiàn)這一點。提示:因為硬件評估板要考慮到不同的CPLD/FPGA器件,不同的器件I/O引腳的數(shù)目不同,有的器件1號引腳可以用作I/O,而有的器件則作為其他功能使用(如VCC、GND、下載使用的特殊引腳等),所以評估板一般在電路示意圖上標出的符號并不是CPLD/FPGA的實際引腳,都是通過查手冊得到對應(yīng)的引腳。例如,如果使用10K10-PLCC84器件,PIO48對應(yīng)的是80號引腳,而使用的是EP1K30TC14器件,則對應(yīng)97號引腳。需要鎖定引腳時,要根據(jù)采用的具體電路,根據(jù)電路結(jié)構(gòu)圖上的信號名與使用的器件確定對應(yīng)的引腳。觀察電平變化比較直觀的是采用二極管LED顯示。例如,K1鍵按下,CPLD/FP-GA的PIO9代表的引腳為高電平,同時LED亮,可以直觀看到PIO9代表的引腳的電平值。LED一端接地,另一端接PIO9代表的引腳。這樣PIO9代表的引腳高電平時,LED亮,否則,LED滅。如果不鎖定引腳,直接下載到CPLD/FPGA芯片上,2選1電路的4個引腳d0、d1、sel、q與CPLD/FPGA芯片的I/O引腳是隨機分配的。鎖定引腳,就是把2選1電路的輸入輸出引腳人為的固定分配。例如要用鍵盤控制d0的輸入,評估板本身已經(jīng)把電路連接好,只需要在CPLD/FPGA器件內(nèi)部使二者相連,即鎖定引腳,這樣就實現(xiàn)了對d0的控制。這里的假設(shè)根據(jù)實際需要,將2選1電路的4引腳d0、d1、sel、q分別與目標器件EPF10K10第3、4、5、53腳相接,操作如下(僅講述例子,實際的引腳號可能與此不同):首先把鼠標放在某個輸入/輸出引腳上,單擊右鍵,在彈出菜單中選擇,或直接執(zhí)行菜單Assign→Pin\Location\Chip選項,在跳出的窗口中,如圖2-30的NodeName欄中用鍵盤輸入2選1電路的I/O端口名,如d0、d1等。如果輸入的端口名正確,在右側(cè)的PinType欄將自動顯示該信號的I/O屬性。圖2-30鎖定引腳窗口這時在Pin項內(nèi)輸入d0對應(yīng)的引腳名,再單擊右下方的Add項,此引腳就設(shè)定好了,可以單擊Change項進行修改。以同樣的方法分別指定d1、sel、q的引腳名,再單擊上方的OK。關(guān)閉Pin/Location/Chip窗口后,應(yīng)重新進行編譯,將引腳信息編輯進去。注意:PinType項會自動出現(xiàn)Input指示字,表明d0的引腳性質(zhì)是輸入,否則將不出現(xiàn)此字(此時是因為未編譯而直接指定引腳)。如果輸入輸出的引腳較多,無法記住所有的I/O端口的名稱,可以單擊圖2-30右邊的Search,就會彈出圖2-31所示的尋找引腳數(shù)據(jù)庫窗口,然后單擊List,就列出了所有的I/O端口,這樣就可以分別選擇I/O端口進行引腳鎖定了。圖2-31尋找引腳數(shù)據(jù)庫注意:多位數(shù)據(jù)I/O總線無法直觀顯示引腳號。特別需要注意的是,在鎖定引腳后必須對文件重新進行編譯一次,以便將引腳信息編入下載文件中。而不同的評估板、相同評估板都會采用不同的電路組合形式、相同評估板會采用不同的CPLD/FPGA芯片,其鎖定的引腳都可能不同。所以設(shè)計項目工程之前首先要選擇評估板的合適電路結(jié)構(gòu)進行設(shè)計。例如:假設(shè)實驗板的某個電路結(jié)構(gòu)只能使用4個7段數(shù)碼管,如果要顯示6個數(shù)據(jù),顯然就不好處理了;其次在鎖定引腳前,要根據(jù)實驗板的電路形式,查出對應(yīng)的CPLD/FPGA引腳號。8.編程下載首先用下載線把計算機的打印機口(并行)與目標板(如開發(fā)板或?qū)嶒灠澹┫螺d口連接好。下面進行下載方式設(shè)定。選擇MAX+plusII項及其中的編程器Programmer選項,跳出如圖2-32所示的編程器窗口,然后選擇菜單Options項的HardwareSetup硬件設(shè)置選項,在其下拉菜單中選ByteBlaster(MV)編程方式。此編程方式對應(yīng)計算機的并口下載通道,“MV”是混合電壓的意思,主要指對Altera的各類芯核電壓(如5V/3.3V/2.5V/1.8V等)的CPLD/FPGA都能由此下載。此項設(shè)置只在初次安裝軟件后第一次編程前進行,設(shè)置完成后就不必重復(fù)此設(shè)置了。圖2-32下載配置窗口在圖2-32中,包括了當前編程文件打開保密位選項、顯示項目的編程文件、顯示項目中所用的Altera器件的名稱,以及完成情況狀態(tài)條。單擊Configure按鈕,向目標芯片EPF10K10下載配置文件,如果連線無誤,應(yīng)出現(xiàn)報告配置完成(ConfigurationComplete)的信息提示。然后分別調(diào)整各鍵的電平,以改變輸入信號d0/d1、sel的值,觀察輸出q對應(yīng)的LED的亮滅是否正確。9.MAX+plusII的設(shè)計過程總結(jié)根據(jù)圖2-10所示的原理圖以及演示的操作過程,可以總結(jié)如圖2-33所示的MAX+plusII設(shè)計流程。圖2-33MAX+plusII的設(shè)計流程多數(shù)集成開發(fā)軟件都與MAX+plusII的設(shè)計流程類似,比如以下章節(jié)要講述的QuartusII和XilinxFoundation/ISE。2.3MAX+plusII綜合設(shè)計選擇項通過2.2節(jié)的內(nèi)容學(xué)習(xí),讀者可以基本掌握如何進行MAX+plusII設(shè)計,但MAX+plusII的功能不僅僅如此。下面將進一步深入講述MAX+plusII綜合設(shè)計的功能。2.3.1LPM庫的使用LPM(LibraryParameterizedMegafunction,可調(diào)參數(shù)元件),是MAX+plusII自帶的功能強大、性能良好的類似于IPCore的兆功能塊LPM庫。這里將詳細介紹它的其他用法。LPM的輸入方法與圖2-10所示的原理圖輸入方法相似。當EnterSymbol對話框出現(xiàn)后,在symbolLibraries框中選擇“c:\maxplus2\max2lib\mega_lpm”路徑。然后在SymbolFiles框中選擇所需要的LPM符號。雙擊參數(shù)框(位于符號的右上角),輸入需要的LPM參數(shù)。在PortStatus框中選擇Unused,可將不需要的信號去掉?;蛘咭部梢酝ㄟ^File→MegaWizardPlug-InManager(創(chuàng)建定值兆函數(shù)變量)這個向?qū)Мa(chǎn)生初始化函數(shù)庫,如圖2-34所示。圖2-34創(chuàng)建定值兆函數(shù)變量單擊Next就會出現(xiàn)圖2-35所示的窗口,說明可以創(chuàng)建3種類型的LPM文件:AHDL、VHDL、VerilogHDL。LPM還分為3種庫:算術(shù)(arithmetic)、邏輯門(gates)、存儲單元(storage)。圖2-35LPM庫根據(jù)設(shè)計要求選擇適當?shù)腖PM包并填寫其參數(shù)。例如選擇8位地址、8位輸出的ROM單元,將得到圖2-36所示的Symbol。圖2-36LPM的ROM單元如果對其進行編譯的話,就會發(fā)現(xiàn)message窗口有如下信息:Warning:I/Oerro--can'treadinitialmemorycontentfilec:\maxwork\rom.mif--setingallinitialvaluesto0它表明目前沒有找到表征ROM內(nèi)容的對應(yīng)文件rom.mif,故而將所有ROM內(nèi)容認為是“0”,下面說明如何對ROM進行初始化。調(diào)入ROM元件時(可用LPM_ROM或用MegaWizardPlug-InManager調(diào)入)軟件會要求初始化文件的名字,如果還沒有做好這個文件,可以先填一個文件名如:test.mif或test.hex(test這個文件現(xiàn)在并不存在)。完成設(shè)計后編譯,再建立波形文件*.SCF,打開仿真窗口Simulator,此時可在菜單中找到Initialize>InitializeMemo-ry(這個選項只有在仿真窗口出現(xiàn)后才會出現(xiàn)),初始化該Project中ROM內(nèi)容的表格,在填寫第一步中的譯碼關(guān)系之后,ExportFile為c:\maxwork\rom.mif。此時才可以編輯初始化文件并輸出成*.mif或*.hex文件(如test.mif或test.hex),而且需要再次編譯,才算完成。另外還可以通過系統(tǒng)幫助生成mif文件,方法如下:在Help→Megafunction/LPM,找到lpm_rom,選擇InitializingRAMorROM,再選MemoryInitializationFile(.mif)orHexadecimalFile(.hex),將其保存即可。下面簡要介紹一下4種主要的、常用的LPM兆函數(shù)和這些兆函數(shù)的解釋及其端口的定義、參數(shù)和資源的使用。(1)lpm_ff,觸發(fā)器兆函數(shù)。其原型端口名稱和參數(shù)命令是:
COMPONENTlpm_ff
GENERIC(LPM_WIDTH:POSITIVE;--data和q寬度
LPM_AVALUE:STRING:="UNUSED";--aset加載恒定值
LPM_PVALUE:STRING:="UNUSED";
LPM_FFTYPE:STRING:="DFF";--DFF/TFF/UNUSED類型觸發(fā)器
LPM_TYPE:STRING:="LPM_FF";--LPM實體名稱
LPM_SVALUE:STRING:="UNUSED";--sset加載恒定值
LPM_HINT:STRING:="UNUSED");--Altera特有參數(shù),默認UNUSED
PORT(data:INSTD_LOGIC_VECTOR(LPM_WIDTH-1DOWNTO0);
clock:INSTD_LOGIC;
enable:INSTD_LOGIC:='1';--時鐘使能輸入
sload:INSTD_LOGIC:='0';--異步加載、清除、設(shè)置輸入
sclr:INSTD_LOGIC:='0';
sset:INSTD_LOGIC:='0';
aload:INSTD_LOGIC:='0';--同步加載、清除、設(shè)置輸入
aclr:INSTD_LOGIC:='0';
aset:INSTD_LOGIC:='0';
q:OUTSTD_LOGIC_VECTOR(LPM_WIDTH-1DOWNTO0));--來自D或T觸發(fā)器的數(shù)據(jù)輸出
ENDCOMPONENT;
提示:兆函數(shù)lpm_ff每位使用一個邏輯單元。(2)lpm_rom,ROM兆函數(shù)。lpm_rom是LPM庫中一個標準程序包文件,它的端口定義如下:
COMPONENTlpm_rom
GENERIC(LPM_WIDTH:POSITIVE;--q寬度
LPM_TYPE:STRING:="LPM_ROM";
LPM_NUMWORDS:NATURAL:=0;--存儲字的數(shù)量
LPM_FILE:STRING;--初始化文件.mif/.hex
LPM_ADDRESS_CONTROL:STRING:="REGISTERED";--地址端口是否注冊
LPM_OUTDATA:STRING:="REGISTERED";--q端口是否注冊
LPM_HINT:STRING:="UNUSED");
PORT(address:INSTD_LOGIC_VECTOR(LPM_WIDTHAD-1DOWNTO0);--輸入到存--儲器的地址
inclock:INSTD_LOGIC:='0';
outclock:INSTD_LOGIC:='0';--輸入/出寄存器時鐘
memenab:INSTD_LOGIC:='1';
q:OUTSTD_LOGIC_VECTOR(LPM_WIDTH-1DOWNTO0));
ENDCOMPONENT;
提示:兆函數(shù)lpm_rom每個存儲器位使用一個嵌入式單元。(3)lpm_add_sub,加法器/減法器兆函數(shù)。
COMPONENTlpm_add_sub
GENERIC(LPM_WIDTH:POSITIVE;
LPM_REPRESENTATION:STRING:="SIGNED";--執(zhí)行的加法類型
LPM_DIRECTION:STRING:="UNUSED";
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)墻涂料施工裝修合同范本
- 2025年度汽車運輸承攬合同(全新修訂)4篇
- 二零二五年度環(huán)保型抽沙船租賃及環(huán)境監(jiān)測合同3篇
- 2024鴨苗配送與加盟代理合同范本(含市場拓展支持)3篇
- 2025年錫林浩特怡翔商貿(mào)有限公司招聘筆試參考題庫含答案解析
- 2025年貴州高投服務(wù)管理有限公司招聘筆試參考題庫含答案解析
- 2025年度農(nóng)戶農(nóng)業(yè)信息化建設(shè)合同4篇
- 2025年安徽宿州市泗縣虹鄉(xiāng)建設(shè)發(fā)展有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- 2025年人民版九年級歷史下冊月考試卷含答案
- 2025年版二手家電回收與再利用合同規(guī)范4篇
- 2025-2030年中國草莓市場競爭格局及發(fā)展趨勢分析報告
- 第二章《有理數(shù)的運算》單元備課教學(xué)實錄2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊
- 華為智慧園區(qū)解決方案介紹
- 奕成玻璃基板先進封裝中試線項目環(huán)評報告表
- 廣西壯族自治區(qū)房屋建筑和市政基礎(chǔ)設(shè)施全過程工程咨詢服務(wù)招標文件范本(2020年版)修訂版
- 人教版八年級英語上冊期末專項復(fù)習(xí)-完形填空和閱讀理解(含答案)
- 2024新版有限空間作業(yè)安全大培訓(xùn)
- GB/T 44304-2024精細陶瓷室溫斷裂阻力試驗方法壓痕(IF)法
- 年度董事會工作計劃
- 《退休不褪色余熱亦生輝》學(xué)校退休教師歡送會
- 02R112拱頂油罐圖集
評論
0/150
提交評論