新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > FPGA開發板快速教程(二)

        FPGA開發板快速教程(二)

        作者: 時間:2017-06-06 來源:網絡 收藏
        第二章
        第一節 的基本開發流程

        器件(Programable Logic Device)的簡稱,是現場可編程門陣列(Field Programable Gate Array)的簡稱,兩者的功能基本相同,只是實現原理略有不同,所以我們有時可以忽略這兩者的區別,統稱為器件或/FPGA。

        是電子設計領域中最具活力和發展前途的一項技術,它的影響絲毫不亞于70年代單片機的發明和使用。

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

        如何使用PLD呢?其實PLD的使用很簡單,學習PLD比學習單片機要簡單的多,有數字電路基礎,會使用計算機,就可以進行PLD的開發。  

        開發PLD需要了解兩個部分:1.PLD開發軟件 2.PLD本身

        由于PLD軟件已經發展的相當完善,用戶甚至可以不用詳細了解PLD的內部結構,也可以用自己熟悉的方法:如原理圖輸入或HDL語言來完成相當優秀的PLD設計。所以對初學者,首先應了解PLD開發軟件和開發流程。了解PLD的內部結構,將有助于提高我們設計的效率和可靠性。

        下面我們以基于Altera公司的QuantusII軟件來簡單說明一下FPGA的開發流程。

        下圖是一個典型的基于QuantusII的FPGA開發流程。

        本文引用地址:http://www.104case.com/article/201706/349480.htm(1)建立工程是每個開發過程的開始,QuantusII(以下簡稱Q2)以工程為單元對設計過程進行管理。

        (2)建立頂層圖。可以這樣理解,頂層圖是一個容器,將整個工程的各個模塊包容在里面,編譯的時候就將這些模塊整合在一起。也可以理解為它是一個大元件,包含各個模塊,編譯的時候就是生成一個這樣的大元件。

        (3)采用ALTERA公司提供的LPM功能模塊。Q2軟件環境里包含了大量的常用功能模塊,例如計數器、累加器、比較器、譯碼器等等;如果不懂得在工程中采用這些現有的功能模塊真是太浪費了。以本人的經驗,一個設計中一般只有極少部分的模塊需要自己從零設計。

        (4)自己建立功能模塊。當然,有些設計中現有的模塊功能不能滿足具體設計的要求,那就只能自己設計啦。可以用硬件描述語言也可以用原理圖的輸入方法。可以把它們獨立地當作一個工程來設計,并生成模塊符號(Symbol),然后在頂層圖中使用這個模塊的符號,并將源文件(實現該模塊的原理圖或HDL文件)拷到頂層圖所在的工程目錄下。這個過程好比你要做一個電路,現在市面上沒有你想要的某個芯片,你就只能自己做一塊這樣的一塊芯片,然后添加到你的電路板上。

        (5)將頂層圖的各個功能模塊用連線連起來。這個過程類似電路圖設計,把各個芯片連接起來,組成電路系統。

        (6)系統的功能原理圖至此已經基本出爐了,下一步要為該設計選擇芯片載體,才能真正在物理上實現系統的功能。這一步的主要工作是:(1)選擇芯片型號;(2)為頂層圖的各個輸入輸出信號分配芯片的管腳;(3)設置編譯選項,目的是讓編譯器知道更多的信息。

        (7)編譯。這個過程類似軟件開發里的編譯,但實際上這個過程比軟件的編譯要復雜得多,因為它畢竟最終要實現硬件里的物理結構,包含了優化邏輯的組合、綜合邏輯以及布線等步驟。在類似Q2這樣的集成環境里面,這些過程都可以一氣呵成,集成環境幫你自動完成了幾個步驟的工作。當然,你也可以用其它工具來實現各個步驟的工作,這些內容超出了本教程陳述的范圍。

        (8)編譯后會生成*.sof或*.pof文件,前者可以通過JTAG下載到FPGA內部,設計無誤的話即能實現預期的功能,但斷電后FPGA里的這些信息會丟失;后者可以下載到FPGA的配置芯片(EEPROM或FLASH芯片),掉電后這些配置信息不會丟失,重新上電以后通過該配置芯片對FPGA的內部RAM進行配置。

        (9)對于復雜的設計,工程編譯了以后可以采用Q2的仿真功能或其它仿真軟件(如ModelSim)對設計反復進行仿真和驗證,直到滿足要求。


        第二節 基于QuartusII的實例


        實驗一 實驗板上的KEY1按鈕控制FPGA核心板上的第一個LED燈。

        本實驗比較簡單,使用本站FPGA開發板或者CPLD開發板以及其它FPGA開發板都可進行實驗。

        目的:通過該實例學習,可以了解FPGA的基本開發流程,熟識quartusII軟件基本功能的使用。

        原理:利用一個常開按鈕(實驗板上的KEY1)作為輸入(常開時輸入1,閉合時輸入0),經過一個反相器后輸出到核心板的第一個LED。KEY1常開時,LED亮,按下(閉合)實驗板上的KEY1,該LED熄滅。

        1. 建立工程

        運行QuatrusII軟件(以下簡稱Q2),建立工程,FileàNew Project Wizad如

        點擊New Project Wizard 后彈出指定工程名的對話框,在Diectory, Name, Top-Level Entity中如下圖填寫:

        按Next按鈕,出現添加工程文件的對話框:

        在這里我們先不用管它,直接按Next進行下一步,選擇FPGA器件的型號:

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


        這里是選擇其它EDA工具的對話框,我們用Q2的集成環境進行開發,因此這里不作任何改動。按Next進入工程的信息總概對話框:

        按Finish按鈕即建立一個空項目。

        2. 建立頂層圖

        執行FileàNew,彈出新建文件對話框:

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


        3. 添加邏輯元件(Symbol)

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

        在Libraries里尋找所需要的邏輯元件,如果知道邏輯元件的名稱的話,也可以直接在Name一欄敲入名字,右邊的預覽圖即可顯示元件的外觀,按OK后鼠標旁邊即拖著一個元件符號,在圖紙上點擊左鍵,元件即安放在圖紙上。

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

        連線,將鼠標移到symbol連線端口的那里,鼠標變成圖示模樣: ,按下左鍵拖動鼠標到另一個symbol的連線端。本例中,這三個symbol的連線如下圖所示:


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

        4. 分配管腳

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

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

        有關tcl文件的更詳盡內容可參考QuartusII的幫助文檔,對于我們所選用的FPGA開發板SOPC開發板來說,由于不同型號的FPGA核心板的管腳與實驗板上的引腳也不同,因此不同的核心板對應的.tcl文件也不同(關于核心板引腳與實驗板引腳對應的詳細情況請參照“CT-SOPCx學習套件用戶手冊”或相關電路原理圖)。在實際項目中,該文件也可以根據具體管腳分配要求來改寫。

        對應于EP1C6 FPGA開發板,EP1C12 FPGA開發板:

        #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

        保存到工程目錄下,并注意在保存對話框選上“Add file to current project”選項。然后打開Tools -> Tcl Scripts,選中剛才編輯的Script文件:Setup,并點擊Run,如下圖:

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

        如果是:

        C:alteraquartus51my q2projectsFPGA_led_test

        在該目錄下運行工程里的setup.tcl就會出錯。

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大名县| 浮山县| 扶余县| 通化市| 太康县| 百色市| 祁阳县| 乐至县| 汤阴县| 阳泉市| 蒲城县| 民权县| 甘孜县| 鹿泉市| 长岭县| 安龙县| 聂拉木县| 静海县| 镇江市| 罗山县| 兴化市| 婺源县| 佳木斯市| 台湾省| 日喀则市| 东兰县| 六安市| 鸡泽县| 阳新县| 磐安县| 离岛区| 确山县| 温宿县| 双牌县| 安新县| 海伦市| 乌鲁木齐市| 津南区| 蛟河市| 余干县| 筠连县|