99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

【FPGA基礎】基于 Pango Design Suite(PDS) 的FPGA開發(fā)流程

?

導讀:本文旨在通過 LED 的 Demo,實現(xiàn)快速上手基于PGL22G的FPGA開發(fā)。

?

@


    一、創(chuàng)建工程

    STEP #1

    啟動 Pango Design Suite 2020.3 開發(fā)環(huán)境(在開始菜單中選擇 pango->Pango DesignSuite 2020.3>Pango Design Suite 。Pango Design Suite(簡稱 PDS)或者雙擊桌面的Pango Design Suite 2020.3 的圖標直接打開軟件。

    在這里插入圖片描述

    STEP #2

    在 PDS 開發(fā)環(huán)境里雙擊 Create Project 或 File->New Project...這兩種方式都可,如下圖:

    在這里插入圖片描述

    STEP #3

    彈出一個 PDS 的工程向導,點擊 Next 按鈕。

    在這里插入圖片描述

    STEP #4

    在彈出的對話框中輸入工程名和工程存放的目錄,這里取一個 led_test 的工程名,點擊 Next;

    在這里插入圖片描述

    STEP #5

    在下面的對話框中默認選擇 RTL Project, 因為我們這里使用 verilog 行為描述語言來編程,單擊 Next

    在這里插入圖片描述

    STEP #6

    進入 Add Design Source Files 界面,這里先不添加任何設計文件。點擊 Next;

    在這里插入圖片描述

    STEP #7

    這里問是否添加已有的 IP,保持默認不添加,單擊 Next;

    在這里插入圖片描述

    STEP #8

    提示是否添加已有的約束文件,這里約束文件我們也沒有設計好,也不添加。

    在這里插入圖片描述

    STEP #9

    在接下來的對話框選擇所用的 FPGA 器件,以及進行一些配置。開發(fā)板首先在 Family 欄里選擇 Logos,Device 中選擇 PGL22G,在 Package 欄選擇 BG324, Speed grade 欄選擇-6;綜合工具選擇 ADS;單擊 NEXT 進入下一界面:

    在這里插入圖片描述

    STEP #10

    再次確認一下板子型號有沒有選對, 沒有問題再點擊“Finish”完成工程創(chuàng)建。

    在這里插入圖片描述

    STEP #11

    工程創(chuàng)建后如下圖所示:

    二、編寫流水燈的 verilog 代碼

    STEP #1

    雙擊 Sources 下的 Designs 圖標;

    STEP #2

    在 Add Design Source Files 界面中進行如下設置,點擊 OK;

    STEP #3

    可以看到已經(jīng)新建的 led_test.v 文件,點擊 OK 按鈕。

    在這里插入圖片描述

    向導會提示您定義 I/O 的端口,這里我們可以不定義,后面自己在程序中編寫就可以,單擊 OK 完成

    這時在 Navigator 界面下的 Designs 里已經(jīng)有了一個 led_test.v 文件, 并且自動成為項目的頂層(Top)模塊了。

    STEP #4

    接下去我們來編寫 led_test.v 的程序,這里我們定義了一個 32 位的寄存器 timer,用于循環(huán)計數(shù) 0~199_999_999(4 秒鐘)。

    • 當計數(shù)到 49_999_999(1 秒)的時候,熄滅第一個 LED 燈;
    • 當計數(shù)到 99_999_999(2 秒)的時候,熄滅第二個 LED 燈;
    • 當計數(shù)到 149_999_999(3 秒)的時候,熄滅第三個 LED 燈;
    • 當計數(shù)到 199_999_999(4 秒)的時候,熄滅第四個 LED 燈,計數(shù)器再重新計數(shù)。
    `timescale 1ns/1nsmodule led_test(               sys_clk,      // system clock 50Mhz on board  rst_n,          // reset ,low active              led             // LED,use for control the LED signal on board);            input         sys_clk;input         rst_n;output [3:0]  led;//define the time counterreg [31:0]   timer;                  reg [3:0]    led;always @(posedge sys_clk or negedge rst_n) begin  if (~rst_n)                               timer <32'd0;                     // when the reset signal valid,time counter clearing  else if (timer == 32'd199_999_999)    //4 seconds count(50M*4-1=199999999)    timer <= 32'd0;                       //count done,clearing the time counter  else    timer <= timer + 1'b1;            //timer counter = timer counter + 1endalways @(posedge sys_clk or negedge rst_n) begin  if (~rst_n)                          led <4'b0000;                  //when the reset signal active           else if (timer == 32'd49_999_999)    //time counter count to 1st sec,LED1 Extinguish     led <= 4'b0001;                   else if (timer == 32'd99_999_999)  begin  //time counter count to 2nd sec,LED2 Extinguish     led <= 4'b0010;                    end  else if (timer == 32'd149_999_999)   //time counter count to 3nd sec,LED3 Extinguish     led <4'b0100;                                            else if (timer == 32'd199_999_999)   //time counter count to 4nd sec,LED4 Extinguish     led <= 4'b1000;                         end    endmodule 

    頂層模塊編寫幾個注意事項:

    • ①、在定義寄存器時,如果寄存器在 always 塊里使用必須定義為 reg 類型
    • ②、如果僅是用于連線或是直接賦值需定義為 wire 類型
    • ③、wire 類型只能在 assign 中連續(xù)賦值,即:assign 語句中的賦值目標變量(位于左側),必須是 wire 型的
    • ③、輸入信號的類型不能定義為 reg 型

    三、添加 UCE 約束

    ?

    PDS開發(fā)中的約束文件默認是.fdc格式

    ?

    User Constraint Editor(Timing and Logic)簡稱 UCE,主要是完成管腳的約束,時鐘的約束,以及組的約束。這里我們需要對 led_test.v 程序中的輸入輸出端口分配到 FPGA 的真實管腳上。

    STEP #1

    點擊菜單欄“Tools”下的"User Constraint Editor";

    在這里插入圖片描述

    STEP #2

    在彈出的界面中單擊 Device;

    在這里插入圖片描述

    STEP #3

    在 Device 中單擊 I/O,可看到工程中用到的 IO 端口;

    STEP #4

    按如下方式分配管腳,LOC 就是與硬件中 FPGA 相對應的管腳VCCIOFPGA 的 IO 的電壓標準,與硬件對應,其它在這里保持默認即可;

    在這里插入圖片描述

    STEP #5

    單擊保存后會彈對話框,在這里選擇默認;

    在這里插入圖片描述

    四、 生成位流文件

    雙擊 Generate Bitstream,然后軟件會按照 Synthesize-> Device Map-> Place & Route-> Generate Bitstream 來產(chǎn)生位流文件。

    在這里插入圖片描述

    如果工程在生成位流文件過程中沒有錯誤,則會出現(xiàn)下圖中每一步都正確的“”,否則就會在 Messages 欄中顯示 errors 的錯誤。

    在這里插入圖片描述

    位流文件生成完成后,我們可以在 Report Summary 頁面的到了 FPGA 資源的使用情況。

    在這里插入圖片描述

    此外還可以通過下圖操作查看 RTL 視圖;

    在這里插入圖片描述

    在這里插入圖片描述

    五、下載和調試

    ?

    直接下載到FPGA的程序文件格式為:.sbit,該種方式掉電會丟失! 間接下載到FLASH的程序文件格式為:.sfc,該種方式掉電不會丟失

    ?

    在上面生成了位流文件(.sbit)后,我們可以把 sbit 文件下載到 FPGA 芯片中,看一下 LED實際運行的效果。下載和調試之前先連接硬件,把 JTAG 下載器和開發(fā)板連接,然后開發(fā)板上電(下圖為開發(fā)板的硬件連接圖)。

    在這里插入圖片描述

    STEP #1

    單擊界面中的“Configuration”按鈕,作用一是下載程序到 FPGA 中運行;二是固化程序到 flash 中。

    在這里插入圖片描述

    STEP #2

    在彈出的界面中的單擊Boundary Scan”,然后在右側空白區(qū)單擊右鍵選擇Scan Device”;

    在這里插入圖片描述

    STEP #3

    在掃描到 JTAG 設備后會彈出如下對話框,并按如下加載.sbit 文件即可;

    STEP #4

    然后可以看到左側顯示了要加載的文件選中右側綠色的方塊右擊會彈出下拉菜單并選擇"Program...",下載完成后在板上可以在開發(fā)板上看到 LED 流水燈的效果。注意:這種方式程序是在 FPGA 運行,掉電后會消失

    在這里插入圖片描述

    六、FLASH 程序固化

    可能已經(jīng)有朋友發(fā)現(xiàn)下載.sbit 文件到 FPGA 后,開發(fā)板重新上電后配置程序已經(jīng)丟失,還需要 JTAG 下載。這豈不麻煩!好吧,這一節(jié)我們來介紹如何把配置程序固化到開發(fā)板上的 FLASH中,這樣不用擔心掉電后程序丟失了。

    在我們的開發(fā)板上有一個 8Pin128MbitFLASH, 用于存儲配置程序。我們不能直接把sbit 文件下載到這個 FLASH 中只能下載 sfc 文件到 flash 中。下面為大家介紹 FLASH 程序的固化的流程。

    STEP #1

    首先,需要 sbit 文件轉換成能下載的 flash 的 sfc 文件。在完成上節(jié)下載和調試后,選擇菜單"Operations"下"Convert File"進行文件轉換。

    在這里插入圖片描述

    然后彈出如下界面,這里要根據(jù)硬件的 flash 型號來選擇 flash 的廠家和設備型號,開發(fā)板用到的是 WINBONDW25Q128QFlash Read Mode 選擇 SPI X4 然后選擇要轉換的 sbit 文件,點擊 OK 即可轉換;

    在這里插入圖片描述

    轉換完成后顯示如下界面,單擊 OK;

    在這里插入圖片描述

    STEP #2

    選中右側綠色的方塊,右擊會彈出下拉菜單并選擇"Scan outer Flash"。

    選擇已生成的 sfc 文件,單擊 Open;

    在這里插入圖片描述

    可以看到界面中有了 flash 器件,選中“Outer Flash”綠色方塊并右擊選擇菜單中“Program...

    彈出正在編程的進度界面,flash 編程完成后進度界面自動消失。

    至此,SPI FLASH 燒寫完畢,led_test 程序已經(jīng)固化到 SPI FLASH 中了。我們來驗證一下,關電重新啟動開發(fā)板,等待一會兒你就可以看到開發(fā)板上的 LED 燈已經(jīng)在做跑馬運動了。

    七、仿真驗證

    接下來我們不妨小試牛刀,讓仿真工具 modelsim 來輸出波形驗證流水燈程序設計結果和我們的預想是否一致。具體步驟如下:

    STEP #1 添加激勵測試文件,點擊 Project 下的 Add Source;

    在這里插入圖片描述

    STEP #2

    點擊 Add or create simulation sources 并"Next";

    在這里插入圖片描述

    STEP #3

    在彈出的對話框中輸入激勵文件的名字,這里我們輸入名為 vtf_led_test,其它按下圖設置;

    STEP #4

    點擊 OK 按鈕返回。

    STEP #5

    這里我們先不添加 IO Ports,點擊 OK。

    在這里插入圖片描述

    STEP #6

    在 Simulation 目錄下多了一個剛才添加的 vtf_led_test 文件。雙擊打開這個文件,可以看到里面只有 module 名的定義,其它都沒有。

    在這里插入圖片描述

    STEP #7

    接下去我們需要編寫這個 vtf_led_test.v 文件的內容。首先定義輸入和輸出信號,然后需要實例化 led_test 模塊,讓 led_test 程序作為本測試程序的一部分。再添加復位和時鐘的激勵。完成后的 vtf_led_test.v 文件如下:

    `timescale 1ns / 1ns//////////////////////////////////////////////////////////////////////////////////// Module Name: vtf_led_test//////////////////////////////////////////////////////////////////////////////////module vtf_led_test;// Inputsreg sys_clk;reg  rst_n;// Outputswire [3:0] led;// Instantiate the Unit Under Test (UUT)led_test uut ( .sys_clk(sys_clk),    .rst_n(rst_n),  .led(led));initial begin // Initialize Inputs sys_clk = 0; rst_n = 0// Wait 100 ns for global reset to finish #1000;   rst_n = 1;         // Add stimulus here #20000;  //  $stop; endalways #10 sys_clk = ~ sys_clk;   //20ns   endmodule

    仿真模塊編寫流程:

    • ①、首先定義輸入和輸出信號;
    • ②、然后實例化模塊;
    • ③、最后添加復位和時鐘的激勵。

    仿真模塊編寫幾個注意事項:

    • ①、模塊中的input信號在仿真代碼中定義為reg類型;
    • ②、模塊中的output信號在仿真代碼中定義為wire類型!

    STEP #8

    編寫好后保存,vtf_led_test.v 自動成了這個仿真的頂層了,它下面是設計文件 led_test.v

    在這里插入圖片描述

    STEP #9

    接下來設置 PDS 的仿真配置,在軟件菜單 Project->Project Setting,然后在彈出的界面中進行如下設置,注意仿真庫的路徑在《00.Pango Design Suite 2020.3 安裝》教程中已介紹。設置好后單擊 OK。

    在這里插入圖片描述

    STEP #10

    右擊仿真文件并在下拉菜單中選擇 Run Behavioral Simulation。這里我們做一下行為級的仿真就可以了。

    如果沒有錯誤,PDS 會調用 Modelsim 仿真軟件開始工作了

    STEP #11

    在彈出仿真界面后如下圖,界面是仿真軟件自動運行到仿真設置的 50ms 的波形。

    由于 LED[3:0]在程序中設計的狀態(tài)變化時間長,而仿真又比較耗時,在這里觀測 timer[31:0]計數(shù)器變化。把它放到 Wave 中觀察(點擊界面中的 uut, 再右擊右側 timer, 在彈出的下拉菜單里選擇 Add Wave)。

    在這里插入圖片描述

    添加后 timer 顯示在 Wave 的波形界面上,如下圖所示。

    點擊 Restart 按鈕復位一下,再點擊 Run All 按鈕。(需要耐心!!!),可以看到仿真波形與設計相符。

    在這里插入圖片描述

    我們可以看到 led 的信號會逐一變 1,說明 LED1~LED4 燈逐個熄滅。

    ?

    補充:仿真自帶例程幾點注意:

    • ①、路徑名稱不能含有中文或空格
    • ②、需要重新編譯仿真庫,具體操作如下:
      • 打開 Tools -> Compile Simulation Libraries,分別:
        • 設置 Compiled Library Location 為:D:/modeltech64_10.1c/pango_sim_libraries
        • 設置 Simulator Executable Path 為:D:/modeltech64_10.1c/win64,然后點擊Compile(大概需要2min)
    ?

    這里為止,我們的第一個項目就圓滿完成了,相信您也掌握了 PDS 的 FPGA 開發(fā)的整個流程,再也不是那個 FPGA 的門外漢了吧!

    聲明:本內容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉載。授權事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
    覺得內容不錯的朋友,別忘了一鍵三連哦!
    贊 7
    收藏 7
    關注 431
    成為作者 賺取收益
    全部留言
    0/200
    成為第一個和作者交流的人吧
    主站蜘蛛池模板: 高清亚洲 | 一区二区三区精品视频免费看 | 99re8在线精品视频免费播放 | 高清性做爰大片免费视频 | aaa日本高清在线播放免费观看 | 91嫩草欧美久久久九九九 | www.免费黄色 | av一级黄色 | a级国产乱理伦片在线观看 www在线免费 | av在线免费观看中文字幕 | 国产一区二区视频播放 | 日韩免费成人 | 精国产品一区二区三区a片 无码专区AAAAAA免费视频 | 日韩精品一区二区三区蜜臀 | 日本精品久久久久中文字幕 | 一区二区三区日本 | 亚洲成a人片在线观看天堂 亚洲欧美日韩国产专区一区 | 国产在线精品无码不卡手机免费 | 夜色阁亚洲一区二区三区 | 美女胸18下看禁止免费视频51 | 亚洲天堂avtt | 国产激情无码一区二区三区 | 公玩弄年轻人妻HD | 欧美日韩精品一区二区三区四区 | 欧美一区二区三区在线看 | 欧洲熟妇乱xxxxx大屁股7 | 黄色网站免费观看视频 | 91无码视频在线观看 | 亚洲日韩国产AV无码无码精品 | 国产香蕉伊蕉伊中文在线视频 | 成人激情视频网站 | 爱av在线| 亚洲国产精品久久人人爱蜜臀 | Jαpαn丰满人妻HDXXXX | 午夜男女爽爽影院网站 | 国产稚嫩高中生呻吟激情在线视频 | 精品一区二区免费视频 | 在线免费观看一区二区 | 久久免费黄色网址 | 日日影视 | 青青青在线视频免费观看 |