chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA也能片上調(diào)試嗎?

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-06-15 09:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


0.FPGA也能片上調(diào)試嗎?

FPGA與STM32嵌入式開發(fā)最大的一個優(yōu)點就是,可以在時序仿真階段驗證超過90%的功能,發(fā)現(xiàn)90%的問題。當(dāng)所有的仿真沒問題了,才能進行最后一步:板級調(diào)試。如果仿真都不對,那就沒必要下載到芯片里了。

STM32等單片機,使用J-Link或ST-Link等調(diào)試器,可以進行在線調(diào)試,由于C代碼是順序執(zhí)行的,我們可以插入斷點,讓程序停在我們需要的位置,或者是實時查看一些變量的數(shù)值,大大提高了我們Debug的速度,提高產(chǎn)品的開發(fā)效率。

對于FPGA來說,仿真畢竟是仿真,可以理解為理想條件,而最終我們的代碼是需要運行在實際的FPGA芯片硬件上的。

所以也會遇到仿真正常,實際下載到板子里不正常的情況。這種現(xiàn)象有兩種原因:1.程序有BUG,2.硬件有問題。比如實際程序中復(fù)位信號是低電平復(fù)位,而實際電路中設(shè)計的復(fù)位按鍵按下才是高電平,這樣按鍵未按下就會導(dǎo)致程序一直處于復(fù)位狀態(tài)。

當(dāng)然,這只是一種最簡單的問題點,實際開發(fā)過程中,仿真與實際運行不匹配的情況還有很多。那么如何才能以最快的速度找到問題點呢?

早期的FPGA調(diào)試方法通常使用邏輯分析儀,連接到FPGA芯片的外部管腳上,如果想查看內(nèi)部信號,還需要把這些信號定義成Output引出到外部管腳進行了測量,如果是多位數(shù)據(jù),這樣就會占用大量的管腳,但是此類工具有個優(yōu)點就是支持多種協(xié)議解析,可以非常方便的查看協(xié)議的報文數(shù)據(jù)。

952a129a-ec45-11ec-ba43-dac502259ad0.jpg

DSLogic IIC解析

如果有一種工具能像單片機開發(fā)那樣,通過調(diào)試器JTAG接口實時獲取運行過程中寄存器的數(shù)值就好了。有需求就有市場,F(xiàn)PGA廠商也考慮到了開發(fā)者的這種需求,都在自家產(chǎn)品上加上了這個功能,那就是片上邏輯分析儀,就像在芯片內(nèi)裝了一個邏輯分析儀ELA(Embedded Logic Analyzer),可以實時監(jiān)測數(shù)據(jù)的變化,還可以設(shè)置觸發(fā)條件等!

FPGA領(lǐng)域幾大廠家提供嵌入式邏輯分析儀:

這些工具都是嵌入式邏輯分析儀,大大提高了Debug速度。這類工具的原理通常是以預(yù)先設(shè)定的時鐘速率實時采樣FPGA的內(nèi)部信號,并暫存于FPGA的內(nèi)部RAM中,當(dāng)滿足預(yù)設(shè)的觸發(fā)條件后,通過JTAG將存儲在片內(nèi)RAM中的數(shù)據(jù)傳輸至PC上,PC接收到數(shù)據(jù)后,通過上位機把數(shù)據(jù)展現(xiàn)出來。

以下是使用ChipScope工具抓取的鐵電存儲器FM25V05的SPI寫時序:

953993c8-ec45-11ec-ba43-dac502259ad0.jpg

FM25V05寫時序

從FPGA學(xué)習(xí)流程來看,當(dāng)了解了流水燈、按鍵、UART等基本例程后,再學(xué)習(xí)I2C,SPI之前,就需要掌握片上邏輯分析儀的使用,非常有利于代碼的調(diào)試。

我個人使用過Xilinx和Microsemi的工具,還是挺好用的。

Microsemi的identify使用方法可以到CSDN文章查看:

https://blog.csdn.net/whik1194/article/details/107074187

本文主要介紹Xilinx ISE開發(fā)環(huán)境下ChipScope工具的使用。

1.Xilinx ChipScope簡介

Xilinx的FPGA片內(nèi)邏輯分析儀被稱為ChipScope,通過插入IP核的方式實現(xiàn),主要包括3大IP核。

  • ICON

ICON(integrated controller),主要負(fù)責(zé)與JTAG口的通訊,最大支持連接15個Core,這里的Core可以是ILA或VIO。

  • ILA

ILA(integrated logic analyzer),嵌入式邏輯分析儀,可以抓取內(nèi)部的任何信號,通過設(shè)置觸發(fā)條件的方式,抓取一段時間的波形,時間長度取決于FPGA RAM資源大小。

  • VIO

VIO(virtual input/output),即輸入輸出,可以實時監(jiān)控FPGA內(nèi)部信號,并提供驅(qū)動信號給FPGA模塊,類似于單片機調(diào)試中的變量值查看。

  • ATC2

ATC2(Agilent trace core),是屬于特殊定制的調(diào)試IP核,需要配合新一代的Agilent邏輯分析儀一起使用,這個很少使用。

下面這張圖是來自Xilinx官方文檔:chipscope_pro_sw_cores_ug029.pdf的一張圖片,關(guān)于ChipScope官方的使用指南可以查看這篇文檔,介紹了ChipScope工具的整體框圖。

9554c97c-ec45-11ec-ba43-dac502259ad0.jpg

ChipScope系統(tǒng)框圖

既然是邏輯分析儀,就要涉及到邏輯分析儀最重要的兩個參數(shù):采樣頻率和采樣深度,ILA的采樣頻率取決于輸入時鐘信號的頻率,采樣深度取決于FPGA的RAM大小。

2.示例工程創(chuàng)建

下面以Xilinx Spartan-6 XC6SLX9為例,演示ChipScope的使用,ILA抓取cnt實時數(shù)據(jù)。VIO實現(xiàn)在上位機控制LED亮滅,或選擇閃爍頻率。led1通過VIO來選擇4檔閃爍頻率,led2通過VIO給的觸發(fā)信號上升沿進行翻轉(zhuǎn),led3與VIO輸出高低保持一致。

首先創(chuàng)建一個基于XC6SLX9的ISE基本工程,并新建源文件。

以下代碼還未添加ChipScope:


		

moduletop( //Inputs inputclk,//50MHz inputrst_n, //Outputs outputregled1,//通過VIO來選擇4種閃爍頻率 outputregled2,//通過VIO來控制 outputled3//通過VIO來控制 ); wire[1:0]level;//來自VIO wiretrig;//來自VIO,按鍵產(chǎn)生高脈沖信號 wiretrig_rise=(trig_reg==2'b01); reg[1:0]trig_reg; reg[26:0]cnt;//在ILA中查看數(shù)據(jù)變化 always@(posedgeclk)begin if(!rst_n) trig_reg<='h0; else trig_reg<=?{trig_reg[0],?trig}; end always?@?(posedge?clk)?begin ????if(!rst_n)? ????????cnt?<=?'d0; else cnt<=?cnt?+?1; end always@(posedgeclk)begin if(!rst_n) led1<='d0; elsebegin //level來自VIO case(level) 0:led1<=?cnt[26]; ????????????1:??led1?<=?cnt[25]; ????????????2:??led1?<=?cnt[24]; ????????????3:??led1?<=?cnt[23]; ????????endcase ????end end always?@?(posedge?clk)?begin ????if(!rst_n) ????????led2?<=?0; ????else?if(trig_rise)??????//trig上升沿翻轉(zhuǎn) ????????led2?<=?!led2; end endmodule

3.添加ChipScope ICON IP核

添加一個IP核源文件,保存在chipscope文件夾下。

95647e3a-ec45-11ec-ba43-dac502259ad0.jpg

添加ICON

選擇ICON IP核,以下添加VIO和ILA核是一樣的操作。

957721d4-ec45-11ec-ba43-dac502259ad0.jpg

選擇ICON

添加之后進入配置界面,因為我們連接了ILA和VIO兩個IP核,這里控制端口需要兩個:

9587b562-ec45-11ec-ba43-dac502259ad0.jpg

配置端口

查看例化模板:


		

iconYourInstanceName( .CONTROL0(CONTROL0),//INOUTBUS[35:0] .CONTROL1(CONTROL1)//INOUTBUS[35:0] );

4.添加ChipScope ILA IP核

9597973e-ec45-11ec-ba43-dac502259ad0.jpg

添加ILA

選擇采樣深度,數(shù)值越大,占用FPGA RAM資源越多,采樣時間越長。

95aa8e0c-ec45-11ec-ba43-dac502259ad0.jpg

設(shè)置采樣深度

選擇采集通道,這里選擇32個通道。

95bd8444-ec45-11ec-ba43-dac502259ad0.jpg

選擇觸發(fā)通道

等待生成完成,查看例化模板:


		

ilaYourInstanceName( .CONTROL(CONTROL),//INOUTBUS[35:0] .CLK(CLK),//IN .TRIG0(TRIG0)//INBUS[31:0] );

5.添加ChipScope VIO IP核

同樣的方式添加VIO核:

95cc3f16-ec45-11ec-ba43-dac502259ad0.jpg

添加VIO

選擇32路輸入,用于監(jiān)測cnt的值,4路輸出,用于控制LED。

95d98af4-ec45-11ec-ba43-dac502259ad0.jpg

配置輸入輸出通道

設(shè)置為異步輸入32位,輸出4位。

6.將ChipScope的3個IP核添加到頂層模塊


		

moduletop( //Inputs inputclk,//50MHz inputrst_n, //Outputs outputregled1,//通過VIO來選擇4種閃爍頻率 outputregled2,//通過VIO來控制 outputled3//通過VIO來控制 ); wire[1:0]level;//來自VIO wiretrig;//來自VIO,按鍵產(chǎn)生高脈沖信號 wiretrig_rise=(trig_reg==2'b01); reg[1:0]trig_reg; reg[26:0]cnt;//在ILA中查看數(shù)據(jù)變化 always@(posedgeclk)begin if(!rst_n) trig_reg<='h0; else trig_reg<=?{trig_reg[0],?trig}; end always?@?(posedge?clk)?begin ????if(!rst_n)? ????????cnt?<=?'d0; else cnt<=?cnt?+?1; end always@(posedgeclk)begin if(!rst_n) led1<='d0; elsebegin //level來自VIO case(level) 0:led1<=?cnt[26]; ????????????1:??led1?<=?cnt[25]; ????????????2:??led1?<=?cnt[24]; ????????????3:??led1?<=?cnt[23]; ????????endcase ????end end always?@?(posedge?clk)?begin ????if(!rst_n) ????????led2?<=?0; ????else?if(trig_rise)??????//trig上升沿翻轉(zhuǎn) ????????led2?<=?!led2; end /*?Xilinx?ChipScope?Config?*/ wire?[35:0]?CONTROL0; wire?[35:0]?CONTROL1; wire?[31:0]?TRIG0; wire?[31:0]?ASYNC_IN; wire?[3:0]?ASYNC_OUT; assign?ASYNC_IN[26:0]?=?cnt[26:0]; assign?level?=?ASYNC_OUT[1:0]; assign?trig??=?ASYNC_OUT[2]; assign?led3??=?ASYNC_OUT[3]; assign?TRIG0[26:0]?=?cnt[26:0]; assign?TRIG0[28:27]?=?level[1:0]; assign?TRIG0[29]?=?led1; assign?TRIG0[30]?=?led2; assign?TRIG0[31]?=?led3; icon?icon_ut0( ????.CONTROL0(CONTROL0[35:0]), ????.CONTROL1(CONTROL1[35:0]) ); ila?ila_ut0( ????.CONTROL(CONTROL0[35:0]),? ????.CLK(clk),? ????.TRIG0(TRIG0[31:0]) ); vio?vio_ut0( ????.CONTROL(CONTROL1[35:0]), ????.ASYNC_IN(ASYNC_IN[31:0]), ????.ASYNC_OUT(ASYNC_OUT[3:0]) ); endmodule

7.編譯下載

管腳分配,編譯通過,生成bit文件,打開ChipScope,下載bit文件。

95e70b0c-ec45-11ec-ba43-dac502259ad0.jpg

ChipScope

下載Bit文件

95f8750e-ec45-11ec-ba43-dac502259ad0.jpg

選擇bit文件

對信號進行重新命名,設(shè)置觸發(fā)信號,或者控制VIO輸出狀態(tài)。

9606908a-ec45-11ec-ba43-dac502259ad0.jpg

設(shè)置觸發(fā)方式

trig設(shè)置成PushButton類型,并設(shè)置為高脈沖。

led3設(shè)置成ToggleButton類型,即按一下狀態(tài)翻轉(zhuǎn)一次。

96164f98-ec45-11ec-ba43-dac502259ad0.jpg

VIO配置

8.總結(jié)

單片機在線調(diào)試可以設(shè)置斷點,讓程序停下,F(xiàn)PGA只要時鐘信號存在,就會一直運行下去,所以無法人為的設(shè)置斷點,中止代碼的運行。

任何事物都不可能達(dá)到十全十美,使用管腳外接的邏輯分析儀不會占用任何的邏輯資源,可以通過邏輯分析儀解析協(xié)議的報文,缺點是不能查看內(nèi)部信號;使用片內(nèi)邏輯分析儀的優(yōu)點是可以實時查看內(nèi)部信號,設(shè)置觸發(fā)條件,缺點是會占用FPGA的邏輯資源,比如RAM等。

Xilinx新一代的集成開發(fā)工具Vivado最低支持Spartan-7系列的FPGA芯片,由于手頭只有Spartan-6系列的開發(fā)板,所以無法演示在Vivado環(huán)境下的ChipScope使用,基本上都大同小異,使用方法類似,畢竟是同一家的調(diào)試工具。

9.參考資料

Xilinx官方文檔:chipscope_pro_sw_cores_ug029.pdf

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22050

    瀏覽量

    618574
  • 芯片
    +關(guān)注

    關(guān)注

    460

    文章

    52520

    瀏覽量

    441034
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365030

原文標(biāo)題:FPGA如何進行片上調(diào)試?

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    fpga焊在接口轉(zhuǎn)換板上調(diào)試嗎?

    fpga焊在接口轉(zhuǎn)換板上調(diào)試嗎?對pcb走線要求高嗎? 不高的話,直接焊接在轉(zhuǎn)接板上,引出的線接面包板上的元器件做實驗了。
    發(fā)表于 02-06 22:59

    如何在服務(wù)器上調(diào)試本地FPGA板卡

    聯(lián)合開發(fā)或者跑多策略工程的時候,一般都使用多核的服務(wù)器進行FPGA設(shè)計。這個時候如果板卡在本地電腦上應(yīng)該怎么進行調(diào)試呢? 今天就簡單講講《如何在服務(wù)器上調(diào)試本地FPGA板卡
    發(fā)表于 07-31 17:36

    ATtiny13上調(diào)試系統(tǒng)詳解

    ATtiny13上調(diào)試系統(tǒng)的特性什么是ATtiny13上調(diào)試系統(tǒng)
    發(fā)表于 11-05 08:00

    請問debugWIRE上調(diào)試系統(tǒng)如何控制程序流程?

    debugWIRE上調(diào)試系統(tǒng)如何控制程序流程
    發(fā)表于 11-16 06:57

    N76E885上調(diào)度OCD功能,用什么調(diào)試器?

    如題,N76E885上調(diào)度OCD功能,用什么調(diào)試器? Nu-Link-Me可以嗎? 就像 N79E815J 一樣仿真嗎? 有沒有接仿真器的相關(guān)推薦電路?
    發(fā)表于 09-01 08:32

    Renesas推出E8上調(diào)試仿真器

     瑞薩科技公司(Renesas)宣布,開發(fā)出稱作“E8仿真器”的低價格、上調(diào)試仿真器*1,作為R8C/微型系列低管腳數(shù)、16位微型計算機中R8C/14、R8C/15、R8C/16和R8C/17  20管腳產(chǎn)品組的
    發(fā)表于 03-11 11:43 ?1734次閱讀

    如何使用X-DSP可測性設(shè)計與上調(diào)試技術(shù)的研究與實現(xiàn)

    隨著芯片規(guī)模的增大和復(fù)雜度的上升,內(nèi)信號的觀測和控制更加困難,對芯片的測試及調(diào)試的難度在不斷上升,芯片的測試和調(diào)試問題成為制約整個行業(yè)發(fā)展的重要因素。如何合理地對數(shù)字信號處理器進行
    發(fā)表于 03-22 17:04 ?2次下載
    如何使用X-DSP可測性設(shè)計與<b class='flag-5'>片</b><b class='flag-5'>上調(diào)試</b>技術(shù)的研究與實現(xiàn)

    支持上測試和調(diào)試功能的在線調(diào)試模塊的應(yīng)用設(shè)計

    為了能讓嵌入式微處理器的上調(diào)試功能能夠像高級語言編程工具那樣支持?jǐn)帱c設(shè)置、單步執(zhí)行、寄存器內(nèi)容的查看和內(nèi)存內(nèi)容查看等功能,文章提出了一種在線調(diào)試模塊設(shè)計,此設(shè)計為嵌入式微處理器增加
    的頭像 發(fā)表于 03-23 14:55 ?2908次閱讀
    支持<b class='flag-5'>片</b>上測試和<b class='flag-5'>調(diào)試</b>功能的在線<b class='flag-5'>調(diào)試</b>模塊的應(yīng)用設(shè)計

    FPGA如何進行上調(diào)試?

    FPGA與STM32等嵌入式開發(fā)最大的一個優(yōu)點就是,可以在時序仿真階段驗證超過90%的功能,發(fā)現(xiàn)90%的問題。當(dāng)所有的仿真沒問題了,才能進行最...
    發(fā)表于 01-25 17:28 ?1次下載
    <b class='flag-5'>FPGA</b>如何進行<b class='flag-5'>片</b><b class='flag-5'>上調(diào)試</b>?

    EB-USB-DA 調(diào)試適配器帶編程功能的上調(diào)試仿真器用戶手冊

    EB-USB-DA 調(diào)試適配器帶編程功能的上調(diào)試仿真器用戶手冊
    發(fā)表于 04-21 19:18 ?0次下載
    EB-USB-DA <b class='flag-5'>調(diào)試</b>適配器帶編程功能的<b class='flag-5'>片</b><b class='flag-5'>上調(diào)試</b>仿真器用戶手冊

    MINICUBE2設(shè)置手冊 帶編程功能的上調(diào)試仿真器

    MINICUBE2 設(shè)置手冊 帶編程功能的上調(diào)試仿真器
    發(fā)表于 05-05 19:26 ?0次下載
    MINICUBE2設(shè)置手冊 帶編程功能的<b class='flag-5'>片</b><b class='flag-5'>上調(diào)試</b>仿真器

    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI 上調(diào)試仿真器的演示板

    78K0/KF2 Demo Board Campaign Board 用于 NEC QB-78K0MINI 上調(diào)試仿真器的演示板
    發(fā)表于 05-11 20:18 ?0次下載
    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI <b class='flag-5'>片</b><b class='flag-5'>上調(diào)試</b>仿真器的演示板

    MINICUBE2設(shè)置手冊 帶編程功能的上調(diào)試仿真器

    MINICUBE2 設(shè)置手冊 帶編程功能的上調(diào)試仿真器
    發(fā)表于 06-26 19:17 ?0次下載
    MINICUBE2設(shè)置手冊 帶編程功能的<b class='flag-5'>片</b><b class='flag-5'>上調(diào)試</b>仿真器

    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI 上調(diào)試仿真器的演示板

    78K0/KF2 Demo Board Campaign Board 用于 NEC QB-78K0MINI 上調(diào)試仿真器的演示板
    發(fā)表于 06-28 20:42 ?0次下載
    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI <b class='flag-5'>片</b><b class='flag-5'>上調(diào)試</b>仿真器的演示板

    如何在服務(wù)器上調(diào)試本地FPGA板卡

    聯(lián)合開發(fā)或者跑多策略工程的時候,一般都使用多核的服務(wù)器進行FPGA設(shè)計。這個時候如果板卡在本地電腦上應(yīng)該怎么進行調(diào)試呢?
    的頭像 發(fā)表于 10-24 18:05 ?738次閱讀
    如何在服務(wù)器<b class='flag-5'>上調(diào)試</b>本地<b class='flag-5'>FPGA</b>板卡