新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA開(kāi)發(fā)板快速教程(二)

FPGA開(kāi)發(fā)板快速教程(二)

作者: 時(shí)間:2017-06-06 來(lái)源:網(wǎng)絡(luò) 收藏
第二章
第一節(jié) 的基本開(kāi)發(fā)流程

器件(Programable Logic Device)的簡(jiǎn)稱(chēng),是現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programable Gate Array)的簡(jiǎn)稱(chēng),兩者的功能基本相同,只是實(shí)現(xiàn)原理略有不同,所以我們有時(shí)可以忽略這兩者的區(qū)別,統(tǒng)稱(chēng)為器件或/FPGA。

是電子設(shè)計(jì)領(lǐng)域中最具活力和發(fā)展前途的一項(xiàng)技術(shù),它的影響絲毫不亞于70年代單片機(jī)的發(fā)明和使用。

PLD能做什么呢?可以毫不夸張的講,PLD能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡(jiǎn)單的74電路,都可以用PLD來(lái)實(shí)現(xiàn)。PLD如同一張白紙或是一堆積木,工程師可以通過(guò)傳統(tǒng)的原理圖輸入法,或是硬件描述語(yǔ)言自由的設(shè)計(jì)一個(gè)數(shù)字系統(tǒng)。通過(guò)軟件仿真,我們可以事先驗(yàn)證設(shè)計(jì)的正確性。在PCB完成以后,還可以利用PLD的在線修改能力,隨時(shí)修改設(shè)計(jì)而不必改動(dòng)硬件電路。使用PLD來(lái)開(kāi)發(fā)數(shù)字電路,可以大大縮短設(shè)計(jì)時(shí)間,減少PCB面積,提高系統(tǒng)的可靠性。 PLD的這些優(yōu)點(diǎn)使得PLD技術(shù)在90年代以后得到飛速的發(fā)展,同時(shí)也大大推動(dòng)了EDA軟件和硬件描述語(yǔ)言(HDL)的進(jìn)步。

如何使用PLD呢?其實(shí)PLD的使用很簡(jiǎn)單,學(xué)習(xí)PLD比學(xué)習(xí)單片機(jī)要簡(jiǎn)單的多,有數(shù)字電路基礎(chǔ),會(huì)使用計(jì)算機(jī),就可以進(jìn)行PLD的開(kāi)發(fā)?! ?

開(kāi)發(fā)PLD需要了解兩個(gè)部分:1.PLD開(kāi)發(fā)軟件 2.PLD本身

由于PLD軟件已經(jīng)發(fā)展的相當(dāng)完善,用戶甚至可以不用詳細(xì)了解PLD的內(nèi)部結(jié)構(gòu),也可以用自己熟悉的方法:如原理圖輸入或HDL語(yǔ)言來(lái)完成相當(dāng)優(yōu)秀的PLD設(shè)計(jì)。所以對(duì)初學(xué)者,首先應(yīng)了解PLD開(kāi)發(fā)軟件和開(kāi)發(fā)流程。了解PLD的內(nèi)部結(jié)構(gòu),將有助于提高我們?cè)O(shè)計(jì)的效率和可靠性。

下面我們以基于Altera公司的QuantusII軟件來(lái)簡(jiǎn)單說(shuō)明一下FPGA的開(kāi)發(fā)流程。

下圖是一個(gè)典型的基于QuantusII的FPGA開(kāi)發(fā)流程。

本文引用地址:http://m.butianyuan.cn/article/201706/349480.htm(1)建立工程是每個(gè)開(kāi)發(fā)過(guò)程的開(kāi)始,QuantusII(以下簡(jiǎn)稱(chēng)Q2)以工程為單元對(duì)設(shè)計(jì)過(guò)程進(jìn)行管理。

(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(yǔ)言也可以用原理圖的輸入方法??梢园阉鼈儶?dú)立地當(dāng)作一個(gè)工程來(lái)設(shè)計(jì),并生成模塊符號(hào)(Symbol),然后在頂層圖中使用這個(gè)模塊的符號(hào),并將源文件(實(shí)現(xiàn)該模塊的原理圖或HDL文件)拷到頂層圖所在的工程目錄下。這個(gè)過(guò)程好比你要做一個(gè)電路,現(xiàn)在市面上沒(méi)有你想要的某個(gè)芯片,你就只能自己做一塊這樣的一塊芯片,然后添加到你的電路板上。

(5)將頂層圖的各個(gè)功能模塊用連線連起來(lái)。這個(gè)過(guò)程類(lèi)似電路圖設(shè)計(jì),把各個(gè)芯片連接起來(lái),組成電路系統(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è)過(guò)程類(lèi)似軟件開(kāi)發(fā)里的編譯,但實(shí)際上這個(gè)過(guò)程比軟件的編譯要復(fù)雜得多,因?yàn)樗吘棺罱K要實(shí)現(xiàn)硬件里的物理結(jié)構(gòu),包含了優(yōu)化邏輯的組合、綜合邏輯以及布線等步驟。在類(lèi)似Q2這樣的集成環(huán)境里面,這些過(guò)程都可以一氣呵成,集成環(huán)境幫你自動(dòng)完成了幾個(gè)步驟的工作。當(dāng)然,你也可以用其它工具來(lái)實(shí)現(xiàn)各個(gè)步驟的工作,這些內(nèi)容超出了本教程陳述的范圍。

(8)編譯后會(huì)生成*.sof或*.pof文件,前者可以通過(guò)JTAG下載到FPGA內(nèi)部,設(shè)計(jì)無(wú)誤的話即能實(shí)現(xiàn)預(yù)期的功能,但斷電后FPGA里的這些信息會(huì)丟失;后者可以下載到FPGA的配置芯片(EEPROM或FLASH芯片),掉電后這些配置信息不會(huì)丟失,重新上電以后通過(guò)該配置芯片對(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開(kāi)發(fā)板或者CPLD開(kāi)發(fā)板以及其它FPGA開(kāi)發(fā)板都可進(jìn)行實(shí)驗(yàn)。

目的:通過(guò)該實(shí)例學(xué)習(xí),可以了解FPGA的基本開(kāi)發(fā)流程,熟識(shí)quartusII軟件基本功能的使用。

原理:利用一個(gè)常開(kāi)按鈕(實(shí)驗(yàn)板上的KEY1)作為輸入(常開(kāi)時(shí)輸入1,閉合時(shí)輸入0),經(jīng)過(guò)一個(gè)反相器后輸出到核心板的第一個(gè)LED。KEY1常開(kāi)時(shí),LED亮,按下(閉合)實(shí)驗(yàn)板上的KEY1,該LED熄滅。

1. 建立工程

運(yùn)行QuatrusII軟件(以下簡(jiǎn)稱(chēng)Q2),建立工程,F(xiàn)ileàNew Project Wizad如

點(diǎn)擊New Project Wizard 后彈出指定工程名的對(duì)話框,在Diectory, Name, Top-Level Entity中如下圖填寫(xiě):

按Next按鈕,出現(xiàn)添加工程文件的對(duì)話框:

在這里我們先不用管它,直接按Next進(jìn)行下一步,選擇FPGA器件的型號(hào):

在Family下拉筐中,我們選擇Cyclone系列FPGA,然后在“Available devices:”中根據(jù)核心板的FPGA型號(hào)選擇FPGA型號(hào),注意在Filters一欄選上“Show Advanced Devices”以顯示所有的器件型號(hào)。執(zhí)行下一步出現(xiàn)對(duì)話框:


這里是選擇其它EDA工具的對(duì)話框,我們用Q2的集成環(huán)境進(jìn)行開(kāi)發(fā),因此這里不作任何改動(dòng)。按Next進(jìn)入工程的信息總概對(duì)話框:

按Finish按鈕即建立一個(gè)空項(xiàng)目。

2. 建立頂層圖

執(zhí)行FileàNew,彈出新建文件對(duì)話框:

選擇“Block Diagram Schematic File”按OK即建立一個(gè)空的頂層圖,缺省名為“Block1.bdf”,我們把它另存為(FileàSave as),接受默認(rèn)的文件名,并將“Add file to current project”選項(xiàng)選上,以使該文件添加到工程中去。如圖所示:


3. 添加邏輯元件(Symbol)

雙擊頂層圖圖紙的空白處,彈出添加元件的對(duì)話筐:

在Libraries里尋找所需要的邏輯元件,如果知道邏輯元件的名稱(chēng)的話,也可以直接在Name一欄敲入名字,右邊的預(yù)覽圖即可顯示元件的外觀,按OK后鼠標(biāo)旁邊即拖著一個(gè)元件符號(hào),在圖紙上點(diǎn)擊左鍵,元件即安放在圖紙上。

在圖紙上分別添加非門(mén)(not)、輸入(input)、輸出(output)三個(gè)symbol,如圖所示:

連線,將鼠標(biāo)移到symbol連線端口的那里,鼠標(biāo)變成圖示模樣: ,按下左鍵拖動(dòng)鼠標(biāo)到另一個(gè)symbol的連線端。本例中,這三個(gè)symbol的連線如下圖所示:


分別雙擊input和output symbol的名字“pin_name”、“pin_name1”,將它們的名字改為Key1,LED1:

4. 分配管腳

為芯片分配管腳可以用QuartusII軟件里的“AssignmentsàPins”菜單,也可以用tcl腳本文件。用Tcl文件進(jìn)行配置可重用性好,易于管理,因此本文介紹用tcl的方法。對(duì)于另一種方法,可以參考QuartusII軟件的幫助文檔。

在工程目錄下建立一個(gè)name為Setup.tcl的file。FileàNew,選擇other files頁(yè)面:

有關(guān)tcl文件的更詳盡內(nèi)容可參考QuartusII的幫助文檔,對(duì)于我們所選用的FPGA開(kāi)發(fā)板SOPC開(kāi)發(fā)板來(lái)說(shuō),由于不同型號(hào)的FPGA核心板的管腳與實(shí)驗(yàn)板上的引腳也不同,因此不同的核心板對(duì)應(yīng)的.tcl文件也不同(關(guān)于核心板引腳與實(shí)驗(yàn)板引腳對(duì)應(yīng)的詳細(xì)情況請(qǐng)參照“CT-SOPCx學(xué)習(xí)套件用戶手冊(cè)”或相關(guān)電路原理圖)。在實(shí)際項(xiàng)目中,該文件也可以根據(jù)具體管腳分配要求來(lái)改寫(xiě)。

對(duì)應(yīng)于EP1C6 FPGA開(kāi)發(fā)板,EP1C12 FPGA開(kāi)發(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)。然后打開(kāi)Tools -> Tcl Scripts,選中剛才編輯的Script文件:Setup,并點(diǎn)擊Run,如下圖:

注意:建立工程時(shí)如果路徑名有中文字符或者路徑名有空格字符,則tcl Script文件將運(yùn)行不了。比如,本例建立的工程“FPGA_led_test”目錄是: C:alteraquartus51myq2projectsFPGA_led_test

如果是:

C:alteraquartus51my q2projectsFPGA_led_test

在該目錄下運(yùn)行工程里的setup.tcl就會(huì)出錯(cuò)。

如果使用Tools -> Tcl Scripts 后沒(méi)有彈出“tcl Script”對(duì)話框可以試一下關(guān)了QII,再重新打開(kāi)。使用TCL文件分配管腳是很方便的,用戶可以直接從相關(guān)例子工程中復(fù)制需要管腳分配表到自己的工程中,省時(shí)又方便。



關(guān)鍵詞: 基本教程 PLD FPGA 可編程邏輯

評(píng)論


相關(guān)推薦

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

關(guān)閉