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