Chủ Nhật, 3 tháng 11, 2019

[JTAG] Bài 2 - Mô tả bộ điều khiển TAP

Bài viết này mô tả hoạt động của bộ điều khiển logic JTAG, gọi là bộ điều khiển TAP (TAP controller) bên trong chip. Các thuật ngữ và từ viết tắt, các bạn xem trong bài 1.
Danh sách bài viết trước đó:

1) Cấu trúc cơ bản của bộ điều khiển TAP
Bộ điều khiển TAP, gồm hai thành phần cơ bản sau đây:
  • Máy trạng thái (FSM) đồng bộ dùng để xác định trạng thái hoạt động hiện tại của bộ điều khiển. Mỗi trạng thái quy định chức năng và hoạt động khác nhau của logic JTAG. FSM là nguồn gốc tạo ra các tín hiệu điều khiển cho logic kiểm tra.
  • Logic điều khiển các thành phần test sinh ra từ FSM. Dựa trên trạng thái của FSM, các tín hiệu điều khiển như lựa chọn thanh ghi, cho phép dịch, cho phép cập nhật dữ liệu thanh ghi, ...
2) Máy trạng thái của bộ điều khiển TAP
2.1) Nguyên lý hoạt đông của FSM
FSM hoạt động dựa trên cạnh lên của TCK và giá trị của TMS. Giá trị của TMS sẽ quyết định việc chuyển trạng thái của FSM.
Hình 1: Một ví dụ về việc chuyển trạng thái của FSM
Một ví dụ về chuyển trạng thái FSM được mô tả ở hình trên.
  1. Tại cạnh lên TCK, TMS=0, FSM chuyển từ một trong ba trạng thái TEST_LOGIC_RESET, UPDATE_DR hoặc UPDATE_IR đến trạng thái RUN_TEST_IDLE
  2. Tại cạnh xuống TCK, TMS chuyển thành mức logic 1
  3. Tại cạnh lên TCK, TMS=1, FSM chuyển sang trạng thái SELECT_DR_SCAN
FSM có hai quá trình chính là quá trình điều khiển thanh ghi lệnh (IR) và quá trình điều khiển các thanh ghi dữ liệu (DR). Trong quá trình điều khiển IR, IR sẽ được nạp và đọc dữ liệu. Trong quá trình điều khiển các thanh ghi DR, một thanh ghi DR được chọn sẽ được nạp và đọc dữ liệu. 
Quá trình điều khiển IR gồm các trạng thái có chứa ký tự “_IR”: 
  • SELECT_IR_SCAN 
  • CAPTURE_IR 
  • SHIFT_IR 
  • EXIT1_IR 
  • PAUSE_IR 
  • EXIT2_IR 
  • UPDATE_IR 
Quá trình điều khiển DR gồm các trạng thái có chứa ký tự “_DR”: 
  • SELECT_DR_SCAN 
  • CAPTURE_DR 
  • SHIFT_DR 
  • EXIT1_DR 
  • PAUSE_DR 
  • EXIT2_DR 
  • UPDATE_DR 
Hai trạng thái không thuộc hai quá trình trên là: 
  • TEST_LOGIC_RESET
  • RUN_TEST_IDLE
Hình 2: FSM của bộ điều khiển TAP
2.2) Mô tả các trạng thái 
2.2.1) Những lưu ý 
Tên trạng thái trong tài liệu này không giống hoàn toàn tên theo chuẩn IEEE Std 1149.1 nhưng các ký tự được giữ lại như tài liệu IEEE. Ví dụ, TEST_LOGIC_RESET ứng với Test-Logic-Reset trong tài liệu IEEE. 
Mỗi trạng thái sẽ được mô tả ba điểm chính là ý nghĩa và mục đích của trạng thái, các điều kiện chuyển từ trạng thái khác đến trạng thái đang được mô tả và các hoạt động được cho phép trong trạng thái hiện tại. 
Tên các trạng thái thể hiện rõ ý nghĩa và hoạt động của logic kiểm tra trong trạng thái đó. Ví dụ, RUN_TEST_IDLE là trạng thái sẽ thực thi “run test” hoặc “idle”. 
“Quá trình scan” là một thuật ngữ chỉ một hoặc một nhóm các quá trình điều khiển IR và quá trình điều khiển DR được thực thi liên tiếp nhau. 
2.2.2) TEST_LOGIC_RESET 
Ý nghĩa: 
Đây là trạng thái reset các logic JTAG. Trong trạng thái này, logic JTAG bị tắt, không hoạt động. Lúc này, logic hệ thống có thể hoạt động bình thường mà không bị ảnh hưởng bởi các logic kiểm tra. 
Điều kiện chuyển trạng thái: 
TRST* tích cực bằng cách lái mức thấp. Tuy nhiên đây chỉ là một chân tùy chọn nên nhiều logic JTAG thực tế không hỗ trợ chân này 
Reset khi vừa cấp nguồn cho chip, gọi là power-up hoặc power-on reset. 
Khi FSM ở một trạng thái bất kỳ, khác với TEST_LOGIC_RESET, chỉ cần lái TMS=1 liên tục trong ít nhất 5 chu kỳ clock TCK. 
Hoạt động: 
Nạp lệnh IDCODE vào IR. Nếu không logic JTAG không hỗ trợ thanh ghi DEVICE ID thì lệnh BYPASS được nạp vào IR. 
Các logic kiểm tra khác không hoạt động. 
2.2.3) RUN_TEST_IDLE 
Ý nghĩa: 
Đây là trạng thái để chạy thành phần logic kiểm tra đã được chọn (Run-Test) hoặc trạng thái rảnh (Idle). 
Nó cũng là trạng thái trung gian chuyển đổi giữa hai quá trình xử lý scan. Một quá trình xử lý scan được hiểu là một hoạt động lặp đi lặp lại liên tiếp nhau của quá trình dịch lệnh và dịch dữ liệu. 
Điều kiện chuyển trạng thái: 
Chuẩn bị khởi động logic kiểm tra sau khi reset: TMS=0 trong các trạng thái TEST_LOGIC_RESET. 
Kết thúc một quá trình scan: TMS=0 trong trạng thái UPDATE_DR hoặc UPDATE_IR. 
Hoạt động: 
Chỉ thành phần logic kiểm tra đã được chọn bởi lệnh đã nạp trong IR mới được phép hoạt động. Ví dụ, lệnh hiện tại nạp trong IR là RUNBIST thì thành phần Buit-In-Self-Test (BIST) trong chip sẽ hoạt động. BIST là thành phần logic nhúng bên trong chip, được thiết kế để phục vụ cho việc tự test một phần logic hệ thống. 
Những lệnh không kích hoạt bất kỳ hoạt động nào của các logic kiểm tra thì tất cả các thanh ghi dữ liệu kiểm tra phải giữ nguyên trạng thái trước đó. 
2.2.4) SELECT_DR_SCAN 
Ý nghĩa: 
Đây là trạng thái trung gian (trạng thái tạm) chọn các thanh ghi dữ liệu (DR) tùy theo lệnh hiện tại có trong IR. 
Điều kiện chuyển trạng thái: 
Bắt đầu một quá trình scan mới: TMS=1 trong trạng thái RUN_TEST_IDLE. 
Kết thúc một quá trình điều khiển DR: TMS=1 trong trạng thái UPDATE_DR. 
Kết thúc một quá trình điều khiển IR: TMS=1 trong trạng thái UPDATE_IR. 
Hoạt động: 
Chọn một hoặc nhiều thanh ghi DR. 
Lệnh trong IR không đổi. 
2.2.5) CAPTURE_DR 
Ý nghĩa: 
Đây là trạng thái nạp song song các dữ liệu cho các thanh ghi DR. Dữ liệu được nạp là dữ liệu mà người thiết kế mong muốn sẽ đọc được thông qua TDO. Dữ liệu này có thể là một giá trị cố định, lấy từ logic hệ thống, lấy từ các chân chip hoặc từ logic kiểm tra. 
Điều kiện chuyển trạng thái: 
Bắt đầu quá trình điều khiển DR: TMS=0 trong trạng thái SELECT_DR_SCAN 
Hoạt động: 
Các DR có thể được nạp giá trị mới hoặc giữ nguyên giá trị trước đó tùy thuộc vào lệnh hiện tại trong IR. 
Lệnh trong IR không được thay đổi. 
2.2.6) SHIFT_DR 
Ý nghĩa: 
Đây là trạng thái dịch dữ liệu vào DR thông qua TDI và dịch dữ liệu từ DR ra TDO. 
Điều kiện chuyển trạng thái: 
Sau khi kết thúc việc nạp dữ liệu cho DR: TMS=0 trong trạng thái CAPTURE_DR. 
Hoạt động: 
Kết nối TDI và TDO với DR mong muốn dựa trên lệnh hiện tại trong IR. 
Thực thi dịch nối tiếp dữ liệu trên DR theo từng cạnh lên của TCK. 
2.2.7) EXIT1_DR 
Ý nghĩa: 
Đây là trạng thái trung gian (trạng thái tạm). Từ trạng thái này FSM có thể chuyển qua trạng thái tạm dừng quá trình dịch dữ liệu trên DR hoặc thoát khỏi quá trình này. 
Điều kiện chuyển trạng thái: 
Sau khi nạp dữ liệu cho DR: TMS=1 trong trạng thái CAPTURE_DR 
Sau khi dịch dữ liệu trên DR: TMS=1 trong trạng thái SHIFT_DR 
Hoạt động: 
Các thanh ghi DR đang được chọn bởi lệnh hiện tại trong IR phải giữ nguyên giá trị. 
Lệnh trong IR không được thay đổi. 
2.2.8) PAUSE_DR 
Ý nghĩa: 
Đây là trạng thái dừng tạm thời quá trình dịch dữ liệu trên DR. 
Điều kiện chuyển trạng thái: 
Sau khi thoát khỏi trạng thái dịch DR: TMS=0 trong trạng thái EXIT1_DR. 
Hoạt động: 
Các thanh ghi DR đang được chọn bởi lệnh hiện tại trong IR phải giữ nguyên giá trị. 
Lệnh trong IR không được thay đổi. 
2.2.9) EXIT2_DR 
Ý nghĩa: 
Đây là trạng thái trung gian (trạng thái tạm). Từ trạng thái này FSM có thể quay lại thực thi tiếp việc dịch dữ liệu trên DR hoặc thoát hẳn khỏi quá trình dịch DR hiện tại. 
Điều kiện chuyển trạng thái: 
Khi đang tạm dừng quá trình dịch DR: TMS=1 trong trạng thái PAUSE_DR. 
Hoạt động: 
Các thanh ghi DR đang được chọn bởi lệnh hiện tại trong IR phải giữ nguyên giá trị. 
Lệnh trong IR không được thay đổi. 
2.2.10) UPDATE_DR 
Ý nghĩa: 
Đây là trạng thái lưu lại giá trị của DR và cũng là trạng thái kết thúc của một quá trình điều khiển DR. 
Điều kiện chuyển trạng thái: 
Sau khi thoát khỏi quá trình dịch DR: 
  • TMS=1 trong trạng thái EXIT1_DR 
  • TMS=1 trong trạng thái EXIT2_DR 
Hoạt động: 
Việc lưu lại giá trị của DR có thể thực hiện bằng cách chốt giá trị từ thanh ghi dịch DR vào một thanh ghi khác hoặc đơn giản là chỉ giữ nguyên giá trị DR hiện tại. 
Lệnh trong IR không được thay đổi. 
2.2.11) SELECT_IR_SCAN 
Tương tự SELECT_DR_SCAN nhưng thực thi trên IR 
2.2.12) CAPTURE_IR 
Tương tự CAPTURE_DR nhưng thực thi trên IR 
2.2.13) SHIFT_IR 
Tương tự SHIFT_DR nhưng thực thi trên IR 
2.2.14) EXIT1_IR 
Tương tự EXIT1_DR nhưng thực thi trên IR 
2.2.15) PAUSE_IR 
Tương tự PAUSE_DR nhưng thực thi trên IR 
2.2.16) EXIT2_IR 
Tương tự EXIT2_DR nhưng thực thi trên IR 
2.2.17) UPDATE_IR
Tương tự UPDATE_DR nhưng thực thi trên IR

3) Quá trình điều khiển thanh ghi

Mục này mô tả một sơ đồ khối minh họa quá trình điều khiển thanh ghi thông qua FSM. Trong sơ đồ khối này:
  • FSM là máy trạng thái của TAP controller đã mô tả trên đây. Tùy vào trạng thái của FSM mà một hoạt động tương ứng sẽ tác động lên thanh ghi IR hoặc một trong các thanh ghi DR 
  • Trạng thái CAPTURE_* sẽ điều khiển nạp dữ liệu cho thanh ghi dịch. 
  • Trạng thái SHIFT_* sẽ điều khiển dữ liệu dịch nối tiếp từ TDI đến thanh ghi dịch và từ thanh ghi dịch đến TDO. 
  • Trạng thái UPDATE_* sẽ điều khiển việc lưu lại giá trị của thanh ghi dịch vào một thanh ghi lưu trữ
Hình 3: Sơ đồ nguyên lý điều khiển thanh ghi
4) Waveform
Hình 4 minh họa một quá trình điều khiển thanh ghi dịch IR. Trong ví dụ này, thanh ghi dịch IR có độ rộng 4 bit. Để có thể hiểu giản đồ minh họa này, bạn cần chú ý đến các nguyên tắc cơ bản đã trình bày ở các mục trên: 
  • Ngõ vào được lấy mẫu giá trị tại cạnh lên TCK. Các ngõ vào này được lái bởi một bus master. Thông thường bus master lái các ngõ vào này theo cạnh xuống TCK. 
  • TDO cập nhật giá trị theo cạnh xuống TCK 
  • FSM đổi trạng thái theo giá trị của TMS tại cạnh lên TCK 
Đối với IR, một điểm lưu ý quan trọng là tại trạng thái CAPTURE_IR, 2 bit LSB nạp cho IR phải có giá trị là “01” còn các bit MSB có giá trị tùy chọn theo ý muốn người thiết kế.
Hình 4: Một quá trình điều khiển thanh ghi dịch IR
Thứ tự hoạt động của logic JTAG trong hình 10 như sau:
(1) Tại cạnh lên TCK, TMS=0, FSM chuyển trạng thái từ TEST_LOGIC_RESET sang RUN_TEST_IDLE
(2) Tại cạnh lên TCK, TMS=1, FSM chuyển trạng thái từ RUN_TEST_IDLE sang SELECT_DR_SCAN
(3) Tại cạnh lên TCK, TMS=1, FSM chuyển trạng thái từ SELECT_DR_SCAN sang SELECT_IR_SCAN
(4) Tại cạnh lên TCK, TMS=0, FSM chuyển trạng thái từ SELECT_IR_SCAN sang CAPTURE_IR
(5) Tại cạnh lên TCK, TMS=0, FSM chuyển trạng thái từ CAPTURE_IR sang SHIFT_IR. Đồng thời, hoạt động sau được thực hiện:
  • IR được nạp một giá trị là 1001, trong đó 2 bit LSB “01” là bắt buộc còn 2 bit MSB là tùy chọn của người thiết kế 
  • Tại cạnh xuống TCK, giá trị bit LSB của IR cập nhật đến TDO
(6) Tại cạnh lên TCK, TMS=0, FSM giữ nguyên trạng thái SHIFT_IR. Đồng thời, hoạt động sau được thực hiện:
  • IR dịch phải, bit LSB bị dịch mất và giá trị TDI nạp vào bit MSB 
  • Tại cạnh xuống TCK, giá trị bit LSB của IR cập nhật đến TDO
(7) Tại cạnh lên TCK, TMS=0, FSM giữ nguyên trạng thái SHIFT_IR. Đồng thời, hoạt động sau được thực hiện: 
  • IR dịch phải, bit LSB bị dịch mất và giá trị TDI nạp vào bit MSB 
  • Tại cạnh xuống TCK, giá trị bit LSB của IR cập nhật đến TDO 
(8) Tại cạnh lên TCK, TMS=0, FSM giữ nguyên trạng thái SHIFT_IR. Đồng thời, hoạt động sau được thực hiện: 
  • IR dịch phải, bit LSB bị dịch mất và giá trị TDI nạp vào bit MSB 
  • Tại cạnh xuống TCK, giá trị bit LSB của IR cập nhật đến TDO 
(9) Tại cạnh lên TCK, TMS=1, FSM chuyển trạng thái từ SHIFT_IR sang EXIT1_IR. Đồng thời, hoạt động sau được thực hiện: 
  • IR dịch phải, bit LSB bị dịch mất và giá trị TDI nạp vào bit MSB. Lúc này, 4 bit của IR đã được lấp đầy bởi 4 bit mới từ TDI 
  • Tại cạnh xuống TCK, ngõ ra TDO bị ngắt và trạng thái là high-z. 
(10) Tại cạnh lên TCK, TMS=1, FSM chuyển trạng thái từ EXIT1_IR sang UPDATE_IR.
(11) Tại cạnh lên TCK, TMS=0, FSM chuyển trạng thái từ UPDATE_IR sang RUN_TEST_IDLE. Đồng thời, hoạt động sau được thực hiện:
  • Giá trị IR được lưu lại trong một thanh ghi khác của logic JTAG. Giá trị thanh ghi này sẽ được dùng để giải mã lệnh cho các hoạt động tiếp theo.
Trong giản đồ trên, giá trị mặc định của thanh ghi lưu giá trị IR là mã lệnh của lệnh IDCODE (một lệnh quy định trong chuẩn JTAG).
Quá trình điều khiển DR là tương tự nhưng không bị ràng buộc điều kiện “2 bit LSB là 01”, dưới đây là hai giản đồ minh họa khác lấy từ tài liệu IEEE 1149.1-2001 để bạn đọc có thể tham khảo và tự giải thích hoạt động.
Hình 5: Quá trình điều khiển IR của bộ điều khiển TAP
Hình 6: Quá trình điều khiển DR của logic JTAG
5) Kết nối của TDO ứng với mỗi trạng thái của TAP
Theo quy định, TDO chỉ được lái giá trị (active) từ logic JTAG trong 2 trạng thái SHIFT_IR và SHIFT_DR. Trong các trạng thái khác TDO là high-z (inactive).
Trong trạng thái SHIFT_IR, thanh ghi IR kết nối đến TDO.
Trong trạng thái SHIFT_DR, thanh ghi DR kết nối đến TDO.
Hình 7: Bảng quy định hoạt động của logic kiểm tra ứng với mỗi trạng thái của TAP (1)

Tài liệu tham khảo:
1) Test Technology Standards Committee; IEEE Std 1149.1-2001 - IEEE Standard Test Access Port and Boundary-Scan Architecture; 14.Jun.2001
2) Lauterbach GmbH; Training JTAG Interface; 16.Apr.2019

Lịch sử cập nhật:
1) 2019.11.03 - Tạo lần đầu

0 bình luận:

Đăng nhận xét