我是 雪天魚脯颜,一名FPGA愛好者哟旗,研究方向是FPGA架構(gòu)探索和SOC設(shè)計(jì)。
關(guān)注公眾號(hào)【集成電路設(shè)計(jì)教程】栋操,拉你進(jìn)“IC設(shè)計(jì)交流群
”闸餐。
注:轉(zhuǎn)載請(qǐng)注明出處
一、Test logic architecture
首先此測(cè)試邏輯架構(gòu)必須包含的組件有
- 一個(gè) TAP 控制器
- 一個(gè)指令寄存器 IR
- 一組測(cè)試數(shù)據(jù)寄存器 DR
測(cè)試邏輯架構(gòu)示意圖如圖1所示
<center>圖1 片上測(cè)試邏輯概念圖</center>
下面簡(jiǎn)單介紹下此示意圖:
(1)TAP 控制器接收TCK矾芙,TMS和TRST(可選)信號(hào)舍沙,產(chǎn)生 IR、DR和其他組件所需的時(shí)鐘和控制信號(hào)剔宪,控制所要執(zhí)行的操作拂铡,如復(fù)位、移位葱绒、捕獲和更新等感帅。
(2)IR 指令解碼選擇所要進(jìn)行操作的DR
(3)TMP控制器是可選組件,可接收指令解碼信號(hào)地淀,用于修改TAP控制器產(chǎn)生的一些控制信號(hào)失球。
所以此測(cè)試邏輯,就是通過JTAG接口根據(jù)指令去對(duì)DR進(jìn)行讀操作或者寫操作帮毁,寫數(shù)據(jù)從TDI輸入实苞,讀數(shù)據(jù)從TDO輸出璧微。
二、Instruction register
參考JTAG標(biāo)準(zhǔn)第七章指令寄存器(Instruction register)
顧名思義硬梁,指令寄存器用來存儲(chǔ)指令的前硫,指令通過TDI輸入到指令寄存器,再通過指令譯碼荧止,產(chǎn)生對(duì)應(yīng)控制信號(hào)屹电, 用于選擇要執(zhí)行的測(cè)試操作或要訪問的測(cè)試數(shù)據(jù)寄存器(DR)。
2.1 D型掃描觸發(fā)器
在正式介紹IR結(jié)構(gòu)之前跃巡,先介紹下帶多路選擇器的D型掃描觸發(fā)器危号,此掃描觸發(fā)器是掃描測(cè)試結(jié)構(gòu)的基本單元。
<center>圖1 D型觸發(fā)器和帶多路選擇器的D型掃描觸發(fā)器</center>
掃描觸發(fā)器有兩種工作模式素邪,分別為:
- 正常工作模式:scan_enable 為 0外莲,此時(shí)數(shù)據(jù)從D端輸入,從Q端輸出兔朦。
- 掃描移位模式:scan_enable 為 1偷线,此時(shí)數(shù)據(jù)從scan_in 輸入,從scan_out輸出(Q與scan_out復(fù)用)
將這種掃描單元按照掃描移位模式連接起來沽甥,就構(gòu)成了掃描測(cè)試中的基本結(jié)構(gòu)声邦,這里僅簡(jiǎn)單介紹全掃描。全掃描就是多個(gè)掃描單元相連接摆舟,上一單元的掃描輸出亥曹,連接到目前單元的掃描輸入,目前單元的掃描輸出連接到下一單元的掃描輸入恨诱,以此類推媳瞪,構(gòu)成一條移位寄存器鏈,如圖2所示:
<center>圖2 全掃描</center>
這樣的掃描結(jié)構(gòu)照宝,可通過一個(gè)串行輸入端蛇受,將期望的數(shù)據(jù)存入移位寄存器鏈并觀察運(yùn)行結(jié)果。
2.2 IR 電路結(jié)構(gòu)
指令寄存器的電路結(jié)構(gòu)與全掃描類似硫豆,同樣是采用了移位寄存器鏈龙巨。其掃描單元如圖3所示:
<center>圖3 IR掃描單元</center>
<center>表1 IR掃描單元信號(hào)概述</center>
信號(hào)名 | 作用 |
---|---|
ShiftIR | 移位使能 |
PI Data | 并行輸入數(shù)據(jù) |
From last cell | 掃描輸入(數(shù)據(jù)來自上一掃描單元的掃描輸出端口) |
ClockIR | 掃描單元時(shí)鐘信號(hào)笼呆,僅在Capture-IR和Shift-IR狀態(tài)時(shí)有效 |
Update IR | 指令位觸發(fā)器時(shí)鐘信號(hào)熊响,僅在Update-IR狀態(tài)時(shí)有效 |
Reset | 復(fù)位信號(hào),用于強(qiáng)制性指令解碼(BYPASS或IDCODE) |
To next cell | 掃描輸出(連接到下一掃描單元的掃描輸入端口) |
Instruction bit | 指令位诗赌,指示是否為該指令位對(duì)應(yīng)的指令 |
構(gòu)成的移位寄存器鏈如圖4所示:
<center>圖4 帶譯碼器的IR完整電路</center>
掃描路徑已經(jīng)用紅色筆標(biāo)注了汗茄,所以IR就是根據(jù)TAP輸出的控制信號(hào),來進(jìn)行對(duì)應(yīng)的移位铭若,更新洪碳,捕獲等操作递览,譯碼器對(duì)指令進(jìn)行譯碼,并將對(duì)應(yīng)的指令位置1并輸出來控制測(cè)試邏輯架構(gòu)其他組件瞳腌。其中在 Test-Logic-Reset 狀態(tài)時(shí)绞铃,Instruction1將被復(fù)位,表示強(qiáng)制性指令BYPASS或者IDCODE嫂侍。
2.3 指令寄存器的操作
在不同的 TAP 控制器狀態(tài)下儿捧,IR進(jìn)行的操作不同,詳情見圖5:
<center>圖5 每個(gè) TAP 狀態(tài)下IR的操作</center>
可以看到 IR 掃描單元存儲(chǔ)值只在Shift-IR狀態(tài)和Capture-IR狀態(tài)發(fā)生改變挑宠,且指令只在 Test-Logic-Reset 和 Update-IR 狀態(tài)更新并生效菲盾,其中前者是復(fù)位到強(qiáng)制性指令BYPASS或者IDCODE,后者則是更新為譯碼器結(jié)果各淀。
三懒鉴、Test data registers
參考JTAG標(biāo)準(zhǔn)第九章測(cè)試數(shù)據(jù)寄存器(Test data registers)、第10章旁路寄存器(Bypass register)碎浇、第11章邊界掃描寄存器(boundary-scan register)临谱。
此標(biāo)準(zhǔn)所定義的測(cè)試邏輯架構(gòu)中,測(cè)試數(shù)據(jù)寄存器至少要包括兩種寄存器奴璃,分別為旁路寄存器(Bypass Register)和邊界掃描寄存器(boundary-scan register)吴裤,當(dāng)然也有其他可選寄存器,如設(shè)備ID寄存器溺健、芯片ID寄存器麦牺、初始化數(shù)據(jù)寄存器等。
3.1 TDR的實(shí)現(xiàn)
TDR是由多個(gè)測(cè)試數(shù)據(jù)寄存器組成鞭缭,每個(gè)數(shù)據(jù)寄存器又基于移位寄存器實(shí)現(xiàn)剖膳,從而可以通過串行輸入將數(shù)據(jù)寫入選中的數(shù)據(jù)寄存器中,一種實(shí)現(xiàn)方案如圖1所示:
<center>圖1 一組測(cè)試數(shù)據(jù)寄存器的實(shí)現(xiàn)</center>
實(shí)線繪制的寄存器為必須實(shí)現(xiàn)的數(shù)據(jù)寄存器岭辣,虛線繪制的寄存器為可選實(shí)現(xiàn)的吱晒。可以看到數(shù)據(jù)通過TDI端口串行輸入到DR中沦童,再通過MUX選擇要輸出的數(shù)據(jù)仑濒,經(jīng)TDO端口輸出。
下面簡(jiǎn)單介紹下所實(shí)現(xiàn)的一些DR偷遗。
3.2 Bypass Register
該寄存器只有一個(gè)移位寄存器墩瞳,即只能存儲(chǔ)1bit數(shù)據(jù),存在的意義是當(dāng)進(jìn)行某項(xiàng)測(cè)試操作時(shí)氏豌,不需要訪問其他的DR喉酌,那么TDI就選擇從旁路寄存器通過,從而減少對(duì)感興趣段的測(cè)試訪問時(shí)間,也就是讓數(shù)據(jù)能盡快從TDI達(dá)到感興趣段泪电。
實(shí)現(xiàn)的電路結(jié)構(gòu)圖如圖2所示:
<center>圖2 旁路寄存器</center>
<center>表1 DR輸如輸出信號(hào)概述</center>
信號(hào)名 | 作用 |
---|---|
ShiftDR | 移位使能 |
From TDI | 串行掃描輸入 |
ClockDR | 移位時(shí)鐘信號(hào)般妙,僅在Capture-DR和Shift-DR狀態(tài)時(shí)有效 |
標(biāo)準(zhǔn)中提供了一個(gè)例子:
現(xiàn)有一個(gè)包含 100 個(gè)芯片的電路板,每個(gè)芯片的邊界掃描寄存器中有 100 位相速。 如果所有芯片同時(shí)串聯(lián)連接碟渺,則電路板上的邊界掃描路徑將包括 10000 個(gè)移位寄存器。 現(xiàn)在需要僅訪問測(cè)試路徑上的一個(gè)芯片突诬,這會(huì)導(dǎo)致測(cè)試時(shí)間過長(zhǎng)止状。但若存在旁路寄存器的話,便可大大減少路徑上經(jīng)過的移位寄存器級(jí)數(shù)攒霹,具體方法是將 99 個(gè)芯片設(shè)置為僅通過其旁路寄存器進(jìn)行移位怯疤,而被測(cè)芯片在路徑中仍是通過邊界掃描寄存器去測(cè)試。 這將使總串行路徑級(jí)數(shù)減少為 199 級(jí)催束,與 10000 級(jí)相比大幅減少集峦。
3.3 Boundary-scan register
在DR中,邊界掃描寄存器(BSR)是最復(fù)雜了抠刺,標(biāo)準(zhǔn)中用來解釋該寄存器的篇幅也比較長(zhǎng)塔淤,這里簡(jiǎn)單介紹一下,后續(xù)等自己理解加深后再更新速妖。
<center>圖3 無BSR的組件</center>
該組件有輸入輸出管腳高蜂,輸入輸出緩沖器,輸入信號(hào)分為時(shí)鐘信號(hào)和非時(shí)鐘信號(hào)罕容,輸出信號(hào)部分可通過一些控制信號(hào)控制其輸出备恤。
BSR的作用就是用來觀察這樣一個(gè)片上系統(tǒng)邏輯的輸入輸出引腳傳輸?shù)臄?shù)據(jù),接下來介紹一下BSR單元
- “observe-only”單元
<center>圖4 “observe-only”單元</center>
為三端單元锦秒,兩個(gè)輸入端露泊,一個(gè)輸出端,其中一個(gè)輸入端接Pin,用于將輸入或者輸出管腳的信號(hào)加載到移位寄存器中旅择,另外兩個(gè)端口用于與其他單元相連接惭笑,組成完整的掃描鏈。
- “control-and-observe” 單元
<center>圖5 “control-and-observe”單元</center>
為四端單元生真,兩個(gè)輸入端口沉噩,兩個(gè)輸出端口,其中一個(gè)輸入端接Pin,用于將輸入或者輸出管腳的信號(hào)加載到移位寄存器中柱蟀,一個(gè)輸出端口用于將存儲(chǔ)的數(shù)據(jù)加載到Pin上川蒙,另外兩個(gè)端口用于與其他單元相連接,組成完整的掃描鏈产弹。此單元構(gòu)成的BSR就可以將期望的測(cè)試輸入向量加載到芯片中派歌。
其內(nèi)部結(jié)構(gòu)如圖6所示:
<center>圖6 “control-and-observe”單元內(nèi)部結(jié)構(gòu)</center>
這里多了一些輸入端口,傳輸時(shí)鐘信號(hào)和控制信號(hào)痰哨,方便通過指令對(duì)BSR進(jìn)行一些操作胶果。
參考文獻(xiàn)
【1】IEEE Standard for Test Access Port and Boundary-Scan Architecture IEEE Std 1149.1?-2013
【2】SoC設(shè)計(jì)方法與實(shí)現(xiàn) 第三版 郭煒
- 更多技術(shù)文章和學(xué)習(xí)資料,請(qǐng)關(guān)注我的公眾號(hào):【集成電路設(shè)計(jì)教程】
- 全平臺(tái)統(tǒng)一:【雪天魚】