4.4 流水燈的設(shè)計(jì)輸入
4.4.1 建立FPGA工程
完成項(xiàng)目需求分析、電路圖分析以及方案設(shè)計(jì)后,接下來可以進(jìn)行FPGA設(shè)計(jì)了。如果用戶的計(jì)算機(jī)已安裝云源軟件GOWIN FPGA Designer,雙擊桌面上的程序圖標(biāo),即可打開GOWIN FPGA Designer。在工作界面中依次單擊菜單“File→New”,可打開新建工程(Projects)或文件(Files)類型選擇對(duì)話框,如圖4-6所示。
?
圖4-6 新建工程或文件界面
選中“Projects→FPGA Design Project”條目,或直接單擊主界面中的“Quick Start→New Project”圖標(biāo),即可打開新建工程對(duì)話框,在對(duì)話框中設(shè)置工程的名稱(waterlight)和存放路徑,單擊“Next”打開器件選擇(Select Device)對(duì)話框,如圖4-7所示。
?
圖4-7 FPGA 器件選擇界面
根據(jù)CGD100開發(fā)板上的FPGA器件型號(hào),在器件系列(Series)列表框中選擇GW1N,器件(Device)列表中選擇GW1N-4B,封裝(Package)列表中選擇LQFP144,速度等級(jí)(Speed)中選擇C6/I5,圖中的列表框中自動(dòng)篩選出CGD100開發(fā)板對(duì)應(yīng)的FPGA型號(hào)GW1N-UV4LQ144C6/I5,選中該器件型號(hào),依次單擊“Next→Finish”完成工程的創(chuàng)建,且軟件自動(dòng)返回到主界面。
此時(shí)打開工程路徑所指向的文件夾,可以發(fā)現(xiàn)目錄中出現(xiàn)了兩個(gè)子文件夾“impl”、“src”以及CPRJ類型的工程文件waterlight。其中,impl文件夾存放工程編譯后的一些過程文件,src文件夾存放工程中新建的資源文件??梢噪p擊waterlight.gprj直接啟動(dòng)云源軟件并打開該FPGA工程。
完成工程創(chuàng)建后,如需重新指定FPGA設(shè)計(jì)的目標(biāo)器件,可以單擊云源軟件主界面中的目標(biāo)器件名稱,打開器件設(shè)置界面重新指定目標(biāo)器件,如圖4-8所示。
?
圖4-8 創(chuàng)建工程后重新設(shè)置目標(biāo)FPGA器件界面
4.4.2 Verilog HDL程序輸入
完成FPGA工程建立后,開始編寫Verilog HDL程序代碼進(jìn)行FPGA設(shè)計(jì)。AMD、Intel公司的FPGA開發(fā)環(huán)境均提供了原理圖方式及HDL代碼兩種輸入方式,云源軟件僅提供了HDL代碼輸入方式。原理圖的設(shè)計(jì)輸入方式類似于繪制電路圖的設(shè)計(jì)方式,雖然直觀,但十分不便于程序移植和后期代碼的維護(hù)修改,因此應(yīng)用很少。本書均采用HDL代碼輸入的方式進(jìn)行FPGA程序設(shè)計(jì)。
在GWIN FPGA Designer主工作界面中依次單擊菜單“File→New”,打開新建資源界面,在資源界面中選中“Files→Verilog File”,單擊“OK”,在文件名編輯框(Name)中輸入Verilog HDL文件名waterlight,文件存放目錄編輯框(Create In)自動(dòng)設(shè)置為當(dāng)前工程目錄下的src文件夾下,如圖4-9所示。
?
圖4-9 新建Verilog文件界面
單擊“OK”按鍵,完成Verilog HDL文件的創(chuàng)建,軟件主界面的工作區(qū)中自動(dòng)生成名為“waterlight.v”的文件,且該文件處于打開狀態(tài),可以在文件中輸入設(shè)計(jì)代碼。
在文件中輸入下列代碼。
//waterlight.v文件
module waterlight(
input clk50m, ?????????????//系統(tǒng)時(shí)鐘:50MHz
input rst_n, ???????????????//復(fù)位信號(hào):低電平有效
output reg [7:0] led ?????????//8個(gè)LED燈
);
reg [29:0] cn=0;
always @(posedge clk50m or negedge rst_n)
if (!rst_n) begin
?????cn <= 0;
?led <= 8'hff;
?end
else begin
?if (cn>30'd8000_0000) cn <=0;
?else cn <= cn + 1;
?if (cn<30'd1000_0000) led <=8'b0000_0001;
?else if (cn<30'd2000_0000) led <=8'b0000_0010;
?else if (cn<30'd3000_0000) led <=8'b0000_0100;
??else if (cn<30'd4000_0000) led <=8'b0000_1000;
??else if (cn<30'd5000_0000) led <=8'b0001_0000;
??else if (cn<30'd6000_0000) led <=8'b0010_0000;
?else if (cn<30'd7000_0000) led <=8'b0100_0000;
?else led <=8'b1000_0000;
?end
endmodule
上述文件代碼實(shí)現(xiàn)的是一個(gè)8位流水燈功能電路,每個(gè)燈點(diǎn)亮0.2s的時(shí)間,依次循環(huán)點(diǎn)亮,實(shí)現(xiàn)流水燈效果。本章僅關(guān)注FPGA的基本開發(fā)流程,關(guān)于流水燈的設(shè)計(jì)思路及Verilog HDL語法細(xì)節(jié)將在后續(xù)章節(jié)逐步展開討論。
完成代碼輸入后保存文件。流水燈程序共有10個(gè)信號(hào)接口:時(shí)鐘信號(hào)clk50m、復(fù)位信號(hào)rst_n,以及8根LED燈信號(hào)。要使設(shè)計(jì)的程序能夠在FPGA開發(fā)板上正確運(yùn)行,需要將程序的端口信號(hào)與CGD100電路板上的FPGA管腳關(guān)聯(lián)起來。完成信號(hào)與管腳關(guān)聯(lián)過程稱為物理管腳約束。
新建類型為“Physical Constraints File”,在文件中輸入下列代碼。
//CGD100.cst文件IO_LOC "clk50m" 7;IO_PORT "clk50m" IO_TYPE=LVCMOS33;IO_LOC "rst_n" 65; //k8IO_PORT "rst_n" IO_TYPE=LVCMOS33;IO_LOC "led[0]" 23;IO_LOC "led[1]" 24;IO_LOC "led[2]" 25;IO_LOC "led[3]" 26;IO_LOC "led[4]" 27;IO_LOC "led[5]" 28;IO_LOC "led[6]" 29;IO_LOC "led[7]" 30;IO_PORT "led[0]" IO_TYPE=LVCMOS33;IO_PORT "led[1]" IO_TYPE=LVCMOS33;IO_PORT "led[2]" IO_TYPE=LVCMOS33;IO_PORT "led[3]" IO_TYPE=LVCMOS33;IO_PORT "led[4]" IO_TYPE=LVCMOS33;IO_PORT "led[5]" IO_TYPE=LVCMOS33;IO_PORT "led[6]" IO_TYPE=LVCMOS33;IO_PORT "led[7]" IO_TYPE=LVCMOS33;至此,我們完成了流水燈例程的所有代碼輸入工作。雙擊GOWIN FPGA Designer主界面中的“Run All”工具按鍵,軟件自動(dòng)完成工程的綜合及布局布線工作。如果代碼輸入正確,則軟件界面左側(cè)“Process”窗口中的“Synthesize”和“Place & Route”條目均會(huì)出現(xiàn)綠色的勾,表示程序綜合及布局布線正確,如圖4-10所示。
?
圖4-10 程序綜合及布局布線成功后的界面
4.5程序文件下載
程序布局布線成功后,在工程目錄的“implpnr”路徑下會(huì)生成擴(kuò)展名為fs的程序文件。對(duì)于流水燈工程實(shí)例來講,生成的程序文件為waterlight.fs。采用USB線連接CGD100開發(fā)板和電腦,雙擊“ Program Device”條目,啟動(dòng)程序下載工具Gowin Programmer,同時(shí)彈出下載線設(shè)置對(duì)話框,如圖4-11所示。
?
圖4-11 程序下載線設(shè)置對(duì)話框
按圖4-11設(shè)置下載線狀態(tài),單擊“Save”,返回到Gowin Programmer界面。設(shè)置“Series”為GW1N,“Device”為GW1N-4B。單擊“Operation”,打開下載模式設(shè)置界面。FPGA最主要的程序下載模式有兩種:SRAM模式及Embedded Flash模式,前者模式在掉電后程序即丟失,后者模式在掉電后程序不丟失。對(duì)于SRAM模式來講,在下載模式設(shè)置界面中,“Access Mode”選擇SRAM Mode,“Operation”選擇“SRAM Program”;對(duì)于Embedded Flash模式,在下載模式設(shè)置界面中,“Access Mode”選擇Embedded Flash Mode,“Operation”選擇“embFlash Erase,Program”。在“File name”編輯框中設(shè)置下載文件為工程布局布線后生成的waterlight.fs。兩種程序下載模式的設(shè)置界面如圖4-12、4-13所示。
?
圖4-12 SRAM模式下載模式設(shè)置界面
?
圖4-13 Embedded Flash下載模式設(shè)置界面
?
圖4-14 Gowin Programmer配置界面
完成設(shè)置后的Gowin Programmer界面如圖4-14所示。單擊“Program/Configure”工具按鈕即可完成程序的下載。程序下載完成后,可以觀察到CGD100的8個(gè)LED燈呈現(xiàn)流水燈效果。
4.6 小結(jié)
本章以流水燈實(shí)例為例詳細(xì)介紹了FPGA的設(shè)計(jì)流程。相對(duì)于AMD、Intel等FPGA廠商的FPGA開發(fā)環(huán)境來講,高云云源軟件的開發(fā)界面及流程都要簡(jiǎn)單得多,因此更適合FPGA初學(xué)者快速掌握FPGA的設(shè)計(jì)流程。本章的學(xué)習(xí)要點(diǎn)可歸納為:
(1)了解FPGA的設(shè)計(jì)流程,并將設(shè)計(jì)流程與PCB設(shè)計(jì)流程進(jìn)行對(duì)比分析。
(2)掌握云源軟件的基本使用方法及步驟。
(3)理解SRAM及Embedded Flash兩種下載模式的特點(diǎn)。
審核編輯:湯梓紅
評(píng)論
查看更多