FPGA開發(fā)板快速教程(二)
第一節(jié) FPGA的基本開發(fā)流程
PLD是可編程邏輯器件(Programable Logic Device)的簡(jiǎn)稱,FPGA是現(xiàn)場(chǎng)可編程門陣列(Field Programable Gate Array)的簡(jiǎn)稱,兩者的功能基本相同,只是實(shí)現(xiàn)原理略有不同,所以我們有時(shí)可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或PLD/FPGA。
PLD是電子設(shè)計(jì)領(lǐng)域中最具活力和發(fā)展前途的一項(xiàng)技術(shù),它的影響絲毫不亞于70年代單片機(jī)的發(fā)明和使用。
PLD能做什么呢?可以毫不夸張的講,PLD能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡(jiǎn)單的74電路,都可以用PLD來實(shí)現(xiàn)。PLD如同一張白紙或是一堆積木,工程師可以通過傳統(tǒng)的原理圖輸入法,或是硬件描述語言自由的設(shè)計(jì)一個(gè)數(shù)字系統(tǒng)。通過軟件仿真,我們可以事先驗(yàn)證設(shè)計(jì)的正確性。在PCB完成以后,還可以利用PLD的在線修改能力,隨時(shí)修改設(shè)計(jì)而不必改動(dòng)硬件電路。使用PLD來開發(fā)數(shù)字電路,可以大大縮短設(shè)計(jì)時(shí)間,減少PCB面積,提高系統(tǒng)的可靠性。 PLD的這些優(yōu)點(diǎn)使得PLD技術(shù)在90年代以后得到飛速的發(fā)展,同時(shí)也大大推動(dòng)了EDA軟件和硬件描述語言(HDL)的進(jìn)步。
如何使用PLD呢?其實(shí)PLD的使用很簡(jiǎn)單,學(xué)習(xí)PLD比學(xué)習(xí)單片機(jī)要簡(jiǎn)單的多,有數(shù)字電路基礎(chǔ),會(huì)使用計(jì)算機(jī),就可以進(jìn)行PLD的開發(fā)?! ?
開發(fā)PLD需要了解兩個(gè)部分:1.PLD開發(fā)軟件 2.PLD本身
由于PLD軟件已經(jīng)發(fā)展的相當(dāng)完善,用戶甚至可以不用詳細(xì)了解PLD的內(nèi)部結(jié)構(gòu),也可以用自己熟悉的方法:如原理圖輸入或HDL語言來完成相當(dāng)優(yōu)秀的PLD設(shè)計(jì)。所以對(duì)初學(xué)者,首先應(yīng)了解PLD開發(fā)軟件和開發(fā)流程。了解PLD的內(nèi)部結(jié)構(gòu),將有助于提高我們?cè)O(shè)計(jì)的效率和可靠性。
下面我們以基于Altera公司的QuantusII軟件來簡(jiǎn)單說明一下FPGA的開發(fā)流程。
下圖是一個(gè)典型的基于QuantusII的FPGA開發(fā)流程。
(2)建立頂層圖。可以這樣理解,頂層圖是一個(gè)容器,將整個(gè)工程的各個(gè)模塊包容在里面,編譯的時(shí)候就將這些模塊整合在一起。也可以理解為它是一個(gè)大元件,包含各個(gè)模塊,編譯的時(shí)候就是生成一個(gè)這樣的大元件。
(3)采用ALTERA公司提供的LPM功能模塊。Q2軟件環(huán)境里包含了大量的常用功能模塊,例如計(jì)數(shù)器、累加器、比較器、譯碼器等等;如果不懂得在工程中采用這些現(xiàn)有的功能模塊真是太浪費(fèi)了。以本人的經(jīng)驗(yàn),一個(gè)設(shè)計(jì)中一般只有極少部分的模塊需要自己從零設(shè)計(jì)。
(4)自己建立功能模塊。當(dāng)然,有些設(shè)計(jì)中現(xiàn)有的模塊功能不能滿足具體設(shè)計(jì)的要求,那就只能自己設(shè)計(jì)啦??梢杂糜布枋稣Z言也可以用原理圖的輸入方法。可以把它們獨(dú)立地當(dāng)作一個(gè)工程來設(shè)計(jì),并生成模塊符號(hào)(Symbol),然后在頂層圖中使用這個(gè)模塊的符號(hào),并將源文件(實(shí)現(xiàn)該模塊的原理圖或HDL文件)拷到頂層圖所在的工程目錄下。這個(gè)過程好比你要做一個(gè)電路,現(xiàn)在市面上沒有你想要的某個(gè)芯片,你就只能自己做一塊這樣的一塊芯片,然后添加到你的電路板上。
(5)將頂層圖的各個(gè)功能模塊用連線連起來。這個(gè)過程類似電路圖設(shè)計(jì),把各個(gè)芯片連接起來,組成電路系統(tǒng)。
(6)系統(tǒng)的功能原理圖至此已經(jīng)基本出爐了,下一步要為該設(shè)計(jì)選擇芯片載體,才能真正在物理上實(shí)現(xiàn)系統(tǒng)的功能。這一步的主要工作是:(1)選擇芯片型號(hào);(2)為頂層圖的各個(gè)輸入輸出信號(hào)分配芯片的管腳;(3)設(shè)置編譯選項(xiàng),目的是讓編譯器知道更多的信息。
(7)編譯。這個(gè)過程類似軟件開發(fā)里的編譯,但實(shí)際上這個(gè)過程比軟件的編譯要復(fù)雜得多,因?yàn)樗吘棺罱K要實(shí)現(xiàn)硬件里的物理結(jié)構(gòu),包含了優(yōu)化邏輯的組合、綜合邏輯以及布線等步驟。在類似Q2這樣的集成環(huán)境里面,這些過程都可以一氣呵成,集成環(huán)境幫你自動(dòng)完成了幾個(gè)步驟的工作。當(dāng)然,你也可以用其它工具來實(shí)現(xiàn)各個(gè)步驟的工作,這些內(nèi)容超出了本教程陳述的范圍。
(8)編譯后會(huì)生成*.sof或*.pof文件,前者可以通過JTAG下載到FPGA內(nèi)部,設(shè)計(jì)無誤的話即能實(shí)現(xiàn)預(yù)期的功能,但斷電后FPGA里的這些信息會(huì)丟失;后者可以下載到FPGA的配置芯片(EEPROM或FLASH芯片),掉電后這些配置信息不會(huì)丟失,重新上電以后通過該配置芯片對(duì)FPGA的內(nèi)部RAM進(jìn)行配置。
(9)對(duì)于復(fù)雜的設(shè)計(jì),工程編譯了以后可以采用Q2的仿真功能或其它仿真軟件(如ModelSim)對(duì)設(shè)計(jì)反復(fù)進(jìn)行仿真和驗(yàn)證,直到滿足要求。
第二節(jié) 基于QuartusII的實(shí)例
實(shí)驗(yàn)一 實(shí)驗(yàn)板上的KEY1按鈕控制FPGA核心板上的第一個(gè)LED燈。
本實(shí)驗(yàn)比較簡(jiǎn)單,使用本站FPGA開發(fā)板或者CPLD開發(fā)板以及其它FPGA開發(fā)板都可進(jìn)行實(shí)驗(yàn)。
目的:通過該實(shí)例學(xué)習(xí),可以了解FPGA的基本開發(fā)流程,熟識(shí)quartusII軟件基本功能的使用。
原理:利用一個(gè)常開按鈕(實(shí)驗(yàn)板上的KEY1)作為輸入(常開時(shí)輸入1,閉合時(shí)輸入0),經(jīng)過一個(gè)反相器后輸出到核心板的第一個(gè)LED。KEY1常開時(shí),LED亮,按下(閉合)實(shí)驗(yàn)板上的KEY1,該LED熄滅。
1. 建立工程
運(yùn)行QuatrusII軟件(以下簡(jiǎn)稱Q2),建立工程,F(xiàn)ileàNew Project Wizad如
2. 建立頂層圖
執(zhí)行FileàNew,彈出新建文件對(duì)話框:
3. 添加邏輯元件(Symbol)
雙擊頂層圖圖紙的空白處,彈出添加元件的對(duì)話筐:
在圖紙上分別添加非門(not)、輸入(input)、輸出(output)三個(gè)symbol,如圖所示:
為芯片分配管腳可以用QuartusII軟件里的“AssignmentsàPins”菜單,也可以用tcl腳本文件。用Tcl文件進(jìn)行配置可重用性好,易于管理,因此本文介紹用tcl的方法。對(duì)于另一種方法,可以參考QuartusII軟件的幫助文檔。
在工程目錄下建立一個(gè)name為Setup.tcl的file。FileàNew,選擇other files頁面:
對(duì)應(yīng)于EP1C6 FPGA開發(fā)板,EP1C12 FPGA開發(fā)板:
#Setup.tcl
# Setup pin setting
set_global_assignment -name RESERVE_ALL_UNUSED_PINS AS INPUT TRI-STATED
set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF
set_location_assignment PIN_1 -to led1
set_location_assignment PIN_122 -to key1
保存到工程目錄下,并注意在保存對(duì)話框選上“Add file to current project”選項(xiàng)。然后打開Tools -> Tcl Scripts,選中剛才編輯的Script文件:Setup,并點(diǎn)擊Run,如下圖:
如果是:
C:alteraquartus51my q2projectsFPGA_led_test
在該目錄下運(yùn)行工程里的setup.tcl就會(huì)出錯(cuò)。
如果使用Tools -> Tcl Scripts 后沒有彈出“tcl Script”對(duì)話框可以試一下關(guān)了QII,再重新打開。使用TCL文件分配管腳是很方便的,用戶可以直接從相關(guān)例子工程中復(fù)制需要管腳分配表到自己的工程中,省時(shí)又方便。
評(píng)論