{"id":332563,"date":"2022-04-28T21:00:31","date_gmt":"2022-04-28T21:00:31","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=332563"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=332563","title":{"rendered":"<span>\u0420\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f JTAG: \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438?<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cf6\/d64\/a2a\/cf6d64a2a4aa1c9e21c6ee5062e5f135.png\" width=\"1333\" height=\"750\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cf6\/d64\/a2a\/cf6d64a2a4aa1c9e21c6ee5062e5f135.png\"\/><figcaption><\/figcaption><\/figure>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/658477\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f JTAG: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/660795\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f JTAG: *.bsdl \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438<\/a><\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f JTAG: \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438?<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0432\u0448\u0438\u0441\u044c \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 JTAG \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0444\u0430\u0439\u043b BSDL \u0434\u043b\u044f \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u043e\u0434\u0443\u043b\u044f JTAG \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0434\u043b\u044f \u041f\u041b\u0418\u0421 (\u043d\u0430 \u00ab\u0421\u0438\u00bb \u0438 \u043d\u0430 \u00abSystemVerilog\u00bb), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\/\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0447\u0435\u0440\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p> \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 JTAG, \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 JTAG \u2014 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u2014 \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<p> \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0451\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u044b\u0434\u0430\u0447\u0438 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u043d\u0435. \u041f\u0443\u0441\u043a\u0430\u0439 \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 4-\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 (\u0431\u0438\u0442\u043e\u0432), \u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab1100\u00bb. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u044b\u0434\u0430\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab0101\u00bb, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u00ab\u0432\u0434\u0432\u0438\u043d\u0443\u0442\u044c\u00bb \u044d\u0442\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u041d\u0430 \u044d\u0442\u043e \u0443\u0439\u0434\u0451\u0442 4 \u0442\u0430\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u043d\u0435 \u0441\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0442\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0442\u0430\u043a\u0442\u043e\u0432 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: 1100\u21921110\u21920111\u21921011\u21920101.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/088\/7b8\/847\/0887b8847019b6763626fba43039020a.png\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/088\/7b8\/847\/0887b8847019b6763626fba43039020a.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u041f\u043e\u0434\u043e\u0431\u043d\u043e\u0435, \u043a\u0432\u0430\u0437\u0438-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e, \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0434\u0430\u0436\u0435 \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0434\u0438\u043d, \u0430 \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 (\u0441\u0435\u043a\u0446\u0438\u0438). \u041f\u0440\u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0434\u0432\u0438\u0433 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044b \u0432 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u0443\u044e (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e) \u0441\u0435\u043a\u0446\u0438\u044e, \u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435) \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u00ab1100\u00bb \u043d\u0430 \u00ab0101\u00bb \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0444\u0440\u043e\u043d\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p> \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430, \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u0448\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0434\u0432\u0438\u0433\u0430 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f (\u0437\u0430\u0445\u0432\u0430\u0442\u0430) \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/539\/27a\/863\/53927a863788a34b6a1c0843f7321b0b.png\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/539\/27a\/863\/53927a863788a34b6a1c0843f7321b0b.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u00bb, \u0442\u0430\u043a \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u00ab\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u00bb, \u0442\u043e \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u0430: \u0437\u0430\u0445\u0432\u0430\u0442 (\u00abCapture\u00bb) \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e, \u0441\u0434\u0432\u0438\u0433 (\u00abShift\u00bb) \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 (\u00abUpdate\u00bb) \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/041\/5fe\/179\/0415fe179f7fb2251fb2e022a88f8020.png\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/041\/5fe\/179\/0415fe179f7fb2251fb2e022a88f8020.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 JTAG, \u0432\u0441\u0435 \u0442\u0440\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0435.<\/p>\n<p> \u0421\u0434\u0432\u0438\u0433 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 JTAG \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abSHIFT\u00a0XX\u00bb. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK, \u043d\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0XX\u00bb.<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0445\u0435\u043c\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 JTAG, \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0XX\u00bb \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u0430. \u041f\u0440\u0438\u0447\u0451\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0431\u0438\u0442, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 TMS \u043d\u0430 \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435, \u0430 \u0432\u0445\u043e\u0434 \u0432 \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (\u043a\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u00abCAPTURE\u00a0XX\u00bb \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0444\u0440\u043e\u043d\u0442\u0430 \u2014 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443. \u0422\u0430\u043a \u0432\u043e\u0442 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u00abCAPTURE\u00a0XX\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/752\/f8e\/08c\/752f8e08c1a56972839782fd5cb26d7e.png\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/752\/f8e\/08c\/752f8e08c1a56972839782fd5cb26d7e.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u0415\u0441\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u00abDEVICE_ID\u00bb, \u0442\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0DR\u00bb \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK \u0432 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u00abBYPASS\u00bb, \u0442\u043e \u0432 \u0442\u043e\u043c \u0436\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK \u0432 \u0435\u0433\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0451\u043d \u043d\u043e\u043b\u044c. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0IR\u00bb \u2014 \u0432 \u043d\u0435\u0433\u043e \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 \u00abINSTRUCTION_CAPTURE\u00bb \u0444\u0430\u0439\u043b\u0430 BSDL.<\/p>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u00abCAPTURE\u00a0XX\u00bb, \u00abUPDATE\u00a0XX\u00bb \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 <strong>\u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c<\/strong> \u0444\u0440\u043e\u043d\u0442\u0435. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e? \u0412\u0435\u0434\u044c \u0433\u043e\u043d\u043a\u0443 \u0444\u0440\u043e\u043d\u0442\u043e\u0432 \u0437\u0434\u0435\u0441\u044c, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0432\u0438\u0434\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443 \u0432\u0441\u0435\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0446\u0435\u043f\u0438 JTAG \u043e\u0431\u0449\u0430\u044f \u043b\u0438\u043d\u0438\u044f TMS, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p> \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0432\u0435\u0441\u044c\u043c\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 JTAG \u0441 \u043e\u0431\u0449\u0435\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043b\u0438\u043d\u0438\u0435\u0439 TCK, \u043d\u043e \u0441 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 TMS!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3f5\/295\/93b\/3f529593bd8ffce35a4b37f51f58b41f.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEEE1149.1-2001\" title=\"\u0421\u0445\u0435\u043c\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEEE1149.1-2001\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f5\/295\/93b\/3f529593bd8ffce35a4b37f51f58b41f.png\"\/><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEEE1149.1-2001<\/figcaption><\/figure>\n<p> \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043c\u0435\u0436\u0434\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438 (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e JTAG \u0438 \u0434\u0435\u043b\u0430\u043b\u0441\u044f) \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430 \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435 \u043e\u0434\u043d\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432\u044b\u0434\u0430\u0434\u0443\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u0430\u0445, \u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 TCK \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 (\u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043b\u0438\u043d\u0438\u0438 \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u043d\u044b, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442) \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0432\u0445\u043e\u0434\u0430\u0445.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b7e\/6a2\/361\/b7e6a236161659845d3bdb8656518ef8.png\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b7e\/6a2\/361\/b7e6a236161659845d3bdb8656518ef8.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 JTAG, \u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u043c \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0443, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u00abUPDATE\u00a0XX\u00bb \u0438 \u00abCAPTURE\u00a0XX\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0440\u043e\u043d\u0442\u0430\u0445.<\/p>\n<p> \u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u00abBOUNDARY\u00bb \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u0445, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0438\u043c.<\/p>\n<p> \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00abSAMPLE\u00bb. \u0415\u0441\u043b\u0438 \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u044d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0442\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0DR\u00bb \u043d\u0430 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435 TCK \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0445\u043e\u0434\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u041f\u0435\u0440\u0435\u0439\u0434\u044f \u0437\u0430\u0442\u0435\u043c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abSHIFT\u00a0DR\u00bb, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0432\u0441\u0435 \u0431\u0438\u0442\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u0447\u0435\u0440\u0435\u0437 TDO \u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b.<\/p>\n<p> \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abEXTEST\u00bb \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445.<\/p>\n<p> \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abEXTEST\u00bb. \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abSHIFT\u00a0DR\u00bb \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u0443\u0442 \u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0430\u043d\u0435\u0435 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abUPDATE\u00a0DR\u00bb. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u043e\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abUPDATE\u00a0DR\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0431\u0438\u0442\u043e\u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abEXTEST\u00bb.<\/p>\n<p> \u041f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u044d\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abUPDATE\u00a0IR\u00bb. \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043c\u044b \u0435\u0449\u0451 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043b\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb, \u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043d\u0435\u0451 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b! \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u044b \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u044d\u0442\u0430 \u0441\u0435\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abPRELOAD\u00bb.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/660\/5bc\/7e5\/6605bc7e529f9322e5d123c7dfcb0835.png\" alt=\"\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abPRELOAD\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb\" title=\"\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abPRELOAD\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/660\/5bc\/7e5\/6605bc7e529f9322e5d123c7dfcb0835.png\"\/><figcaption>\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abPRELOAD\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/99a\/5c2\/be3\/99a5c2be317cf3f68499f70f0e64a6c0.png\" alt=\"\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abEXTEST\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb\" title=\"\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abEXTEST\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb\" width=\"4724\" height=\"2362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/99a\/5c2\/be3\/99a5c2be317cf3f68499f70f0e64a6c0.png\"\/><figcaption>\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abEXTEST\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb<\/figcaption><\/figure>\n<p> \u0422\u0430\u043a \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abSAMPLE\u00bb \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0441\u0431\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0445 \u0432\u044b\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 TDO, \u0430 \u00abPRELOAD\u00bb \u2014 \u0437\u0430\u0434\u0432\u0438\u0433\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 TDI, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u0431\u0440\u043e\u0441 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e (\u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u00ab\u0432\u044b\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u00bb \u0438 \u00ab\u0437\u0430\u0434\u0432\u0438\u0433\u0430\u043d\u0438\u0435\u00bb \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0434\u0432\u0438\u0433\u0430), \u0442\u043e \u044d\u0442\u0438 \u0434\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u0443 \u2014 \u00abSAMPLE\/PRELOAD\u00bb. \u0412 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 1990 \u0433\u043e\u0434\u0430 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u0436\u0451\u0441\u0442\u043a\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b, \u043d\u043e \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 2001 \u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b\u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043e\u0434\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043b\u0438\u0431\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432.<\/p>\n<p> \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u00abBOUNDARY\u00bb \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0442\u043a\u0430 \u00abIR\u00bb \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430, \u0430 \u043d\u0435 \u0432\u0435\u0442\u043a\u0430 \u00abDR\u00bb. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u2014 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0IR\u00bb \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 \u00abINSTRUCTION_CAPTURE\u00bb \u0444\u0430\u0439\u043b\u0430 BSDL), \u0430 \u043f\u043e \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abUPDATE\u00a0IR\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0438 \u043d\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0441\u0438\u043b\u0443.<\/p>\n<h2> \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0435\u0434\u043e\u043c\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 JTAG \u043d\u0430 \u0421\u0438<\/h2>\n<p> \u0417\u043d\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f JTAG, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430. \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u0435 \u00abNUCLEO-F103RB\u00bb, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 (\u0432\u044b\u0432\u043e\u0434 PA5) \u0438 \u043e\u0434\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 (\u0432\u044b\u0432\u043e\u0434 PC13). \u0427\u0430\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 <a href=\"https:\/\/habr.com\/ru\/post\/658477\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0446\u0438\u043a\u043b\u0430. \u041d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p> \u0418\u0442\u0430\u043a.<\/p>\n<p> \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u044b:<\/p>\n<pre><code class=\"cpp\">#define JTMS_PIN GPIO_PIN_1 #define JTCK_PIN GPIO_PIN_15 #define JTDI_PIN GPIO_PIN_14 #define JTDO_PIN GPIO_PIN_13  #define LED0_PIN GPIO_PIN_5 #define BTN0_PIN GPIO_PIN_13<\/code><\/pre>\n<p> \u0418 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u044d\u0442\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abMX_GPIO_Init\u00bb:<\/p>\n<pre><code class=\"cpp\">\/\/==== JTAG PINS INIT BEGIN ==== GPIO_InitStruct.Pin  = JTMS_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = JTCK_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = JTDI_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = JTDO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct); \/\/==== JTAG PINS INIT END ====  \/\/==== I\/O PINS INIT BEGIN ==== GPIO_InitStruct.Pin  = BTN0_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = LED0_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct); \/\/==== I\/O PINS INIT END ====<\/code><\/pre>\n<p> \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u00ab\u043e\u0447\u0438\u0449\u0435\u043d\u043d\u0443\u044e\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abmain\u00bb:<\/p>\n<pre><code class=\"cpp\">int main(void) {   HAL_Init();   SystemClock_Config();   MX_GPIO_Init();   while (1)   {     \/\/\u041a\u043e\u0434   } }<\/code><\/pre>\n<p> \u041e\u0431\u044a\u044f\u0432\u0438\u043c \u043f\u0435\u0440\u0435\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u00abmain\u00bb \u043f\u0430\u0440\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 (\u00abled\u00bb \u0438 \u00abbtn\u00bb) \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u0438 \u043a\u043d\u043e\u043f\u043e\u043a), \u0430 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0430\u0447\u043a\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 JTAG. \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u0440\u043e\u043d\u0442\u043e\u0432 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 TCK:<\/p>\n<pre><code class=\"cpp\">int main(void) {   HAL_Init();   SystemClock_Config();   MX_GPIO_Init();    char tms_curr = 1;   char tck_curr = 0;   char tck_prev = 0;   char tdi_curr = 0;   char tdo_curr = 0;    while (1)   {     \/\/\u041a\u043e\u0434 \u0434\u043b\u044f \u00ab\u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u00bb \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0433\u043e-\u043b\u0438\u0431\u043e      if(tck_curr != tck_prev)     {       \/\/\u041a\u043e\u0434, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0444\u0440\u043e\u043d\u0442\u0430     }     tck_prev = tck_curr; } }<\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b (\u043f\u0435\u0440\u0435\u0434 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u043e\u0432) \u043a\u043e\u0434, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0432 \u043b\u044e\u0431\u043e\u0439 (\u043d\u0443, \u043f\u043e\u0447\u0442\u0438 \u043b\u044e\u0431\u043e\u0439) \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c\/\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043b\u0438\u043d\u0438\u044f\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b:<\/p>\n<pre><code class=\"cpp\">tms_curr = (GPIOB->IDR &amp; JTMS_PIN) ? 1 : 0; tck_curr = (GPIOB->IDR &amp; JTCK_PIN) ? 1 : 0; tdi_curr = (GPIOB->IDR &amp; JTDI_PIN) ? 1 : 0; if(tdo_curr) GPIOB->ODR |=  JTDO_PIN; else         GPIOB->ODR &amp;= ~JTDO_PIN;  btn[0] = (GPIOC->IDR &amp; BTN0_PIN ) ? 1 : 0; if(led[0]) GPIOA->ODR |=  LED0_PIN; else       GPIOA->ODR &amp;= ~LED0_PIN;<\/code><\/pre>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0444\u0440\u043e\u043d\u0442\u043e\u0432 \u043a\u043e\u0434, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0438 \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0444\u0440\u043e\u043d\u0442\u044b:<\/p>\n<pre><code class=\"cpp\">if(tck_curr)    tck_rise(tms_curr, tdi_curr); else tdo_curr = tck_fall(tms_curr, tdi_curr);<\/code><\/pre>\n<p> &#8230;\u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">void tck_rise(char tms, char tdi) { }  char tck_fall(char tms, char tdi) {   char tdo = 0; \/\/ HiZ   return tdo; }<\/code><\/pre>\n<p> \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 TDO \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u00abtck_rise\u00bb \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u00abtdo\u00bb.<\/p>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u00abled\u00bb \u0438 \u00abbtn\u00bb \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430:<\/p>\n<pre><code class=\"cpp\">enum Jtag_fsm{   TEST_LOGIC_RESET,   RUN_TEST_IDLE,   SELECT_DR_SCAN,   CAPTURE_DR,   SHIFT_DR,   EXIT1_DR,   PAUSE_DR,   EXIT2_DR,   UPDATE_DR,   SELECT_IR_SCAN,   CAPTURE_IR,   SHIFT_IR,   EXIT1_IR,   PAUSE_IR,   EXIT2_IR,   UPDATE_IR } jtag_fsm = TEST_LOGIC_RESET;<\/code><\/pre>\n<p> \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0430\u044f \u0437\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u00abswitch-case\u00bb \u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0446\u0438\u043a\u043b\u0430:<\/p>\n<pre><code class=\"cpp\">void fsm_state_change(char tms) {   switch(jtag_fsm){   case TEST_LOGIC_RESET:     if(tms) jtag_fsm = TEST_LOGIC_RESET;     else    jtag_fsm = RUN_TEST_IDLE;     break;   case RUN_TEST_IDLE:     if(tms) jtag_fsm = SELECT_DR_SCAN;     else    jtag_fsm = RUN_TEST_IDLE;     break;   &lt;...>   case UPDATE_IR:     if(tms) jtag_fsm = SELECT_DR_SCAN;     else    jtag_fsm = RUN_TEST_IDLE;     break;   } }<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">void fsm_state_change(char tms) {   switch(jtag_fsm){   case TEST_LOGIC_RESET:     if(tms_curr) jtag_fsm = TEST_LOGIC_RESET;     else         jtag_fsm = RUN_TEST_IDLE;     break;   case RUN_TEST_IDLE:     if(tms_curr) jtag_fsm = SELECT_DR_SCAN;     else         jtag_fsm = RUN_TEST_IDLE;     break;   case SELECT_DR_SCAN:     if(tms_curr) jtag_fsm = SELECT_IR_SCAN;     else         jtag_fsm = CAPTURE_DR;     break;   case CAPTURE_DR:     if(tms_curr) jtag_fsm = EXIT1_DR;     else         jtag_fsm = SHIFT_DR;     break;   case SHIFT_DR:     if(tms_curr) jtag_fsm = EXIT1_DR;     else         jtag_fsm = SHIFT_DR;     break;   case EXIT1_DR:     if(tms_curr) jtag_fsm = UPDATE_DR;     else         jtag_fsm = PAUSE_DR;     break;   case PAUSE_DR:     if(tms_curr) jtag_fsm = EXIT2_DR;     else         jtag_fsm = PAUSE_DR;     break;   case EXIT2_DR:     if(tms_curr) jtag_fsm = UPDATE_DR;     else         jtag_fsm = SHIFT_DR;     break;   case UPDATE_DR:     if(tms_curr) jtag_fsm = SELECT_DR_SCAN;     else         jtag_fsm = RUN_TEST_IDLE;     break;   case SELECT_IR_SCAN:     if(tms_curr) jtag_fsm = TEST_LOGIC_RESET;     else         jtag_fsm = CAPTURE_IR;     break;   case CAPTURE_IR:     if(tms_curr) jtag_fsm = EXIT1_IR;     else         jtag_fsm = SHIFT_IR;     break;   case SHIFT_IR:     if(tms_curr) jtag_fsm = EXIT1_IR;     else         jtag_fsm = SHIFT_IR;     break;   case EXIT1_IR:     if(tms_curr) jtag_fsm = UPDATE_IR;     else         jtag_fsm = PAUSE_IR;     break;   case PAUSE_IR:     if(tms_curr) jtag_fsm = EXIT2_IR;     else         jtag_fsm = PAUSE_IR;     break;   case EXIT2_IR:     if(tms_curr) jtag_fsm = UPDATE_IR;     else         jtag_fsm = SHIFT_IR;     break;   case UPDATE_IR:     if(tms_curr) jtag_fsm = SELECT_DR_SCAN;     else         jtag_fsm = RUN_TEST_IDLE;     break;   } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u00abtck_rise\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abfsm_state_change\u00bb, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u00abswitch-case\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443:<\/p>\n<pre><code class=\"cpp\">void tck_rise(char tms, char tdi) {   switch(jtag_fsm){   case CAPTURE_DR:     \/\/     break;   case SHIFT_DR:     \/\/     break;   case CAPTURE_IR:     \/\/     break;   case SHIFT_IR:     \/\/     break;   }    fsm_state_change(tms); }<\/code><\/pre>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u00abswitch-case\u00bb \u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abtck_fall\u00bb:<\/p>\n<pre><code class=\"cpp\">char tck_fall(char tms, char tdi) {   char tdo = 0; \/\/ HiZ    switch(jtag_fsm){   case TEST_LOGIC_RESET:     \/\/     break;   case SHIFT_DR:     \/\/     break;   case EXIT1_DR:     tdo = 0; \/\/ HiZ     break;   case UPDATE_DR:     \/\/     break;   case SHIFT_IR:     \/\/     break;   case EXIT1_IR:     tdo = 0; \/\/ HiZ     break;   case UPDATE_IR:     \/\/     break;   }    return tdo; }<\/code><\/pre>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0434\u043b\u0438\u043d\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0435\u043a\u0446\u0438\u044f\u043c\u0438 (\u0442\u0430\u043c, \u0433\u0434\u0435 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e) \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (\u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439):<\/p>\n<pre><code class=\"cpp\">\/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 uint8_t        instruction_reg; uint8_t        instruction_reg_par; const uint8_t  INSTRUCTION_LENGTH  = 3; const uint8_t  INSTRUCTION_DEFAULT = 0x01; enum Instructions{   INST_IDCODE = 0x01,   INST_EXTEST = 0x02,   INST_BYPASS = 0x03,   INST_SAMPLE = 0x04 };  \/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 uint32_t       device_id_reg; const uint8_t  DEVICE_ID_LENGTH  = 32; const uint32_t DEVICE_ID_DEFAULT = 0x0AA55003;  \/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 BYPASS \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 uint8_t        bypass_reg; const uint8_t  BYPASS_LENGTH = 1; const uint8_t  BYPASS_DEFAULT = 0;  \/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f uint32_t       boundary_reg; uint32_t       boundary_reg_par; const uint8_t  BOUNDARY_LENGTH = 2;<\/code><\/pre>\n<p> \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abtck_rise\u00bb \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0IR\u00bb, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0441\u0434\u0432\u0438\u0433 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abSHIFT\u00a0IR\u00bb:<\/p>\n<pre><code class=\"cpp\">case CAPTURE_IR:   instruction_reg = INSTRUCTION_DEFAULT;   break; case SHIFT_IR:   instruction_reg = (instruction_reg >> 1) | (uint32_t)(tdi &lt;&lt; (INSTRUCTION_LENGTH  - 1));   break;<\/code><\/pre>\n<p> \u0417\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abtck_fall\u00bb. \u0412 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abTEST\u00a0LOGIC\u00a0RESET\u00bb \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0435\u0438\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abSHIFT\u00a0IR\u00bb \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 TDO, \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abUPDATE\u00a0IR\u00bb \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e:<\/p>\n<pre><code class=\"cpp\">case TEST_LOGIC_RESET:   instruction_reg     = INSTRUCTION_DEFAULT;   instruction_reg_par = INSTRUCTION_DEFAULT;   tdo = 0; \/\/ HiZ   break; &lt;...> case SHIFT_IR:   tdo = instruction_reg &amp; ((uint8_t)0x1);   break; &lt;...> case UPDATE_IR:   instruction_reg_par = instruction_reg;   break;<\/code><\/pre>\n<p> \u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abtck_rise\u00bb \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u0430, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u00abswitch-case\u00bb. \u0417\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0430 \u0435\u0451 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u044f\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u043a\u043e\u0434\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abSHIFT\u00a0DR\u00bb \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u043a\u043e\u0434\u0443 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abSHIFT\u00a0IR\u00bb, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 (\u0438 \u0438\u0445 \u0434\u043b\u0438\u043d\u044b). \u0412 \u00abCAPTURE\u00a0DR\u00bb \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u2014 \u0432 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432\u0445\u043e\u0434\u043e\u0432-\u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b:<\/p>\n<pre><code class=\"cpp\">case CAPTURE_DR:   switch(instruction_reg_par){   case INST_IDCODE:     device_id_reg = DEVICE_ID_DEFAULT;     break;   case INST_BYPASS:     bypass_reg    = BYPASS_DEFAULT;     break;   case INST_SAMPLE:     boundary_reg  = (led[0] &lt;&lt; 0) | (btn[0] &lt;&lt; 1);     break;   case INST_EXTEST:     boundary_reg  = (led[0] &lt;&lt; 0) | (btn[0] &lt;&lt; 1);     break;   }   break; case SHIFT_DR:   switch(instruction_reg_par){   case INST_IDCODE:     device_id_reg = (device_id_reg >> 1) | (uint32_t)(tdi &lt;&lt; (DEVICE_ID_LENGTH - 1));     break;   case INST_BYPASS:     bypass_reg    = (bypass_reg    >> 1) | (uint32_t)(tdi &lt;&lt; (BYPASS_LENGTH    - 1));     break;   case INST_SAMPLE:     boundary_reg  = (boundary_reg  >> 1) | (uint32_t)(tdi &lt;&lt; (BOUNDARY_LENGTH  - 1));     break;   case INST_EXTEST:     boundary_reg  = (boundary_reg  >> 1) | (uint32_t)(tdi &lt;&lt; (BOUNDARY_LENGTH  - 1));     break;   }   break;<\/code><\/pre>\n<p> \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abtck_fall\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abSHIFT\u00a0DR\u00bb \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u00abSHIFT\u00a0IR\u00bb (\u0441 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432):<\/p>\n<pre><code class=\"cpp\">case SHIFT_DR:   switch(instruction_reg_par){   case INST_IDCODE:     tdo = device_id_reg &amp; ((uint32_t)0x0000001);     break;   case INST_BYPASS:     tdo = bypass_reg    &amp; ((uint8_t)0x01);     break;   case INST_SAMPLE:     tdo = boundary_reg  &amp; ((uint8_t)0x01);     break;   case INST_EXTEST:     tdo = boundary_reg  &amp; ((uint8_t)0x01);     break;   }   break;<\/code><\/pre>\n<p> \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u00abDEVICE\u00a0ID\u00bb \u0438 \u00abBYPASS\u00bb \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438, \u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abUPDATE\u00a0DR\u00bb \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u0441\u0435\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb:<\/p>\n<pre><code class=\"cpp\">case UPDATE_DR:   switch(instruction_reg){   case INST_SAMPLE:     boundary_reg_par = boundary_reg;     break;   case INST_EXTEST:     boundary_reg_par = boundary_reg;     break;   }   break;<\/code><\/pre>\n<p> \u041e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0442\u0440\u0438\u0445 \u2014 \u0432\u044b\u0434\u0430\u0447\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u044b \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abEXTEST\u00bb. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u044b \u0432\u043f\u0438\u0448\u0435\u043c \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abmain\u00bb \u043f\u0435\u0440\u0435\u0434 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">if(instruction_reg_par == INST_EXTEST) {   led[0] = boundary_reg_par &amp; (uint8_t)(0x01 &lt;&lt; 0); } else {   led[0] = 0; \/\/HiZ }<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u043d\u0430 \u0421\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include \"main.h\"  #define JTMS_PIN GPIO_PIN_1 #define JTCK_PIN GPIO_PIN_15 #define JTDI_PIN GPIO_PIN_14 #define JTDO_PIN GPIO_PIN_13  #define LED0_PIN GPIO_PIN_5 #define BTN0_PIN GPIO_PIN_13  void SystemClock_Config(void); static void MX_GPIO_Init(void);  uint8_t        instruction_reg; uint8_t        instruction_reg_par; const uint8_t  INSTRUCTION_LENGTH  = 3; const uint8_t  INSTRUCTION_DEFAULT = 0x01; enum Instructions{ INST_IDCODE = 0x01, INST_EXTEST = 0x02, INST_BYPASS = 0x03, INST_SAMPLE = 0x04 };  uint32_t       device_id_reg; const uint8_t  DEVICE_ID_LENGTH  = 32; const uint32_t DEVICE_ID_DEFAULT = 0x0AA55003;  uint8_t        bypass_reg; const uint8_t  BYPASS_LENGTH = 1; const uint8_t  BYPASS_DEFAULT = 0;  uint32_t       boundary_reg; uint32_t       boundary_reg_par; const uint8_t  BOUNDARY_LENGTH = 2;  uint8_t led[1]; uint8_t btn[1];  enum Jtag_fsm{ TEST_LOGIC_RESET, RUN_TEST_IDLE,  SELECT_DR_SCAN, CAPTURE_DR, SHIFT_DR, EXIT1_DR, PAUSE_DR, EXIT2_DR, UPDATE_DR,  SELECT_IR_SCAN, CAPTURE_IR, SHIFT_IR, EXIT1_IR, PAUSE_IR, EXIT2_IR, UPDATE_IR } jtag_fsm = TEST_LOGIC_RESET;  void fsm_state_change(char tms) { switch(jtag_fsm){ case TEST_LOGIC_RESET: if(tms)jtag_fsm = TEST_LOGIC_RESET; else    jtag_fsm = RUN_TEST_IDLE; break; case RUN_TEST_IDLE: if(tms)jtag_fsm = SELECT_DR_SCAN; else    jtag_fsm = RUN_TEST_IDLE; break; case SELECT_DR_SCAN: if(tms)jtag_fsm = SELECT_IR_SCAN; else    jtag_fsm = CAPTURE_DR; break; case CAPTURE_DR: if(tms)jtag_fsm = EXIT1_DR; else    jtag_fsm = SHIFT_DR; break; case SHIFT_DR: if(tms)jtag_fsm = EXIT1_DR; else    jtag_fsm = SHIFT_DR; break; case EXIT1_DR: if(tms)jtag_fsm = UPDATE_DR; else    jtag_fsm = PAUSE_DR; break; case PAUSE_DR: if(tms)jtag_fsm = EXIT2_DR; else    jtag_fsm = PAUSE_DR; break; case EXIT2_DR: if(tms)jtag_fsm = UPDATE_DR; else    jtag_fsm = SHIFT_DR; break; case UPDATE_DR: if(tms)jtag_fsm = SELECT_DR_SCAN; else    jtag_fsm = RUN_TEST_IDLE; break; case SELECT_IR_SCAN: if(tms)jtag_fsm = TEST_LOGIC_RESET; else    jtag_fsm = CAPTURE_IR; break; case CAPTURE_IR: if(tms)jtag_fsm = EXIT1_IR; else    jtag_fsm = SHIFT_IR; break; case SHIFT_IR: if(tms)jtag_fsm = EXIT1_IR; else    jtag_fsm = SHIFT_IR; break; case EXIT1_IR: if(tms)jtag_fsm = UPDATE_IR; else    jtag_fsm = PAUSE_IR; break; case PAUSE_IR: if(tms)jtag_fsm = EXIT2_IR; else    jtag_fsm = PAUSE_IR; break; case EXIT2_IR: if(tms)jtag_fsm = UPDATE_IR; else    jtag_fsm = SHIFT_IR; break; case UPDATE_IR: if(tms)jtag_fsm = SELECT_DR_SCAN; else    jtag_fsm = RUN_TEST_IDLE; break; } }  void tck_rise(char tms, char tdi) { switch(jtag_fsm){ case CAPTURE_DR: switch(instruction_reg_par){ case INST_IDCODE: device_id_reg = DEVICE_ID_DEFAULT; break; case INST_BYPASS: bypass_reg    = BYPASS_DEFAULT; break; case INST_SAMPLE: boundary_reg  = (led[0] &lt;&lt; 0) | (btn[0] &lt;&lt; 1); break; case INST_EXTEST: boundary_reg  = (led[0] &lt;&lt; 0) | (btn[0] &lt;&lt; 1); break; } break; case SHIFT_DR: switch(instruction_reg_par){ case INST_IDCODE: device_id_reg = (device_id_reg >> 1) | (uint32_t)(tdi &lt;&lt; (DEVICE_ID_LENGTH - 1)); break; case INST_BYPASS: bypass_reg    = (bypass_reg    >> 1) | (uint32_t)(tdi &lt;&lt; (BYPASS_LENGTH    - 1)); break; case INST_SAMPLE: boundary_reg  = (boundary_reg  >> 1) | (uint32_t)(tdi &lt;&lt; (BOUNDARY_LENGTH  - 1)); break; case INST_EXTEST: boundary_reg  = (boundary_reg  >> 1) | (uint32_t)(tdi &lt;&lt; (BOUNDARY_LENGTH  - 1)); break; } break; case CAPTURE_IR: instruction_reg = INSTRUCTION_DEFAULT; break; case SHIFT_IR: instruction_reg = (instruction_reg >> 1) | (uint32_t)(tdi &lt;&lt; (INSTRUCTION_LENGTH  - 1)); break; }  fsm_state_change(tms); }  char tck_fall(char tms, char tdi) { char tdo = 0; \/\/ HiZ  switch(jtag_fsm){ case TEST_LOGIC_RESET: instruction_reg     = INSTRUCTION_DEFAULT; instruction_reg_par = INSTRUCTION_DEFAULT; tdo = 0; \/\/ HiZ break; case SHIFT_DR: switch(instruction_reg_par){ case INST_IDCODE: tdo = device_id_reg &amp; ((uint32_t)0x0000001); break; case INST_BYPASS: tdo = bypass_reg    &amp; ((uint8_t)0x01); break; case INST_SAMPLE: tdo = boundary_reg  &amp; ((uint8_t)0x01); break; case INST_EXTEST: tdo = boundary_reg  &amp; ((uint8_t)0x01); break; } break; case EXIT1_DR: tdo = 0; \/\/ HiZ break; case UPDATE_DR: switch(instruction_reg){ case INST_SAMPLE: boundary_reg_par = boundary_reg; break; case INST_EXTEST: boundary_reg_par = boundary_reg; break; } break; case SHIFT_IR: tdo = instruction_reg &amp; ((uint8_t)0x1); break; case EXIT1_IR: tdo = 0; \/\/ HiZ break; case UPDATE_IR: instruction_reg_par = instruction_reg; break; }  return tdo; }  int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init();  char tms_curr = 1; char tck_curr = 0; char tck_prev = 0; char tdi_curr = 0; char tdo_curr = 0;  while (1) { tms_curr = (GPIOB->IDR &amp; JTMS_PIN ) ? 1 : 0; tck_curr = (GPIOB->IDR &amp; JTCK_PIN)  ? 1 : 0; tdi_curr = (GPIOB->IDR &amp; JTDI_PIN)  ? 1 : 0; if(tdo_curr) GPIOB->ODR |=  JTDO_PIN; else         GPIOB->ODR &amp;= ~JTDO_PIN;  btn[0] = (GPIOC->IDR &amp; BTN0_PIN ) ? 1 : 0; if(led[0]) GPIOA->ODR |=  LED0_PIN; else       GPIOA->ODR &amp;= ~LED0_PIN;  if(instruction_reg_par == INST_EXTEST) { led[0] = boundary_reg_par &amp; (uint8_t)(0x01 &lt;&lt; 0); } else { led[0] = 0; \/\/HiZ }  if(tck_curr != tck_prev) { if(tck_curr)    tck_rise(tms_curr, tdi_curr); else tdo_curr = tck_fall(tms_curr, tdi_curr); }  tck_prev = tck_curr;   } }   void SystemClock_Config(void) {   RCC_OscInitTypeDef RCC_OscInitStruct = {0};   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;   RCC_OscInitStruct.HSIState = RCC_HSI_ON;   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;   if (HAL_RCC_OscConfig(&amp;RCC_OscInitStruct) != HAL_OK)   {     Error_Handler();   }    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;    if (HAL_RCC_ClockConfig(&amp;RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)   {     Error_Handler();   } }  void Error_Handler(void) {   __disable_irq();   while (1)   {   } }  static void MX_GPIO_Init(void) {   GPIO_InitTypeDef GPIO_InitStruct = {0};    __HAL_RCC_GPIOC_CLK_ENABLE();   __HAL_RCC_GPIOD_CLK_ENABLE();   __HAL_RCC_GPIOA_CLK_ENABLE();   __HAL_RCC_GPIOB_CLK_ENABLE();    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);    GPIO_InitStruct.Pin = B1_Pin;   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;   GPIO_InitStruct.Pull = GPIO_NOPULL;   HAL_GPIO_Init(B1_GPIO_Port, &amp;GPIO_InitStruct);    GPIO_InitStruct.Pin = GPIO_PIN_5;   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;   GPIO_InitStruct.Pull = GPIO_NOPULL;   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;   HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);    HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);   HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);     \/\/==== JTAG PINS INIT BEGIN ====   GPIO_InitStruct.Pin  = JTMS_PIN;   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;   GPIO_InitStruct.Pull = GPIO_NOPULL;   HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);    GPIO_InitStruct.Pin  = JTCK_PIN;   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;   GPIO_InitStruct.Pull = GPIO_NOPULL;   HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);    GPIO_InitStruct.Pin  = JTDI_PIN;   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;   GPIO_InitStruct.Pull = GPIO_NOPULL;   HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);    GPIO_InitStruct.Pin  = JTDO_PIN;   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;   GPIO_InitStruct.Pull = GPIO_NOPULL;   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;   HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);   \/\/==== JTAG PINS INIT END ====    \/\/==== I\/O PINS INIT BEGIN ====   GPIO_InitStruct.Pin  = BTN0_PIN;   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;   GPIO_InitStruct.Pull = GPIO_NOPULL;   HAL_GPIO_Init(GPIOC, &amp;GPIO_InitStruct);    GPIO_InitStruct.Pin  = LED0_PIN;   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;   GPIO_InitStruct.Pull = GPIO_NOPULL;   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;   HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);   \/\/==== I\/O PINS INIT END ====  }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h2> \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u00ab\u0432 \u0436\u0435\u043b\u0435\u0437\u0435\u00bb<\/h2>\n<p> \u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0438 \u043f\u043e\u0448\u044c\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u00abSTM32F103RB\u00bb. \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043c \u0435\u0433\u043e \u043d\u0430\u0432\u0435\u0441\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u043c\u0438 \u0441 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c JTAG \u043d\u0430 \u0431\u0430\u0437\u0435 \u00abFT2232\u00bb \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u00abTopJTAG Probe\u00bb. \u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043d\u0451\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 TCK 10\u043a\u0413\u0446. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u043e\u0439 \u2014 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u00ab0AA55003\u00bb. \u0415\u0441\u043b\u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0447\u0438\u0442\u0430\u043d, \u0432\u0441\u0451 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u00abTopJTAG Probe\u00bb \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442. \u041e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f, \u043d\u043e \u0432 \u00abTopJTAG Probe\u00bb \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0431\u0435\u0437 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c JTAG, \u0430 \u0432\u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0431\u0435\u0437 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u2014 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p> \u041d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439, \u0442\u0440\u0435\u0442\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0430\u0439\u043b BSDL. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0444\u0430\u0439\u043b\u0430 BSDL (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb) \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u00abTopJTAG Probe\u00bb \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u0444\u0430\u0439\u043b BSDL \ud83d\ude42<\/p>\n<details class=\"spoiler\">\n<summary>\u0422\u0435\u043a\u0441\u0442 \u0444\u0430\u0439\u043b\u0430 BSDL<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"vhdl\">entity MY_IC is generic (PHYSICAL_PIN_MAP : string); port  ( LED: out bit; BTN: in bit; TMS: in bit; TDI: in bit; TCK: in bit; TDO: out bit; VDD: linkage bit; VSS: linkage bit; NC:  linkage bit_vector(0 to 12) );  use STD_1149_1_2001.all;  attribute COMPONENT_CONFORMANCE of MY_IC : entity is \"STD_1149_1_2001\"; attribute PIN_MAP of MY_IC : entity is PHYSICAL_PIN_MAP;  constant  PLCC20:PIN_MAP_STRING:= \"LED:1, \" &amp; \"BTN:2, \" &amp; \"TMS:3, \" &amp; \"TDI:4, \" &amp; \"TCK:5, \" &amp; \"TDO:6, \" &amp; \"VDD:7, \" &amp; \"VSS:8, \" &amp; \"NC:(9,10,11,12,13,14,15,16,17,18,19,20) \";  attribute TAP_SCAN_MODE of TMS : signal is true; attribute TAP_SCAN_IN    of TDI : signal is true; attribute TAP_SCAN_CLOCK of TCK : signal is (10.0e3, BOTH); attribute TAP_SCAN_OUT   of TDO : signal is true;  attribute INSTRUCTION_LENGTH of MY_IC : entity is 3; attribute INSTRUCTION_OPCODE of MY_IC : entity is \"IDCODE (001),\" &amp; \"EXTEST (010),\" &amp; \"BYPASS (011),\" &amp; \"SAMPLE (100) \"; attribute INSTRUCTION_CAPTURE of MY_IC : entity is \"00000001\";  attribute IDCODE_REGISTER of MY_IC : entity is \"0000\" &amp;-- \u043a\u043e\u0434 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0438\u043f\u0430 \u0442\u043e\u0433\u043e \"1010101001010101\" &amp;-- \u043a\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b hAA55 \"00000000001\" &amp;-- \u043a\u043e\u0434 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 AMD) \"1\"; -- \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 IEEE1149.1  attribute REGISTER_ACCESS of MY_IC : entity is \"DEVICE_ID (IDCODE),\" &amp; \"BYPASS    (BYPASS),\" &amp; \"BOUNDARY  (EXTEST, SAMPLE)\";  attribute BOUNDARY_LENGTH of MY_IC : entity is 2; attribute BOUNDARY_REGISTER of MY_IC : entity is \"0 (BC_1, LED, output2, X),\" &amp; \"1 (BC_1, BTN, input,   X)\" ; end MY_IC;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 JTAG. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b7e\/6f5\/a59\/b7e6f5a591e39dcb005bd572ff7e20d2.png\" width=\"1106\" height=\"730\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b7e\/6f5\/a59\/b7e6f5a591e39dcb005bd572ff7e20d2.png\"\/><figcaption><\/figcaption><\/figure>\n<ol>\n<li>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043b\u0438\u043d\u0438\u044e \u00abBTN\u00bb \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c.<\/p>\n<\/li>\n<li>\n<p> \u041e\u0442\u043a\u0440\u043e\u0435\u043c \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p> \u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u00abEXTEST\u00bb<\/p>\n<\/li>\n<li>\n<p> \u041d\u0430\u0436\u043c\u0451\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/232\/5aa\/792\/2325aa792e448fddea6b375147b8d343.png\" width=\"1062\" height=\"701\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/232\/5aa\/792\/2325aa792e448fddea6b375147b8d343.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/6da\/924\/5a7\/6da9245a7add6cf9d60a14768bceb67d.jpg\" width=\"1953\" height=\"1338\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6da\/924\/5a7\/6da9245a7add6cf9d60a14768bceb67d.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<ol>\n<li>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c, \u043d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u0438 \u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p> \u0410 \u0442\u0430\u043a\u0436\u0435, \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u044e (\u0438\u043b\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0448) \u043f\u0443\u043d\u043a\u0442 \u00abToggle Value\u00bb \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b (\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u043b\u0435\u0432\u0430), \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043c\u0438\u0433\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<h2> \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0435\u0434\u043e\u043c\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 JTAG \u043d\u0430 SystemVerilog  <\/h2>\n<p> \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u043e\u0442 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0430 \u00abSystemVerilog\u00bb. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u044b \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043b\u0430\u0442\u0430 \u00abDE-Nano\u00bb. \u041e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 2 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 8 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432, \u0438 \u043c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0438\u0445 \u0432\u0441\u0435\u0445.<\/p>\n<p> \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043f\u0435\u0440\u0432\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0435\u043c\u0443 \u0432\u0445\u043e\u0434\u044b \u0438 \u0432\u044b\u0445\u043e\u0434\u044b:<\/p>\n<pre><code class=\"cpp\">module main (   input      tms,   input      tck,   input      tdi,   output reg tdo,    output reg [7:0]led,   input      [1:0]btn   );   \/\/\u041a\u043e\u0434 endmodule<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0432 DE0-Nano<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">btn[0] -> J15 btn[1] -> E1 led[0] -> A15 led[1] -> A13 led[2] -> B13 led[3] -> A11 led[4] -> D1 led[5] -> F3 led[6] -> B1 led[7] -> L3 tms    -> E10 tck    -> B11 tdi    -> D11 tdo    -> B12 <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0438\u0445 \u0434\u043b\u0438\u043d\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435:<\/p>\n<pre><code class=\"cpp\">\/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 parameter INSTRUCTION_LENGTH = 3; parameter INSTRUCTION_DEFAULT = 3'b001; reg [INSTRUCTION_LENGTH-1:0]instruction_ser; reg [INSTRUCTION_LENGTH-1:0]instruction_par; enum reg[INSTRUCTION_LENGTH-1:0]{   INST_IDCODE = 3'b001,   INST_EXTEST = 3'b010,   INST_BYPASS = 3'b011,   INST_SAMPLE = 3'b100 } instructions;  \/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 parameter DEVICE_ID_LENGTH  = 32; parameter DEVICE_ID_DEFAULT = 32'h0AA55003; reg [DEVICE_ID_LENGTH-1:0]device_id_ser;  \/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 BYPASS \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 parameter BYPASS_DEFAULT = 0; reg bypass_ser;  \/\/\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f parameter BOUNDARY_LENGTH = 10; reg [BOUNDARY_LENGTH-1:0]boundary_ser; reg [BOUNDARY_LENGTH-1:0]boundary_par;<\/code><\/pre>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430:<\/p>\n<pre><code class=\"cpp\">enum{   TEST_LOGIC_RESET,   RUN_TEST_IDLE,   SELECT_DR_SCAN,   CAPTURE_DR,   SHIFT_DR,   EXIT1_DR,   PAUSE_DR,   EXIT2_DR,   UPDATE_DR,   SELECT_IR_SCAN,   CAPTURE_IR,   SHIFT_IR,   EXIT1_IR,   PAUSE_IR,   EXIT2_IR,   UPDATE_IR } jtag_fsm = TEST_LOGIC_RESET;<\/code><\/pre>\n<p> \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u00abalways\u00bb. \u041e\u0434\u0438\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK, \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u043f\u043e \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443:<\/p>\n<pre><code class=\"cpp\">always @(posedge tck) begin   \/\/\u041a\u043e\u0434 end  always @(negedge tck) begin   \/\/\u041a\u043e\u0434 end<\/code><\/pre>\n<p> \u0412 \u0431\u043b\u043e\u043a \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0430 \u0432\u043f\u0438\u0448\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u00abcase\u00bb, \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430:<\/p>\n<pre><code class=\"cpp\">case(jtag_fsm)   TEST_LOGIC_RESET:begin     if(tms) jtag_fsm &lt;= TEST_LOGIC_RESET;     else    jtag_fsm &lt;= RUN_TEST_IDLE;   end   RUN_TEST_IDLE:begin     if(tms) jtag_fsm &lt;= SELECT_DR_SCAN;     else    jtag_fsm &lt;= RUN_TEST_IDLE;   end   &lt;...>   UPDATE_IR:begin     if(tms) jtag_fsm &lt;= SELECT_DR_SCAN;     else    jtag_fsm &lt;= RUN_TEST_IDLE;   end endcase<\/code><\/pre>\n<p> \u0412 \u0442\u043e\u043c \u0436\u0435 \u0431\u043b\u043e\u043a\u0435 \u00abalways\u00bb \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u00abcase\u00bb \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0432\u0435\u0442\u0432\u044c \u00abCAPTURE\u00a0IR\u00bb \u043a\u043e\u0434, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0430 \u0432 \u0432\u0435\u0442\u0432\u044c \u00abSHIFT\u00a0IR\u00bb \u043a\u043e\u0434, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0434\u0432\u0438\u0433 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439:<\/p>\n<pre><code class=\"cpp\">case(jtag_fsm)   CAPTURE_DR:begin     \/\/   end   SHIFT_DR:begin     \/\/   end   CAPTURE_IR:begin     instruction_ser &lt;= INSTRUCTION_DEFAULT;   end   SHIFT_IR:begin     instruction_ser &lt;= {tdi,instruction_ser[INSTRUCTION_LENGTH-1:1]};   end endcase<\/code><\/pre>\n<p> \u041d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u044f\u0441\u044c \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044f\u0437\u044b\u043a\u043e\u0432 HDL \u0432 \u043e\u0431\u0449\u0435\u043c \u0438 SystemVerilog-\u0430 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435: \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u00ab=\u00bb \u0438 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u00ab&lt;=\u00bb. \u0412\u043e \u0432\u0441\u0451\u043c \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p> \u041f\u043e\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u043d\u0430 \u00ab\u0421\u0438\u00bb, \u0432 \u0432\u0435\u0442\u0432\u044f\u0445 \u00abCAPTURE\u00a0DR\u00bb \u0438 \u00abSHIFT\u00a0DR\u00bb \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u00abcase\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0414\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043a\u043e\u0434\u0430 \u2014 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">CAPTURE_DR:begin   case(instruction_par)     INST_IDCODE:begin       device_id_ser &lt;= DEVICE_ID_DEFAULT;     end     INST_BYPASS:begin       bypass_ser    &lt;= BYPASS_DEFAULT;     end     INST_SAMPLE:begin       boundary_ser[7:0] &lt;= led[7:0];       boundary_ser[9:8] &lt;= btn[1:0];     end     INST_EXTEST:begin       boundary_ser[7:0] &lt;= led[7:0];       boundary_ser[9:8] &lt;= btn[1:0];     end   endcase end SHIFT_DR:begin   case(instruction_par)     INST_IDCODE:begin       device_id_ser &lt;= {tdi,device_id_ser[DEVICE_ID_LENGTH-1:1]};     end     INST_BYPASS:begin       bypass_ser    &lt;= tdi;     end     INST_SAMPLE:begin       boundary_ser  &lt;= {tdi,boundary_ser[BOUNDARY_LENGTH-1:1]};     end     INST_EXTEST:begin       boundary_ser  &lt;= {tdi,boundary_ser[BOUNDARY_LENGTH-1:1]};     end   endcase end<\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432 \u0431\u043b\u043e\u043a \u00abalways\u00bb, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u0440\u0435\u0430\u043a\u0446\u0438\u044e \u043d\u0430 \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0444\u0440\u043e\u043d\u0442, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0442\u0443\u0434\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u00abcase\u00bb \u0438 \u0432\u0435\u0442\u0432\u044c \u00abSHIFT\u00a0IR\u00bb \u0432\u044b\u0434\u0430\u0447\u0435\u0439 \u0431\u0438\u0442\u0430 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 TDO, \u0432\u0435\u0442\u0432\u044c \u00abUPDATE\u00a0IR\u00bb \u2014 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abTEST\u00a0LOGIC\u00a0RESET\u00bb:<\/p>\n<pre><code class=\"cpp\">case(jtag_fsm)   TEST_LOGIC_RESET:begin     instruction_par &lt;= INSTRUCTION_DEFAULT;     tdo &lt;= 1'bz;\/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 TDO \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 HiZ   end   SHIFT_DR:begin     \/\/   end   EXIT1_IR:begin     tdo &lt;= 1'bz;\/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 TDO \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 HiZ   end   UPDATE_DR:begin     \/\/   end   SHIFT_IR:begin     tdo &lt;= instruction_ser[0];   end   EXIT1_IR:begin     tdo &lt;= 1'bz;\/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 TDO \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 HiZ   end   UPDATE_IR:begin     instruction_par &lt;= instruction_ser;   end endcase<\/code><\/pre>\n<p> \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u043c \u0432\u0435\u0442\u0432\u0438 \u00abSHIFT\u00a0DR\u00bb \u0438 \u00abUPDATE\u00a0DR\u00bb \u043a\u043e\u0434\u043e\u043c, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u0432\u044b\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043b\u0438\u043d\u0438\u044e TDO \u0438\u0437 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0434\u043e\u043c, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">SHIFT_DR:begin   case(instruction_par)     INST_IDCODE:begin       tdo &lt;= device_id_ser[0];     end     INST_BYPASS:begin       tdo &lt;= bypass_ser;     end     INST_SAMPLE:begin       tdo &lt;= boundary_ser[0];     end     INST_EXTEST:begin       tdo &lt;= boundary_ser[0];     end   endcase end &lt;...> UPDATE_DR:begin   case(instruction_par)     INST_SAMPLE:begin       boundary_par &lt;= boundary_ser;     end     INST_EXTEST:begin       boundary_par &lt;= boundary_ser;     end   endcase end<\/code><\/pre>\n<p> \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u0431\u0438\u0442\u0430\u043c\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043d\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u00abalways\u00bb \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0441 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u00abX ? Y : Z\u00bb:<\/p>\n<pre><code class=\"cpp\">assign led = (instruction_par == INST_EXTEST) ? {boundary_par[7:0]} : 8'bzzzz_zzzz;<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u043d\u0430 SystemVerilog \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">module main ( input      tms, input      tck, input      tdi, output reg tdo,  output reg [7:0]led, input      [1:0]btn );  parameter INSTRUCTION_LENGTH = 3; parameter INSTRUCTION_DEFAULT = 3'b001; reg [INSTRUCTION_LENGTH-1:0]instruction_ser; reg [INSTRUCTION_LENGTH-1:0]instruction_par; enum reg[INSTRUCTION_LENGTH-1:0]{ INST_IDCODE = 3'b001, INST_EXTEST = 3'b010, INST_BYPASS = 3'b011, INST_SAMPLE = 3'b100 } instructions;  parameter DEVICE_ID_LENGTH  = 32; parameter DEVICE_ID_DEFAULT = 32'h0AA55003; reg [DEVICE_ID_LENGTH-1:0]device_id_ser;  parameter BYPASS_DEFAULT = 0; reg bypass_ser;  parameter BOUNDARY_LENGTH = 10; reg [BOUNDARY_LENGTH-1:0]boundary_ser; reg [BOUNDARY_LENGTH-1:0]boundary_par;   enum{ TEST_LOGIC_RESET, RUN_TEST_IDLE, SELECT_DR_SCAN, CAPTURE_DR, SHIFT_DR, EXIT1_DR, PAUSE_DR, EXIT2_DR, UPDATE_DR, SELECT_IR_SCAN, CAPTURE_IR, SHIFT_IR, EXIT1_IR, PAUSE_IR, EXIT2_IR, UPDATE_IR } jtag_fsm = TEST_LOGIC_RESET;   always @(posedge tck) begin  case(jtag_fsm) CAPTURE_DR:begin case(instruction_par) INST_IDCODE:begin device_id_ser &lt;= DEVICE_ID_DEFAULT; end INST_BYPASS:begin bypass_ser    &lt;= BYPASS_DEFAULT; end INST_SAMPLE:begin boundary_ser[7:0] &lt;= led[7:0]; boundary_ser[9:8] &lt;= btn[1:0]; end INST_EXTEST:begin boundary_ser[7:0] &lt;= led[7:0]; boundary_ser[9:8] &lt;= btn[1:0]; end endcase end SHIFT_DR:begin case(instruction_par) INST_IDCODE:begin device_id_ser &lt;= {tdi,device_id_ser[DEVICE_ID_LENGTH-1:1]}; end INST_BYPASS:begin bypass_ser    &lt;= tdi; end INST_SAMPLE:begin boundary_ser  &lt;= {tdi,boundary_ser[BOUNDARY_LENGTH-1:1]}; end INST_EXTEST:begin boundary_ser  &lt;= {tdi,boundary_ser[BOUNDARY_LENGTH-1:1]}; end endcase end CAPTURE_IR:begin instruction_ser &lt;= INSTRUCTION_DEFAULT; end SHIFT_IR:begin instruction_ser &lt;= {tdi,instruction_ser[INSTRUCTION_LENGTH-1:1]}; end endcase   case(jtag_fsm) TEST_LOGIC_RESET:begin if(tms)jtag_fsm &lt;= TEST_LOGIC_RESET; elsejtag_fsm &lt;= RUN_TEST_IDLE; end RUN_TEST_IDLE:begin if(tms)jtag_fsm &lt;= SELECT_DR_SCAN; elsejtag_fsm &lt;= RUN_TEST_IDLE; end SELECT_DR_SCAN:begin if(tms)jtag_fsm &lt;= SELECT_IR_SCAN; elsejtag_fsm &lt;= CAPTURE_DR; end CAPTURE_DR:begin if(tms)jtag_fsm &lt;= EXIT1_DR; elsejtag_fsm &lt;= SHIFT_DR; end SHIFT_DR:begin if(tms)jtag_fsm &lt;= EXIT1_DR; elsejtag_fsm &lt;= SHIFT_DR; end EXIT1_DR:begin if(tms)jtag_fsm &lt;= UPDATE_DR; elsejtag_fsm &lt;= PAUSE_DR; end PAUSE_DR:begin if(tms)jtag_fsm &lt;= EXIT2_DR; elsejtag_fsm &lt;= PAUSE_DR; end EXIT2_DR:begin if(tms)jtag_fsm &lt;= UPDATE_DR; elsejtag_fsm &lt;= SHIFT_DR; end UPDATE_DR:begin if(tms)jtag_fsm &lt;= SELECT_DR_SCAN; elsejtag_fsm &lt;= RUN_TEST_IDLE; end SELECT_IR_SCAN:begin if(tms)jtag_fsm &lt;= TEST_LOGIC_RESET; elsejtag_fsm &lt;= CAPTURE_IR; end CAPTURE_IR:begin if(tms)jtag_fsm &lt;= EXIT1_IR; elsejtag_fsm &lt;= SHIFT_IR; end SHIFT_IR:begin if(tms)jtag_fsm &lt;= EXIT1_IR; elsejtag_fsm &lt;= SHIFT_IR; end EXIT1_IR:begin if(tms)jtag_fsm &lt;= UPDATE_IR; elsejtag_fsm &lt;= PAUSE_IR; end PAUSE_IR:begin if(tms)jtag_fsm &lt;= EXIT2_IR; elsejtag_fsm &lt;= PAUSE_IR; end EXIT2_IR:begin if(tms)jtag_fsm &lt;= UPDATE_IR; elsejtag_fsm &lt;= SHIFT_IR; end UPDATE_IR:begin if(tms)jtag_fsm &lt;= SELECT_DR_SCAN; elsejtag_fsm &lt;= RUN_TEST_IDLE; end endcase end   always @(negedge tck) begin case(jtag_fsm) TEST_LOGIC_RESET:begin instruction_par &lt;= INSTRUCTION_DEFAULT; tdo &lt;= 1'bz; end SHIFT_DR:begin case(instruction_par) INST_IDCODE:begin tdo &lt;= device_id_ser[0]; end INST_BYPASS:begin tdo &lt;= bypass_ser; end INST_SAMPLE:begin tdo &lt;= boundary_ser[0]; end INST_EXTEST:begin tdo &lt;= boundary_ser[0]; end endcase end EXIT1_IR:begin tdo &lt;= 1'bz; end UPDATE_DR:begin case(instruction_par) INST_SAMPLE:begin boundary_par &lt;= boundary_ser; end INST_EXTEST:begin boundary_par &lt;= boundary_ser; end endcase end SHIFT_IR:begin tdo &lt;= instruction_ser[0]; end EXIT1_IR:begin tdo &lt;= 1'bz; end UPDATE_IR:begin instruction_par &lt;= instruction_ser; end endcase end   assign led = (instruction_par == INST_EXTEST) ? {boundary_par[7:0]} : 8'bzzzz_zzzz;  endmodule <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u0432 \u0436\u0435\u043b\u0435\u0437\u0435\u00bb \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043b\u0435\u0433\u043a\u0430 \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b BSDL, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0445\u043e\u0434\u043e\u0432 \u0438 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u0422\u0435\u043a\u0441\u0442 \u0444\u0430\u0439\u043b\u0430 BSDL<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"vhdl\">entity MY_IC is generic (PHYSICAL_PIN_MAP : string); port  ( LED: out bit_vector(0 to 7); BTN: in bit_vector(0 to 1); TMS: in bit; TDI: in bit; TCK: in bit; TDO: out bit; VDD: linkage bit; VSS: linkage bit; NC:  linkage bit_vector(0 to 3) );  use STD_1149_1_2001.all;  attribute COMPONENT_CONFORMANCE of MY_IC : entity is \"STD_1149_1_2001\"; attribute PIN_MAP of MY_IC : entity is PHYSICAL_PIN_MAP;  constant  PLCC20:PIN_MAP_STRING:= \"LED:(1,2,3,4,5,6,7,8), \" &amp; \"BTN:(9,10),  \" &amp; \"TMS:11, \" &amp; \"TDI:12, \" &amp; \"TCK:13, \" &amp; \"TDO:14, \" &amp; \"VDD:15, \" &amp; \"VSS:16, \" &amp; \"NC:(17,18,19,20) \";  attribute TAP_SCAN_MODE of TMS : signal is true; attribute TAP_SCAN_IN    of TDI : signal is true; attribute TAP_SCAN_CLOCK of TCK : signal is (10.0e3, BOTH); attribute TAP_SCAN_OUT   of TDO : signal is true;  attribute INSTRUCTION_LENGTH of MY_IC : entity is 3; attribute INSTRUCTION_OPCODE of MY_IC : entity is \"IDCODE (001),\" &amp; \"EXTEST (010),\" &amp; \"BYPASS (011),\" &amp; \"SAMPLE (100) \"; attribute INSTRUCTION_CAPTURE of MY_IC : entity is \"00000001\";  attribute IDCODE_REGISTER of MY_IC : entity is \"0000\" &amp;-- \u043a\u043e\u0434 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0438\u043f\u0430 \u0442\u043e\u0433\u043e \"1010101001010101\" &amp;-- \u043a\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b hAA55 \"00000000001\" &amp;-- \u043a\u043e\u0434 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 AMD) \"1\"; -- \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 IEEE1149.1  attribute REGISTER_ACCESS of MY_IC : entity is \"DEVICE_ID (IDCODE),\" &amp; \"BYPASS    (BYPASS),\" &amp; \"BOUNDARY  (EXTEST, SAMPLE)\";  attribute BOUNDARY_LENGTH of MY_IC : entity is 10; attribute BOUNDARY_REGISTER of MY_IC : entity is \"0 (BC_1, LED(0), output2, X),\" &amp; \"1 (BC_1, LED(1), output2, X),\" &amp; \"2 (BC_1, LED(2), output2, X),\" &amp; \"3 (BC_1, LED(3), output2, X),\" &amp; \"4 (BC_1, LED(4), output2, X),\" &amp; \"5 (BC_1, LED(5), output2, X),\" &amp; \"6 (BC_1, LED(6), output2, X),\" &amp; \"7 (BC_1, LED(7), output2, X),\" &amp; \"8 (BC_1, BTN(0), input,   X),\" &amp; \"9 (BC_1, BTN(1), input,   X)\" ; end MY_IC;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u00abDE0-Nano\u00bb \u0441 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c JTAG, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u00abTopJTAG Probe\u00bb \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 BSDL, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438 \u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ddb\/8c1\/b12\/ddb8c1b129ac176e8ef465e6ef662e88.png\" width=\"1062\" height=\"701\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ddb\/8c1\/b12\/ddb8c1b129ac176e8ef465e6ef662e88.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/1ce\/9b8\/f35\/1ce9b8f35a725168e6d3c5e95e8e8d31.jpg\" width=\"1644\" height=\"1119\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ce\/9b8\/f35\/1ce9b8f35a725168e6d3c5e95e8e8d31.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p> \u041a\u0430\u043a \u0438 \u043b\u044e\u0431\u0430\u044f \u043a\u0440\u0443\u043f\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u0439, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, JTAG \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0435\u0440\u043c\u0435\u0442\u0438\u0447\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0434 \u0432\u0435\u0442\u0432\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p> \u0422\u0430\u043a, \u043a\u0440\u043e\u043c\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439 \u0434\u0432\u0443\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c, \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e JTAG \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0441 JTAG-\u043e\u043c \u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f JTAG. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 JTAG \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c. \u0414\u043b\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u2014 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0444\u0430\u0439\u043b\u043e\u0432 SVF \u0438\u043b\u0438 \u0435\u0449\u0451 \u0432\u044b\u0448\u0435, \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e (\u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0433\u043e) \u041f\u041e, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043d\u043e\u043c\u0435\u043d\u043a\u043b\u0430\u0442\u0443\u0440\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0435\u0439 \u0438 \u0438\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b.<\/p>\n<p> \u0414\u0440\u0443\u0433\u043e\u0439 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 JTAG. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 JTAG \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043b\u0430\u0441\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEEE1149.1.<\/p>\n<p> \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0441\u0430\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f, \u043e\u0434\u043d\u0438 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u0438 \u043e\u0442\u043c\u0438\u0440\u0430\u044e\u0442, \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0435\u0441\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u0432\u0443\u0445\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e JTAG, \u043f\u043e\u043b\u043d\u0430\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438.<\/p>\n<p> \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e JTAG \u0435\u0449\u0451 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u043a\u043e\u0435, \u0447\u0442\u043e \u0435\u0449\u0451 \u043d\u0438\u043a\u0435\u043c \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u0435 \u0438\u043b\u0438 \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435. \u042f \u0436\u0435 \u0432\u044b\u0440\u0430\u0436\u0430\u044e \u043d\u0430\u0434\u0435\u0436\u0434\u0443, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0446\u0438\u043a\u043b \u0441\u0442\u0430\u0442\u0435\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043b\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043b \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 JTAG \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u043a\u043e\u043c\u0443-\u0442\u043e, \u0440\u0430\u043d\u0435\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u043c\u0443 \u0441 JTAG \u043b\u0438\u0448\u044c \u043f\u043e\u043d\u0430\u0441\u043b\u044b\u0448\u043a\u0435, \u043e\u0449\u0443\u0442\u0438\u0442\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0430\u0439\u0442\u0430 \u043e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/663560\/\"> https:\/\/habr.com\/ru\/post\/663560\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/658477\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f JTAG: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/660795\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f JTAG: *.bsdl \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438<\/a><\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f JTAG: \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438?<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0432\u0448\u0438\u0441\u044c \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 JTAG \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0444\u0430\u0439\u043b BSDL \u0434\u043b\u044f \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u043e\u0434\u0443\u043b\u044f JTAG \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0434\u043b\u044f \u041f\u041b\u0418\u0421 (\u043d\u0430 \u00ab\u0421\u0438\u00bb \u0438 \u043d\u0430 \u00abSystemVerilog\u00bb), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\/\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0447\u0435\u0440\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p> \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 JTAG, \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 JTAG \u2014 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u2014 \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<p> \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0451\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u044b\u0434\u0430\u0447\u0438 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u043d\u0435. \u041f\u0443\u0441\u043a\u0430\u0439 \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 4-\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 (\u0431\u0438\u0442\u043e\u0432), \u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab1100\u00bb. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u044b\u0434\u0430\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab0101\u00bb, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u00ab\u0432\u0434\u0432\u0438\u043d\u0443\u0442\u044c\u00bb \u044d\u0442\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u041d\u0430 \u044d\u0442\u043e \u0443\u0439\u0434\u0451\u0442 4 \u0442\u0430\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u043d\u0435 \u0441\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0442\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0442\u0430\u043a\u0442\u043e\u0432 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: 1100\u21921110\u21920111\u21921011\u21920101.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p> \u041f\u043e\u0434\u043e\u0431\u043d\u043e\u0435, \u043a\u0432\u0430\u0437\u0438-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e, \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0434\u0430\u0436\u0435 \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0434\u0438\u043d, \u0430 \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 (\u0441\u0435\u043a\u0446\u0438\u0438). \u041f\u0440\u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0434\u0432\u0438\u0433 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044b \u0432 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u0443\u044e (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e) \u0441\u0435\u043a\u0446\u0438\u044e, \u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435) \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u00ab1100\u00bb \u043d\u0430 \u00ab0101\u00bb \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0444\u0440\u043e\u043d\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p> \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430, \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u0448\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0434\u0432\u0438\u0433\u0430 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f (\u0437\u0430\u0445\u0432\u0430\u0442\u0430) \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p> \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u00bb, \u0442\u0430\u043a \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u00ab\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u00bb, \u0442\u043e \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u0430: \u0437\u0430\u0445\u0432\u0430\u0442 (\u00abCapture\u00bb) \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e, \u0441\u0434\u0432\u0438\u0433 (\u00abShift\u00bb) \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 (\u00abUpdate\u00bb) \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p> \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 JTAG, \u0432\u0441\u0435 \u0442\u0440\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0435.<\/p>\n<p> \u0421\u0434\u0432\u0438\u0433 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 JTAG \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abSHIFT\u00a0XX\u00bb. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK, \u043d\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0XX\u00bb.<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0445\u0435\u043c\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 JTAG, \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0XX\u00bb \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u0430. \u041f\u0440\u0438\u0447\u0451\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0431\u0438\u0442, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 TMS \u043d\u0430 \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435, \u0430 \u0432\u0445\u043e\u0434 \u0432 \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (\u043a\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u00abCAPTURE\u00a0XX\u00bb \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0444\u0440\u043e\u043d\u0442\u0430 \u2014 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443. \u0422\u0430\u043a \u0432\u043e\u0442 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u00abCAPTURE\u00a0XX\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p> \u0415\u0441\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u00abDEVICE_ID\u00bb, \u0442\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0DR\u00bb \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK \u0432 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u00abBYPASS\u00bb, \u0442\u043e \u0432 \u0442\u043e\u043c \u0436\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 TCK \u0432 \u0435\u0433\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0451\u043d \u043d\u043e\u043b\u044c. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0IR\u00bb \u2014 \u0432 \u043d\u0435\u0433\u043e \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 \u00abINSTRUCTION_CAPTURE\u00bb \u0444\u0430\u0439\u043b\u0430 BSDL.<\/p>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u00abCAPTURE\u00a0XX\u00bb, \u00abUPDATE\u00a0XX\u00bb \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 <strong>\u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c<\/strong> \u0444\u0440\u043e\u043d\u0442\u0435. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e? \u0412\u0435\u0434\u044c \u0433\u043e\u043d\u043a\u0443 \u0444\u0440\u043e\u043d\u0442\u043e\u0432 \u0437\u0434\u0435\u0441\u044c, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0432\u0438\u0434\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443 \u0432\u0441\u0435\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0446\u0435\u043f\u0438 JTAG \u043e\u0431\u0449\u0430\u044f \u043b\u0438\u043d\u0438\u044f TMS, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p> \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0432\u0435\u0441\u044c\u043c\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 JTAG \u0441 \u043e\u0431\u0449\u0435\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043b\u0438\u043d\u0438\u0435\u0439 TCK, \u043d\u043e \u0441 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 TMS!<\/p>\n<figure class=\"full-width\"><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEEE1149.1-2001<\/figcaption><\/figure>\n<p> \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043c\u0435\u0436\u0434\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438 (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e JTAG \u0438 \u0434\u0435\u043b\u0430\u043b\u0441\u044f) \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430 \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435 \u043e\u0434\u043d\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432\u044b\u0434\u0430\u0434\u0443\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u0430\u0445, \u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 TCK \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 (\u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043b\u0438\u043d\u0438\u0438 \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u043d\u044b, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442) \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0432\u0445\u043e\u0434\u0430\u0445.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p> \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 JTAG, \u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u043c \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0443, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u00abUPDATE\u00a0XX\u00bb \u0438 \u00abCAPTURE\u00a0XX\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0440\u043e\u043d\u0442\u0430\u0445.<\/p>\n<p> \u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u00abBOUNDARY\u00bb \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u0445, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0438\u043c.<\/p>\n<p> \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00abSAMPLE\u00bb. \u0415\u0441\u043b\u0438 \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u044d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0442\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0DR\u00bb \u043d\u0430 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435 TCK \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0445\u043e\u0434\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u041f\u0435\u0440\u0435\u0439\u0434\u044f \u0437\u0430\u0442\u0435\u043c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abSHIFT\u00a0DR\u00bb, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0432\u0441\u0435 \u0431\u0438\u0442\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u0447\u0435\u0440\u0435\u0437 TDO \u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b.<\/p>\n<p> \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abEXTEST\u00bb \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445.<\/p>\n<p> \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abEXTEST\u00bb. \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abSHIFT\u00a0DR\u00bb \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u0443\u0442 \u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0440\u0430\u043d\u0435\u0435 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abUPDATE\u00a0DR\u00bb. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u043e\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abUPDATE\u00a0DR\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0431\u0438\u0442\u043e\u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abEXTEST\u00bb.<\/p>\n<p> \u041f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u044d\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abUPDATE\u00a0IR\u00bb. \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043c\u044b \u0435\u0449\u0451 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043b\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb, \u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043d\u0435\u0451 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b! \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u044b \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u044d\u0442\u0430 \u0441\u0435\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abPRELOAD\u00bb.<\/p>\n<figure class=\"full-width\"><figcaption>\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abPRELOAD\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb<\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abEXTEST\u00bb \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abBOUNDARY\u00bb<\/figcaption><\/figure>\n<p> \u0422\u0430\u043a \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abSAMPLE\u00bb \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0441\u0431\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00abBOUNDARY\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0445 \u0432\u044b\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 TDO, \u0430 \u00abPRELOAD\u00bb \u2014 \u0437\u0430\u0434\u0432\u0438\u0433\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 TDI, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u0431\u0440\u043e\u0441 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e (\u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u00ab\u0432\u044b\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u00bb \u0438 \u00ab\u0437\u0430\u0434\u0432\u0438\u0433\u0430\u043d\u0438\u0435\u00bb \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0434\u0432\u0438\u0433\u0430), \u0442\u043e \u044d\u0442\u0438 \u0434\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u0443 \u2014 \u00abSAMPLE\/PRELOAD\u00bb. \u0412 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 1990 \u0433\u043e\u0434\u0430 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u0436\u0451\u0441\u0442\u043a\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b, \u043d\u043e \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 2001 \u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b\u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043e\u0434\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043b\u0438\u0431\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432.<\/p>\n<p> \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u00abBOUNDARY\u00bb \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0442\u043a\u0430 \u00abIR\u00bb \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430, \u0430 \u043d\u0435 \u0432\u0435\u0442\u043a\u0430 \u00abDR\u00bb. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u2014 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abCAPTURE\u00a0IR\u00bb \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 \u00abINSTRUCTION_CAPTURE\u00bb \u0444\u0430\u0439\u043b\u0430 BSDL), \u0430 \u043f\u043e \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00abUPDATE\u00a0IR\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0443\u044e \u0438 \u043d\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0441\u0438\u043b\u0443.<\/p>\n<h2> \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0435\u0434\u043e\u043c\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 JTAG \u043d\u0430 \u0421\u0438<\/h2>\n<p> \u0417\u043d\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f JTAG, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430. \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u0435 \u00abNUCLEO-F103RB\u00bb, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 (\u0432\u044b\u0432\u043e\u0434 PA5) \u0438 \u043e\u0434\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 (\u0432\u044b\u0432\u043e\u0434 PC13). \u0427\u0430\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 <a href=\"https:\/\/habr.com\/ru\/post\/658477\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0446\u0438\u043a\u043b\u0430. \u041d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p> \u0418\u0442\u0430\u043a.<\/p>\n<p> \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u044b:<\/p>\n<pre><code class=\"cpp\">#define JTMS_PIN GPIO_PIN_1 #define JTCK_PIN GPIO_PIN_15 #define JTDI_PIN GPIO_PIN_14 #define JTDO_PIN GPIO_PIN_13  #define LED0_PIN GPIO_PIN_5 #define BTN0_PIN GPIO_PIN_13<\/code><\/pre>\n<p> \u0418 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u044d\u0442\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abMX_GPIO_Init\u00bb:<\/p>\n<pre><code class=\"cpp\">\/\/==== JTAG PINS INIT BEGIN ==== GPIO_InitStruct.Pin  = JTMS_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = JTCK_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = JTDI_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = JTDO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &amp;GPIO_InitStruct); \/\/==== JTAG PINS INIT END ====  \/\/==== I\/O PINS INIT BEGIN ==== GPIO_InitStruct.Pin  = BTN0_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &amp;GPIO_InitStruct);  GPIO_InitStruct.Pin  = LED0_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct); \/\/==== I\/O PINS INIT END ====<\/code><\/pre>\n<p> \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u00ab\u043e\u0447\u0438\u0449\u0435\u043d\u043d\u0443\u044e\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abmain\u00bb:<\/p>\n<pre><code class=\"cpp\">int<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-332563","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=332563"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332563\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=332563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=332563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=332563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}