Đặt vấn đề Ngày nay, các thiết kế vi mạch có số lượng chân lớn ngày càng phô biến và mật độ tích hợp các linh kiện trên một bo mạch ngày cảng tăng cao. Di kèm với đó là vấn đề kiểm tra, kiểm thử thiết kế trở nên phức tạp, cần được cải thiển với độ chính xác cao và tốn it thời gian hơn. Do đó, các phương pháp kiểm tra thiết kế dan được hoàn thiện và tạo thành một hệ thống sỡ lỗi hoàn chỉnh. Hệ thống này cho phép người dùng kiểm tra, gỡ lỗi trực tiếp trên thiết kế.
Hệ thống gỡ lỗi có thiết kế phức tạp và được chia làm hai hệ thống chính: phần mềm và phần cứng. Phần mềm được thiết kế nhằm tạo nên một môi trường cho phép người dùng dé dàng kiểm tra gỡ lỗi. Đối với phần cứng thì được thiết kế như một hệ thống SoC bao gồm cả thiết kế cần kiểm tra. Hai hệ thống này được thiết kế tách biệt hoàn toàn với nhau, dé hai hệ thống này có thé giao tiếp với nhau người ta thường sử dụng một chuẩn giao thức được gọi là JTAG.
Nhiều hệ thống gỡ lỗi ngày nay chủ yếu sử dụng chuẩn giao thức JTAG này, nhờ có nó nên nhiều phương pháp kiểm tra hiện này có độ chính xác cao và giúp tiết kiệm thời gian và chi phí khi kiểm tra. Các nghiên cứu liên quan Ngày nay, giao thức JTAG được sử dụng rất phô biến, ứng dụng của nó hầu hết nằm trong các hệ thống SoC, hệ thống gỡ lỗi. Các nghiên cứu ứng dụng JTAG hầu hết đều có thiết kế theo chuẩn IEEE 1149. Hiện nay, trong nước ta chưa có bai viết nghiên cứu ứng dụng JTAG cụ thể, tuy nhiên có một số bài viết giới thiệu về JTAG.
Bài viết của tác giả Nguyễn Quân vào năm 2019 trên trang blog cá nhân, giới thiệu về JTAG, ứng dụng và các kiến thức liên quan khác. Ngoài ra, bài viết còn trình bày ứng dụng lập trình bộ nhớ trên 3 chip tích hợp với giao thức JTAG, ứng dụng nay gan tương tự với một hệ thống gỡ lỗi phan cứng. Với các nghiên cứu ở nước ngoài hầu hết đều có ứng dụng cụ thể. Như bài nghiên cứu có tên “A High-Performance SoC Debug Platform” của nhóm tác giả Kuo-Kai Liu, Wen-Hsuan Hsu & Kuen-Jong Lee được công bố vào năm 2015, nghiên cứu trình bay một hệ thống gỡ lỗi hoàn chỉnh được nhóm tác giả hoàn thiện.
Hệ thống này là một ứng dụng phô biến của JTAG hiện nay. Bên cạnh đó, trong thư viện các đề tài khóa luận đã tốt nghiệp của Khoa Kỹ thuật Máy tính — Trường Dai học Công nghệ Thông tin cũng có một nghiên cứu về JTAG-TAP hỗ trợ cho vi xử lý MIPS-32bits của tác giả Chướng Sec Váy. Ở nghiên cứu này, nhóm sẽ dựa trên thiết kế của anh Chướng Sec Váy để đánh giá so sánh về mức độ cải tiên của đê tài. Mục tiêu đề tài Tìm hiểu, nghiên cứu chức năng hoạt động, đồng thời kiêm tra chức năng thiết kế JTAG-TAP.
Thiết kế lõi vi xử ly RISC-V RV32I, sau đó kiểm tra chức năng hoạt động của thiết kế. Tích hợp khối điều khiên JTAG-TAP với lõi vi xử lý RISC-V RV32I, thiết kế các lệnh phù hợp trên lõi điều khiên JTAG-TAP nhằm hỗ trợ cho việc nạp lệnh chương trình và gỡ lỗi của lõi vi xử lý RISC-V. Xây dựng test-bench, test case dé kiểm tra hoạt động toàn bộ thiết kế. Khi đã chắc chăn thiết kế hoạt động đúng, tiễn hành viết code cho module Arduino Nano nhằm điều khiển I/O port của FPGA.
Hiện thực và tối ưu kết quả trên board mach FPGA. Ở đây nhóm sử dụng board mạch DE2 Cyclone II của tập đoàn Altera. So sánh thiết kế với khóa luận trước Đặc điểm nghiên cứu | Khóa luận trước Thiết kế này FPGA Virtex 7 DE2 Cyclone II Tần số 55,6 MHz Cao hơn khóa luận trước Chức năng Chỉ hỗ trợ debug | Hỗ trợ nạp lệnh và debug Chương 2. TONG QUAN VE GIAO THUC GIAO TIẾP JTAG 2.
Giới thiệu tổng quan về JTAG Giao thức JTAG là cách gọi ngắn gọn theo tên của nhóm tạo ra chuẩn giao tiếp này. Tên chính thức của chuẩn giao tiếp này là “IEEE Standard Test Access Port and Boundary Scan Architecture”. Trong đó, hai nội dung chính được đề cập: e Nội dung về TAP quy định giao tiếp và hoạt động của TAP trên chip. e Boundary Scan quy định một phương pháp và cách thức kiểm tra các kết nối bên trong chip và các chân trên bo mach in.
JTAG là một giao thức được sử dụng trong việc kiểm tra, nạp chương trình và gỡ lỗi các vi mạch số. Nó cung cấp khả năng truy cập và điều khiển các thành phần nội bộ của một hệ thống số, bao gồm vi xử lý, bộ nhớ và các thiết bị ngoại vi. Giao thức JTAG sử dụng các tín hiệu đồng bộ để truyền dữ liệu và kiểm soát trạng thái của các thành phần. TAG-TAP cho phép truy cập và điều khién các thành phan nội bộ của một hệ thống số thông qua các tín hiệu và trạng thái đã đề cập.
Nó được sử dụng rộng rãi trong việc nạp chương trình vào vi điều khién và FPGA kiểm tra lỗi và gỡ lỗi vi mạch số, thậm chí trong việc phân tích và đọc lại các thiết kế vi mạch. JTAG-TAP cung cấp khả năng truy cập đầy đủ vào các thành phần nội bộ của một vi mạch sé, bao gồm thanh ghi dữ liệu (data registers), thanh ghi chỉ thi (instruction registers), các mạch kiểm tra logic (logic test circuits) và các thành phần khác. Nó cho phép lập trình, đọc và ghi dữ liệu vào các thanh ghi, kiểm tra và điều khiển các tín hiệu nội bộ, thậm chí thay đổi cấu hình của vi mạch. Tính linh hoạt và khả năng truy cập mạnh mẽ của JTAG-TAP đã làm cho nó trở thành một công cụ quan trọng trong việc xây dựng, kiểm tra và gỡ lỗi các hệ thống số phức tạp.
Nó được sử dụng trong nhiều lĩnh vực như thiết kế vi mạch, sản xuất, nghiên cứu và phát triên phân mêm nhúng. Lịch sử phát triển Vào những năm 80 của thé ki 20, mach in nhiều lớp, mạch tích hợp với số lượng chân lớn có dạng đóng gói ở dạng mạng lưới như ball grid array hoặc pin grid array và các bo mạch in có tích hợp số lượng lớn linh kiện ngày càng phổ biến. Do đó, khiến việc kiểm tra kết nối của chip trên bo mạch phức tạp, tốn nhiều thời gian và khó sử dụng phương pháp đầu dò (probe) thông thường. Bên cạnh đó, tại thời điểm này, việc kiểm tra một bo mạch chủ yếu dựa vào hai phương pháp Bed-of-nails và kiểm tra chức năng (function test).
Bed-of-nails, tạm dịch là “nền đinh”. Phương pháp này kiểm tra bo mạch bang cách đặt bo mach cần kiểm tra lên trên nền đỉnh hay còn gọi là đầu do, tiếp xúc trực tiếp với các điểm kiểm tra trên bo mạch đề thực hiện việc kiểm tra. Kiểm tra chức năng là việc kiểm tra khả năng hoạt động của một linh kiện bằng cách đưa các mẫu (giá trị) kiểm tra đến linh kiện cần kiểm tra và giám sát các đáp ứng từ linh kiện này. Việc chỉ sử dụng hai phương pháp trên làm thời gian kiểm tra lâu, chi phí cao.
Năm 1985, tô chức Joint Test Action Group được thành lập và bat đầu phát triển một tiêu chuẩn giải quyết các van đề trên. Giữa năm 1986 và 1988, tiêu ban kỹ thuật JTAG (JTAG Technical Subcommittee) đã phát triển và công bố một nhóm các đề xuất về dạng chuẩn của boundary-scan. Trong năm 1988, JTAG được quyết định sẽ trở thành nền tảng của một tiêu chuẩn trong họ Bus kiểm tra (Testability Bus) va dự án P1149.1 được khởi động. Vào thang 2 năm 1990, chuẩn giao tiếp này được phê duyệt lần đầu tiên và được tiếp tục chỉnh sửa, nâng cấp và hoàn thiện.
Tháng 6 năm 1993, phiên bản IEEE Std 1149.1-1193 được chấp nhận với những bổ sung thêm: e Hai lệnh tùy chon là CLAMP và HIGH-Z. e Cơ chế cho phép chuyển đổi chế độ hoạt động của một thành phan (component) tương thích chuẩn này sang một cơ chế DFT khác. Tháng 9 năm 1994, phiên bản IEEE Std 1149.1b-1994 được chấp nhận. Bản này bổ sung thêm phụ lục về ngôn ngữ mô tả Boundary-scan (Boundary-Scan Description Language).
Phiên bản mới nhất được sử dụng cho tới ngày nay là IEEE 1149. Phiên bản này có nhiêu bô sung hơn so với các phiên bản trước đó: Các lệnh mới của JTAG: CLAMP_HOLD, TMP_STATUS, CLAMP_RELEASE, ECIDCODE, INIT_ SETUP, INIT_SETUP_CLAMP, INIT_RUN, IC_RESET. Phu luc C về ngôn ngữ mô ta thủ tục PDL (Procedural Description Language), một ngôn ngữ mới ghi lai các yêu cầu về thủ tục và dit liệu cho các lệnh mới. Phụ lục D trình bày thêm các ví dụ cho BSDL và PDL khi sử dụng cùng nhau.
Phụ lục E đưa ra một số ví dụ pseudo-code về việc thực thi của lệnh iApply trong PDL, một lệnh phức tạp nhất trong các lệnh mới của PDL. Một số chỉnh sửa bổ sung khác. Ứng dụng So với các phương pháp kiểm tra trước đó, phương pháp sử dụng giao thức giao tiếp JTAG có nhiều ưu điểm hơn như: Số lượng chân giao tiếp ít. Hoạt động của giao thức đơn giản làm cho thiết kế phần cứng cũng như lập trình phần mềm đơn giản hơn.
Tính linh động, cho phép tích hợp nhiều chức năng riêng. Với những ưu điểm trên, JTAG được sử dụng rộng rãi với nhiều mục đích như: Program - Nạp chương trình cho chip. Chip test - Kiểm tra kết nói và hoạt động bên trong chip sau khi chế tạo thông qua việc điều khiển các thành phan DFT của chip. Debug - hoạt động của chip trong quá trình phát triển phần mềm, firmware và software.
Connection test - Kiểm tra kết nói khi chip tích hợp trên bo mạch in. THIẾT KE LOI DIEU KHIỂN JTAG - TAP 3. Tống quan thiết kế JTAG 3. Mô tả thiết kế Thiết kế của chuẩn giao tiếp JTAG dựa theo chuan IEEE 1149.1 có sơ đồ kiến trúc được mô tả như Hình 3.
Device TD Register š (DR) š User Data Register - xn 1 (DR) > 1 ser Data Register- n (DR) Instruction Decoder TDI TAP Controller TCK TMS Hình 3. So đồ thiết kế chuẩn giao tiếp JTAG Kiến trúc của chuẩn giao tiếp JTAG bao gồm các thành phan chính sau đây: © Các chân giao tiếp JTAG được gọi là TAP bao gồm các chân: TCK, TMS, TRST, TDI, TDO. e TAP Controller- bộ điều khiển chính của thiết kế. Các tín hiệu điều khiển từ bus master sẽ được bộ điều khiển này nhận và tạo ra các tín hiệu điều khiến cho các thanh ghi và các thành phần khác.
e Thanh ghi lệnh — IR, thành phan lưu trữ lệnh điều khiển của JTAG.