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

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

?

導讀:本文旨在通過 LED 的 Demo,實現快速上手基于PGL22G的FPGA開發。

?

@


    一、創建工程

    STEP #1

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

    在這里插入圖片描述

    STEP #2

    在 PDS 開發環境里雙擊 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 器件,以及進行一些配置。開發板首先在 Family 欄里選擇 Logos,Device 中選擇 PGL22G,在 Package 欄選擇 BG324, Speed grade 欄選擇-6;綜合工具選擇 ADS;單擊 NEXT 進入下一界面:

    在這里插入圖片描述

    STEP #10

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

    在這里插入圖片描述

    STEP #11

    工程創建后如下圖所示:

    二、編寫流水燈的 verilog 代碼

    STEP #1

    雙擊 Sources 下的 Designs 圖標;

    STEP #2

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

    STEP #3

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

    在這里插入圖片描述

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

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

    STEP #4

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

    • 當計數到 49_999_999(1 秒)的時候,熄滅第一個 LED 燈;
    • 當計數到 99_999_999(2 秒)的時候,熄滅第二個 LED 燈;
    • 當計數到 149_999_999(3 秒)的時候,熄滅第三個 LED 燈;
    • 當計數到 199_999_999(4 秒)的時候,熄滅第四個 LED 燈,計數器再重新計數。
    `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 中連續賦值,即:assign 語句中的賦值目標變量(位于左側),必須是 wire 型的
    • ③、輸入信號的類型不能定義為 reg 型

    三、添加 UCE 約束

    ?

    PDS開發中的約束文件默認是.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 來產生位流文件。

    在這里插入圖片描述

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

    在這里插入圖片描述

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

    在這里插入圖片描述

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

    在這里插入圖片描述

    在這里插入圖片描述

    五、下載和調試

    ?

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

    ?

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

    在這里插入圖片描述

    STEP #1

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

    在這里插入圖片描述

    STEP #2

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

    在這里插入圖片描述

    STEP #3

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

    STEP #4

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

    在這里插入圖片描述

    六、FLASH 程序固化

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

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

    STEP #1

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

    在這里插入圖片描述

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

    在這里插入圖片描述

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

    在這里插入圖片描述

    STEP #2

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

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

    在這里插入圖片描述

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

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

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

    七、仿真驗證

    接下來我們不妨小試牛刀,讓仿真工具 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]在程序中設計的狀態變化時間長,而仿真又比較耗時,在這里觀測 timer[31:0]計數器變化。把它放到 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 開發的整個流程,再也不是那個 FPGA 的門外漢了吧!

    聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
    覺得內容不錯的朋友,別忘了一鍵三連哦!
    贊 7
    收藏 7
    關注 431
    成為作者 賺取收益
    全部留言
    0/200
    成為第一個和作者交流的人吧
    主站蜘蛛池模板: 午夜福利精品导航凹凸 | 亚洲夜幕久久日韩精品一区 | 伊人久久综合无码中文字幕 | 免费精品99久久国产综合精品 | julia中文字幕久久精品 | 大地资源网更新免费播放视频 | 国产拍精品一二三 | 无码人妻精品一区二区三 | 1024看片金沙日韩一区二区 | 国产精品全新69影院在线看 | 久久久精品国产 | 国模无码视频一区 | 国产成人精品日本亚洲一区 | 国产香蕉视频在线 | 国产视频123 | 性一交一乱一做一爰 | 激情另类小说区图片区视频区 | 懂色一区二区三区免费观看 | 亚洲人成色777777精品音频 | 欧美精品一二三四区 | 天堂久久一区二区三区 | 99视频在线精品 | 99久久ER热在这里只有精品99 | 天天色天天看 | 国产无人区码一码二码三MBA | 欧美在线视频免费 | 我老公的家庭教师 | 成人亚洲免费视频 | 麻豆传媒视频在线播放 | 欧美一区在线视频 | 国产成人精品一区一区一区 | a级大片免费观看 | 无码免费久久国产 | 欧美成人精品a片免费区网站 | 亚洲精品秘在线看 | 国产一区=区 | 91丨porny丨九色 | JIZZJIZZJIZZ少妇 | 日本亚洲国产黄www 香港三级日本三级韩国三级 | 高中男生自慰网站xnxx免费 | 中文无码精品视频在线看 |