【導(dǎo)讀】進(jìn)行硬件設(shè)計(jì)的功能調(diào)試時(shí),FPGA的再編程能力是關(guān)鍵的優(yōu)點(diǎn)。CPLD和FPGA早期使用時(shí),如果發(fā)現(xiàn)設(shè)計(jì)不能正常工作,工程師就使用“調(diào)試鉤”的方法。先將要觀察的FPGA內(nèi)部信號(hào)引到引腳,然后用外部的邏輯分析儀捕獲數(shù)據(jù)。然而當(dāng)設(shè)計(jì)的復(fù)雜程度增加時(shí),這個(gè)方法就不再適合了,其中有幾個(gè)原因。第一是由于FPGA的功能增加了,而器件的引腳數(shù)目卻緩慢地增長(zhǎng)。因此,可用邏輯對(duì)I/O的比率減小了,參見圖1。此外,設(shè)計(jì)很復(fù)雜時(shí),通常完成設(shè)計(jì)后只有幾個(gè)空余的引腳,或者根本就沒(méi)有空余的引腳能用于調(diào)試。
1 推動(dòng)FPGA調(diào)試技術(shù)改變的原因
進(jìn)行硬件設(shè)計(jì)的功能調(diào)試時(shí),F(xiàn)PGA的再編程能力是關(guān)鍵的優(yōu)點(diǎn)。CPLD和FPGA早期使用時(shí),如果發(fā)現(xiàn)設(shè)計(jì)不能正常工作,工程師就使用“調(diào)試鉤”的方法。先將要觀察的FPGA內(nèi)部信號(hào)引到引腳,然后用外部的邏輯分析儀捕獲數(shù)據(jù)。然而當(dāng)設(shè)計(jì)的復(fù)雜程度增加時(shí),這個(gè)方法就不再適合了,其中有幾個(gè)原因。第一是由于FPGA的功能增加了,而器件的引腳數(shù)目卻緩慢地增長(zhǎng)。因此,可用邏輯對(duì)I/O的比率減小了,參見圖1。此外,設(shè)計(jì)很復(fù)雜時(shí),通常完成設(shè)計(jì)后只有幾個(gè)空余的引腳,或者根本就沒(méi)有空余的引腳能用于調(diào)試。
圖1 Lattice FPGA的LUT/可用I/O
第二,現(xiàn)在設(shè)計(jì)的復(fù)雜性經(jīng)常需要觀察許多信號(hào),而不是幾個(gè)信號(hào)。常用的技術(shù)是實(shí)現(xiàn)較寬的內(nèi)部總線,以便在較大的FPGA中達(dá)到高的系統(tǒng)吞吐量。如果懷疑內(nèi)部的32位總線里有壞的數(shù)據(jù),則難以用幾個(gè)I/O引腳來(lái)確定問(wèn)題所在。
第三,通常需要在系統(tǒng)中測(cè)試復(fù)雜的功能。在這種情況下,在系統(tǒng)中調(diào)試時(shí)訪問(wèn)一些I/O也許是有限的。新類型的包還限制訪問(wèn)FPGA引腳。系統(tǒng)速度也是個(gè)問(wèn)題,因?yàn)樘结樀倪B接可能會(huì)引起性能或者噪聲信號(hào)降低。
最后,推動(dòng)FPGA調(diào)試方法改變的關(guān)鍵因素是有了新的工具,這些工具采用內(nèi)部或者嵌入式邏輯分析儀。
擁有這些工具可得到最佳的結(jié)果,而不是用與先前工具相同的方法。資源、靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù)通常約束了內(nèi)部邏輯分析儀和外部邏輯分析儀。本文對(duì)這兩種類型工具的約束進(jìn)行了比較,考察如何最佳地利用內(nèi)部邏輯分析儀。
2 外部邏輯分析儀受到的限制
外部邏輯分析儀已經(jīng)用了幾十年了。外部邏輯分析儀的最大優(yōu)點(diǎn)是能夠存儲(chǔ)大量的信號(hào)信息,或者用來(lái)跟蹤數(shù)據(jù)。配置在不斷變化,但大多數(shù)外部邏輯分析儀可以存儲(chǔ)兆字節(jié)的數(shù)據(jù)。為了對(duì)FPGA使用外部邏輯分析儀,數(shù)據(jù)信號(hào)必須引到片外??捎脙煞N方法中的一種來(lái)做。第一種方法是直接把信號(hào)送到用于觀察的I/O引腳。取決于FPGA 的封裝類型,接觸I/O引腳 可能會(huì)有困難。 針對(duì)用這種方法進(jìn)行調(diào)試的電路板 設(shè)計(jì) 要用連接器,例如與FPGA相連的MICTOR連接 器。然而這種方法不是很有效, 因?yàn)槊總€(gè)信號(hào)都需要一個(gè)I/O引腳。
第二種方法是插入能把信號(hào)引到I/O的核。這種方法的優(yōu)點(diǎn)是這個(gè)核設(shè)計(jì)成能多路復(fù)用信號(hào)至I/O引腳,允許引腳共享。這種方法的局限是信號(hào)要被外部的邏輯分析儀實(shí)時(shí)捕獲,多路復(fù)用大大降低了快速捕獲信號(hào)的可能性。由于這個(gè)原因,通常使用2x 或者 4x多路復(fù)用方案。這意味著現(xiàn)在32 個(gè)I/O引腳可以支持64個(gè)或128個(gè)信號(hào)。這樣得到了很大的改進(jìn),但是仍然有限制,例如要調(diào)試寬總線的情況。一旦信號(hào)連接到外部的邏輯分析儀,然后就設(shè)置觸發(fā)和數(shù)據(jù)捕獲條件。
使用外部邏輯分析儀設(shè)置的約束是有限的信號(hào)、高速觸發(fā)邏輯和大量的跟蹤存儲(chǔ)器。大多數(shù)邏輯分析儀使用狀態(tài)機(jī)觸發(fā)機(jī)制。用戶指定一個(gè)值等待這個(gè)信號(hào),然后捕獲這個(gè)數(shù)據(jù),或者進(jìn)入另一個(gè)狀態(tài),尋找不同的情況。這些信號(hào)本身是靜態(tài)的,但各種情況是動(dòng)態(tài)的,會(huì)在任何時(shí)候發(fā)生變化。給定約束后,這個(gè)方法很有效。因?yàn)橄拗屏诵盘?hào)的數(shù)目,在信號(hào)組合的情況下減少了操作數(shù)。但是跟蹤的存儲(chǔ)器相對(duì)較大,試圖找到一個(gè)接近的觀察點(diǎn)是很普通的事,然后捕捉大量的數(shù)據(jù)以找到問(wèn)題所在。
3 使用內(nèi)部邏輯分析儀
用內(nèi)部邏輯分析儀能與外部邏輯分析儀一樣對(duì)FPGA進(jìn)行功能調(diào)試。內(nèi)部邏輯分析儀使用嵌入在FPGA設(shè)計(jì)中的一個(gè)或多個(gè)邏輯分析儀核。設(shè)計(jì)者使用PC在軟件中設(shè)置觸發(fā)條件,通過(guò)JTAG訪問(wèn)FPGA。一旦邏輯分析儀軟核捕獲了數(shù)據(jù),通過(guò)JTAG將信息返回PC,然后設(shè)計(jì)者對(duì)這些數(shù)據(jù)進(jìn)行觀察。觸發(fā)信號(hào)的復(fù)雜性和跟蹤存儲(chǔ)器的大小對(duì)信號(hào)數(shù)目有限制。大多數(shù)情況下,設(shè)計(jì)者可以觀察成百上千個(gè)信號(hào)。
觸發(fā)資源受FPGA限制,即未使用的邏輯和RAM。跟蹤存儲(chǔ)器有些實(shí)現(xiàn)需要RAM。有些則需要RAM或者LUT。然而,所需要的跟蹤存儲(chǔ)器比用外部邏輯分析儀大大減少,通常為數(shù)千位與數(shù)百萬(wàn)位之比。觸發(fā)和數(shù)據(jù)捕獲以設(shè)計(jì)的全速進(jìn)行,因?yàn)樾盘?hào)不需要在FPGA片外復(fù)用。
用外部邏輯分析儀時(shí),信號(hào)必須靜態(tài)定義。改變信號(hào)經(jīng)常需要FPGA再次執(zhí)行,盡管有些工具提供只增加FPGA布線來(lái)改變部分或全部連接信號(hào)的能力。在調(diào)試期間,大多數(shù)實(shí)現(xiàn)部分或所有觸發(fā)條件動(dòng)態(tài)地改變。然而,觸發(fā)的復(fù)雜性的變化取決于所用的工具。信號(hào)差別越多,所能提供的存儲(chǔ)器就越小。為了獲得最佳的結(jié)果,不同的觸發(fā)選項(xiàng)驅(qū)動(dòng)了使用內(nèi)部邏輯分析儀的需要。
復(fù)雜調(diào)試的一個(gè)例子是在SMPTE SDI HD顯示中尋找一個(gè)特別的像素。在特殊的情況下,找到EAV (end active video)時(shí)序是必須的,然后尋找與數(shù)據(jù)相關(guān)的特別線數(shù),再尋找SAV (start active video)時(shí)序。最后根據(jù)線中對(duì)應(yīng)的像素,計(jì)算字節(jié)數(shù)目,參見圖2。
圖2 SDI HD數(shù)據(jù)流實(shí)例
為了調(diào)試找到這種數(shù)據(jù)需要尋找值的時(shí)序,再找特殊值,然后結(jié)束序列,最后在捕獲數(shù)據(jù)前數(shù)時(shí)鐘的數(shù)目。為了理解是如何做的,必須查看具體的實(shí)現(xiàn)過(guò)程。萊迪思的Reveal硬件調(diào)試器使用觸發(fā)單元和觸發(fā)表示以決定觸發(fā)點(diǎn)。觸發(fā)單元是一個(gè)比較器,觸發(fā)表示允許觸發(fā)單元和序列值組合在一起。
對(duì)于這個(gè)SDI實(shí)例,用3個(gè)觸發(fā)單元來(lái)定義EAV和SAV序列,另外的觸發(fā)單元用于線數(shù),最后在發(fā)現(xiàn)數(shù)據(jù)前的一個(gè)計(jì)數(shù)聲明用于等待。觸發(fā)建立的實(shí)例如圖3所示。這個(gè)設(shè)置可以用來(lái)尋找任何要求的線數(shù)和像素,因?yàn)榫€數(shù)觸發(fā)的值和計(jì)數(shù)可以動(dòng)態(tài)地改變。
圖3 觸發(fā)設(shè)置的實(shí)例
4 結(jié)論
工程師將繼續(xù)使用外部邏輯分析儀,因?yàn)橛盟治鱿到y(tǒng)級(jí)功能時(shí)是很有價(jià)值的。但是用于內(nèi)部FPGA調(diào)試需要連接到電路板,信號(hào)的數(shù)目受到了限制。而內(nèi)部邏輯分析儀在可用信號(hào)數(shù)目方面提供了很大的自由度,但是在觸發(fā)邏輯和跟蹤存儲(chǔ)器方面受到約束。然而小心地使用觸發(fā)選項(xiàng)使內(nèi)部邏輯分析儀在精確的時(shí)間開始捕獲數(shù)據(jù),要最大化可用的資源。這個(gè)例子中,需要分析在SDI視頻信號(hào)里特殊的像素(線和字)的復(fù)雜實(shí)現(xiàn)被分解成簡(jiǎn)單的元素,這種方法提高了效率。這個(gè)例子只是瀏覽了內(nèi)部邏輯分析儀的使用和應(yīng)用。由于FPGA設(shè)計(jì)復(fù)雜性不斷增加,針對(duì)功能驗(yàn)證和調(diào)試,內(nèi)部邏輯分析儀和類似的工具受到了設(shè)計(jì)者的青睞。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理。
推薦閱讀:
6秒!故障發(fā)生時(shí)的極限響應(yīng),誰(shuí)來(lái)守護(hù)?