用內部邏輯分析儀調試FPGA
進(jìn)行硬件設計的功能調試時(shí),FPGA的再編程能力是關(guān)鍵的優(yōu)點(diǎn)。CPLD和FPGA早期使用時(shí),如果發(fā)現設計不能正常工作,工程師就使用“調試鉤”的方法。先將要觀(guān)察的FPGA內部信號引到引腳,然后用外部的邏輯分析儀捕獲數據。然而當設計的復雜程度增加時(shí),這個(gè)方法就不再適合了,其中有幾個(gè)原因。第一是由于FPGA的功能增加了,而器件的引腳數目卻緩慢地增長(cháng)。因此,可用邏輯對I/O的比率減小了,參見(jiàn)圖1。此外,設計很復雜時(shí),通常完成設計后只有幾個(gè)空余的引腳,或者根本就沒(méi)有空余的引腳能用于調試。
圖1 Lattice FPGA的LUT/可用I/O
第二,現在設計的復雜性經(jīng)常需要觀(guān)察許多信號,而不是幾個(gè)信號。常用的技術(shù)是實(shí)現較寬的內部總線(xiàn),以便在較大的FPGA中達到高的系統吞吐量。如果懷疑內部的32位總線(xiàn)里有壞的數據,則難以用幾個(gè)I/O引腳來(lái)確定問(wèn)題所在。
第三,通常需要在系統中測試復雜的功能。在這種情況下,在系統中調試時(shí)訪(fǎng)問(wèn)一些I/O也許是有限的。新類(lèi)型的包還限制訪(fǎng)問(wèn)FPGA引腳。系統速度也是個(gè)問(wèn)題,因為探針的連接可能會(huì )引起性能或者噪聲信號降低。
最后,推動(dòng)FPGA調試方法改變的關(guān)鍵因素是有了新的工具,這些工具采用內部或者嵌入式邏輯分析儀。
擁有這些工具可得到最佳的結果,而不是用與先前工具相同的方法。資源、靜態(tài)參數和動(dòng)態(tài)參數通常約束了內部邏輯分析儀和外部邏輯分析儀。本文對這兩種類(lèi)型工具的約束進(jìn)行了比較,考察如何最佳地利用內部邏輯分析儀。
外部邏輯分析儀受到的限制
外部邏輯分析儀已經(jīng)用了幾十年了。外部邏輯分析儀的最大優(yōu)點(diǎn)是能夠存儲大量的信號信息,或者用來(lái)跟蹤數據。配置在不斷變化,但大多數外部邏輯分析儀可以存儲兆字節的數據。為了對FPGA使用外部邏輯分析儀,數據信號必須引到片外??捎脙煞N方法中的一種來(lái)做。第一種方法是直接把信號送到用于觀(guān)察的I/O引腳。取決于FPGA 的封裝類(lèi)型,接觸I/O引腳 可能會(huì )有困難。 針對用這種方法進(jìn)行調試的電路板 設計 要用連接器,例如與FPGA相連的MICTOR連接 器。然而這種方法不是很有效, 因為每個(gè)信號都需要一個(gè)I/O引腳。
第二種方法是插入能把信號引到I/O的核。這種方法的優(yōu)點(diǎn)是這個(gè)核設計成能多路復用信號至I/O引腳,允許引腳共享。這種方法的局限是信號要被外部的邏輯分析儀實(shí)時(shí)捕獲,多路復用大大降低了快速捕獲信號的可能性。由于這個(gè)原因,通常使用2x 或者 4x多路復用方案。這意味著(zhù)現在32 個(gè)I/O引腳可以支持64個(gè)或128個(gè)信號。這樣得到了很大的改進(jìn),但是仍然有限制,例如要調試寬總線(xiàn)的情況。一旦信號連接到外部的邏輯分析儀,然后就設置觸發(fā)和數據捕獲條件。
使用外部邏輯分析儀設置的約束是有限的信號、高速觸發(fā)邏輯和大量的跟蹤存儲器。大多數邏輯分析儀使用狀態(tài)機觸發(fā)機制。用戶(hù)指定一個(gè)值等待這個(gè)信號,然后捕獲這個(gè)數據,或者進(jìn)入另一個(gè)狀態(tài),尋找不同的情況。這些信號本身是靜態(tài)的,但各種情況是動(dòng)態(tài)的,會(huì )在任何時(shí)候發(fā)生變化。給定約束后,這個(gè)方法很有效。因為限制了信號的數目,在信號組合的情況下減少了操作數。但是跟蹤的存儲器相對較大,試圖找到一個(gè)接近的觀(guān)察點(diǎn)是很普通的事,然后捕捉大量的數據以找到問(wèn)題所在。
使用內部邏輯分析儀
用內部邏輯分析儀能與外部邏輯分析儀一樣對FPGA進(jìn)行功能調試。內部邏輯分析儀使用嵌入在FPGA設計中的一個(gè)或多個(gè)邏輯分析儀核。設計者使用PC在軟件中設置觸發(fā)條件,通過(guò)JTAG訪(fǎng)問(wèn)FPGA。一旦邏輯分析儀軟核捕獲了數據,通過(guò)JTAG將信息返回PC,然后設計者對這些數據進(jìn)行觀(guān)察。觸發(fā)信號的復雜性和跟蹤存儲器的大小對信號數目有限制。大多數情況下,設計者可以觀(guān)察成百上千個(gè)信號。
觸發(fā)資源受FPGA限制,即未使用的邏輯和RAM。跟蹤存儲器有些實(shí)現需要RAM。有些則需要RAM或者LUT。然而,所需要的跟蹤存儲器比用外部邏輯分析儀大大減少,通常為數千位與數百萬(wàn)位之比。觸發(fā)和數據捕獲以設計的全速進(jìn)行,因為信號不需要在FPGA片外復用。
用外部邏輯分析儀時(shí),信號必須靜態(tài)定義。改變信號經(jīng)常需要FPGA再次執行,盡管有些工具提供只增加FPGA布線(xiàn)來(lái)改變部分或全部連接信號的能力。在調試期間,大多數實(shí)現部分或所有觸發(fā)條件動(dòng)態(tài)地改變。然而,觸發(fā)的復雜性的變化取決于所用的工具。信號差別越多,所能提供的存儲器就越小。為了獲得最佳的結果,不同的觸發(fā)選項驅動(dòng)了使用內部邏輯分析儀的需要。
評論