2015年11月20日 星期五

JTAG

JTAG (Joint Test Action Group) 是一個在 1985 年成立的電子工業協會,致力於發展產品製造後如何驗證設計及測試印刷電路板接線的方法。在 1990 年結果寫成 IEEE Standard 1149.1-1990,標題是「Standard Test Access Port and Boundary-Scan Architecture」,但坊間仍俗稱 JTAG。JTAG 除了可用來作 Boundary-Scan Test,也就是測試電路板上元件間的接線是否正確外,常常擴充提供許多廠商自定的功能,例如燒錄、In-Circuit Emulation 等。

JTAG 存取界面稱為 TAP (Test Access Port),包括跟外部通訊的序列訊號接腳、內部的狀態機器及暫存器。
圖來自 Spartan-6 FPGA Configuration User Guide

TAP 接腳有 TCK、TMS、TDI、TDO 四個訊號,透過控制 TAP 狀態機器來存取 TAP 暫存器。所有 JTAG 功能都透過這四個訊號完成。
  • TCK (Test Clock) 輸入:TAP 的運作時脈。
  • TMS (Test Mode Select) 輸入:選擇下個 TAP 狀態轉移,TCK 上升緣動作。TAP 採用序列狀態機器,下個狀態只依據 TMS 只有 0 跟 1 兩種選擇。TMS 持續輸入 1 可回復重置狀態,一般會有內部 pull-up 提供邏輯 1 輸入。
  • TDI (Test Data In) 輸入:序列位移進 TAP 暫存器,TCK 上升緣動作。
  • TDO (Test Data Out) 輸出:序列位移出 TAP 暫存器,在 TCK 下降緣動作,且只有在位移輸出暫存器時才驅動輸出。
另外可能還有 TRST (Test Reset) 接腳,強制 TAP 重置,但 TMS 持續輸入 1 也可以重置,所以不是必要的。

圖來自 Spartan-6 FPGA Configuration User Guide
多個 JTAG 可以串接使用,其中 TCK 跟 TMS 是共用,而 TDI 跟 TDO 則是串接。

TAP 暫存器會有一個指令暫存器 (Instruction Register, IR),其它為資料暫存器 (Data Register, DR)。DR 數目不一定,可能有 BYPASS、IDCODE、EXTEST、INTEST 等,有些是 IEEE 定義的,其它則廠商自己定義。TAP 狀態跟 IR 的內容,決定 TDI 輸入到及 TDO 輸出自哪個暫存器。
  • IR:至少 2-bit,由廠商決定長度,不同指令選擇不同的資料暫存器,而有不同的功能。
  • BYPASS:IEEE Std 1149.1 定義的標準暫存器,只有 1-bit,作為多個 JTAG 元件串接時,把 TDI 跟 TDO 以序列方式串起來,來 bypass 特定元件,在 CAPTURE-DR 時會初始化為 0。
  • IDCODE:大部分 JTAG 相容元件都有 32-bit IDCODE,儲存元件特定的識別碼,可看出製造商及元件型號。
  • Bound-Scan Register (BSR)
  • EXTEST, INTEST, SAMPLE, USERCODE, and HIGHZ
JTAG 相容元件用 Boundary Scan Description Language (BSDL) 檔案定義其功能,BSDL 用 VHDL 語言撰寫,描述元件的接腳及 boundary-scan 暫存器。

狀態機器
圖來自 Spartan-6 FPGA Configuration User Guide

TAP 有 16 種狀態,由 TCK 時脈的 rising edge 看 TMS 的 0 或 1 決定狀態的轉換。主要有兩種路徑分別是要對 IR 或 DR 作內容移位。IR 在實作上可能分成兩部份,一是解碼使用的 IR,另一是位移的時候用。DR 未必有這樣的設計。
  • Test-Logic-Reset (TLR):測試邏輯於重置狀態,也就是測試邏輯電路是關閉的,此時元件可正常使用。不論目前在哪個狀態,只要 5 次 TMS 1 就會進入 Test-Logic-Reset 狀態。持續 1 維持在 Test-Logig-Reset,0 離開。
  • Run-Test/Idle (RTI):在特定的指令下進入並停留在此狀態來執行測試 (Run-Test),直到 TMS 接腳為 1 結束。其它指令則為閒置 (Idle)。
  • Select-DR-Scan:選擇是否進入 DR 路徑。
  • Select-IR-Scan:選擇是否進入 IR 路徑。
  • Capture-IR 或 Capture-DR:擷取 IR 或 DR 作為 TDO 輸出用。
    • IR 在實作上可能分成兩部份,一是寫入的版本作為解碼使用,另一是位移的版本。Capture-IR 時將位移的版本載入固定值,且這個固定值最後 2-bit 為 01,不是寫入的 IR。之後 Update-IR 時,會將位移的版本平行載入作為寫入的版本。
    • DR 未必有這樣的設計。Capture-DR 則擷取 IR 所選擇 DR 作為輸出,實際上可能沒區分出專作位移的版本,而沒有實際擷取的動作。
  • Shift-IR 或 Shift-DR:此時暫存器跟接腳 TDI 及 TDO 串起來進行內容位移。TMS 為 0 時持續進行位移,為 1 時結束。
  • Exit1-IR 或 Exit1-DR:控制是要進入 Pause-IR (Pause-DR) 還是 Update-IR (Update-DR)。
  • Pause-IR 或 Pause-DR:暫停位移。
  • Exit2-DR 或 Exit2-DR:控制是要進入 Shift-IR (Shift-DR),還是進入 Update-IR (Update-DR)。
  • Update-IR 或 Update-DR:在 TCK falling edge 更新 IR 或 DR。
範例:讀取 IDCODE,首先 IR 寫入指令 IDCODE,然後在從 DR 讀出 IDCODE
TAP stateTDITMS#TCK說明
any
x15回復到重置狀態
Test-Logic-Reset
x01
Run-Test/Idle
x11
Select-DR-Scan
x11
Select-IR-Scan
x01
Capture-IR
x01
Shift-IR
0100105從 LSB 開始位移 IDCODE 指令
Shift-IR
011位移 IDCODE 指令最後 MSB,並離開位移狀態
Exit1-IR
x11更新指令為 IDCODE = 0x09
Update-IR
x11
Select-DR-Scan
x01
Capture-DR
x01
Shift-DR
?031TDO 從 LSB 開始位移出 IDCODE
Shift-DR
?11TDO 位移出 IDCODE 最後 bit,並離開位移狀態
Exit1-DR
x11
Update-DR
x01回到 Run-Test/Idle 完成動作
Run-Test/Idle

如果多個元件串接時,由於 TMS 是接在一起的,所以每個元件的 TAP 停留的狀態是一致的,只差在讀寫暫存器所需要位移的長度變長了
  1. IR 寫入指令 IDCODE 時,需要依照跟所有元件串接的順序排指令碼,目標元件填 IDCODE 指令碼,其它元件則填 BYPASS 指令碼。BYPASS 指令碼都是 1,只是不同元件 IR 的長度會有所不同。
  2. DR 讀出 IDCODE 時,需要把讀到的 BYPASS 過濾掉,每個 BYPASS 佔 1-bit。
JTAG 雖然有 16 種狀態,除了重置及 Run-Test 外,其它都是為了存取 IR 及 DR。JTAG 訊號很像 SPI,多了 TMS 來轉移狀態,多了 IR/DR 可無限擴充可能的功能。

參考來源:
  1. https://en.wikipedia.org/wiki/Joint_Test_Action_Group
  2. Spartan-6 FPGA Configuration User Guide

2015年11月9日 星期一

DTMF Decoder: HM9270D

HM9270D 是 DTMF 解碼器,將 16 種 DTMF 組合轉換成 4-bit 碼。

  1. IN+:內部 Op Amp 差動輸入
  2. IN-:內部 Op Amp 差動輸入
  3. GS:內部 Op Amp 差動輸出,作為回授使用。
  4. VREF:VDD/2 電壓輸出。
  5. INH:接 High 不偵測 A/B/C/D DTMF。內部 pull-down
  6. PWDN
  7. OSC1
  8. OSC2
  9. VSS:Ground。
  10. TOE (輸入):high 時輸出 Q1 ~ Q4 ,否則 tri-state。
  11. Q1 (data 輸出)
  12. Q2 (data 輸出)
  13. Q3 (data 輸出)
  14. Q4 (data 輸出)
  15. StD (Delayed Steering 輸出):high 時,表示有新的 Q1 ~ Q4
  16. ESt (Early Steering 輸出):偵測到 tone 立即輸出 high,否則立即輸出 low。
  17. St/GT (Steering 輸入及 Guard Time 輸出):包括 St 及 GT 兩種功能。St 是偵測電壓,如果 < VTSt 表示 DTMF 碼還在確認中。如果一超過 VTSt 表示已確認,允許更新內部 Q1~Q4 紀錄,此時 GT 輸出 high 直到 tone 結束。St/GT 通常接 RC 電路,VTSt 是 2.35V。
  18. VDD:5V 電源。
參考來源:
  1. http://www.teleic.com/PDF/EM9270.PDF
其它相關
  1. MT8870:DTMF 解碼
  2. HT9170:DTMF 解碼
  3. HT9172:DTMF 解碼
  4. MT8880:DTMF 解編碼
  5. DT210:DTMF 解編碼
  6. DTMF V1:DTMF 解編碼
  7. HT9032D:FSK 解碼

Gray Code

Hamming distance 為 1,相鄰兩數之間只改變一個位元。

binary-reflected Gray code

C 跟 Java 的實作,奇數項都變個位數,偶數項變從個位數數起第一個 1 再過來那個位數:http://202.193.64.35/dept7/acm/web/AlgorithmGossip/GrayCode.htm

Binary Code 跟 Gray Code 的轉換。
  • encode:G = B ^ (B>>1)
  • decode 較麻煩,需從左邊開始一位一位算。

2015年9月28日 星期一

FXO/DAA 電路功能需求

電話線只有兩條線,可以雙向通話,又可以提供電源及響鈴,同時高出人聲頻率範圍可用 xDSL 技術傳上網數據資料。

話機可分成音頻訊號 (交流,AC) 跟電源 (直流,DC) 兩個路徑,這裡有個等效模型,DC 從 Vbatt 到 Rdc 提供通話時的電源。Cblock 阻擋 DC 進入 AC 路徑,而 Ldc 阻擋 AC 進入 DC 路徑,讓 DC 跟 AC 分別有大約 200 Ω 跟 600 Ω 的阻抗。

話機連接局端的界面成為 FXO,設備跟電話線之間連接的電路叫 DAA (Data Access Arrangement),作電氣隔離以符合電信要求,避免損壞電話機房,也保護話機。
  • Surge Protection:雷擊保護
  • Hook Switch 及 DC Termination:Hook Switch 就是一個開關控制是否摘機,可用傳統電驛或固態電驛。DC Termination 約 200 Ω,是 off-hook 接上的 DC 阻抗,使迴路電流流動,電壓降低,讓局端知道 off-hook 了。另外 DC Termination 需要串電感來阻擋 AC 電流進入,避免影響 AC 的阻抗。此電感常常用 Gyrator 電路等效出來,較小也較便宜。bridge recitifier -- 即使 tip/ring 反向亦能運作
  • Ring Detection:電話要響鈴時,局端會產生 Vring 高電壓、約 20 Hz 的低頻訊號,摘機時停止。(LED 顯示響鈴)
  • Signal Coupling
  • Hybrid:分離傳跟收的聲音,可能分離得不夠清楚,還需要 echo canceller 進一步處理。
  • Loop Current Detection (optional)
  • On-hook Monitor for Caller ID
  • Line Use Detection
  • Reverse Battery Detection
參考:
相關文章:
延伸閱讀:
  • UTC LS1240A ELECTRONIC TONE RINGER WITH BUILT-IN BRIDGE RECTIFIER
  • BL34018 或 MC34018 Handsfree speakerphone circuit
    • pin 16 V+:6 ~ 11 V (7.5V) 7mA 輸入
    • pin 18 /CS:決定是否輸出 Vcc
    • pin 20 Vcc:5.4V 輸出,可作為其它電路使用
    • pin 22 GND 
  • https://www.edn.com/get-power-from-a-telephone-line-without-disturbing-it/ 
  • ## FXO power

    降壓穩壓限流

    https://www.maximintegrated.com/en/app-notes/index.mvp/id/1923 Draw 150mW of Isolated Power from Off-Hook Phone Line

    http://www.edn.com/design/power-management/4315670/Get-power-from-a-telephone-line-without-disturbing-it Get power from a telephone line without disturbing it

    http://rtony56789.pixnet.net/blog/post/27467768
  • Line status 偵測
    光耦合器 in a voltage divider resistor network in tandem
    * 0 V:電話線沒接
    * ~0.45 V:off-hook
    * 5V 或 digital 1:on-hook

    seize the line:可在 protection fuse 及 varistor 之後使用 reed relay 及電阻。
  • 其它
    1. caller ID detection (on-hook DTMF/FSK detection)
    1. off-hook
    1. DTMF detection
    1. tone generation
    1. on-hook
    * IN4001, IN4148S

    1. 十秒內 ring + CID 符合三次接起 (設定:時間、次數、CID)
    1. 偵測 DTMF 碼作為指令
        * 設定回應:成功 -> 一短聲,失敗 -> 三短聲
        * 查詢會應:yes ->兩短聲,no-> 一長聲
    1. 掛斷 (timeout, 指令)

    [Si3050 + Si3011/18/19](https://www.silabs.com/Support%20Documents/TechnicalDocs/Si3050-11-18-19.pdf) Voice DAA
        * Si3050 可以透過 SPI 或 GCI,SPI 可以 daisy chain 多顆 Si3050
        * 不處理 Caller ID
    Si32919
        * 搭配 Si32178,同時有 FXS

    http://lirobo.blogspot.tw/2015/09/fxodaa.html
    http://lirobo.blogspot.tw/2012/09/fxs-uart.html

    AVR FXS/FXO:ATmega406 有 12-bit ADC

    ##
    在一對雙絞線<br>
    <ul><li>Disconnected</li>
    <li>DC loop current</li>
    <ul><li>DC</li>
    <li>hook</li>
    <ul><li>dial pulse</li>
    <li>flash: 20ms ~ 2sec</li></ul>
    <li>ringing: 20 Hz</li></ul>
    <li>AC audio signal</li>
    <ul><li>transmit and receive</li>
    <ul><li>DTMF, FSK, Voice, Fax, Modem, ...</li></ul>
    <li>xDSL<br>
    </li></ul></ul>
    <br>
    FXS<br>
    <a href="http://lirobo.blogspot.tw/2012/09/fxs-uart.html">http://lirobo.blogspot.tw/2012/09/fxs-uart.html</a><br>
    <br>
    Si3217x + Si32911/19 Single-Chip ProSLIC® <br>
    <br>
    Si32178/9<br>
    <h2>Si3210</h2>
    <code>The registers about ringing generation list in Si3210 Datasheet Table 30 (p. 43)</code><br>
    <br>
    <br>
    <code>Currently, the sinusoidal ringing is used, and RCO=0x7EF0, RNGX = 0x0160</code><br>
    <code>coeff = RCO/(2^15) = 32496/32768</code><br>
    <code>VPK = 64V (i.e., ring voltage)</code><br>
    <br>
    <br>
    <code>The REN or current depends on how much power VBAT can provide.</code><br>
    <code>Current VBAT setting should be -75V (DR74=0x32)</code><br>
    <br>
    <br>
    <code>Ring current for 1 REN is VPK / 6900 ohm = 9.3 mA</code>
    <h2>USB</h2>
    <a href="https://openusbfxs.wordpress.com/">Open USB FXS</a>: PIC18F2550 + Si3210 + Si3201<br>
    <ul><li>oufxs DAHDI driver:<a href="http://code.google.com/p/openusbfxs/">http://code.google.com/p/openusbfxs/</a>sangoma <a href="http://www.sangoma.com/telecom-interface-boards/analog-voice-boards/usb_fxo.html">u100</a> (wanpipe)</li></ul>
    digium s100u (wcusb): Tiger560B <br>
    <ul><li><a href="http://www.earth.li/~noodles/hardware-usbfxs.html">http://www.earth.li/~noodles/hardware-usbfxs.html</a></li></ul>
    xorcom (xpp_usb)<br>

    ## Si3210
    constant voltage zone
    * 由 TIP-to-RING Open-circuit voltage (V<sub>OC</sub>) 定義
    * 0 V to 94.5 V in 1.5 V  steps
    constant current zone
    * 由 loop current limit (I<sub>LIM</sub>) 定義
    * 20 mA to 41 mA in 3 mA steps

    inherent dc output resistance (R<sub>O</sub>) of 160Ω

    ## 電話線網路

    ## 電話線供電系統
    可供電瓦數,損耗
    mΩ/m
    AWG 越小越粗

    電話線線徑 2C 一般為 0.65mm,多P線為 0.5mm。
    電信機房到家用的是 0.4mm 多P 銅纜線...(600P)

    網路線強調高頻信號傳輸,對絞的目的就是要減少雜音(Noise),串音(Crosstalk)等干擾,橙/白橙,綠/白綠絞線次數每英吋約4次,藍/白藍,棕/白棕絞線次數每英吋約3次。

    有廠牌的 CAT6 網路線 23 AWG

    ### 並聯供電
    跟隨電壓供應電流
    電話可能摘機,所以供應電流只能緩慢增加

    ### 沒用的線路獨立供電

    ##
    [利用電話線供電的雙音門鈴電路圖](http://cocdig.com/docs/show-post-33268.html)

    ## FXS to FXO converter
    ARTECH AX301 http://www.artech.com.tw/showdetail.php?id=97&lang=EN

2015年9月21日 星期一

SSDP

Simple Service Discovery Protocol (SSDP) 協定用來在 LAN 上公佈或尋找網路服務,不需要透過類似 DHCP 這種集中式提供設定的伺服器。SSDP 是 UPnP 的基礎並已經合併到 UPnP 協定中。

SSDP 基於 HTTPU (使用 UDP 的 HTTP),使用 UDP port 1900 及下列可能的 multicast IP 位址
  • 239.255.255.250 (IPv4 site-local)
  • FF02::C (IPv6 link-local)
  • FF05::C (IPv6 site-local)
  • FF08::C (IPv6 organization-local)
  • FF0E::C (IPv6 global)
  • source-specific multicast addresses (IPv6 local routing prefix with group ID C)
SSDP 使用 HTTP NOTIFY 公佈網路服務的建立或撤離。用戶使用 HTTP M-SEARCH 詢問可用的網路服務,如果有的話會收到單播回應。

參考來源
  1. https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol
延伸閱讀

2015年9月18日 星期五

Firefox 使用

擴充套件 (Add-ons)
  • 「Ubuntu Firefox Modifications」不知作用是什麼,停用。
  • 新增「Wiktionary and Google Translate」[參考]
  • Firefox 版的 µBlock (取代 Adblock Plus,現為 uBlock Origin)
  • sudo apt-get install flashplugin-installer
    • 2016/04/21 11.2.202.616ubuntu0.15.10.1, firefox 45.0.2+build1-0ubuntu0.15.10.1
  • Screengrab: 擷取顯示,可選擇區塊 (參考:How to Take a Screenshot in Linux (Ubuntu))。後來發現 gnome screenshot 可不限於 Firefox 視窗內容。
  • Wiktionary and Google Translate
  • Video DownloadHelper
  • DownThemAll!
  • MediaWrap:將 ActiveX 多媒體控制項轉換成 Firefox 可支援的形式,在這裏也有介紹。
  • Web Slide Show Extension
  • 作為檔案管理員 Firefly 中文簡介
  • It's All Text!:使用外部程式編輯網頁文字區 (textarea)
  • Update Scanner:監視任何網頁的更新情況,可設定監視頻率:由每5 分鐘一次到每天一次都可以,以及更新的敏感度:由所有改變都通知、10 字、50 字、100 字、500 字的更新、到手動更新均可,還可以忽略數字的改變。參考 Firefox:Update Scanner 監控網頁更新
  • AutoHide -- Full FullScreen for Firefox
  • HideTabBar --

PDF 相關

2015年9月10日 星期四

MAC Address

MAC Address
  • 48 bits (6 octets),通常以 12 個十六進位數字表示。
  • 第一 octet 的 bit 0 設為 1 是 multicast (反之為 unicast),bit 1 設為 1 是 locally administered (反之 globally unique)。globally unique 時,前 24-bit 是 OUI (Organizationally Unique Identifier),後 24-bit 由註冊 OUI 擁有者自行維護。locally administered 時,不受這些限制,由網管指定。
  • 註冊 MAC address
    • 註冊 OUI:有 24-bit 位址範圍可用 (約16,000,000個), 費用 US$1650
    • 註冊 IAB (Individual Address Block):使用 IEEE Registration Authority 的 OUI 及 12-bit IEEE 提供的 bits,有12-bit 位址範圍可用 (4,096個), 費用 US$550
  • MAC-48:預估 2100 年用完。另外還有 EUI-48 及 EUI-64
    • EUI-48 (48-bit Extended Unique Indentifier) 一樣 48-bit,和 MAC-48 的差別不清。
    • EUI-64 (64-bit Extended Unique Indentifier) 有 64-bit
    • MAC-48 轉換成 EUI-64:OUI 後面插入FF-FF
    • EUI-48 轉換成 EUI-64:OUI 後面插入 FF-FE
特殊 MAC Address
  • FF-FF-FF-FF-FF-FF:broadcast 位址,用在 RARP、ARP 等。
  • 00-00-5E-xx-xx-xx:IANA 的 OUI
    • 00-00-5E-00-01-xx:VRRP – IETF RFC 2338, Virtual Router Redundancy Protocol
    • 01-00-5E-00-00-00 ~ 01-00-5E-7F-FF-FF:IPv4 Multicast,後 23-bit 是 Multicast IP 位址後面的 23-bit。EtherType = 0800h (IP). IP Version = 4 and the Protocol field = 02h:IGMP。
  • 01-80-C2-xx-xx-xx:00-80-C2 是 IEEE 802.1 COMMITTEE 的 OUI。
    • 01-80-C2-00-00-00:Spanning Tree, ...。
  • 33-33-xx-xx-xx-xx:
    • EtherType = 0800h (IP). IP Version is 4 and the Protocol field is 3AH (ICMP): MLD_IP
    • EtherType = 86DDh (IP). IP Version is 6 and the Protocol field is 3AH (ICMP): MLD_IPv6
參考
  1. http://en.wikipedia.org/wiki/MAC_address
  2. Ethernet 封包格式與長度 (本站)
最後更新 20200721

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...