女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA設計調試流程

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2025-03-04 11:02 ? 次閱讀

FPGA設計調試流程

FPGA開發是一個不斷迭代的過程,一般的FPGA設計流程一般包含下面幾個步驟:

硬件架構和算法驗證:實現需要的功能需要哪幾個模塊,模塊和模塊之間如何進行通信和連接;硬件算法是否可行和穩定(以圖像處理算法為例,一般可以采用MATLAB進行算法驗證);

RTL代碼編寫;

硬件調試與驗證:一般這個過程會耗費大量的時間,如果沒有一定的經驗以及技巧,有可能會使得開發時間延長幾倍,甚至開發失敗;

調試,即Debug,有一定開發經驗的人一定會明確這是設計中最復雜最磨人的部分。對于一個龐大復雜的FPGA工程而言,出現問題的概率極大,這時如果沒有一個清晰的Debug思路,調試過程只能是像無頭蒼蠅一樣四處亂撞。在FPGA設計中一般的調試思路如下所示:
?
首先排查硬件問題:在出現問題時,首先懷疑并排除硬件問題。首先檢查開發板的供電和連接是否正常,是否有電子元件被燒毀,是否出現元件虛焊等問題。確認開發板以及供電沒有問題后,使用例程或者已有的程序或者工程對出現問題的核心部件進行測試。例如,在讀寫DDR時,如果DDR沒有反應,可以通過網絡查找例程,或者使用開發板官方提供的例程對DDR讀寫進行測試,確認DDR可以正常工作;在讀寫SD卡時,可以嘗試換一張SD卡操作,或者通過將SD卡切換到其他設備上,確保SD卡沒有損壞等。實際工程應用中,需要靈活選擇測試和排查方案,但是目的基本都是相同的。
?
其次排查全局信號:確認硬件連接沒有問題后,排查全局信號可能出現的問題。全局信號一般指接在內部所有模塊的信號,例如i_sys_clk和i_sys_rst_n等。需要確保這些信號正常工作,之后的RTL排查才有意義。
?
最后排查RTL代碼:在確保硬件和全局信號沒有問題后,再開始排查RTL代碼。在RTL代碼排查中也有一定的順序可以參考,一般可以參考下面的順序:

檢查主從設備(模塊)之間的握手機制,或者說檢查主從設備之間是否正常連接。很多時候可以參考設備的官方Datasheet檢查主從模塊之間的初始化指令是否書寫正確。

檢查狀態跳轉是否正常:在初始化過程中,經常使用狀態機進行RTL編程

檢查讀寫數據是否正常:可以設計一些“假數據”,例如人為規定的一些有規律的數據,檢查這些數據在從設備中的地址是否正常,數據是否正確。

檢查執行操作的觸發信號:檢查信號的Trigger是否正常工作。

總之,RTL調試是最枯燥的部分,很多時候需要“抽絲剝繭”、“追本溯源”才能找到問題所在。但是筆者認為這恰恰是體現一個FPGA工程師硬實力的必要技能和心境。

Vivado ILA IP 的使用

ILA,全稱Integrated Logic Analyzer,是Xilinx FPGA芯片中設計的芯片內部集成邏輯分析儀。它可以在一定程度上替代外部的傳統邏輯分析儀的作用。ILA通常和VIO(Vritual Input/Output)結合使用,VIO不僅可以實時監控內部的邏輯信號和端口信號,還可以充當模擬輸入驅動內部端口。ILA監控內部信號輸出給PC端,而VIO接收PC端的實時指令從而給內部端口提供輸入信號。
?
ILA調試有多種方法,可以直接在代碼中通過原語添加,也可以在原理圖中通過Debug添加,也可以在網絡列表Netlist中添加。

?

在這里先創建一個示例工程,使用一個呼吸燈模塊作為頂層代碼:

module Breath_LED (
    input sys_clk,
    input sys_rst_n,
    output reg led
);  
    parameter CNT_2US_MAX = 7'd100;
    parameter CNT_2MS_MAX = 10'd1000;
    parameter CNT_2S_MAX = 10'd1000;

    reg [6:0] cnt_2us;  // sys_clk = 50MHz, T = 20ns, cnt_2us: 0 ~ 99
    reg [9:0] cnt_2ms;
    reg [9:0] cnt_2s;  // cnt_2ms, cnt_2s: 0 ~ 999
    reg inc_dec_flag;   // 0: increase, 1: decrease

    // count to 2us
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if (!sys_rst_n)
            cnt_2us <= 7'd0;
        else if (cnt_2us == (CNT_2US_MAX - 7'd1))
            cnt_2us <= 7'd0;
        else 
            cnt_2us <= cnt_2us + 7'd1;
    end

    // count to 2ms by cnt_2us
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if (!sys_rst_n)
            cnt_2ms <= 10'd0;
        else if ((cnt_2us == (CNT_2US_MAX - 7'd1)) && 
            (cnt_2ms == (CNT_2MS_MAX - 10'd1)))
            cnt_2ms <= 10'd0;
        else if (cnt_2us == (CNT_2US_MAX - 7'd1))
            cnt_2ms <= cnt_2ms + 10'd1;
    end

    // count to 2s by cnt_2ms
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if (!sys_rst_n)
            cnt_2s <= 10'd0;
        else if ((cnt_2us == (CNT_2US_MAX - 7'd1)) && 
            (cnt_2ms == (CNT_2MS_MAX - 10'd1)) && 
            (cnt_2s == (CNT_2S_MAX - 10'd1)))
            cnt_2s <= 10'd0;
        else if ((cnt_2us == (CNT_2US_MAX - 7'd1)) && 
            (cnt_2ms == (CNT_2MS_MAX - 10'd1)))
            cnt_2s <= cnt_2s + 10'd1;
    end

    // inc_dec_flag
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if (!sys_rst_n)
            inc_dec_flag <= 1'b0;
        else if ((cnt_2us == (CNT_2US_MAX - 7'd1)) && 
            (cnt_2ms == (CNT_2MS_MAX - 10'd1)) && 
            (cnt_2s == (CNT_2S_MAX - 10'd1)))
            inc_dec_flag <= ~inc_dec_flag;
        else 
            inc_dec_flag <= inc_dec_flag;
    end

    // led PWM configuration
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if (!sys_rst_n)
            led <= 1'b0;
        else if ((inc_dec_flag == 1'b0) && (cnt_2ms <= cnt_2s)) // increase
            led <= 1'b1;
        else if ((inc_dec_flag == 1'b1) && (cnt_2ms >= cnt_2s)) // decrease
            led <= 1'b1;
        else 
            led <= 1'b0;
    end

endmodule

IP核配置

在IP Catalog中搜索ILA即可找到ILA IP核,雙擊之后就會跳出配置界面。

f4fa2ee2-f720-11ef-9310-92fbcf53809c.png

設置部件名稱、探針數量(需要測量信號的數量)和采樣深度。clk信號一般是系統的時鐘信號,ILA IP會在每個clk上升沿(或下降沿、具體有待考量)采一次對應信號的數據,直到采信號的次數達到采樣深度為止。

f50a1ffa-f720-11ef-9310-92fbcf53809c.png

在這里,假設代碼出現了問題,我們需要檢測sys_clk、led、sys_rst_n、cnt_2us、cnt_2ms四個信號。四個信號的寬度分別為1,1,7,10。

f5273158-f720-11ef-9310-92fbcf53809c.png

完成設置后,點擊OK,出現下面界面。如果綜合選項選擇Global,代碼會在每次綜合時都對ILA進行綜合;如果選擇OutofconextperIP(OOC模式),代碼只會在ILA設置發生改變時對ILA進行綜合。一般選擇后者即可,可以加快綜合速度。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1643

    文章

    21954

    瀏覽量

    613945
  • Vivado
    +關注

    關注

    19

    文章

    828

    瀏覽量

    68203
  • 硬件調試
    +關注

    關注

    1

    文章

    10

    瀏覽量

    10816
  • ILA
    ILA
    +關注

    關注

    0

    文章

    6

    瀏覽量

    3708

原文標題:使用ILA進行FPGA硬件調試

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    FPGA基本開發流程概述

    驗證無誤,則可以生產下載配置文件燒錄的實際器件中進行板級的調試工作。圖5.15 FPGA/CPLD開發流程當然了,對于沒有實際工程經驗的初學者而言,這個流程圖可能不是那么容易理解。不過
    發表于 01-28 02:29

    FPGA基本開發設計流程

    、板級仿真以及芯片編程與調試等主要步驟。圖1-10 FPGA開發的一般流程1.電路功能設計在系統設計之前,首先要進行的是方案論證、系統設計和FPGA芯片選擇等準備工作。系統工程師根據任
    發表于 07-23 09:12

    FPGA的設計流程是怎樣的

    第二章 FPGA 開發流程FPGA 的設計流程就是利用 EDA 開發軟件和編程工具對 FPGA 芯片進行開發的過程。原理圖和HDL(Hard
    發表于 02-23 06:23

    FPGA調試工具-chipscope

    FPGA調試工具chipscope,學習與使用FPGA必用的工具。。
    發表于 03-23 09:45 ?86次下載

    FPGA硬件系統的調試方法

    FPGA硬件系統的調試方法 在調試FPGA電路時要遵循一定的原則和技巧,才能減少調試時間,避免誤操作損壞電路。一般情況下,可以參考以下步驟
    發表于 02-08 14:44 ?2909次閱讀

    加速FPGA系統實時調試技術

    隨著 FPGA 的設計速度、尺寸和復雜度明顯增長,使得整個設計流程中的實時驗證和調試成為當前FPGA 系統的關鍵部分。獲得FPGA 內部信號
    發表于 06-10 15:42 ?28次下載
    加速<b class='flag-5'>FPGA</b>系統實時<b class='flag-5'>調試</b>技術

    FPGA設計流程指南

    FPGA設計的流程,步驟,選型,仿真,軟硬件設計,調試流程
    發表于 05-11 14:33 ?29次下載

    FPGA進行測試和調試有哪些辦法?

    FPGA的設計速度、尺寸和復雜度明顯增加,使得整個設計流程中的驗證和調試成為當前FPGA系統的關鍵部分。獲得FPGA內部信號有限、
    發表于 07-19 14:19 ?1.4w次閱讀
    對<b class='flag-5'>FPGA</b>進行測試和<b class='flag-5'>調試</b>有哪些辦法?

    關于FPGA它的開發流程是怎樣的

    FPGA的設計流程就是利用EDA開發軟件和編程工具對FPGA芯片進行開發的過程。FPGA的開發流程一般包括功能定義/器件選型、設計輸入、功能
    發表于 11-06 15:17 ?2627次閱讀

    FPGA的開發流程以及它的適用場景

    FPGA的設計流程就是利用EDA開發軟件和編程工具對FPGA芯片進行開發的過程。FPGA的開發流程包括功能定義/器件選型、設計輸入、功能仿真
    發表于 11-20 15:06 ?1972次閱讀

    FPGA設計與調試教程說明

    FPGA概述FPGA調試介紹調試挑戰設計流程概述■FPGA調
    發表于 09-22 17:43 ?11次下載
    <b class='flag-5'>FPGA</b>設計與<b class='flag-5'>調試</b>教程說明

    FPGA設計流程指南

    FPGA設計流程指南
    發表于 11-02 16:29 ?12次下載

    FPGA基礎知識----第二章 FPGA 開發流程

    第二章 FPGA 開發流程FPGA 的設計流程就是利用 EDA 開發軟件和編程工具對 FPGA 芯片進行開發的過程。原理圖和HDL(Hard
    發表于 12-29 19:40 ?9次下載
    <b class='flag-5'>FPGA</b>基礎知識----第二章 <b class='flag-5'>FPGA</b> 開發<b class='flag-5'>流程</b>

    FPGA入門之FPGA 開發流程

    硬件電路描述方法。其中,運用 HDL 設計方法具有更好的移植性、通用性以及利于模塊劃分的特點,在工作學習中被廣泛使用。典型 FPGA 的開發流程一般如下圖所示, 其包括功能定義/器件選型、設計輸入、功能仿真、綜合優化、綜合后仿真、實現、布線后仿真、板級仿真以及芯片編程與
    的頭像 發表于 03-21 10:26 ?3645次閱讀

    FPGA設計流程

    FPGA的設計流程主要包括HDL代碼編寫、RTL綜合、布局布線、靜態時序分析、生成下載文件。下面將逐一介紹各部分。下面是FPGA設計的流程圖。
    的頭像 發表于 07-04 12:06 ?1699次閱讀
    <b class='flag-5'>FPGA</b>設計<b class='flag-5'>流程</b>