日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

精通Signaltap

發(fā)布時間:2024/3/24 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精通Signaltap 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言。

Signaltap是嵌入式邏輯分析儀,說到嵌入式,很容易讓人想起ARM,其實Signaltap跟ARM沒有半毛錢關(guān)系。這里的嵌入是嵌到FPGA的內(nèi)部。

如果你用過Signaltap,就會發(fā)現(xiàn),每次都要綜合整個工程,再下載代碼,然后才可以使用Signaltap,這說明了Signaltap是由一些邏輯電路組成,而不是仿真。

請不要把Signaltap和Modelsim混為一談(如果是一樣的話,就不用起兩個名字了),就算兩個軟件的界面上的波形很像。

以下是Signaltap界面上的波形(代表實際的波形)。


以下是Modelsim界面上的波形(代表仿真的波形)。

二、基本操作。

首先,要確保你的工程能成功綜合,并且所消耗的資源不能為0。


然后在Quartus界面下,點開Tools菜單,打開SIgnaltap。


在SIgnaltap界面下,確保Jtag和FPGA開發(fā)板能用。


設(shè)置主時鐘,點擊紅色箭頭所指的地方。


在Filter下,一般是選擇Post-Compliation(綜合后)。


點擊List,可以看到節(jié)點名。


可以看到由原理圖或者HDL文件的節(jié)點名了,這里選擇clk50M。


這個clk50M不是隨便選的,是原理圖上的全局時鐘,這里用晶振的時鐘做為Signaltap的采樣時鐘,你也可以選PLL倍頻后的時鐘,這都是看具體情況而定。


選擇采樣深度,也就是采多少個點,這也是看具體情況而定,深度越大,需要的資源越多,這里選擇128。


確保已選中Setup標簽(紅色箭頭所指,選中為白色,未選中為灰色),然后雙擊紅圈所示區(qū)域。


Filter同樣選擇綜合后,同樣點List列出所有節(jié)點。


選擇你想要觀察的節(jié)點,這里選的是dig和segment。


dig和segment,同樣在原理圖(或者HDL文件)中有出現(xiàn)過的,是有效的節(jié)點名。


成功添加節(jié)點的話,會在Setup和Data標簽下,出現(xiàn)下圖所示。


好了,現(xiàn)在你可以在Quartus界面下,點Save all以保存所有文件,然后綜合,再到Signaltap界面下,選擇sof文件,下載(紅色箭頭所示的圖標)。


成功下載sof的話,可以看到Ready to acquire。而Instance Manager右邊有四個圖標,分別代表單次運行,連續(xù)運行,停止和讀數(shù)據(jù)。


點連續(xù)運行,就能看到Signaltap在采集數(shù)據(jù)了(數(shù)據(jù)在不斷地跳,難以觀察)。


如果你不停止掉Signaltap,是不能綜合代碼的。

因為使用Signaltap,所以會額外消耗更多的資源,如果不想使用Signaltap的話,可以在Assignments->Settings設(shè)置一下,如下圖所示。


只要去掉Enable SignalTap II Logic Analyzer前面的勾就可以了,這樣,綜合出來的電路就不帶Signaltap了(資源會減少)。


三、高級操作。

1、條件觸發(fā)。

先停止Signaltap,然后在Setup標簽下,勾選條件觸發(fā)下面的Basic AND,然后在下面輸入想要的觸發(fā)條件,這里填的是EF,意思是當dig(8bit)為十六進制的EF時,就會觸發(fā)Signaltap采樣,而其它情況不觸發(fā)。其中Basic AND是所有觸發(fā)條件相與之后為真,就觸發(fā)采樣,當然也可以選擇Basic OR(相或為真就觸發(fā)采樣)和Advanced。


如果不滿足觸發(fā)條件,Signaltap就一直顯示W(wǎng)aiting for trigger。


一般用上面的方法設(shè)置條件觸發(fā)就夠用了,如果有特殊要求,就用Signal Configuration下的條件觸發(fā),會有更強大的功能。


2、文件輸出。

在File->Export,可以把Signaltap采樣到的數(shù)據(jù),保存為其它格式的文件,其中有csv,tbl,bmp,jpg,vcd,這五種格式可選。其中csv格式適合配合MATLAB使用。


3、數(shù)據(jù)格式。

在需要觀察的節(jié)點上,右擊。


然后在Bus Display Format下,可以選擇不同的數(shù)據(jù)格式,以方便觀察。其中unsigned/signed line chart是用來觀察連續(xù)信號的波形,如DDS下的sin/cos,或者是FSK,QAM等。


4、設(shè)置時間單位。

在紅色箭頭所指的地方,右擊一下,選擇Time Units,可以設(shè)置時間單位。


我這里的采樣時鐘是50M,所以,周期是20ns。


這樣,Signaltap每采一個數(shù)據(jù),所需要的周期就是20ns。為什么這個時間單位需要人手設(shè)定?就是因為Signaltap不帶頻率計的功能(下面在Signaltap內(nèi)部原理有講述)。


5、MATLAB與Signaltap聯(lián)合使用。

首先,要把signaltap運行起來,采集到數(shù)據(jù)。

然后,在MATLAB下,添加quartus的bin文件的路徑(32位的添加bin,64位的添加bin64),然后調(diào)用alt_signaltap_run函數(shù)就可以了,但是我這里卻找不到該函數(shù),實際是有這個dll的,路徑也添加正確,該方法未果。


四、Signaltap內(nèi)部原理。


上圖是signaltap的內(nèi)部結(jié)構(gòu)圖,它是利用JTAG邊界掃描的原理來讀取FPGA內(nèi)部節(jié)點的值,然后送到buffer(緩沖器),再由JTAG把數(shù)據(jù)送到quartus下的signaltap軟件。

整個過程,都只有讀取數(shù)據(jù)的作用,至于數(shù)據(jù)的頻率(如DDS下的sin信號的頻率)是無法直接知道的,只能讓設(shè)計者自己計算得出。

五、其它問題。

1、為什么在clk50M下面,會產(chǎn)生clk50M~clkctrl這個信號?


在工藝映射表(適配后),可以查看到這個信號。


其實clk50M~clkctrl就是clk50M的buffer而已,用于提高扇出系數(shù),這里fan-out=274。

2、為什么加了Signaltap之后,原來能用的代碼,變得不能用?

因為Signaltap本身需要占用一些邏輯資源,而這些邏輯資源影響了綜合器的布局布線,所以有些時候加了Signaltap,時序反而亂了。不過,也有加了Signaltap時序變好的情況。

3、既然Signaltap采出來的信號是實際的波形,但是某些時候卻跟實際的不相符?

就算是用Signaltap采出來的波形,也是需要遵循采樣定理的,如果不滿足采樣定理,那么采出來的波形不能代表實際的波形。

而且Signaltap里面的觸發(fā)器本身有濾波的作用,所以有些很小的毛刺,采不到,但是用示波器可以看出來。

https://blog.csdn.net/k331922164/article/details/47623501

總結(jié)

以上是生活随笔為你收集整理的精通Signaltap的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。