?
6.8??典型實(shí)例11:ChipScope功能演示
6.8.1??實(shí)例的內(nèi)容及目標(biāo)
1.實(shí)例的主要內(nèi)容
本節(jié)通過(guò)一個(gè)簡(jiǎn)單的計(jì)數(shù)器,使用ChipScope的兩種實(shí)現(xiàn)流程,基于Xilinx開(kāi)發(fā)板完成設(shè)計(jì)至驗(yàn)證的完整過(guò)程。本實(shí)例的工作環(huán)境如下。
·??設(shè)計(jì)軟件:ISE?7.1i。
·??綜合工具:ISE自帶的XST。
·??仿真軟件:ModelSim?SE?5.8C。
·??在線(xiàn)調(diào)試:ChipScope?Pro?8.2i。
·??硬件平臺(tái):紅色颶風(fēng)II代Xilinx開(kāi)發(fā)板。
·??實(shí)例內(nèi)容:計(jì)數(shù)器。通過(guò)ChipScope?Pro觀(guān)測(cè)計(jì)數(shù)器的計(jì)數(shù)值,代碼參見(jiàn)本書(shū)實(shí)例代碼的“典型實(shí)例11”文件夾。其中count_new文件夾對(duì)應(yīng)采用流程1實(shí)現(xiàn)的工程,count文件夾對(duì)應(yīng)用流程2實(shí)現(xiàn)的工程。
使用ChipScope?Pro進(jìn)行在線(xiàn)調(diào)試主要有兩種實(shí)現(xiàn)流程。
(1)基于ChipScope?Pro?Core?Generator的實(shí)現(xiàn)流程。
·??調(diào)用ChipScope?Pro?Core?Generator生成邏輯分析儀的網(wǎng)表文件。
·??修改用戶(hù)RTL,插入邏輯分析儀代碼。
·??綜合,實(shí)現(xiàn),下載bit配置文件。
·??調(diào)用ChipScope?Pro?Analyzer觀(guān)察波形。
(2)基于ChipScope?Pro?Core?Inserter,通過(guò)新建資源的實(shí)現(xiàn)流程。
·??對(duì)工程文件進(jìn)行綜合,生成網(wǎng)表文件。
·??調(diào)用ChipScope?Pro?Core?Inserter,插入邏輯分析核。
·??布局、布線(xiàn),生成bit配置文件并下載。
·??調(diào)用ChipScope?Pro?Analyzer觀(guān)察波形。
由上面可以看出,兩種實(shí)現(xiàn)方式的主要區(qū)別在于生成邏輯分析核的方式不同。本實(shí)例將分別采用這兩種方式應(yīng)用ChipScope?Pro觀(guān)測(cè)FPGA內(nèi)部信號(hào)。
為了便于讀者的理解,本實(shí)例將編寫(xiě)一個(gè)簡(jiǎn)單的計(jì)數(shù)器,通過(guò)ChipScope?Pro觀(guān)測(cè)計(jì)數(shù)的數(shù)值。代碼的功能仿真結(jié)果如圖6.59所示。
圖6.59??計(jì)數(shù)器功能仿真結(jié)果
其中,count為8位計(jì)數(shù)值,采用循環(huán)計(jì)數(shù)方式。
2.實(shí)例目標(biāo)
通過(guò)本實(shí)例,讀者應(yīng)達(dá)到下面的目標(biāo)。
·??熟悉ChipScope工具的使用方法。
·??熟悉基于ChipScope?Pro?Core?Generator的實(shí)現(xiàn)流程。
·??熟悉基于ChipScope?Pro?Core?Inserter的實(shí)現(xiàn)流程。
6.8.2??基于ChipScope?Pro?Core?Generator的實(shí)現(xiàn)流程
基于ChipScope?Pro?Core?Generator實(shí)現(xiàn)流程的具體步驟如下。
(1)新建工程,添加源代碼。
新建ISE工程后,將源代碼文件counter_new.v及約束文件counter.ucf添加至工程中,如圖6.60所示。
(2)啟動(dòng)ChipScope?Pro?Core?Generator。
運(yùn)行“開(kāi)始”/“程序”/“ChipScope?Pro?8.2i”/“ChipScope?Pro?Core?Generator”命令,啟動(dòng)ChipScope?Pro?Core?Generator,出現(xiàn)如圖6.61所示界面。
???????????圖6.60??新建工程結(jié)果???????? 圖6.61??ChipScope?Pro?Core?Generator用戶(hù)界面
?
(3)選擇集成控制核(ICON核)。
首先在核類(lèi)型選擇頁(yè)面中選擇生成ICON核,如圖6.61所示。
(4)選擇目錄及器件。
如圖6.62所示,在本實(shí)例中選擇Spartan3器件。輸出路徑選擇新建工程所在的文件夾。控制端口的數(shù)目為1,控制端口的數(shù)目可以根據(jù)用戶(hù)的需要設(shè)置。如需要觀(guān)察多組數(shù)據(jù)時(shí),可以設(shè)多組控制端口。這里只需要觀(guān)察內(nèi)部計(jì)數(shù)器的計(jì)數(shù)值,因此設(shè)置為1。
?
(5)選擇語(yǔ)言類(lèi)型和綜合工具。
如圖6.63所示,本實(shí)例中設(shè)置語(yǔ)言類(lèi)型為Verilog,綜合工具為Xilinx?XST。
圖6.62??ICON輸出路徑和FPGA系列設(shè)置對(duì)話(huà)框
圖6.63??設(shè)置語(yǔ)言和綜合工具
?
(6)生成ICON核。
如圖6.64顯示為生成的ICON核的相關(guān)信息,如發(fā)現(xiàn)有誤,可以單擊“Previous”按鈕做修改后重新生成。
圖6.64??生成ICON核
?
(7)選擇集成邏輯分析儀(ILA核)。
生成ICON核后,單擊“Start?Over”按鈕,回到核類(lèi)型選擇頁(yè),如圖6.65所示,選擇需要生成的核為ILA。
圖6.65??生成集成邏輯分析儀
(8)設(shè)置輸出路徑、器件參數(shù)和時(shí)鐘參數(shù)。
如圖6.66所示為設(shè)置路徑為新建工程所在路徑,器件為Spartan3,采樣時(shí)刻為時(shí)鐘的上升沿。
圖6.66??設(shè)置ILA輸出路徑、FPGA器件、采樣時(shí)刻對(duì)話(huà)框
?
(9)設(shè)置觸發(fā)參數(shù)。
觸發(fā)參數(shù)的設(shè)置包括:觸發(fā)端口數(shù)目(Number?of?input?Trigger?ports)、每個(gè)觸發(fā)端口的觸發(fā)寬度(Trigger?Width)、觸發(fā)條件判斷單元個(gè)數(shù)(Match?Units)和類(lèi)型(Match?Type)等。
此外,“Enable?Trigger?Sequencer”選項(xiàng)用于使能觸發(fā)條件鏈。即設(shè)置觸發(fā)條件為一“條件鏈”,只有依次滿(mǎn)足“條件鏈”上的各個(gè)條件時(shí)才會(huì)被觸發(fā)。如圖6.67所示,如有與圖中參數(shù)設(shè)置不一致之處,請(qǐng)自行修改。
(10)設(shè)置存儲(chǔ)深度和數(shù)據(jù)位寬。
存儲(chǔ)深度即在滿(mǎn)足觸發(fā)條件后要采集多少數(shù)據(jù),存儲(chǔ)深度的大小由FPGA的RAM資源大小決定。由于ChipScope所采集的數(shù)據(jù)都是保存在FPGA內(nèi)部,因此存儲(chǔ)深度的大小不能超過(guò)FPGA的RAM的最大值。如圖6.68所示,選擇“Data?Same?As?Trigger”選項(xiàng)表示數(shù)據(jù)信號(hào)與觸發(fā)信號(hào)相同,數(shù)據(jù)位寬即為觸發(fā)端口的觸發(fā)寬度。
(11)設(shè)置語(yǔ)言類(lèi)型和綜合工具。
如圖6.69所示,本實(shí)例中選擇Verilog及Xilinx?XST。
?
(12)生成ILA核。
單擊圖6.69中的“Generate?Core”按鈕,生成邏輯分析儀(ILA),如圖6.70所示。
圖6.67??設(shè)置觸發(fā)參數(shù)對(duì)話(huà)框
圖6.68??設(shè)置存儲(chǔ)深度和數(shù)據(jù)位寬對(duì)話(huà)框
圖6.69??設(shè)置生成實(shí)例的語(yǔ)言類(lèi)型和綜合工具
圖6.70??生成ILA核
?
(13)將ICON和ILA插入設(shè)計(jì)。
完成上述步驟后就完成了集成控制核(ICON)和邏輯分析儀(ILA)的生成,系統(tǒng)生成的主要文件如表6.5所示。
表6.5 ChipScope生成文件列表
icon.edn |
集成控制器的網(wǎng)表文件 |
icon.ncf |
集成控制器的網(wǎng)表約束文件 |
icon_xst_example.v |
集成控制器的嵌入式例子代碼 |
ila.end |
集成邏輯分析儀的網(wǎng)表文件 |
ila.ncf |
集成邏輯分析儀的網(wǎng)表約束文件 |
ila_xst_example.v |
集成邏輯分析儀的嵌入式例子代碼 |
用戶(hù)需要做的是根據(jù)提供的例程代碼來(lái)修改自己的代碼,將生成的集成控制核和集成邏輯分析儀插入到設(shè)計(jì)當(dāng)中。具體修改時(shí),需要在源文件中添加如下代碼:
??icon?i_icon //??ICON?core?instance,實(shí)例化ICON核
????(
??????.control0?(control0)
????);
wire?[7:0]?trig0;
ila?i_ila //??ILA?core?instance,實(shí)例化ILA核
??(
????.control?(control0),
????.clk?(clk),
????.trig0?(trig0)
??);
assign?trig0?=?count;
從代碼中可以看出要做的工作主要是實(shí)例化ICON核和ILA核。注意要將觀(guān)察的信號(hào)(在這里為count)與ILA核的輸入信號(hào)相連接,系統(tǒng)時(shí)鐘與ILA核的時(shí)鐘輸入相連接,ICON的輸出控制信號(hào)與ILA的輸入控制信號(hào)相連接。這樣就可以通過(guò)修改RTL代碼來(lái)插入集成邏輯控制器和集成邏輯分析儀了。
(14)綜合,布局布線(xiàn),生成配置文件并下載。
具體的操作步驟可以參看2.6節(jié)的介紹,這里不再詳述。需要注意的是ChipScope?Pro要通過(guò)JTAG接口與器件連接。生成配置文件時(shí),時(shí)鐘要設(shè)置為JTAG?Clock。
(15)啟動(dòng)ChipScope?Pro?Analyzer。
可通過(guò)直接運(yùn)行“開(kāi)始”/“程序”/“ChipScope?Pro?8.2i”/“ChipScope?Pro?Analyzer”,也可以在ISE集成環(huán)境下,在進(jìn)程瀏覽器中雙擊“Analyze?Design?Using?ChipScope”啟動(dòng)。啟動(dòng)后界面如圖6.71所示。
(16)打開(kāi)JTAG連接。
單擊圖標(biāo),打開(kāi)JTAG并口連接電纜,在此之前要保證已將JTAG與器件連接好,如果連接無(wú)誤,正常連接后會(huì)出現(xiàn)如圖6.72所示的界面。
(17)設(shè)置觸發(fā)條件。
觸發(fā)條件設(shè)置如圖6.73所示。
圖6.71??ChipScope?Pro?Analyzer用戶(hù)界面
圖6.72??成功連接后用戶(hù)界面
圖6.73??設(shè)置觸發(fā)條件對(duì)話(huà)框
?
設(shè)置觸發(fā)條件函數(shù)為“==”,數(shù)值為0000_0000(也就是說(shuō),觸發(fā)端口的信號(hào)值為0000_0000時(shí)開(kāi)始采集數(shù)據(jù))。設(shè)置采集深度為8192。這里只有一個(gè)觸發(fā)件M0,只需采用默認(rèn)即可。當(dāng)有多個(gè)條件時(shí),要在“Trig”選項(xiàng)卡下設(shè)置起作用的正確條件,也可將觸發(fā)條件設(shè)置為幾個(gè)條件的邏輯組合。
?
(18)開(kāi)始采樣調(diào)試。
單擊左上角的運(yùn)行按扭,開(kāi)始采樣。捕獲觸發(fā)條件后,ChipScope將采集所設(shè)置存儲(chǔ)深度的波形,如圖6.74所示。
圖6.74??采集信號(hào)的波形圖
?
在波形顯示窗口下可對(duì)波形進(jìn)行放大和縮小,也可以進(jìn)行局部放縮。當(dāng)要觀(guān)察總線(xiàn)數(shù)據(jù)時(shí),可以先選中所有總線(xiàn)數(shù)據(jù),然后單擊右鍵,選擇“Add?to?Bus”/“New?Bus”即可如圖6.75所示。
圖6.75??組合總線(xiàn)數(shù)據(jù)
?
添加成功后,就可以在新生成的Bus下看到總線(xiàn)數(shù)據(jù),如圖6.76所示。圖中DataPort為新生成的總線(xiàn),設(shè)計(jì)者可以根據(jù)需要修改總線(xiàn)的名稱(chēng)。
圖6.76??總線(xiàn)數(shù)據(jù)生成結(jié)果
?
通過(guò)上述步驟就完成了應(yīng)用ChipScope?Pro的一個(gè)完整的流程,這種流程是通過(guò)修改源代碼來(lái)添加邏輯分析儀的。下面的流程可以不用修改設(shè)計(jì)代碼,直接將邏輯分析儀插入到設(shè)計(jì)的網(wǎng)表文件中,使用方便,應(yīng)用比較廣泛。
6.8.3??基于ChipScope?Pro?Core?Inserter的實(shí)現(xiàn)流程
基于ChipScope?Pro?Core?Inserter實(shí)現(xiàn)流程的具體步驟如下。
(1)新建工程,添加源代碼。
參見(jiàn)第一種實(shí)現(xiàn)流程的同一步驟。
(2)新建ChipScope?Pro?資源。
選擇ISE的“Project”/“New?Source”,再選擇“ChipScope?Definition?and?Connection”選項(xiàng),輸入新建資源的名稱(chēng):count,生成count.cdc資源文件。如果有現(xiàn)成的擴(kuò)展名為cdc的文件,也可以通過(guò)“Project”/“Add?Source”來(lái)添加,如圖6.77所示。
完成后在工程瀏覽器中可以看到包含的count.cdc文件,如圖6.78所示。
???? 圖6.77??新建.cdc資源對(duì)話(huà)框???????? 圖6.78??新建.cdc資源結(jié)果
?
(3)綜合。
與前一種設(shè)計(jì)流程不同,這里要先對(duì)源文件進(jìn)行綜合,在這種設(shè)計(jì)流程中,ILA核是直接插入到設(shè)計(jì)綜合后生成的邏輯網(wǎng)表中的,因此要先對(duì)源文件進(jìn)行綜合。
(4)設(shè)置ICON及ILA各項(xiàng)參數(shù)。
在工程瀏覽器中雙擊count.cdc文件,打開(kāi)ChipScope?Pro?Core?Inserter工具,如圖6.79所示。
圖6.79??ChipScope?Pro?Core?Inserter用戶(hù)界面
?
在圖中可以看到,這里無(wú)需再設(shè)置輸入網(wǎng)表文件的路徑,系統(tǒng)會(huì)自動(dòng)找到網(wǎng)表文件,并設(shè)置輸出文件的路徑。
單擊“Next”按鈕進(jìn)入ICON核設(shè)置頁(yè)面,如圖6.80所示。
圖6.80??“Select?Integrated?Controller?Options”ICON對(duì)話(huà)框
?
其中,“Disable?JTAG?Clock?BUFG?Insertion”用于指定是否禁止在JTAG時(shí)鐘上插入BUFG。如果選中此項(xiàng),JTAG時(shí)鐘將使用普通布線(xiàn)資源,而不是全局時(shí)鐘布線(xiàn)。這里此項(xiàng)不選,用全局時(shí)鐘布線(xiàn)。
完成ICON核的設(shè)置以后,選擇單擊“Next”按鈕,進(jìn)入ILA核設(shè)置頁(yè)面,如圖6.81所示。
圖6.81??“Trigger?Parameters”選項(xiàng)卡設(shè)置
?
在觸發(fā)器設(shè)置頁(yè)面中,設(shè)置觸發(fā)端口數(shù)、觸發(fā)寬度、觸發(fā)條件單元函數(shù)和個(gè)數(shù)等。如有不一致,請(qǐng)讀者對(duì)照上圖修改,設(shè)置完畢后單擊“Next”按鈕出現(xiàn)如圖6.82所示對(duì)話(huà)框。
圖6.82??“Capture?Parameters”選項(xiàng)卡設(shè)置
?
如圖6.82所示,設(shè)置存儲(chǔ)深度為8192,采樣時(shí)刻為上升沿。選中“Data?Same?As?Trigger”,即數(shù)據(jù)信號(hào)與觸發(fā)信號(hào)相同。設(shè)置完畢后單擊“Next”按鈕,可以看到已經(jīng)定義的ILA,如圖6.83所示。
圖6.83??“Net?Connection”選項(xiàng)卡設(shè)置
此時(shí)由于還沒(méi)有對(duì)網(wǎng)表進(jìn)行映射,因此網(wǎng)絡(luò)線(xiàn)都是呈紅色顯示。單擊“Modify?Connection”按鈕,設(shè)置時(shí)鐘信號(hào)和TRIG信號(hào)與要觀(guān)測(cè)的信號(hào)的映射關(guān)系,如圖6.84及6.85所示。
圖6.84??設(shè)置時(shí)鐘信號(hào)連接
圖6.85??設(shè)置數(shù)據(jù)連接
?
信號(hào)連接主要完成時(shí)鐘信號(hào)的連接和觸發(fā)信號(hào)的映射。將clk_BUFGP與Clock?Signals中的CH0連接,將count<0>~count<7>的內(nèi)部信號(hào)與Trigger?Data?Signals的CH0~CH7相連。連接方法很簡(jiǎn)單,選中要連接的信號(hào),單擊“Make?Connections”按鈕即可。
當(dāng)所有信號(hào)都連接完畢,“Net?Connection”選項(xiàng)卡下顯示的網(wǎng)路線(xiàn)會(huì)由紅色變?yōu)楹谏H绻杂行盘?hào)未連接,則仍為紅色,直到所有信號(hào)連接完畢。
設(shè)置完畢后,單擊“Return?To?Project”。此時(shí)邏輯分析儀已經(jīng)插入到了工程網(wǎng)表文件當(dāng)中了,不需要用戶(hù)再對(duì)源代碼進(jìn)行修改。
(5)布局布線(xiàn),生成配置文件并下載。
對(duì)工程進(jìn)行綜合、布線(xiàn)布局,之后生成配置文件并下載。
(6)啟動(dòng)ChipScope?Pro?Analyzer進(jìn)行觀(guān)察。
啟動(dòng)ChipScope?Pro?Analyzer后,剩下的步驟與前一種方法完全一致,這里就不再重復(fù)說(shuō)明。
6.8.4??小結(jié)
本節(jié)通過(guò)一個(gè)具體的實(shí)例,詳細(xì)演示了ChipScope?Pro的兩種使用方法。希望讀者能夠按照這兩種流程動(dòng)手練習(xí)一下,熟練掌握這一工具的使用。
在具體應(yīng)用當(dāng)中,第二種方法應(yīng)用得比較廣泛,因?yàn)闊o(wú)需修改源代碼,而且修改邏輯分析儀的各項(xiàng)參數(shù)也很方便,因此推薦讀者使用第二種方法。ChipScope?Pro是個(gè)功能很強(qiáng)大的在線(xiàn)邏輯分析工具,熟練地掌握它的用法并應(yīng)用于自己的設(shè)計(jì)當(dāng)中,將會(huì)給調(diào)試過(guò)程帶來(lái)極大的方便。