{"id":437672,"date":"2024-11-07T21:09:07","date_gmt":"2024-11-07T21:09:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=437672"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=437672","title":{"rendered":"<span>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0435\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c: CGA \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0430 SpinalHDL<\/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<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 (<a href=\"https:\/\/habr.com\/ru\/articles\/801191\/\" rel=\"noopener noreferrer nofollow\">\u0447.1<\/a>, <a href=\"https:\/\/habr.com\/ru\/articles\/802127\/\" rel=\"noopener noreferrer nofollow\">\u0447.2<\/a>) \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u0443\u044e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u2014 \u043d\u0435\u043a\u0443\u044e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0434 \u0432\u0430\u0448\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0451 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u0430\u0448\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0438 \u043e\u0442 \u0440\u044b\u043d\u043e\u0447\u043d\u043e\u0439 \u043a\u043e\u043d\u044a\u044e\u043d\u043a\u0442\u0443\u0440\u044b, \u043d\u0438 \u043e\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0438 \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u044d\u0442\u043e\u0439 \u0421\u043d\u041a \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043f\u043e\u0434 \u0442\u0438\u043f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0434\u043e\u0431\u0440\u043e\u0433\u043e Color Graphics Adapter (CGA), \u043d\u043e \u0441 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c (HDMI) \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL \u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0435 \u0435\u0451 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0442\u0443\u043b. \u0412\u0441\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab<a href=\"https:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254https:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u0440\u043d\u043e<\/a>\u00bb \u0441 \u041f\u041b\u0418\u0421 Lattice \u0441\u0435\u0440\u0438\u0438 ECP5, \u043d\u043e \u0432\u0435\u0441\u044c \u043c\u043e\u0439 \u043a\u043e\u0434, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0430\u0441\u0442\u0438 \u043a\u0430\u0441\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a PLL, \u0431\u0443\u0434\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0438 \u043b\u0435\u0433\u043a\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043f\u043e\u0434 \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0438\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c Yosys\/NextPNR.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e7\/2aa\/8e5\/3e72aa8e511f0bfe05f015d2450dd3de.png\" alt=\"IBM Color\/Graphics Adapter, circa 1981.\" title=\"IBM Color\/Graphics Adapter, circa 1981.\" width=\"1920\" height=\"767\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e7\/2aa\/8e5\/3e72aa8e511f0bfe05f015d2450dd3de.png\"\/><\/p>\n<div><figcaption><em>IBM Color\/Graphics Adapter, circa 1981.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u043d\u043d\u043e\u0439, \u0432 \u043d\u0435\u0439 \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 SpinalHDL \u0438 \u043d\u0430 C. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0441\u043e\u0432\u0435\u0442 \u0442\u0435\u043c \u043a\u043e\u043c\u0443 \u043d\u0435 \u0442\u0435\u0440\u043f\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; \u043c\u043e\u0442\u0430\u0439\u0442\u0435 \u0432 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u043d\u0435\u0446, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e. \u0410 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0432\u0441\u0451 \u0436\u0435 \u0440\u0438\u0441\u043a\u043d\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e \u043a\u043e\u043d\u0446\u0430, \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e <a href=\"https:\/\/www.fabmicro.ru\/pub\/articles\/Developing_CGA_on_SpinalHDL.pdf\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PDF<\/a>. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448\u0435 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f!<\/p>\n<p> <strong>\u0421\u041e\u0414\u0415\u0420\u0416\u0410\u041d\u0418\u0415<\/strong><\/p>\n<p><a href=\"#1\" rel=\"noopener noreferrer nofollow\">1. \u0417\u0430\u0447\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e ?<\/a><\/p>\n<p><a href=\"#2\" rel=\"noopener noreferrer nofollow\">2. High-Definition Media Interface<\/a><\/p>\n<p><a href=\"#3\" rel=\"noopener noreferrer nofollow\">3. \u042d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432 \u0440\u0430\u0437\u044a\u0435\u043c\u0435 HDMI<\/a><\/p>\n<p><a href=\"#4\" rel=\"noopener noreferrer nofollow\">4. TMDS \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 DVI-D \u0438 HDMI<sup>(R)<\/sup><\/a><\/p>\n<p><a href=\"#5\" rel=\"noopener noreferrer nofollow\">5. \u0412\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438 \u0432\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438<\/a><\/p>\n<p><a href=\"#6\" rel=\"noopener noreferrer nofollow\">6. \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430<\/a><\/p>\n<p><a href=\"#6.1\" rel=\"noopener noreferrer nofollow\">6.1. \u0412\u044b\u0431\u043e\u0440 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/a><\/p>\n<p><a href=\"#6.2\" rel=\"noopener noreferrer nofollow\">6.2. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 HDMIInterface<\/a><\/p>\n<p><a href=\"#6.3\" rel=\"noopener noreferrer nofollow\">6.3. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 KarnixTestHDMITopLevel<\/a><\/p>\n<p><a href=\"#6.4\" rel=\"noopener noreferrer nofollow\">6.4. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438<\/a><\/p>\n<p><a href=\"#6.5\" rel=\"noopener noreferrer nofollow\">6.5. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u00ab\u043c\u0443\u0430\u0440\u00bb<\/a><\/p>\n<p><a href=\"#6.6\" rel=\"noopener noreferrer nofollow\">6.6. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u044b<\/a><\/p>\n<p><a href=\"#6.7\" rel=\"noopener noreferrer nofollow\">6.7. \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c KarnixTestHDMI \u043d\u0430 \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#7\" rel=\"noopener noreferrer nofollow\">7. Color Graphics Adapter<\/a><\/p>\n<p><a href=\"#7.1\" rel=\"noopener noreferrer nofollow\">7.1. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/a><\/p>\n<p><a href=\"#7.2\" rel=\"noopener noreferrer nofollow\">7.2. \u0412\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0438 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/a><\/p>\n<p><a href=\"#7.3\" rel=\"noopener noreferrer nofollow\">7.3. \u0410\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c CGA \u043f\u043e\u0434 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0438<\/a><\/p>\n<p><a href=\"#8\" rel=\"noopener noreferrer nofollow\">8. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/a><\/p>\n<p><a href=\"#8.1\" rel=\"noopener noreferrer nofollow\">8.1. \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c, \u043e\u043d \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439<\/a><\/p>\n<p><a href=\"#8.2\" rel=\"noopener noreferrer nofollow\">8.2. \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0432 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0421\u043d\u041a<\/a><\/p>\n<p><a href=\"#8.3\" rel=\"noopener noreferrer nofollow\">8.3. \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0421\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430<\/a><\/p>\n<p><a href=\"#8.4\" rel=\"noopener noreferrer nofollow\">8.4. \u0418\u0437\u043c\u0435\u0440\u044f\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c<\/a><\/p>\n<p><a href=\"#8.5\" rel=\"noopener noreferrer nofollow\">8.5. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Bitblit \u0438 \u0437\u0430\u043c\u0435\u0440 \u0435\u0451 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<p><a href=\"#9\" rel=\"noopener noreferrer nofollow\">9. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/a><\/p>\n<p><a href=\"#9.1\" rel=\"noopener noreferrer nofollow\">9.1. \u0417\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/a><\/p>\n<p><a href=\"#9.2\" rel=\"noopener noreferrer nofollow\">9.2. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430<\/a><\/p>\n<p><a href=\"#9.3\" rel=\"noopener noreferrer nofollow\">9.3. \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/a><\/p>\n<p><a href=\"#9.4\" rel=\"noopener noreferrer nofollow\">9.4. \u041c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440<\/a><\/p>\n<p><a href=\"#9.5\" rel=\"noopener noreferrer nofollow\">9.5. \u041f\u043b\u0430\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 (\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a><\/p>\n<p><a href=\"#10\" rel=\"noopener noreferrer nofollow\">10. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b<\/a><\/p>\n<p><a href=\"#10.1\" rel=\"noopener noreferrer nofollow\">10.1. \u0412\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0435 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432<\/a><\/p>\n<p><a href=\"#10.2\" rel=\"noopener noreferrer nofollow\">10.2. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/a><\/p>\n<p><a href=\"#10.3\" rel=\"noopener noreferrer nofollow\">10.3. \u0421\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u2014 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e<\/a><\/p>\n<p><a href=\"#10.4\" rel=\"noopener noreferrer nofollow\">10.4. \u0412\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435<\/a><\/p>\n<p><a href=\"#11\" rel=\"noopener noreferrer nofollow\">11. \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<p><a href=\"#12\" rel=\"noopener noreferrer nofollow\">12. \u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 ?<\/a><\/p>\n<p><a href=\"#13\" rel=\"noopener noreferrer nofollow\">13. \u0421\u0441\u044b\u043b\u043a\u0438<\/a><\/p>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h2> 1. \u0417\u0430\u0447\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e ?<\/h2>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u043e\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u043d\u0430\u0444\u0438\u0433\u0430 \u043a\u043e\u0437\u0435 \u0431\u0430\u044f\u043d \u0438 \u0432 \u0447\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u0442?\u00bb <\/p>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0421\u043d\u041a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434 RV32IM (32 \u0431\u0438\u0442 RISC-V), \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00abIoT\u00bb. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0412\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u0431\u043e\u0440 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0432 \u043a\u043e\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432 \u0432\u0430\u0448\u0435\u043c \u0437\u0430\u0433\u043e\u0440\u043e\u0434\u043d\u043e\u043c \u0434\u043e\u043c\u0435. \u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u044d\u0442\u043e\u0439 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 &#8212; \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e-\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435, \u043d\u043e \u043c\u044b \u0442\u0430\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c, \u0442\u0430\u043a \u0432\u0435\u0434\u044c? \ud83d\ude09 \u0421\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u0430\u043c\u043e\u0431\u044b\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0442\u0443\u0442 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435  Arduino Nano \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u0441 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043d\u0430 \u0421\u0438. \u0418 \u0442\u0430\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 Github-\u0430 \u0442\u043e\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0412\u0430\u043c \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u0438\u043b\u0438 \u043d\u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0432 \u0433\u043e\u0441\u0442\u0438\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435, \u043d\u0443 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0433\u043e\u0441\u0442\u044f\u043c\u0438 \u0432\u0430\u0448\u0438\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u042d\u0412\u041c \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0435 \u0445\u0443\u0436\u0435 \u0447\u0435\u043c Raspberry Pi, \u0441 HDMI \u0438\u043b\u0438 VGA \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0438 \u0441 \u041e\u0421 Linux \u043d\u0430 \u0431\u043e\u0440\u0442\u0443. \u0412 \u0446\u0435\u043b\u043e\u043c, \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e, \u043d\u043e \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u0448\u0435\u0432\u044b\u043c. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c-\u0442\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435, \u0442\u0430\u043a \u043a\u0430\u043a MMC\/MicroSD \u043a\u0430\u0440\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u044d\u0442\u0438\u0445 \u00ab\u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u0438\u043a\u043e\u0432\u00bb, \u043f\u0440\u0438 \u0431\u0440\u043e\u0441\u043a\u0430\u0445 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043c\u0440\u0443\u0442 \u043a\u0430\u043a \u043c\u0443\u0445\u0438. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0434\u043e\u043b\u0433\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041e\u0421 Linux. \u041d\u0443 \u0438 \u0432-\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0445, \u0412\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0435\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0434 Linux \u0438 X11, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0432 \u043f\u0430\u0440\u0443-\u0442\u0440\u043e\u0439\u043a\u0443 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0445 \u0446\u0438\u0444\u0440 \u0438\u043b\u0438 \u043f\u0430\u0440\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u044b\u043c. \u0418\u043b\u0438 \u0432\u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u0431\u043b\u043e \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u043d\u0430 \u0430\u0432\u0442\u043e\u0431\u0443\u0441\u043d\u043e\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. \u0422\u0430 \u0436\u0435 RPi \u0442\u0443\u0442 \u0443\u0436\u0435 \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043d\u0438\u0437\u043a\u0438\u0445 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440 \u0438 \u0447\u0442\u043e\u0431\u044b \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u043e\u0433\u043e\u0440\u043e\u0434. \u0418\u043b\u0438 \u043f\u0443\u043b\u044c\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u043c \u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0410\u0421\u0423\u0422\u041f (\u0442.\u00a0\u043d. HMI). \u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u0430\u0445 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440, \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438 \u0441\u0431\u043e\u0435, \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u043e\u0432\u044b\u0448\u0435 \u0447\u0435\u043c \u0443 MicroSD \u043a\u0430\u0440\u0442\u044b. \u041a\u043e\u0440\u043e\u0447\u0435, \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 HDMI \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0438\u043b\u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0438\u0442 \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439.<\/p>\n<p>\u041d\u043e \u0441\u0430\u043c \u044f \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043a \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u2014 \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 HDMI \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c-\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u041f\u041b\u0418\u0421 \u0434\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0441\u043c\u043e\u0433 \u0431\u044b \u0435\u0433\u043e \u0440\u0430\u0441\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0437\u0430\u043d\u044f\u043b\u0441\u044f \u044f \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0438\u0437 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430.<\/p>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<h2> 2. High-Definition Media Interface<\/h2>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u043e, \u0432\u0438\u0434\u0435\u043e \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0435, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 High-Definition Multimedia Interface (HDMI) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u043c \u0438 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0435\u0433\u043e \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0430 \u00abHDMI Adopters\u00bb \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043d\u0430\u043c  \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0430\u0443\u0434\u0438\u043e\/\u0432\u0438\u0434\u0435\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b &#8212; Sony, Panasonic, Hitachi, Thompson, Toshiba, Philips \u0438 Silicon Image. \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f \u043f\u0438\u0448\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c \u0432\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 1700 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0438 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435\u043c\u0430\u043b\u044b\u0445 \u0434\u0435\u043d\u0435\u0433. \u042f \u043d\u0435 \u044e\u0440\u0438\u0441\u0442, \u043d\u043e \u0432 \u0441\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI <sup>(R)<\/sup> \u043e\u0431\u044f\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u00ab\u0440\u043e\u044f\u043b\u0442\u0438\u00bb \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 HDMI Licensing, LLC \u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u043f\u0430 \u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u044d\u0442\u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u043d \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u043c \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0430 \u0438\u043b\u0438 \u0441\u043a\u0430\u0447\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI<sup>(R)<\/sup> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 &#8212; \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (source) \u043a \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443 (sink), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c \u0432 \u043e\u0431\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445. \u0426\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u0430\u0443\u0434\u0438\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432 \u0441\u0436\u0430\u0442\u043e\u043c (compressed), \u0442\u0430\u043a \u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c (uncompressed) \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0432\u0438\u0434\u0435\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0436\u0430\u0442\u044b\u043c. \u0415\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 (\u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439) \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e HDMI \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432\u0438\u0434\u0435\u043e \u0438 \u0430\u0443\u0434\u0438\u043e, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Intel \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e High-bandwidth Digital Content Protection (HDCP), \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442 DVD \u043f\u043b\u0435\u0439\u0435\u0440\u0430) \u043a \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443 (\u0432\u0438\u0434\u0435\u043e\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440\u0443). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043b\u044e\u0447\u0430\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u043e\u0442 Digital Content Protection LLC, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u0442\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u044f\u0434\u0443 \u0441\u0442\u0440\u043e\u0433\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0418 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0434\u0430\u0432\u043d\u043e \u00ab\u0443\u0442\u0435\u043a\u043b\u0438\u00bb \u0438 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, Intel \u0433\u0440\u043e\u0437\u0438\u0442\u0441\u044f \u0437\u0430\u0441\u0443\u0434\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e, \u043a\u0442\u043e \u043f\u043e\u0441\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0441 <a href=\"https:\/\/en.wikipedia.org\/wiki\/High-bandwidth_Digital_Content_Protectionhttps:\/\/en.wikipedia.org\/wiki\/High-bandwidth_Digital_Content_Protection\" rel=\"noopener noreferrer nofollow\">HDCP<\/a> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<p>\u041d\u043e \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI <sup>(R)<\/sup> \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2000-\u0445, \u0432 \u044d\u043f\u043e\u0445\u0443 \u0431\u0443\u0440\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e (PAL\/NTS\u0421 \u0438 VGA) \u0432\u0438\u0434\u0435\u043e \u043a \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u043c\u0443 \u0438 \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e HDMI \u0432\u043d\u0435\u0441\u0435\u043d\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_Visual_Interface\" rel=\"noopener noreferrer nofollow\">DVI<\/a>, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 DVI-D \u2014 \u0435\u0433\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u043b \u044d\u0442\u043e \u043c\u0438\u043c\u043e\u043b\u0435\u0442\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043d\u0438\u0435, \u043f\u043e\u044f\u0441\u043d\u044e \u0447\u0442\u043e DVI \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 (\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439) \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u0432, \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 \u043a \u041f\u041a \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 1990-\u0445 \u0433\u043e\u0434\u043e\u0432. \u0415\u0433\u043e \u0446\u0435\u043b\u044c\u044e \u0431\u044b\u043b\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 VGA \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0415\u0441\u043b\u0438 \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/VGA_connector\" rel=\"noopener noreferrer nofollow\">VGA \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435<\/a> (\u0442\u0443\u0442 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0443 \u0441\u0430\u043c \u0440\u0430\u0437\u044a\u0435\u043c D-sub DE-15) \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u00abred\u00bb, \u00abgreen\u00bb \u0438 \u00abblue\u00bb \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0442\u0440\u0435\u043c \u043f\u0430\u0440\u0430\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432 \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0443\u0440\u043e\u0432\u043d\u044f\u043c\u0438 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0439, \u0442\u043e \u0432 DVI-D \u044d\u0442\u0438 \u0436\u0435 \u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0442 \u043f\u043e \u0442\u0440\u0435\u043c \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c TMDS \u043f\u0430\u0440\u0430\u043c, \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0446\u0432\u0435\u0442\u0430, \u0438 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c. \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f TMDS \u043f\u0430\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 (pixclk), \u0447\u0435\u0433\u043e \u0432 VGA \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041e\u0442 VGA \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 DVI \u0431\u044b\u043b\u0430 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0430 \u0441\u0435\u0442\u043a\u0430 \u0447\u0430\u0441\u0442\u043e\u0442 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 VESA, \u0445\u043e\u0442\u044f \u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0430. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 640&#215;480 @ 60 \u0413\u0446 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 pixclk = 25.175 \u041c\u0413\u0446 (\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u043a\u0443 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435). \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0432 DVI \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0435\u043d \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 Display Data Channel (DDC) \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 (E-DID) \u0438 \u043f\u0440\u043e\u0447\u0435\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c. \u0414\u043b\u044f DDC \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f I<sup>2<\/sup>C \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u2014 DDC clock \u0438 DDC data.<\/p>\n<p>\u0422\u0430\u043a \u0447\u0435\u043c \u0436\u0435 \u044d\u0442\u043e \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c? \u0410 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e DVI-D, \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, HDMI \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 DVI-D \u0438 \u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0414\u0430, \u0443 HDMI \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0438 \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0441 DVI-D, \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e (DDR), \u0435\u0441\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0437\u0432\u0443\u043a \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u043c \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u041d\u0443 \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043a\u0440\u043e\u043c\u0435 \u0437\u0432\u0443\u043a\u0430, \u043d\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043d\u0430\u0448 \u0432\u0438\u0434\u0435\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u0430\u043a \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f DVI-D \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 HDMI \u0440\u0430\u0437\u044a\u0435\u043c Type A.<\/p>\n<p>\u041d\u0430 Reddit-\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442 \u0441 \u0431\u0443\u0440\u043d\u044b\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430: <a href=\"https:\/\/www.reddit.com\/r\/FPGA\/comments\/y974yi\/does_adding_a_hdmi_connector_to_a_fpga_product\/https:\/\/www.reddit.com\/r\/FPGA\/comments\/y974yi\/does_adding_a_hdmi_connector_to_a_fpga_product\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0433\u0430\u043b\u044c\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <\/a> <a href=\"https:\/\/www.reddit.com\/r\/FPGA\/comments\/y974yi\/does_adding_a_hdmi_connector_to_a_fpga_product\/https:\/\/www.reddit.com\/r\/FPGA\/comments\/y974yi\/does_adding_a_hdmi_connector_to_a_fpga_product\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0432\u043e\u0438\u0445 \u0438\u0437\u0434\u0435\u043b\u0438\u044f\u0445 HDMI \u0440\u0430\u0437\u044a\u0435\u043c\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 DVI-D \u0441\u0438\u0433\u043d\u0430\u043b\u0430<\/a> \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u043e\u0442\u0441\u0442\u0451\u0433\u0438\u0432\u0430\u044f. \u0412\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u0435\u043d\u0438\u0438, \u0447\u0442\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e DVI-D \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 DDWG Promoters Group, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u00abHDMI Adopters\u00bb \u0438 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0442\u043e \u0438 \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u044c \u0432 HDMI Licensing, LLC \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u0437\u0434\u0435\u043b\u0438\u0438 \u043b\u043e\u0433\u043e\u0442\u0438\u043f HDMI \u0438 \u043d\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u044d\u0442\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041d\u043e \u0445\u0432\u0430\u0442\u0438\u0442 \u0431\u0435\u043b\u043b\u0435\u0442\u0440\u0438\u0441\u0442\u0438\u043a\u0438, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0434\u0435\u043b\u0443. \u041a\u0430\u043a \u0412\u044b \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u043b\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 DVI-D. \u041b\u044e\u0431\u043e\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 HDMI \u0434\u0430\u043b\u0435\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0432\u0438\u0434\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0440\u0438\u0441.1 (\u0441\u043f\u0435\u0440\u0435\u0434\u0438), \u0438 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \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\/9fa\/75e\/881\/9fa75e88168babdd7967de79994771c4.png\" alt=\" \u0420\u0438\u0441. 1. \u041f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a \u0441 DVI-D (\u0441\u0437\u0430\u0434\u0438) \u043d\u0430 HDMI (\u0441\u043f\u0435\u0440\u0435\u0434\u0438).\" title=\" \u0420\u0438\u0441. 1. \u041f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a \u0441 DVI-D (\u0441\u0437\u0430\u0434\u0438) \u043d\u0430 HDMI (\u0441\u043f\u0435\u0440\u0435\u0434\u0438).\" width=\"1024\" height=\"819\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9fa\/75e\/881\/9fa75e88168babdd7967de79994771c4.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 1. \u041f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a \u0441 DVI-D (\u0441\u0437\u0430\u0434\u0438) \u043d\u0430 HDMI (\u0441\u043f\u0435\u0440\u0435\u0434\u0438).<\/em><\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"3\" id=\"3\"><\/a><\/p>\n<h2> 3. \u042d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432 \u0440\u0430\u0437\u044a\u0435\u043c\u0435 HDMI<\/h2>\n<p>\u0423 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 DVI \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439 \u0432\u0438\u0434 \u0440\u0430\u0437\u044a\u0435\u043c\u043e\u0432, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0438\u043f\u043e\u0432, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432: DVI-I \u0438 DVI-D, \u043a\u0430\u0436\u0434\u044b\u0439 \u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u00abSingle Link\u00bb \u0438 \u00abDual Link\u00bb. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 DVI-I \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043c\u0438\u043c\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0435\u0449\u0435 \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 R, G \u0438 B. \u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u00abSingle Link\u00bb \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0442\u0440\u0438 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 TMDS Data[2:0]) \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u0445 \u0434\u043e 165 \u041c\u0413\u0446 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 1920&#215;1200@60,  \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u00abDual Link\u00bb \u0438\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430 \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439  \u0441\u0438\u0433\u043d\u0430\u043b\u0430 TMDS Clock \u0432\u0441\u0435 \u0442\u0430\u043a \u0436\u0435 \u043e\u0434\u0438\u043d) \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 2560&#215;1600@60. \u0420\u0430\u0437\u044a\u0435\u043c DVI \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b DDC clock \u0438 DDC data \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 (E-DID) \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u0438\u043d\u0438\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f +5\u0412 \u0438 \u00ab\u0437\u0435\u043c\u043b\u0438\u00bb.<\/p>\n<p>\u0418\u0437 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 HDMI \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0435\u0432\u0430\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0438 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0438 TMDS Data[2:0]+ \/ TMDS Data[2:0]-, \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f TMDS Clock+ \/ TMDS Clock-, \u0441\u0438\u0433\u043d\u0430\u043b\u044b DDC clock \/ DDC data \u0438 \u043b\u0438\u043d\u0438\u044f +5\u0412. HDMI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u044b\u043b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c Consumer Electronics Control (CEC) \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0434\u043d\u043e\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0430\u044f \u0434\u0432\u0443\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0448\u0438\u043d\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 HDMI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 (sink) \u0441 \u043f\u0443\u043b\u044c\u0442\u0430 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0441\u0438\u0433\u043d\u0430\u043b Hot Plug Detect (HPD) \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u00ab\u043d\u0430 \u0433\u043e\u0440\u044f\u0447\u0443\u044e\u00bb. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0437\u044a\u0435\u043c HDMI Type A \u0432\u0435\u0440\u0441\u0438\u0438 1.0 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 1. \u041d\u0430 \u0440\u0438\u0441. 2 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0445\u043e\u0434 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u044a\u0435\u043c\u0435.<\/p>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 1. \u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u0440\u0430\u0437\u044a\u0435\u043c\u0435 HDMI Type A \u0432\u0435\u0440\u0441\u0438\u0438 1.0-1.3a<\/em><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">\u2116 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u2116 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">1<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data2+<\/p>\n<\/td>\n<td>\n<p align=\"center\">2<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data2 Shield<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">3<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data2\u2212<\/p>\n<\/td>\n<td>\n<p align=\"center\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data1+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">5<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data1 Shield<\/p>\n<\/td>\n<td>\n<p align=\"center\">6<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data1\u2212<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">7<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data0+<\/p>\n<\/td>\n<td>\n<p align=\"center\">8<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data0 Shield<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">9<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Data0\u2212<\/p>\n<\/td>\n<td>\n<p align=\"center\">10<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Clock+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">11<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Clock Shield<\/p>\n<\/td>\n<td>\n<p align=\"center\">12<\/p>\n<\/td>\n<td>\n<p align=\"center\">TMDS Clock\u2212<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">13<\/p>\n<\/td>\n<td>\n<p align=\"center\">CEC<\/p>\n<\/td>\n<td>\n<p align=\"center\">14<\/p>\n<\/td>\n<td>\n<p align=\"center\">Reserved<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">15<\/p>\n<\/td>\n<td>\n<p align=\"center\">SCL(I2C serial clock for DDC)<\/p>\n<\/td>\n<td>\n<p align=\"center\">16<\/p>\n<\/td>\n<td>\n<p align=\"center\">SDA (I2C serial data for DDC)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">17<\/p>\n<\/td>\n<td>\n<p align=\"center\">Ground<\/p>\n<\/td>\n<td>\n<p align=\"center\">18<\/p>\n<\/td>\n<td>\n<p align=\"center\">+5V (up to 50 mA)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">19<\/p>\n<\/td>\n<td>\n<p align=\"center\">Hot Plug Detect (HPD)<\/p>\n<\/td>\n<td>\n<p align=\"center\">SHIELD<\/p>\n<\/td>\n<td>\n<p align=\"center\">GND <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e18\/2f9\/65c\/e182f965c17f9b033ca61cf0508aea4f.png\" alt=\"\u0420\u0438\u0441. 2. \u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0432 \u0440\u0430\u0437\u044a\u0435\u043c HDMI Type A.\" title=\"\u0420\u0438\u0441. 2. \u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0432 \u0440\u0430\u0437\u044a\u0435\u043c HDMI Type A.\" width=\"1920\" height=\"760\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e18\/2f9\/65c\/e182f965c17f9b033ca61cf0508aea4f.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 2. \u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0432 \u0440\u0430\u0437\u044a\u0435\u043c HDMI Type A.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b HPD, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0436\u0435\u0441\u0442\u043a\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430 \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438 \u043d\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u043c 10K \u043d\u0430 \u00ab\u0437\u0435\u043c\u043b\u044e\u00bb \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438 5.1\u041a \u043a \u043b\u0438\u043d\u0438\u0438 +5\u0412 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u041f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043b\u043e\u0433 \u00ab0\u00bb \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438, \u0430 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430  &#8212; \u043b\u043e\u0433 \u00ab1\u00bb (+3.3\u0412).<\/p>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b CEC \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u0438\u043d\u0438\u044e \u0442\u0438\u043f\u0430 \u00ab\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u00bb, \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 I2C, \u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u043d \u0434\u043b\u044f HDMI. \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0444\u0440\u0435\u0439\u043c\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 4 \u0431\u0438\u0442\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u043e 15 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0430\u0434\u0440\u0435\u0441 15 \u2014 \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439).<\/p>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b\u044b \u0448\u0438\u043d\u044b DDC, \u043a\u0430\u043a \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0448\u0438\u043d\u0443 I2C \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 100 \u043a\u0431\u0438\u0442\/\u0441\u0435\u043a \u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0443\u044e\u0441\u044f \u0434\u043b\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 (\u0431\u043b\u043e\u043a E-DID \u0438\u043b\u0438 E-EDID), \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Display_Data_Channel\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438. \u0412 HDMI<sup>(R) <\/sup> \u0448\u0438\u043d\u0430 DDC \u0442\u0430\u043a\u0436\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HDCP.<\/p>\n<p>\u041d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0441\u0438\u0433\u043d\u0430\u043b\u044b HPD, CEC \u0438 \u0448\u0438\u043d\u044b DDC \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430.<\/p>\n<p><a class=\"anchor\" name=\"4\" id=\"4\"><\/a><\/p>\n<h2> 4. TMDS \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 DVI-D \u0438 HDMI(R)<\/h2>\n<p>\u0412 DVI-D \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e  \u0442\u0440\u0435\u043c \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\/\u043b\u0438\u043d\u0438\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f Transition Minimized Differential Signaling (TMDS). \u041a\u0430\u0436\u0434\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0442\u0440\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f: \u043b\u0438\u043d\u0438\u044f TMDS_data[0] &#8212; \u0434\u043b\u044f \u0441\u0438\u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, TMDS_data[1] \u2014 \u0434\u043b\u044f \u0437\u0435\u043b\u0435\u043d\u043e\u0433\u043e \u0438 TMDS_data[2] \u2014 \u0434\u043b\u044f \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043b\u0438\u043d\u0438\u044f\u043c TMDS \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 DVI-D \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0432 10 \u0440\u0430\u0437 \u0432\u044b\u0448\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0444\u0444\u043f\u0430\u0440\u043e\u0439 TMDS_clock. \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 HDMI<sup>(R)<\/sup> \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 DVI-D \u0438 \u0440\u0430\u0432\u043d\u0430 \u043f\u044f\u0442\u0438\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 TMDS_clock (\u0432 5 \u0440\u0430\u0437 \u0432\u044b\u0448\u0435), \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f Double Data Rate \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0449\u0435\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0438 \u043f\u043e \u0441\u043f\u0430\u0434\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 TMDS \u043b\u0438\u043d\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441. 3a, \u043e\u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430 \u0434\u043b\u044f DIV-D \u0438 \u0434\u043b\u044f HDMI<sup>(R)<\/sup>.<\/p>\n<p>\u0421 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f TMDS \u044d\u0442\u043e \u0434\u0432\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0430, \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0432\u0438\u0442\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0434\u043b\u044f \u043f\u043e\u043c\u0435\u0445\u043e\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u00ab\u043d\u0443\u043b\u0435\u0439\u00bb \u0438 \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u00bb \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u043e\u043a\u0430 \u0432 \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u043e\u0439 \u0446\u0435\u043f\u0438 \u043b\u0438\u043d\u0438\u0438. \u0422\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/en.wikipedia.org\/wiki\/Current-mode_logichttps:\/\/en.wikipedia.org\/wiki\/Current-mode_logic\" rel=\"noopener noreferrer nofollow\">Current Mode Logic<\/a>, \u0430 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0442\u043b\u0435\u0439\u00bb. TMDS \u043b\u0438\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u0430 \u043a \u043b\u0438\u043d\u0438\u044f\u043c \u043f\u0438\u0442\u0430\u043d\u0438\u044f +3,3\u0412 \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 \u043d\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u043c 50 \u041e\u043c. \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u043a\u0430) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u043e\u043c\u0435\u0445\u043e\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043b\u0438\u043d\u0438\u0438 \u0438 \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u0435\u043c\u0443\u044e \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u00ab\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0442\u043b\u0438\u00bb \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043f\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0443 (DC coupled), \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0430\u0437\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u043d\u0438\u0438 \u043f\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0443, \u0442.\u00a0\u0435. \u0432 \u043b\u0438\u043d\u0438\u044f\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u044b. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u043b\u0438\u043d\u0438\u0438. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0440\u0430\u0437\u0432\u044f\u0437\u043a\u0438, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e \u043b\u0438\u043d\u0438\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u00bb \u0438\u043b\u0438 \u00ab\u043d\u0443\u043b\u0435\u0439\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0440\u044f\u0434\u0438\u0442\u044c (\u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u0437\u0430\u0440\u044f\u0434\u0438\u0442\u044c \u0434\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430) \u0440\u0430\u0437\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u044b \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u0432 TMDS, \u043a\u0430\u043a \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u044f\u0445, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043f\u044f\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u00bb \u0438\u043b\u0438 \u00ab\u043d\u0443\u043b\u0435\u0439\u00bb), \u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u00bb \u0438 \u00ab\u043d\u0443\u043b\u0435\u0439\u00bb \u0437\u0430 \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0432\u0443\u0445. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 \u043b\u0438\u043d\u0438\u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0430\u043b\u0430\u043d\u0441 \u00ab\u043d\u0443\u043b\u0435\u0439\u00bb \u0438 \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u00bb, \u043b\u0438\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0443 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0441\u044b (bandwidth) \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044f\u0445.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e5d\/3a0\/034\/e5d3a0034c0c876737a847662aa5cf48.png\" alt=\" \u0420\u0438\u0441. 3a. \u0421\u0445\u0435\u043c\u0430 TMDS \u043b\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 (RGB), \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0430\u0443\u0434\u0438\u043e (\u0442\u043e\u043b\u044c\u043a\u043e \u0432 HDMI).\" title=\" \u0420\u0438\u0441. 3a. \u0421\u0445\u0435\u043c\u0430 TMDS \u043b\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 (RGB), \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0430\u0443\u0434\u0438\u043e (\u0442\u043e\u043b\u044c\u043a\u043e \u0432 HDMI).\" width=\"1920\" height=\"717\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5d\/3a0\/034\/e5d3a0034c0c876737a847662aa5cf48.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 3a. \u0421\u0445\u0435\u043c\u0430 TMDS \u043b\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 (RGB), \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0430\u0443\u0434\u0438\u043e (\u0442\u043e\u043b\u044c\u043a\u043e \u0432 HDMI).<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0432 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u0438\u0437\u0434\u0435\u043b\u0438\u044f\u0445 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 TMDS \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u00abTMDS \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u043e\u0432\u00bb, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u0438\u0445 \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u0430\u0445 \u044d\u043a\u043e\u043d\u043e\u043c\u044f\u0442 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043a\u043e\u043c\u043f\u043b\u0438\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 TMDS \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a CMOS \u043b\u0438\u043d\u0438\u044f\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b. \u041d\u0430 \u0440\u0438\u0441. 3\u0431 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0445\u0435\u043c\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f TMDS \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0443\u0434\u0435\u0448\u0435\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041e \u0442\u043e\u043c \u043f\u043e\u0447\u0435\u043c\u0443 \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u044f \u043e\u043f\u0438\u0448\u0443 \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/744\/f4f\/9fd\/744f4f9fdb79691aecd37310df11b604.png\" alt=\" \u0420\u0438\u0441. 3\u0431. \u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0445\u0435\u043c\u044b \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0439 HDMI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb.\" title=\" \u0420\u0438\u0441. 3\u0431. \u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0445\u0435\u043c\u044b \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0439 HDMI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb.\" width=\"1519\" height=\"996\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/744\/f4f\/9fd\/744f4f9fdb79691aecd37310df11b604.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 3\u0431. \u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0445\u0435\u043c\u044b \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0439 HDMI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043f\u043e \u043b\u0438\u043d\u0438\u044f\u043c TMDS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445: \u00ab8b\/10b\u00bb \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438, \u0438 \u00ab2b\/10b\u00bb \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0432\u0443\u0445 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 <strong>c0<\/strong> \u0438 <strong>c1<\/strong>. \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 8 \u0431\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0446\u0432\u0435\u0442\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 10 \u0431\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043b\u0438\u043d\u0438\u044e. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u0431\u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u043b\u043e \u0441\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u043c\u0438 \u0431\u0438\u0442\u0430\u043c\u0438. \u0412\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u043a\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2014 \u0432\u0438\u0434\u0435\u043e-\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p> <em>\u0412\u0430\u0436\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435! \u0412 TMDS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u00ab8b\/10b\u00bb, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u00ab<\/em><a href=\"https:\/\/en.wikipedia.org\/wiki\/8b\/10b_encodinghttps:\/\/en.wikipedia.org\/wiki\/8b\/10b_encoding\" rel=\"noopener noreferrer nofollow\"><em>8b\/10b encoding<\/em><\/a><em>\u00bb \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0438\u0440\u043c\u043e\u0439 IBM \u0432 1983\u0433., \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u0430 \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u0442\u043e \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0432\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0442\u0430\u043a \u0438 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439! \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 IBM, \u043f\u043e\u043c\u0438\u043c\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u043f\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0443, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447: \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0442\u043e\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (<\/em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Clock_recoveryhttps:\/\/en.wikipedia.org\/wiki\/Clock_recovery\" rel=\"noopener noreferrer nofollow\"><em>clock recovery<\/em><\/a><em>), \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0441 \u0438\u0437\u0431\u044b\u0442\u043a\u043e\u043c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c. \u041d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 TMDS \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432 TMDS \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u0440\u043e\u0439. \u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 IBM-\u043e\u0432\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u00ab8b\/10b\u00bb \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 PCI-Express, \u0432 DisplayPort, \u0432 Ethernet \u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445, \u043f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 DVI-D \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0441\u0432\u043e\u0439 \u00ab\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u00bb \u2014 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f.<\/em><\/p>\n<p>\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 DVI-D \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0439 (HSYNC) \u0438 \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 (VSYNC) \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u00ab\u0433\u043e\u043b\u0443\u0431\u043e\u043c\u00bb (TMDS_data0) \u043a\u0430\u043d\u0430\u043b\u0435. \u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 \u0434\u0432\u0443\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u0430\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 DVI-D \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438 \u0442\u0430\u043c \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0443\u043b\u0438. \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 HDMI<sup>(R)<\/sup> \u0434\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432, \u0438\u043d\u0434\u0438\u0446\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u00ab\u043e\u0441\u0442\u0440\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043b\u0435\u0435 \u0432 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0431\u0438\u0442\u0430\u0445, \u0432\u043c\u0435\u0441\u0442\u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0437\u0432\u0443\u043a \u0438\u043b\u0438 \u00abauxilary data\u00bb.<\/p>\n<p>\u0412 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c HDMI \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u043e\u0432 \u043c\u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 (\u0440\u0438\u0441. 4) \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u0432 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043e TMDS \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 HDMI<sup>(R)<\/sup> \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043a\u0430\u0434\u0440\u0430 720&#215;480. \u0412\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u0432\u0438\u0434\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u043e \u043b\u0438\u043d\u0438\u044f\u043c TMDS: \u0442\u0435\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u043f\u0435\u0440\u0438\u043e\u0434 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e-\u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u044d\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439,  \u0441\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f, \u0438 \u0433\u043e\u043b\u0443\u0431\u044b\u043c &#8212; \u043f\u0435\u0440\u0438\u043e\u0434 \u00ab\u043e\u0441\u0442\u0440\u043e\u0432\u043a\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\u00bb &#8212; \u0438\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0437\u0432\u0443\u043a\u0430 \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u0445\u0435\u043c\u044b, \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f 525 \u0441\u0442\u0440\u043e\u043a, \u0438\u0437 \u043d\u0438\u0445 \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e 480, \u0430 45 \u0441\u0442\u0440\u043e\u043a \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u00ab\u0442\u0435\u043d\u0435\u0432\u044b\u043c\u0438\u00bb \u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0437\u0432\u0443\u043a\u0430. \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f 858 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u00bb, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 720 \u043d\u0435\u0441\u0443\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 138 \u2014 \u0442\u043e\u0436\u0435 \u00ab\u0442\u0435\u043d\u0435\u0432\u044b\u0435\u00bb. \u0422\u0438\u043f \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 c0 \u0438 c1 \u0432 \u0442\u0440\u0435\u0445 \u043a\u0430\u043d\u0430\u043b\u0430\u0445.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/20c\/3a8\/d6e\/20c3a8d6e49ee3200146b0d03acb0c84.png\" alt=\" \u0420\u0438\u0441. 4. \u041f\u0435\u0440\u0438\u043e\u0434\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 TMDS \u0434\u043b\u044f \u043a\u0430\u0434\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 720x480.\" title=\" \u0420\u0438\u0441. 4. \u041f\u0435\u0440\u0438\u043e\u0434\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 TMDS \u0434\u043b\u044f \u043a\u0430\u0434\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 720x480.\" width=\"1209\" height=\"660\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/20c\/3a8\/d6e\/20c3a8d6e49ee3200146b0d03acb0c84.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 4. \u041f\u0435\u0440\u0438\u043e\u0434\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 TMDS \u0434\u043b\u044f \u043a\u0430\u0434\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 720&#215;480.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a DVI-D. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 TMDS \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u00ab8b\/10b\u00bb \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u00ab2b\/10b\u00bb \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 HSYNC\/VSYNC. \u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 Google Docs \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442 \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430, \u043e\u0437\u0430\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u00ab<a href=\"https:\/\/docs.google.com\/document\/d\/1v7AJK4cVG3uDJo_rn0X9vxMvBwXKBSL1VaJgiXgFo5A\/edithttps:\/\/docs.google.com\/document\/d\/1v7AJK4cVG3uDJo_rn0X9vxMvBwXKBSL1VaJgiXgFo5A\/edit\" rel=\"noopener noreferrer nofollow\">Understanding HDMI &amp; TMDS Encoding<\/a>\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u044b \u044d\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0430\u0442\u044c\u044e, \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043b\u0438\u0448\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0442\u0440\u0435\u0445\u043a\u0430\u043d\u0430\u043b\u043e\u0432 TMDS_data0, TMDS_data1 \u0438 TMDS_data2.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>c0<\/strong>\u0438 <strong>c1<\/strong> \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u2014 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0438\u0442\u043e\u0432 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u0437\u0447\u0435\u0442\u044b\u0440\u0435\u0445 10-\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0445 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u00bb:<\/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\/52e\/9fc\/23a\/52e9fc23afc5d7aebaf1da602a6623fc.png\" alt=\" \u0420\u0438\u0441. 5.  \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 TMDS (2b\/10b).\" title=\" \u0420\u0438\u0441. 5.  \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 TMDS (2b\/10b).\" width=\"1089\" height=\"277\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/52e\/9fc\/23a\/52e9fc23afc5d7aebaf1da602a6623fc.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 5.  \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 TMDS (2b\/10b).<\/em><\/figcaption><\/div>\n<\/figure>\n<ol start=\"3\">\n<li>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f\u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443:<\/p>\n<ol>\n<li>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0447\u0438\u0441\u043b\u0430 \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u00bb \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u043c \u0431\u0430\u0439\u0442\u0435, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u00abXOR encoding\u00bb \u0438\u043b\u0438 \u00abXNOR encoding\u00bb:<\/p>\n<ol>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0434\u0438\u043d\u0438\u0446 \u043c\u0435\u043d\u0435\u0435 4-\u0445, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u00abXOR encoding\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0434\u0438\u043d\u0438\u0446 \u0431\u043e\u043b\u0435\u0435 4-\u0445, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u00abXNOR encoding\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0435\u0434\u0438\u043d\u0438\u0446 \u0440\u043e\u0432\u043d\u043e 4, \u0442\u043e:<\/p>\n<ol>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 == 1, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u00abXOR encoding\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 == 0, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u00abNOR encoding\u00bb.<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041a \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>\u00abXOR encoding\u00bb:<\/p>\n<p>out_data[0] := in_data[0];<\/p>\n<p>out_data[1] := in_data[1] XOR out_data[0];<\/p>\n<p>out_data[2] := in_data[2] XOR out_data[1];<\/p>\n<p>&#8230;<\/p>\n<p>out_data[7] := in_data[7] XOR out_data[6];<\/p>\n<\/p>\n<\/li>\n<li>\n<p>\u00abXNOR encoding\u00bb:<\/p>\n<p>out_data[0] := in_data[0];<\/p>\n<p>out_data[1] := in_data[1] XNOR out_data[0];<\/p>\n<p>out_data[2] := in_data[2] XNOR out_data[1];<\/p>\n<p>&#8230;<\/p>\n<p>out_data[7] := in_data[7] XNOR out_data[6];<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f 9-\u0439 \u0431\u0438\u0442 out_data[8], \u0440\u0430\u0432\u043d\u044b\u0439 \u00ab1\u00bb \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u00abXOR encoding\u00bb \u0438\u043b\u0438 \u00ab0\u00bb \u0435\u0441\u043b\u0438 \u00abXNOR encoding\u00bb.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 DC \u0431\u0430\u043b\u0430\u043d\u0441\u0430, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0445\u0435\u043c\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0430\u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 +2 \u0438\u043b\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0438\u0436\u0435 -2, \u0442\u043e \u0434\u0435\u0432\u044f\u0442\u044c \u0431\u0438\u0442 \u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u0441\u044f\u0442\u044b\u0439 \u0431\u0438\u0442 out_data[9]\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \u0442\u043e, \u0431\u044b\u043b\u043e \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p> <em>\u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0440\u043e\u0447\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 HDMI\/DVI\/TMDS, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430, \u0438\u0437\u043b\u043e\u0436\u0438\u043b Jeremy See \u0432 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00ab<\/em><a href=\"https:\/\/mjseemjdo.com\/2021\/04\/02\/tutorial-6-hdmi-display-output\/https:\/\/mjseemjdo.com\/2021\/04\/02\/tutorial-6-hdmi-display-output\/\" rel=\"noopener noreferrer nofollow\"><em>Tutorial 6: HDMI Display Output<\/em><\/a><em>\u00bb.<\/em><\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 <a href=\"https:\/\/www.fpga4fun.com\/HDMI.htmlhttps:\/\/www.fpga4fun.com\/HDMI.html\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430<\/a> \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog, \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u0441\u0430\u0439\u0442\u0430 fpga4fun.com, \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0441\u043b\u0430\u043b \u043c\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0425\u0430\u0431\u0440\u0430  @DmitryZlobec, \u0447\u0442\u043e \u0438 \u043f\u043e\u0434\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u043e \u043c\u0435\u043d\u044f \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b. <\/p>\n<pre><code class=\"vhdl\">module TMDS_encoder(          input clk,          input [7:0] VD,  \/\/ video data (red, green or blue)          input [1:0] CD,  \/\/ control data: \u04210, \u04211         input VDE,       \/\/ video data enable, to choose between CD (when VDE=0) and VD (when VDE=1)          output reg [9:0] TMDS = 0  );   wire [3:0] Nb1s = VD[0] + VD[1] + VD[2] + VD[3] + VD[4] + VD[5] + VD[6] + VD[7];  wire XNOR = (Nb1s&gt;4'd4) || (Nb1s==4'd4 &amp;&amp; VD[0]==1'b0);  wire [8:0] q_m = {~XNOR, q_m[6:0] ^ VD[7:1] ^ {7{XNOR}}, VD[0]};   reg [3:0] balance_acc = 0;  wire [3:0] balance = q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7] - 4'd4;  wire balance_sign_eq = (balance[3] == balance_acc[3]);  wire invert_q_m = (balance==0 || balance_acc==0) ? ~q_m[8] : balance_sign_eq;  wire [3:0] balance_acc_inc = balance - ({q_m[8] ^ ~balance_sign_eq} &amp; ~(balance==0 || balance_acc==0));  wire [3:0] balance_acc_new = invert_q_m ? balance_acc-balance_acc_inc : balance_acc+balance_acc_inc;  wire [9:0] TMDS_data = {invert_q_m, q_m[8], q_m[7:0] ^ {8{invert_q_m}}};  wire [9:0] TMDS_code = CD[1] ? (CD[0] ? 10'b1010101011 : 10'b0101010100) : (CD[0] ? 10'b0010101011 : 10'b1101010100);   always @(posedge clk) TMDS &lt;= VDE ? TMDS_data : TMDS_code;  always @(posedge clk) balance_acc &lt;= VDE ? balance_acc_new : 4'h0;   endmodule<\/code><\/pre>\n<p>\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u043f\u0435\u0440\u0435\u0434 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u044d\u043d\u043a\u043e\u0434\u0435\u0440 TMDS \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL, \u043d\u043e \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0441\u044f \u00ab\u043d\u0435 \u043e\u0447\u0435\u043d\u044c\u00bb. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u044f \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0443, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u0434 \u0432\u044b\u0448\u0435\u043b \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u043b\u0441\u044f \u0432 \u043d\u0435\u043c \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0441\u0445\u0435\u043c\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f HDMI \u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0430\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u00ab\u043f\u043e\u0438\u0441\u043a\u043e\u043c \u0447\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u0448\u043a\u0438 \u0432 \u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435\u00bb \u044f \u0440\u0435\u0448\u0438\u043b \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u0434 \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog \u043a\u0430\u043a \u00ab\u0447\u0435\u0440\u043d\u044b\u0439 \u044f\u0449\u0438\u043a\u00bb, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u043d\u0430 SpinalHDL, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0441\u0435\u0439\u0447\u0430\u0441, \u0441 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u043c\u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430 \u043d\u0430 SpinalHDL \u0435\u0449\u0435 \u0440\u0430\u0437, \u0447\u0438\u0441\u0442\u043e \u0438\u0437 \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0451. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u00ab\u043d\u0443\u043b\u0435\u0439\u00bb \u0438 \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u00bb, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u043c TMDS_encoder, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u00ab\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0442\u043b\u0438\u00bb. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043b\u0438\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 CMOS \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c \u0438\u0445 TMDS_data+ \u00ab\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439\u00bb \u0438 TMDS_data- \u00ab\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439\u00bb. \u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u00ab1\u00bb, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c TMDS_data+ \u043a \u043b\u0438\u043d\u0438\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f +3,3\u0412, \u0442\u043e \u0435\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043b\u043e\u0433 \u00ab1\u00bb, \u0430 TMDS_data- \u043a \u00ab\u0437\u0435\u043c\u043b\u0435\u00bb (GND). \u0418 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u043e \u0434\u0438\u0444\u0444 \u043f\u0430\u0440\u0435 \u043b\u043e\u0433 \u00ab0\u00bb, \u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 \u043a\u043e\u043c\u043f\u043b\u0438\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0435. \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043b\u0438\u043d\u0438\u044f\u0445 HDMI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043f\u0435\u0447\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0443 \u043d\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0440\u0430\u0437\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u044b, \u0442\u043e \u0441\u043c\u0435\u043d\u0430 \u043b\u043e\u0433 \u00ab1\u00bb \u043d\u0430 \u043b\u043e\u0433 \u00ab0\u00bb \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043a \u044d\u0442\u0438\u043c \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u0430\u043c, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u043e \u0440\u0430\u0437\u0440\u044f\u0436\u0430\u0442\u044c\u0441\u044f, \u0442\u043e \u0437\u0430\u0440\u044f\u0436\u0430\u0442\u044c\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u0446\u0435\u043f\u0438 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u0440\u044b \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u043e\u043a &#8212; \u0442\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0442\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u043c\u044b \u043b\u043e\u0433 \u00ab1\u00bb \u0438\u043b\u0438 \u00ab0\u00bb. \u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0440\u0438\u0441. 3\u0431 \u0441\u0438\u0433\u043d\u0430\u043b\u044b HDMI_TX0+, HDMI_TX0-, HDMI_TX1+, HDMI_TX1- \u0438  HDMI_TX2+, HDMI_TX2- \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u041f\u041b\u0418\u0421 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u044b \u0442\u0438\u043f\u0430 LVCMOS33 (+3,3\u0412 CMOS) \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u0442\u0440\u0438 \u00ab\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435\u00bb \u043f\u0430\u0440\u044b TMDS \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u044b HDMI_TXC+ \u0438 HDMI_TXC- \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u043f\u0430\u0440\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u043a\u0443\u0441!<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u043b\u0438\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0442.\u00a0\u0435. \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0444\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0443\u043c (\u00abjitter\u00bb), \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u041f\u041b\u0418\u0421 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <strong>OBUFDS<\/strong>, \u043e\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0434\u0438\u043d \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445, \u043a\u043e\u043c\u043f\u043b\u0438\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 \u0438\u043b\u0438 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445, \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0415\u0441\u043b\u0438 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u041f\u041b\u0418\u0421 \u0438\u043b\u0438 \u0432 \u0442\u0443\u043b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 <strong>OBUFDS<\/strong> \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c <strong>OBUFDS<\/strong> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0430 Verilog, \u043f\u043e\u043d\u0430\u0434\u0435\u044f\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043b\u0435\u0439\u0441\u0435\u0440 \u043f\u0440\u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442 \u043b\u0438\u043d\u0438\u0438 <strong>O<\/strong> \u0438 <strong>OB<\/strong> \u0440\u044f\u0434\u043e\u043c \u0438 \u0443 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"vhdl\">module OBUFDS(      input I,      output O,      output OB  );       assign O = I;      assign OB = ~ I;  endmodule <\/code><\/pre>\n<p><a class=\"anchor\" name=\"5\" id=\"5\"><\/a><\/p>\n<h2> 5. \u0412\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438 \u0432\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u00ab\u0447\u0435\u0433\u043e \u043d\u0438\u0431\u0443\u0434\u044c\u00bb, \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430, \u0442.\u00a0\u0435. \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 VGA, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0440\u044f\u0434 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0442 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u2014 NTSC \u0438 PAL.<\/p>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 Video Graphics Array (VGA) \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 1987 \u0433\u043e\u0434\u0443 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0435 IBM PS\/2 \u2014 \u0442\u043e \u0431\u044b\u043b\u043e \u0432\u0442\u043e\u0440\u043e\u0435, \u0438 \u043d\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0430\u0447\u043d\u043e\u0435, \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u00abIBM PC\u00bb (\u0438\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 IBM \u043a \u0442\u0435\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u00ab\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u00bb). \u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e-\u043b\u0443\u0447\u0435\u0432\u044b\u0445 \u0442\u0440\u0443\u0431\u043e\u043a (\u042d\u041b\u0422), \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0443\u0447\u043e\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043e\u0432 (\u043b\u0443\u0447) \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u044f\u0441\u044c \u0432 \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0430\u0433\u043d\u0438\u0442\u043d\u044b\u0445 \u043a\u0430\u0442\u0443\u0448\u0435\u043a, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u043b \u043f\u043e \u0432\u0441\u0435\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u043f\u043e\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0435\u043c \u043b\u044e\u043c\u0438\u043d\u043e\u0444\u043e\u0440\u0430 (\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0443\u0447\u043a\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043e\u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u0435\u0447\u0435\u043d\u0438\u0435) \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0437\u0430\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0447\u0435\u043a, \u0447\u0442\u043e \u043f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043a\u0430\u0434\u0440\u043e\u0432 60 \u0438\u043b\u0438 70 \u0413\u0446 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u043e\u0441\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u043c \u0433\u043b\u0430\u0437\u043e\u043c \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043b\u0443\u0447 \u0432 \u042d\u041b\u0422 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u0434\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u0430\u0442\u0443\u0448\u0435\u043a \u2014 \u043e\u0434\u043d\u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u043b\u0430 \u043f\u0443\u0447\u043e\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043e\u0432 \u0432 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u00ab\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438\u00bb, \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u043c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438\u00bb. \u041a\u043e\u0433\u0434\u0430 \u043f\u0443\u0447\u043e\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u043b \u043a\u0440\u0430\u044f \u044d\u043a\u0440\u0430\u043d\u0430 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438\u043b\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043c\u0430\u0433\u043d\u0438\u0442\u0438\u0442\u044c \u043a\u0430\u0442\u0443\u0448\u043a\u0438 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043b\u0443\u0447 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u044d\u043a\u0440\u0430\u043d\u0430. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u00ab\u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430\u00bb (\u00abBlanking Time\u00bb \u0438\u043b\u0438 \u00ab\u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f\u00bb), \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0440\u044f\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432. \u0421\u0438\u0433\u043d\u0430\u043b\u044b \u00ab\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438\u00bb \u0438 \u00ab\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438\u00bb (HSYNC \u0438 VSYNC) \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043b\u0443\u0447 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u043c\u0438\u043c\u043e HSYNC \u0438 VSYNC \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u0438 NTSC\/PAL\/SECAM \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430, \u043d\u043e \u0432 VGA, \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043e\u043d\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0435\u0432\u0430\u043b\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u0435\u0441\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 VGA, \u0430 \u0434\u0430\u043b\u0435\u0435 \u0432 DVI \u0438 HDMI, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0438\u0437 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u044f, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0434\u0435\u044f \u00ab\u043f\u0435\u0440\u0438\u043e\u0434\u043e\u0432 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f\u00bb \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430.<\/p>\n<p>  <em>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0432 \u0441\u0435\u0432\u0435\u0440\u043e-\u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u043e\u043c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 NTSC \u0434\u0435\u043b\u043e \u043e\u0431\u0441\u0442\u043e\u044f\u043b\u043e \u0435\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u2014 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0440\u043e\u043a\u0443 (interlaced), \u0430 \u043a\u0430\u0434\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0430\u0441\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438, \u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0444\u0430\u0437\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0430 \u043d\u0435 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u043a\u0430\u043a \u0432 PAL), \u043d\u043e \u044d\u0442\u0438 \u0434\u0435\u0442\u0430\u043b\u0438 \u043d\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b.<\/em><\/p>\n<p>\u041a\u0430\u043a \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u0432 VGA \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u043e \u043f\u044f\u0442\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043b\u0438\u043d\u0438\u044f\u043c: Red, Green, Blue, HSYNC \u0438 VSYNC, \u044d\u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 RGBHV. \u041b\u0438\u043d\u0438\u0438 R, G \u0438 B \u043d\u0435\u0441\u0443\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u043e\u0447\u043a\u0438 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043e\u0439 (\u0447\u0435\u043c \u0432\u044b\u0448\u0435 \u2014 \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430), \u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u044b HSYNC \u0438 VSYNC \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u00ab\u0441\u0442\u0440\u043e\u0431\u0430\u043c\u0438\u00bb  &#8212; \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430\u043c\u0438, \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0438\u043b\u0438 \u0441\u043f\u0430\u0434\u0443 (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b) \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u043e\u0442\u0443 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439\u00bb \u0438\u043b\u0438 \u00ab\u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438\u00bb \u0438 \u0447\u0430\u0441\u0442\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043a\u0430\u043a PIXCLK. \u0412 VGA \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 RGB \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 \u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 (\u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0435, \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435, \u0432\u0438\u0434\u0435\u043e\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440\u0435). \u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438. \u0418 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0442\u0430\u043a\u043e\u0439 \u0442\u0435\u043c\u0435 \u043a\u0430\u043a \u00ab\u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b\u00bb \u0438 \u00ab\u0432\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438\u00bb.<\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 VGA \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 (\u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435) \u0442\u043e\u0447\u0435\u043a \u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438: 640&#215;480@60 \u0413\u0446 (VGA), 800&#215;600@60 \u0413\u0446 (SVGA), 1024&#215;768@60 \u0413\u0446 (XGA), \u0438 1280\u00d71024@85 \u0413\u0446 (SXGA) \u2014 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0434\u0430\u043d\u043e \u0443\u0441\u0442\u043e\u044f\u0432\u0448\u0435\u0435\u0441\u044f \u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435. \u041f\u043e\u0437\u0436\u0435 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u044b\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d, \u0447\u0430\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Video_Electronics_Standards_Association\" rel=\"noopener noreferrer nofollow\">VESA<\/a> \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Extended_Display_Identification_Data#CEA-861-E\" rel=\"noopener noreferrer nofollow\">ANSI\/CTA-861<\/a>, \u0447\u0430\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u0438\u0434\u0435\u043e\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bef\/547\/129\/bef547129ec0fe43ac0154029a7c5bbd.png\" alt=\"\u0420\u0438\u0441. 5. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043a\u0430\u0434\u0440\u0430 \u043e\u0442 320x200 (CGA) \u0434\u043e 8192x4320 (8K Full Format) \u0438 \u0438\u0445 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435.\" title=\"\u0420\u0438\u0441. 5. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043a\u0430\u0434\u0440\u0430 \u043e\u0442 320x200 (CGA) \u0434\u043e 8192x4320 (8K Full Format) \u0438 \u0438\u0445 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435.\" width=\"1920\" height=\"1014\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bef\/547\/129\/bef547129ec0fe43ac0154029a7c5bbd.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 5. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043a\u0430\u0434\u0440\u0430 \u043e\u0442 320&#215;200 (CGA) \u0434\u043e 8192&#215;4320 (8K Full Format)<\/em> <em>\u0438 \u0438\u0445 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0438\u0434\u0438\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0430 (\u0432\u0438\u0434\u0435\u043e \u043a\u0430\u0434\u0440\u0430) \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0451. \u041a\u0430\u043a \u043c\u044b \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0432\u044b\u0448\u0435, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u00ab\u0442\u0435\u043c\u043d\u044b\u0445\u00bb \u0442\u043e\u0447\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438. \u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430\u00bb \u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b, \u0438\u0431\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0430 \u0434\u0430\u0432\u043d\u043e \u0441 \u043d\u0430\u043c\u0438 \u043d\u0435\u0442, \u043d\u043e \u0432\u043e\u0442 \u0435\u0433\u043e \u043c\u043d\u0438\u043c\u044b\u0439 \u0441\u043b\u0435\u0434 \u043e\u0441\u0442\u0430\u043b\u0441\u044f. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u044d\u0442\u043e\u0442 \u0440\u0443\u0434\u0438\u043c\u0435\u043d\u0442 \u0441\u0442\u043e\u0438\u043b\u043e \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0438\u0434\u0435\u044f \u00ab\u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f\u00bb \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430 \u0438 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445\/\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0437\u0432\u0443\u043a\u0430 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 HDMI<sup>(R)<\/sup>), \u043d\u043e \u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0443 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u00ab\u0433\u043b\u0438\u0442\u0447\u0435\u0439\u00bb &#8212; \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c. \u041a \u00ab\u0433\u043b\u0438\u0442\u0447\u0430\u043c\u00bb \u043c\u044b \u0435\u0449\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u00ab\u0432\u0438\u0434\u0438\u043c\u044b\u0435\u00bb \u0438 \u00ab\u0442\u0435\u043c\u043d\u044b\u0435\u00bb \u0442\u043e\u0447\u043a\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u0430.<\/p>\n<p>\u041d\u0430 \u0440\u0438\u0441 6. \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u0435\u0441\u044c \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00ab\u0432\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u043c\u0438\u00bb. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u044b\u00bb (scan-line). \u041f\u0435\u0440\u0432\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a  \u043a\u0430\u0434\u0440\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439  \u00abvertical back porch\u00bb &#8212; \u0432 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u00ab\u0442\u0435\u043c\u043d\u044b\u0435\u00bb (\u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435) \u0442\u043e\u0447\u043a\u0438. \u0414\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u00abdrawing area\u00bb, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435\u0441\u044f \u0432 \u043d\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u043d\u043e \u043d\u0435 \u0432\u0441\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u00abhorizontal back porch\u00bb, \u00abhorizontal front porch\u00bb \u0438 \u00abhorizontal sync\u00bb &#8212; \u044d\u0442\u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u00ab\u0442\u0435\u043c\u043d\u044b\u0435\u00bb \u0442\u043e\u0447\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043f\u0435\u0440\u0438\u043e\u0434 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u00abdrawing area\u00bb \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434 \u00abverical front porch\u00bb, \u0430 \u0437\u0430 \u043d\u0438\u043c \u00abvertical sync\u00bb.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/39b\/614\/4af\/39b6144af34665ec663b14d86cb1c189.png\" alt=\" \u0420\u0438\u0441. 6. \u0412\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 (\u043f\u0435\u0440\u0438\u043e\u0434\u044b) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u043a\u0430\u0434\u0440\u0430.\" title=\" \u0420\u0438\u0441. 6. \u0412\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 (\u043f\u0435\u0440\u0438\u043e\u0434\u044b) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u043a\u0430\u0434\u0440\u0430.\" width=\"1066\" height=\"700\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/39b\/614\/4af\/39b6144af34665ec663b14d86cb1c189.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 6. \u0412\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 (\u043f\u0435\u0440\u0438\u043e\u0434\u044b) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u043a\u0430\u0434\u0440\u0430.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0438\u043e\u0434\u044b \u00abhorizontal back porch\u00bb \u0438 \u00abhorizontal front porch\u00bb \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0441\u0434\u0432\u0438\u0433\u0430, \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u0442.\u00a0\u0435. \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u00ab\u0433\u043b\u0438\u0442\u0447\u0435\u0439\u00bb). \u041f\u0435\u0440\u0438\u043e\u0434\u044b \u00abverical back porch\u00bb \u0438 \u00abvertical front porch\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435\u043e \u043f\u0430\u043c\u044f\u0442\u044c (\u0442.\u00a0\u043d. \u00ab\u0431\u0438\u0442\u0431\u043b\u0438\u0442\u0435\u0440\u00bb \u043e\u0442 \u00abbit blt\u00bb \u0438\u043b\u0438 \u00abbit block transfer\u00bb), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0442.\u00a0\u0435. \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0431\u0438\u0442\u0431\u043b\u0438\u0442\u0435\u0440 \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443, \u0442\u043e \u044d\u0442\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u00ab\u0433\u043b\u0438\u0442\u0447\u00bb &#8212; \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0435 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u0435\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0432\u043e\u0434 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0434\u0432\u0438\u0436\u0443\u0449\u0438\u0445\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439).<\/p>\n<p>\u041f\u0435\u0440\u0438\u043e\u0434\u044b \u00abhorizontal sync\u00bb \u0438 \u00abvertical sync\u00bb \u044d\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u043e\u0433\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u044b HSYNC \u0438 VSYNC \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u041f\u0435\u0440\u0438\u043e\u0434\u044b \u00abhorizontal back porch\u00bb, \u00abhorizontal front porch\u00bb \u0438 \u00abhorizontal sync\u00bb \u0438\u0437\u043c\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u0447\u043a\u0430\u0445 (\u043f\u0438\u043a\u0441\u0435\u043b\u0430\u0445), \u0430 \u0432\u0440\u0435\u043c\u044f \u0438\u0445 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 &#8212; \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0442\u043e\u0447\u0435\u043a \u043f\u043e\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a PIXCLK.<\/p>\n<p>\u041f\u0435\u0440\u0438\u043e\u0434\u044b \u00abvertical back porch\u00bb, \u00abvertical front porch\u00bb \u0438 \u00abverical sync\u00bb \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0441\u0442\u0440\u043e\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u043e\u0432). \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e \u0441\u0443\u043c\u043c\u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c: \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u00abhorizontal back porch\u00bb + \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u00abhorizontal front porch\u00bb + \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u00abdrawing area\u00bb + \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u00abhorizontal sync\u00bb.<\/p>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u00abhorizontal back porch\u00bb \u0438 \u00abhorizontal front porch\u00bb \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u00abhorizontal porch\u00bb. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u00abvertical back porch\u00bb \u0438 \u00abvertical front porch\u00bb \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u00abvertical porch\u00bb. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435 \u0432\u0430\u0436\u0435\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u0432 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u0432\u0430\u0436\u043d\u0430 \u0438\u0445 \u043e\u0431\u0449\u0430\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0417\u043d\u0430\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a PIXCLK. \u0418 \u043d\u0430 \u043e\u0431\u043e\u0440\u043e\u0442, \u0437\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0443 PIXCLK \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438.<\/p>\n<p>\u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043a \u00abhorizontal back\/front porch\u00bb, \u00abhorizontal sync\u00bb, \u00abvertical back\/front porch\u00bb \u0438 \u00abvertical sync\u00bb \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u0441\u044f \u0432 \u0448\u0438\u0440\u043e\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445, \u0438 \u0432\u0438\u0434\u0435\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0430 \u044d\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0436\u0435\u0441\u0442\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0432\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u0438 \u043d\u0438\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 2 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432.<\/p>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 2. \u0422\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 VGA.<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/916\/294\/317\/916294317217142b10145f149ef6c042.png\" alt=\" * \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u00abFront Porch\u00bb \u0438 \u00abBack Porch\u00bb \u043f\u0435\u0440\u0435c\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0438\u043e\u0434 \u00abFront Porch\u00bb \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430!!!\" title=\" * \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u00abFront Porch\u00bb \u0438 \u00abBack Porch\u00bb \u043f\u0435\u0440\u0435c\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0438\u043e\u0434 \u00abFront Porch\u00bb \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430!!!\" width=\"937\" height=\"429\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/916\/294\/317\/916294317217142b10145f149ef6c042.png\"\/><\/p>\n<div><figcaption> * \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u00abFront Porch\u00bb \u0438 \u00abBack Porch\u00bb \u043f\u0435\u0440\u0435c\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0438\u043e\u0434 \u00abFront Porch\u00bb \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430!!!<br \/><\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 <strong>Xorg<\/strong> \u043e\u043a\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b X-Window \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code>Modeline \"1920x1080x60\" 148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync<\/code><\/pre>\n<p>\u0433\u0434\u0435 \u043f\u043e\u0441\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 PIXCLK (\u0432 \u041c\u0413\u0446), \u0434\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0432 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435. \u041e\u0431\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 Modeline \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<p> <code>PixClk Hact Hact+Hfp Hact+Hfp+Hsw Hact+Hfp+Hsw+Hbp Vact Vact+Vfp Vact+Vfp+Vsw Vact+Vfp+Vsw+Vbp<\/code><\/p>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p>Hact &#8212; \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u0430 (\u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438)<\/p>\n<\/li>\n<li>\n<p>Hfp &#8212; Horizontal front porch <\/p>\n<\/li>\n<li>\n<p>Hsw &#8212; Horizontal synch pulse width<\/p>\n<\/li>\n<li>\n<p>Hbp &#8212; Horizontal back porch <\/p>\n<\/li>\n<li>\n<p>Vact &#8212; \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>Vfp &#8212; Vertical front porch <\/p>\n<\/li>\n<li>\n<p>Vsw &#8212; Vertical synch pulse width <\/p>\n<\/li>\n<li>\n<p>Vbp &#8212; Vertical back porch <\/p>\n<\/li>\n<li>\n<p>PixClk &#8212; \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u043e\u0432= (Hact+Hfp+Hsw+Hbp) * (Vact+Vfp+Vsw+Vbp) <\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b +hsync \u0438 +vsync \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u043f\u043e\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 HSYNC \u0438 VSYNC, \u0433\u0434\u0435 \u00ab+\u00bb \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443, \u0430 \u00ab-\u00bb &#8212; \u043f\u043e \u0441\u043f\u0430\u0434\u0443.<\/p>\n<p> \u041d\u043e \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u0432\u0438\u0434\u0435\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c. \u0412 \u0446\u0438\u0444\u0440\u0435 \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00abData Enable\u00bb &#8212; \u0442.\u00a0\u0435. \u043d\u0430\u043b\u0438\u0447\u0438\u0435\/\u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430\u0445 \u0435\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00abDisplay Enable\u00bb \u0438 \u0434\u0430\u0436\u0435 \u00abDisplay On\u00bb. \u0412 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0432\u0438\u0434\u0435\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 RGB24) \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>DE<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u00ab1\u00bb \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0432 \u00ab0\u00bb \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u0412 DVI-D \u0438 HDMI \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0442, \u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u00bb. \u0415\u0441\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u00ab8b\/10b\u00bb \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u00bb \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u00ab2b\/10b\u00bb \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>c0<\/strong> \u0438 <strong>c1<\/strong> (HSYNC \u0438 VSYNC). \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 VGA!<\/p>\n<p><a class=\"anchor\" name=\"6\" id=\"6\"><\/a><\/p>\n<h2> 6. \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430<\/h2>\n<p>\u0420\u0430\u0437 \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043f\u043e HDMI\/DVI-D \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443, \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u043c\u0430\u043f\u0430, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u043f\u0430\u043c\u044f\u0442\u0438), \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0443\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u00ab\u043c\u0443\u0430\u0440\u00bb. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432-\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432, \u043f\u0430\u0440\u044b \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438.<\/p>\n<p><a class=\"anchor\" name=\"6.1\" id=\"6.1\"><\/a><\/p>\n<h3> 6.1. \u0412\u044b\u0431\u043e\u0440 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/h3>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0430\u043c \u043a\u0430\u043a \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u00ab\u043c\u0443\u0430\u0440\u00bb \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432\u0438\u0434\u0435\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u043c\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0434\u0435\u0441\u044c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c (\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u043c, \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u043c) \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a HDMI \u0440\u0430\u0437\u044a\u0435\u043c\u0443 \u2014 \u043a\u0430\u043a \u0412\u044b \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0435\u0441\u044c, \u0440\u0430\u0437\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0438 \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0430\u043c, \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043e\u0431\u043c\u0435\u043d \u043f\u043e \u0448\u0438\u043d\u0435 DDC \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0438\u0437 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430, \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e. \u041d\u043e \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c DDC \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0435\u043c \u043d\u0430\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c &#8212; \u0430 \u043a\u0430\u043a\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442 \u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u041f\u041b\u0418\u0421 \u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0447\u0430\u0441\u0442\u043e\u0442: \u0447\u0430\u0441\u0442\u043e\u0442\u044b PIXCLK \u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432 10 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435 PIXCLK. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0431\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043d\u0430 \u044d\u0442\u0438\u0445 \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u0445. \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b 25.0 \u041c\u0413\u0446 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043a\u0432\u0430\u0440\u0446\u0435\u0432\u044b\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u00ab\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435\u00bb \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 400 \u041c\u0413\u0446.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 2 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u00ab\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445\u00bb \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u0432 \u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0434 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 640&#215;480 \u0438 800&#215;600. \u0414\u0430 \u0438 \u0442\u043e \u043d\u0435 \u0432\u0441\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 PIXCLK \u043c\u0435\u043d\u0435\u0435 40 \u041c\u0413\u0446, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 25,175 \u041c\u0413\u0446, 31,5 \u041c\u0413\u0446, 36,0 \u041c\u0413\u0446 \u0438 38,1 \u041c\u0413\u0446. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0440\u0430\u0432\u043d\u0443\u044e \u0438\u043b\u0438 \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e 0,5% &#8212; \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0434\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 DVI. \u0412 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u041f\u041b\u0418\u0421 \u0441\u0435\u0440\u0438\u0438 ECP5 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0431\u043b\u043e\u043a PLL (\u0424\u0410\u041f\u0427) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 (\u0432\u0445\u043e\u0434\u043d\u0443\u044e) \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e (\u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e) \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u043e\u0442 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u0439 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 PLL), \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>ecppll<\/strong>:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ ecppll -i 25 -o 25.175  Pll parameters:  Refclk divisor: 1  Feedback divisor: 1  clkout0 divisor: 24  clkout0 frequency: 25 MHz  VCO frequency: 600 <\/code><\/pre>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>-i<\/strong> \u0437\u0430\u0434\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 (\u0432 \u041c\u0413\u0446) \u043d\u0430 \u0431\u043b\u043e\u043a PLL \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u043b\u0430\u0442\u043e\u0439 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0440\u0430\u0432\u043d\u0430\u044f 25,0 \u041c\u0413\u0446. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>-o<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 PLL. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u044b\u0439 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PLL \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u043b\u043e\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b.<\/p>\n<p>\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>ecppll<\/strong> \u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0422\u0430\u0431\u043b\u0438\u0446\u0443 3 \u0431\u043b\u0438\u0437\u043a\u0438\u0445 \u0447\u0430\u0441\u0442\u043e\u0442 \u0434\u043b\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043b \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c (\u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f) \u043e\u0442 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b.<\/p>\n<p> <em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 3. \u041f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u043e\u0442 \u0434\u043b\u044f PIXCLK \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u0441 \u0432\u044b\u0445\u043e\u0434\u0430 PLL.<\/em><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"center\">clkin, \u041c\u0413\u0446<\/p>\n<\/th>\n<th>\n<p align=\"center\">Refclk div<\/p>\n<\/th>\n<th>\n<p align=\"center\">FB dev<\/p>\n<\/th>\n<th>\n<p align=\"center\">Clkout dev<\/p>\n<\/th>\n<th data-colwidth=\"100\" width=\"100\">\n<p align=\"center\">PIXCLK, \u041c\u0413\u0446<\/p>\n<\/th>\n<th>\n<p align=\"center\">Target Clk, \u041c\u0413\u0446<\/p>\n<\/th>\n<th>\n<p align=\"center\">Error, %<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">25,0<\/p>\n<\/td>\n<td>\n<p align=\"center\">1<\/p>\n<\/td>\n<td>\n<p align=\"center\">1<\/p>\n<\/td>\n<td>\n<p align=\"center\">24<\/p>\n<\/td>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"center\">25,0<\/p>\n<\/td>\n<td>\n<p align=\"center\">25,175<\/p>\n<\/td>\n<td>\n<p align=\"center\">0,7<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">25,0<\/p>\n<\/td>\n<td>\n<p align=\"center\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">5<\/p>\n<\/td>\n<td>\n<p align=\"center\">19<\/p>\n<\/td>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"center\">31,25<\/p>\n<\/td>\n<td>\n<p align=\"center\">31,5<\/p>\n<\/td>\n<td>\n<p align=\"center\">0,8<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">25,0<\/p>\n<\/td>\n<td>\n<p align=\"center\">7<\/p>\n<\/td>\n<td>\n<p align=\"center\">10<\/p>\n<\/td>\n<td>\n<p align=\"center\">17<\/p>\n<\/td>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"center\">35,7143<\/p>\n<\/td>\n<td>\n<p align=\"center\">36,0<\/p>\n<\/td>\n<td>\n<p align=\"center\">0,8<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">25,0<\/p>\n<\/td>\n<td>\n<p align=\"center\">2<\/p>\n<\/td>\n<td>\n<p align=\"center\">3<\/p>\n<\/td>\n<td>\n<p align=\"center\">16<\/p>\n<\/td>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"center\">37,5<\/p>\n<\/td>\n<td>\n<p align=\"center\">38,1<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 25,175 \u041c\u0413\u0446, \u0442.\u00a0\u0435. 640&#215;480 @ 60 \u0413\u0446, \u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 PIXCLK \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 25,0 \u041c\u0413\u0446. \u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0445\u043e\u0440\u043e\u0448 \u0435\u0449\u0435 \u0438 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b PIXCLK \u0431\u043b\u043e\u043a PLL \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 25,0 \u041c\u0413\u0446 \u0441 \u043a\u0432\u0430\u0440\u0446\u0435\u0432\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0417\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0442\u0443\u0442 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u0432 \u0434\u043e\u043f\u0443\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 (0,7% \u0432\u043c\u0435\u0441\u0442\u043e 0,5%), \u043d\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u044b \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b \u0441 PIXCLK = 25,0 \u041c\u0413\u0446 \u0438 \u044d\u0442\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.  <\/p>\n<p>\u0420\u0430\u0437 \u0443\u0436 \u043c\u044b \u0437\u0430\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 PLL, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b PLL \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0441\u044f\u0442\u0438\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b (x10) \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432 \u043f\u043e \u043b\u0438\u043d\u0438\u044f\u043c TMDS:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ ecppll -i 25 -o 250  Pll parameters:  Refclk divisor: 1  Feedback divisor: 10  clkout0 divisor: 2  clkout0 frequency: 250 MHz  VCO frequency: 500 <\/code><\/pre>\n<p><a class=\"anchor\" name=\"6.2\" id=\"6.2\"><\/a><\/p>\n<h3> 6.2. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 HDMIInterface<\/h3>\n<p>\u0421 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0438 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u043c\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 PLL \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043b\u0438, \u043f\u043e\u0440\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043b\u044e\u0431\u0443\u044e \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f  \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043e\u0440\u0438\u0438, \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0435\u0451 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u041f\u041b\u0418\u0421 \u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 HDMI \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb. \u041d\u0430 \u043a\u0430\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u043d\u0430 Verilog? \u0418\u043b\u0438 \u0432\u0441\u0451 \u0442\u0430\u043a\u0438 \u043d\u0430 SpinalHDL? \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0451 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 SpinalHDL, \u0430 Verilog \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c <strong>TMDS_encoder<\/strong> \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0432 \u0433\u043b\u0430\u0432\u0435 4. \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043a\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437 Verilog \u0432 SpinalHDL.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0451 \u0442\u0435\u043c \u0436\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c <strong>VexRiscvWithKarnix<\/strong>, \u0430 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0431\u0443\u0434\u0443 \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u0432\u0435\u0442\u043a\u0443 <strong>karnix_extended<\/strong>. \u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e:<\/p>\n<p>        <a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended<\/a><\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0432 \u0444\u0430\u0439\u043b\u0435 LPF, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043a \u0432\u044b\u0432\u043e\u0434\u0430\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254\/blob\/master\/Karnix_ASB-254-v1.2\/schematics\/Karnix_ASB.pdfhttps:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254\/blob\/master\/Karnix_ASB-254-v1.2\/schematics\/Karnix_ASB.pdf\" rel=\"noopener noreferrer nofollow\">\u0441\u0445\u0435\u043c\u0435 \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb<\/a>. \u0415\u0441\u043b\u0438 \u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439 \u041f\u041b\u0418\u0421, \u0442\u043e \u0412\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u043f\u043b\u0430\u0442\u044b,  \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u043d\u043e\u043c\u0435\u0440\u0430\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u041f\u041b\u0418\u0421 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u043d\u0430\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432\u044b\u0432\u043e\u0434\u043e\u0432).<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0444\u0430\u0439\u043b <strong>karnix_cabga256.lpf<\/strong> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<pre><code class=\"bash\">LOCATE COMP \"io_hdmi_tmds_p[0]\" SITE \"A11\";  IOBUF PORT \"io_hdmi_tmds_p[0]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_hdmi_tmds_p[1]\" SITE \"D11\";  IOBUF PORT \"io_hdmi_tmds_p[1]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_hdmi_tmds_p[2]\" SITE \"B11\";  IOBUF PORT \"io_hdmi_tmds_p[2]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_hdmi_tmds_n[0]\" SITE \"A12\";  IOBUF PORT \"io_hdmi_tmds_n[0]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_hdmi_tmds_n[1]\" SITE \"E11\";  IOBUF PORT \"io_hdmi_tmds_n[1]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_hdmi_tmds_n[2]\" SITE \"C11\";  IOBUF PORT \"io_hdmi_tmds_n[2]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_hdmi_tmds_clk_p\" SITE \"B12\";  IOBUF PORT \"io_hdmi_tmds_clk_p\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_hdmi_tmds_clk_n\" SITE \"C12\";  IOBUF PORT \"io_hdmi_tmds_clk_n\" IO_TYPE=LVCMOS33; <\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435  \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 HDMI\/DVI-D \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 LPF. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u0435\u0433\u043e \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">case class HDMIInterface() extends Bundle with IMasterSlave{          val tmds_p = Bits(3 bits)          val tmds_n = Bits(3 bits)          val tmds_clk_p = Bool()          val tmds_clk_n = Bool()            override def asMaster(): Unit = {                  out(tmds_p, tmds_n, tmds_clk_p, tmds_clk_n)          }  }<\/code><\/pre>\n<p> \u0412 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043b\u0438\u043d\u0438\u0439 <strong>tmds_p[2:0]<\/strong> \u0438 \u0442\u0440\u0435\u0445 \u043b\u0438\u043d\u0438\u0439 <strong>tmds_n[2:0]<\/strong> \u0434\u043b\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b <strong>tmds_clk<\/strong> \u2014 \u0434\u0432\u0435 \u043b\u0438\u043d\u0438\u0438 \u0432 \u0434\u0438\u0444\u0444 \u043f\u0430\u0440\u0435, \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f. \u041c\u0435\u0442\u043e\u0434 <strong>asMaster<\/strong> \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u043a\u0430\u043a \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435. \u0412\u043e\u043e\u0431\u0449\u0435, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044f\u0437\u044b\u043a\u0430 SpinalHDL \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043d\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u2014 \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0432 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0435 HDMI \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u0442.\u00a0\u0435. \u0441 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u044d\u0442\u0438\u0445 \u0436\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432.<\/p>\n<p>\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b <strong>.\/src\/main\/scala\/mylib\/HDMI.scala<\/strong> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c \u043e\u0431\u0435\u0440\u0442\u043e\u043a \u0434\u043b\u044f \u00ab\u0447\u0435\u0440\u043d\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432\u00bb \u043c\u043e\u0434\u0443\u043b\u0435\u0439  <strong>TMDS_encoder<\/strong>,  <strong>OBUFDS<\/strong> \u0438 <strong>DCCA<\/strong> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Verilog, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u043c\u043f\u043e\u0440\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0444\u0430\u0439\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"scala\">package mylib   import spinal.core._  import spinal.lib._  import spinal.lib.io.TriState   case class HDMIInterface() extends Bundle with IMasterSlave{          val tmds_p = Bits(3 bits)          val tmds_n = Bits(3 bits)          val tmds_clk_p = Bool()          val tmds_clk_n = Bool()           override def asMaster(): Unit = {                  out(tmds_p, tmds_n, tmds_clk_p, tmds_clk_n)          }  }   case class TMDS_encoder() extends BlackBox{          val clk = in Bool()          val VD = in Bits(8 bits)          val CD = in Bits(2 bits)          val VDE = in Bool()          val TMDS = out Bits(10 bits)  }   case class OBUFDS() extends BlackBox{          val I = in Bool()          val O, OB = out Bool()  }   case class DCCA() extends BlackBox{    val CLKI = in  Bool()    val CLKO = out  Bool()    val CE = in  Bool()  }<\/code><\/pre>\n<p> \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u041a\u043b\u0430\u0441\u0441 <strong>DCCA<\/strong> \u044d\u0442\u043e \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f \u00ab\u0447\u0435\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430\u00bb \u0441 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u041f\u041b\u0418\u0421 \u0441\u0435\u0440\u0438\u0438 ECP5 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u043b\u0438\u043d\u0438\u044f\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. <strong>DCCA<\/strong> \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b PIXCLK \u0438 \u0435\u0433\u043e 10-\u0442\u0438 \u043a\u0440\u0430\u0442\u043d\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u041f\u041b\u0418\u0421, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 BUFG (global clock buffer).<\/p>\n<p><a class=\"anchor\" name=\"6.3\" id=\"6.3\"><\/a><\/p>\n<h3> 6.3. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 KarnixTestHDMITopLevel<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u0430, \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e <strong>KarnixTestHDMITopLevel<\/strong> \u0438 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b:<\/p>\n<p> <strong>.\/src\/main\/scala\/mylib\/KarnixTestHDMI.scala<\/strong>.<\/p>\n<p>\u0411\u0443\u0434\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u044b \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0432\u0435\u0434\u0435\u043c \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u0438 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438, \u0442.\u00a0\u0435. \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u042d\u0442\u043e \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u043c\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u041d\u0430\u0447\u043d\u0435\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<pre><code class=\"scala\">case class KarnixTestHDMITopLevel(          horiz_back_porch: Int = 48,          horiz_active: Int = 640,          horiz_front_porch: Int = 16,          horiz_sync: Int = 96,          vert_back_porch: Int = 33,          vert_active: Int = 480,          vert_front_porch: Int = 10,          vert_sync: Int = 2    ) extends Component{ <\/code><\/pre>\n<p> \u0412 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0432\u043e\u0441\u0435\u043c\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u0438 \u0442\u0443\u0442 \u0436\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0443 (640&#215;480 @ 60\u0413\u0446, pixclk = 25.0\u041c\u0413\u0446).<\/p>\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>KarnixTestHDMITopLevel<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u0432\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u0430, <strong>clk25<\/strong> \u2014 \u043e\u043f\u043e\u0440\u043d\u044b\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u043a\u0432\u0430\u0440\u0446\u0435\u0432\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 <strong>hdmi<\/strong> \u2014 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c <strong>HDMIInterface<\/strong>. \u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">    val io = new Bundle {          val clk25 = in Bool()          val hdmi = master(HDMIInterface())      } <\/code><\/pre>\n<p><a class=\"anchor\" name=\"6.4\" id=\"6.4\"><\/a><\/p>\n<h3> 6.4. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438<\/h3>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435, \u0430 \u0438\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u044b\u0448\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 <strong>io.clk25<\/strong> \u0438 <strong>io.hdmi.tmds_clk<\/strong>, \u0431\u0443\u0434\u0435\u0442 \u0446\u0435\u043b\u044b\u0445 \u043f\u044f\u0442\u044c:<\/p>\n<pre><code class=\"scala\">    val pixclk_in = Bool()     val pixclk = Bool()     val pixclk_x10 = Bool()<\/code><\/pre>\n<p>\u0421 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c <strong>pixclk_x10<\/strong> \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u2014 \u044d\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0435\u0441\u0443\u0449\u0438\u0439 \u0434\u0435\u0441\u044f\u0442\u0438\u043a\u0440\u0430\u0442\u043d\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PLL \u0447\u0430\u0441\u0442\u043e\u0442\u0443 <strong>clk25<\/strong>. \u0410 \u0432\u043e\u0442 \u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c <strong>pixclk<\/strong> \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u043e\u0440\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 <strong>clk25<\/strong> \u0440\u0430\u0432\u043d\u0443\u044e 25.0 \u041c\u0413\u0446 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u2014 <strong>pixclk<\/strong>. \u041e\u0434\u043d\u0430\u043a\u043e, <strong>pixclk_x10<\/strong> \u043a\u0430\u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044f \u043e\u0442 <strong>clk25<\/strong> \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0447\u0435\u0440\u0435\u0437 PLL \u0438\u043c\u0435\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0431\u043b\u043e\u043a PLL \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u041f\u041b\u0418\u0421 Lattice (\u0434\u0430 \u0438 \u0443 \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u043e\u0436\u0435) \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0444\u0430\u0437 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0444\u0430\u0437\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u043b\u0435\u0433\u043a\u0430 \u00ab\u0434\u0440\u0435\u0439\u0444\u043e\u0432\u0430\u0442\u044c (\u0442.\u00a0\u0435. \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u0444\u0430\u0437, \u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f\u0441\u044c, \u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f\u0441\u044c). \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u043e \u043b\u0438\u043d\u0438\u044f\u043c <strong>tmds<\/strong> \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 <strong>pixclk_x10<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u0444\u0430\u0437\u0435 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u00bb (<strong>pixclk<\/strong>), \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f. \u041c\u043e\u0439 \u043e\u043f\u044b\u0442 \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0431 \u0431\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0439 <strong>clk25<\/strong> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <strong>pixclk<\/strong>, \u0434\u0430\u043b\u0435\u0435 \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0443\u043c\u043d\u043e\u0436\u0430\u043b\u0430\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PLL \u0438 \u043e\u0431\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 TMDS. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u044b\u043b \u0442\u0430\u043a\u043e\u0432: \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0442\u0435\u0440\u044f\u043b \u0441\u0438\u043d\u0445\u0440\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 10, \u043f\u043e\u0442\u043e\u043c \u043e\u043f\u044f\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0442\u0435\u0440\u044f\u043b \u0441\u0438\u0433\u043d\u0430\u043b \u0438 \u0442.\u00a0\u0434. \u0410\u043d\u0430\u043b\u0438\u0437 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>pixclk<\/strong> \u0438 <strong>pixclk_x10<\/strong> \u043d\u0430 \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0435 \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0444\u0430\u0437 \u0438 \u0434\u0440\u0435\u0439\u0444.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u0438\u043d\u0444\u0430\u0437\u043d\u043e\u0441\u0442\u0438 <strong>pixclk<\/strong> \u0438 <strong>pixclk_x10<\/strong> \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u0438\u0442\u0440\u043e. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <strong>pixclk_x10<\/strong> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PLL, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0442 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441\u0438\u0433\u043d\u0430\u043b <strong>pixclk<\/strong> \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b &#8212; \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441: \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u00ab\u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439\u00bb \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0434\u0436\u0438\u0442\u0442\u0435\u0440 (\u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043a\u043e\u043b\u0435\u0431\u0430\u0442\u044c\u0441\u044f \u0438 \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u043f\u043e \u0444\u0430\u0437\u0435) \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0438\u0435 \u0431\u043b\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0438 \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u0427\u0442\u043e\u0431\u044b \u00ab\u0437\u0430\u0440\u0443\u043b\u0438\u0442\u044c\u00bb \u043d\u0430\u0448 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 <strong>pixclk<\/strong> \u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438, \u0432 \u041f\u041b\u0418\u0421 ECP5 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a DCCA. \u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u0445\u043e\u0434, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u043e\u043a, \u0438 \u043e\u0434\u0438\u043d \u0432\u044b\u0445\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li>\n<p>\u0412\u0437\u044f\u0442\u044c \u043e\u043f\u043e\u0440\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>clk25<\/strong>, \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 PLL \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u0438\u043a\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 <strong>pixclk_x10<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0437 <strong>pixclk_x10<\/strong> \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>pixclk_in<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0433\u043d\u0430\u0442\u044c <strong>pixclk_in<\/strong> \u0447\u0435\u0440\u0435\u0437 \u0445\u0430\u0440\u0434 \u0431\u043b\u043e\u043a DCCA \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u043d\u0430\u043c <strong>pixclk<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0451. \u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 <strong>pixclk_x10<\/strong> \u0438 <strong>pixclk<\/strong> \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u0430\u0445, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c. \u0411\u043b\u0430\u0433\u043e, \u0432 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435 SpinalHDL \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430 \u043d\u0430\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u0434\u0430 \u0438 \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0438\u0445 \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043a\u043b\u043e\u043a\u043e\u0432:<\/p>\n<pre><code class=\"scala\">    \/* Route artificial TMDS clock using global lines, i.e. DCCA (ECP5 specific) *\/      val dcca = new DCCA()      dcca.CLKI := pixclk_in      dcca.CE := True      pixclk := dcca.CLKO       \/* Use ECP5 hard PLL block to multiply board provided 25.0 MHz to get 250.0 MHz for TMDS encoder.       * All PLL parameters are generated by ecppll utility.       *\/      val tmds_pll = new EHXPLLL( EHXPLLLConfig(clkiFreq = 25.0 MHz, mDiv = 1, fbDiv = 10, opDiv = 2, opCPhase = 0) )      tmds_pll.io.CLKI := io.clk25      tmds_pll.io.CLKFB := tmds_pll.io.CLKOP      tmds_pll.io.STDBY := False      tmds_pll.io.RST := False      tmds_pll.io.ENCLKOP := True      tmds_pll.io.ENCLKOS := False      tmds_pll.io.ENCLKOS2 := False      tmds_pll.io.ENCLKOS3 := False      tmds_pll.io.PLLWAKESYNC := False      tmds_pll.io.PHASESEL0 := False      tmds_pll.io.PHASESEL1 := False      tmds_pll.io.PHASEDIR := False      tmds_pll.io.PHASESTEP := False      tmds_pll.io.PHASELOADREG := False      pixclk_x10 := tmds_pll.io.CLKOP       val dviClockDomain = ClockDomain(          clock = pixclk,          config = ClockDomainConfig(resetKind = BOOT),          frequency = FixedFrequency(25.0 MHz)      )       val tmdsClockDomain = ClockDomain(          clock = pixclk_x10,          config = ClockDomainConfig(resetKind = BOOT),          frequency = FixedFrequency(250.0 MHz)      ) <\/code><\/pre>\n<p> \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043a\u043e\u0434\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>EHXPLLL<\/strong> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 PLL, \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <strong>spinal.lib.blackbox.lattice.ecp5._<\/strong> \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <strong>import<\/strong>. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 PLL \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>ecppll<\/strong>.<\/p>\n<p> \u0421\u043b\u0435\u0434\u043e\u043c \u0437\u0430 PLL \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u0430: \u0434\u043e\u043c\u0435\u043d <strong>dviClockDomain<\/strong> \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0442 <strong>pixclk<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u0434\u043e\u043c\u0435\u043d <strong>tmdsClockDomain<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u0442.\u00a0\u0435. \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430) \u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <strong>pixclk_x10<\/strong>.<\/p>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>pixclk_in<\/strong> \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0432 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 <strong>tmdsClockDomain<\/strong> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">    val tmds_area = new ClockingArea(tmdsClockDomain) {           \/* Generate 25 MHz PIXCLK by dividing pixclk_x10 by 10 *\/           val clk_div = Reg(UInt(4 bits)) init(0)          val clk = Reg(Bool())           clk_div := clk_div + 1           when(clk_div === 4) {              clk := True          }           when(clk_div === 9) {              clk := False              clk_div := 0          }           pixclk_in := clk           \u2026     }<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u2014 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>tmds_clk<\/strong> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u043e\u0442 <strong>pixclk<\/strong>. \u042d\u0442\u043e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0434\u0432\u0443\u043c\u044f \u043b\u0438\u043d\u0438\u044f\u043c\u0438 <strong>io.hdmi.tmds_clk_p<\/strong> \u0438 <strong>io.hdmi.tmds_clk_n<\/strong>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0445\u0430\u0440\u0434 \u0431\u043b\u043e\u043a <strong>OBUFDS<\/strong>, \u043e\u0431\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u044b \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b <strong>HDMIInterface.scala<\/strong>. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>OBUFDS<\/strong> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0434\u0438\u043d \u00ab\u043e\u0434\u043d\u043e\u043f\u043e\u043b\u044f\u0440\u043d\u044b\u0439\u00bb \u0441\u0438\u0433\u043d\u0430\u043b <strong>I<\/strong> \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043b\u0438\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>O<\/strong> \u0438 <strong>OB<\/strong>. \u0421\u0438\u0433\u043d\u0430\u043b <strong>tmds_clk<\/strong> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c\u0443 \u0434\u043e\u043c\u0435\u043d\u0443<strong> dviClockDomain<\/strong>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f  <strong>tmds_clk:<\/strong><\/p>\n<pre><code class=\"scala\">    val dvi_area = new ClockingArea(dviClockDomain) {          \u2026          \/* Produce TMDS clock differential signal which is PIXCLK, i.e. 25.0 MHz, not 250.0 MHz !!! *\/          val tmds_clk = OBUFDS()          tmds_clk.I := pixclk          io.hdmi.tmds_clk_p := tmds_clk.O          io.hdmi.tmds_clk_n := tmds_clk.OB       } <\/code><\/pre>\n<p> \u041d\u0430 \u044d\u0442\u043e\u043c \u0441 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u0443\u0442\u0438 \u2014 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p><a class=\"anchor\" name=\"6.5\" id=\"6.5\"><\/a><\/p>\n<h3> 6.5. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u00ab\u043c\u0443\u0430\u0440\u00bb<\/h3>\n<p>\u0414\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0446\u0432\u0435\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u043e\u0447\u043a\u0438, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u043f\u043e\u0431\u0438\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u043e\u043c, \u044d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 8 \u0431\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 HSYNC, VSYNC \u0438 DE (Data Enabled), \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0438\u0445 <strong>hSync<\/strong>, <strong>vSync<\/strong> \u0438 <strong>de<\/strong>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 <strong>dviClockDomain<\/strong> \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043e\u0442 <strong>pixclk<\/strong>, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<p>    <code>val dvi_area = new ClockingArea(dviClockDomain) {<\/code><\/p>\n<p> \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u0434:<\/p>\n<pre><code class=\"scala\">        \/* Define RGB regs, HV and DE signals *\/          val red = Bits(8 bits)          val green = Bits(8 bits)          val blue = Bits(8 bits)          val hSync = Bool()          val vSync = Bool()          val vBlank = Bool()          val de = Bool() <\/code><\/pre>\n<p>\u0422\u0430\u043a \u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f \u0443\u0447\u0435\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u00ab\u043b\u0443\u0447\u0430\u00bb, \u0442.\u00a0\u0435. \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0438\u0445 <strong>CounterX<\/strong> \u0438 <strong>CounterY<\/strong>, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043e\u043f\u0438\u0448\u0435\u043c \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <strong>horiz_total_width<\/strong> \u0438 <strong>vert_total_height<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u0430\u0445 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0434\u0440\u0430 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 <strong>CounterX<\/strong> \u0438 <strong>CounterY<\/strong> \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u043a\u0430\u043a \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044e 2 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0432\u0435\u0440\u0445 \u043e\u0442  <strong>horiz_total_width<\/strong> \u0438 <strong>vert_total_height<\/strong> c\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u043c\u0430\u043c\u0438, \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 <strong>CounterX<\/strong> \u0438 <strong>CounterY <\/strong>\u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0430.<\/p>\n<pre><code class=\"scala\">        \/* Generate picture using X and Y counters *\/           \/* Convenience params *\/          val horiz_total_width = horiz_back_porch + horiz_active + horiz_front_porch + horiz_sync          val vert_total_height = vert_back_porch + vert_active + vert_front_porch + vert_sync            val CounterX = Reg(UInt(log2Up(horiz_total_width) bits))          val CounterY = Reg(UInt(log2Up(vert_total_height) bits)) <\/code><\/pre>\n<p> \u0420\u0435\u0433\u0438\u0441\u0442\u0440 <strong>CounterX<\/strong> \u0431\u0443\u0434\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u0442 \u0438 \u043e\u0431\u043d\u0443\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0434\u043e\u0441\u0442\u0438\u0433 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442.\u00a0\u0435. \u0440\u0430\u0432\u0435\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e <strong>horiz_total_width &#8212; 1<\/strong>. \u0420\u0435\u0433\u0438\u0441\u0442\u0440 <strong>CounterY<\/strong> \u0431\u0443\u0434\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 <strong>CounterX<\/strong> \u0434\u043e\u0441\u0442\u0438\u0433 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u043e\u0431\u043d\u0443\u043b\u044f\u0442\u044c <strong>CounterY<\/strong> \u0431\u0443\u0434\u0435\u043c \u0435\u0441\u043b\u0438 \u043e\u043d \u0434\u043e\u0441\u0442\u0438\u0433 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <strong>vert_total_height &#8212; 1<\/strong>. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, <strong>CounterX<\/strong> \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, \u0430 <strong>CounterY<\/strong> \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u043d\u044b\u0435):<\/p>\n<pre><code class=\"scala\">        CounterX := (CounterX === horiz_total_width - 1) ? U(0) | CounterX + 1           when(CounterX === horiz_total_width - 1) {              CounterY := ((CounterY === vert_total_height - 1) ? U(0) | CounterY + 1)          } <\/code><\/pre>\n<p> \u0414\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b <strong>hSync<\/strong>, <strong>vSync<\/strong> \u0438 <strong>de<\/strong> \u0442\u043e\u0436\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 <strong>CounterX<\/strong> \u0438 <strong>CounterY<\/strong> \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u044f \u0438\u0445 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432:<\/p>\n<pre><code class=\"scala\">        \/* Produce HSYNC, VSYNC and DE based on back\/front porches *\/           hSync := (CounterX &gt;= horiz_back_porch + horiz_active + horiz_front_porch) &amp;&amp;                   (CounterX &lt; horiz_back_porch + horiz_active + horiz_front_porch + horiz_sync)           vSync := (CounterY &gt;= vert_back_porch + vert_active + vert_front_porch) &amp;&amp;                   (CounterY &lt; vert_back_porch + vert_active + vert_front_porch + vert_sync)           de := (CounterX &gt;= horiz_back_porch &amp;&amp; CounterX &lt; horiz_back_porch + horiz_active) &amp;&amp;                (CounterY &gt;= vert_back_porch &amp;&amp; CounterY &lt; vert_back_porch + vert_active) <\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0435\u0441\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0444\u043b\u0430\u0433 <strong>de<\/strong>, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <strong>CounterX<\/strong> \u0438 <strong>CounterY<\/strong> \u043f\u0443\u0442\u0435\u043c \u0432\u0437\u044f\u0442\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 \u0438\u0445 \u044d\u0442\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u043b\u0435\u0432\u043e. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0448\u0438\u0440\u0438\u043d\u044b \u0438 \u0432\u044b\u0441\u043e\u0442\u044b. \u0415\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 <strong>de<\/strong> \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0442.\u00a0\u0435. \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u0435 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u0442\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0443\u043b\u0438:<\/p>\n<pre><code class=\"scala\">        when(de) {               \/* Period of visible area - Synthesize picture *\/              red := CounterY(5 downto 4) ## B\"000000\"              green := CounterX(6 downto 5) ## B\"000000\"              blue := CounterX(7) ## B\"0000000\"           } otherwise {              \/* Period of blanking *\/              red := 0              green := 0              blue := 0          } <\/code><\/pre>\n<p> \u041d\u0430 \u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u00ab\u043c\u0443\u0430\u0440\u0430\u00bb \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. <\/p>\n<p><a class=\"anchor\" name=\"6.6\" id=\"6.6\"><\/a><\/p>\n<h3> 6.6. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u044b<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0440\u0438 TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0438\u0445  \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0431\u0438\u0442\u043d\u043e \u0432\u044b\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0432 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 HDMI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <strong>io.hdmi.tmds_p[2:0]<\/strong> \u0438 <strong>io.hdmi.tmds_n[2:0]<\/strong>. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c <strong>TMDS_encoder<\/strong>,<strong> <\/strong>\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0432\u0438\u0434\u0435 \u00ab\u0447\u0435\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430\u00bb, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b:<\/p>\n<pre><code class=\"scala\">        val clk = in Bool()          val VD = in Bits(8 bits)          val CD = in Bits(2 bits)          val VDE = in Bool() <\/code><\/pre>\n<p> \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b:<\/p>\n<pre><code class=\"scala\">        val TMDS = out Bits(10 bits) <\/code><\/pre>\n<p> \u0433\u0434\u0435 <strong>clk<\/strong> \u044d\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u0437\u0430 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 8 \u0431\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 <strong>VD<\/strong> \u0438\u043b\u0438 2 \u0431\u0438\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>CD<\/strong>, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>VDE<\/strong>, \u0432 10 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>TMDS<\/strong> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0431\u043e\u0439 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u00bb \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 \u043b\u0438\u043d\u0438\u044e. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043b\u043e\u043a\u0438 \u044d\u043d\u0435\u043a\u043e\u0434\u0435\u0440\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <strong>pixclk<\/strong> (25.0\u041c\u0413\u0446), \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 VDE \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0438\u0437 <strong>red<\/strong>\/<strong>green<\/strong>\/<strong>blue<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0434\u0432\u0430 \u0431\u0438\u0442\u0430 <strong>CD<\/strong> \u0431\u0443\u0434\u0443 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0438\u0437 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>hSync<\/strong> \u0438 <strong>vSync<\/strong>, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u00ab\u0433\u043e\u043b\u0443\u0431\u043e\u0433\u043e\u00bb \u043a\u0430\u043d\u0430\u043b\u0430. \u0414\u043b\u044f \u00ab\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e\u00bb \u0438 \u00ab\u0437\u0435\u043b\u0435\u043d\u043e\u0433\u043e\u00bb \u044d\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0431\u0438\u0442\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0432\u043d\u044b <strong>0<\/strong>. \u0421\u043c. \u0433\u043b\u0430\u0432\u0443 \u00ab<em>4. TMDS \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 DVI-D \u0438 HDMI<sup>(R)<\/sup><\/em><sup>\u00bb<\/sup>.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u043e\u0432,  \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u043e\u043d \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 <strong>dviClockDomain<\/strong> \u0441\u0440\u0430\u0437\u0443 \u0437\u0430 \u043a\u043e\u0434\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u00ab\u043c\u0443\u0430\u0440\u0430\u00bb:<\/p>\n<pre><code class=\"scala\">        \/* Do TMDS encoding *\/           \/* Pass each color reg through external TMDS encoder to get TMDS regs filled *\/           val encoder_R = TMDS_encoder()          encoder_R.clk := pixclk          encoder_R.VD := red          encoder_R.CD := B\"00\"          encoder_R.VDE := de           val encoder_G = TMDS_encoder()          encoder_G.clk := pixclk          encoder_G.VD := green          encoder_G.CD := B\"00\"          encoder_G.VDE := de           val encoder_B = TMDS_encoder()          encoder_B.clk := pixclk          encoder_B.VD := blue          encoder_B.CD := vSync ## hSync \/* Blue channel carries HSYNC and VSYNC controls *\/          encoder_B.VDE := de <\/code><\/pre>\n<p> \u041a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u044b\u0434\u0430\u0447\u0438 \u043d\u0430 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 <strong>tmdsClockDomain<\/strong>, \u0442\u0430\u043a \u043a\u0430\u043a \u0431\u0438\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 <strong>pixclk_x10<\/strong>. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">    val tmds_area = new ClockingArea(tmdsClockDomain) {         \u2026          \/* Produce G, R and B data bits by shifting each TMDS register.             Use BufferCC() to cross clock domains.  *\/           val TMDS_shift_red = Reg(Bits(10 bits)) init(0)          val TMDS_shift_green = Reg(Bits(10 bits)) init(0)          val TMDS_shift_blue = Reg(Bits(10 bits)) init(0)          val TMDS_mod10 = Reg(UInt(4 bits)) init(0)          val TMDS_shift_load = Reg(Bool()) init(False)           TMDS_shift_red := TMDS_shift_load ? BufferCC(dvi_area.encoder_R.TMDS) | TMDS_shift_red(9 downto 1).resized          TMDS_shift_green := TMDS_shift_load ? BufferCC(dvi_area.encoder_G.TMDS) | TMDS_shift_green(9 downto 1).resized          TMDS_shift_blue := TMDS_shift_load ? BufferCC(dvi_area.encoder_B.TMDS) | TMDS_shift_blue(9 downto 1).resized          TMDS_mod10 := ((TMDS_mod10 === U(9)) ? U(0) | TMDS_mod10 + 1)          TMDS_shift_load := TMDS_mod10 === U(9) <\/code><\/pre>\n<p> \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0442\u0440\u0438 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0446\u0432\u0435\u0442\u0430, \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 10 \u0431\u0438\u0442. \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0438\u0437 TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u043e\u0432, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 (\u0442\u0430\u043a\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>pixclk<\/strong>), \u0442\u043e \u043e\u043d\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>BufferCC()<\/strong>, \u043e\u043d\u0430 \u0441\u043a\u0440\u044b\u0442\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0432 \u043a\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 OBUFDS:<\/p>\n<pre><code class=\"scala\">        \/* Produce differential signals using hard OBUFDS block *\/           val tmds_0 = OBUFDS()          tmds_0.I := TMDS_shift_blue(0)          io.hdmi.tmds_p(0) := tmds_0.O          io.hdmi.tmds_n(0) := tmds_0.OB           val tmds_1 = OBUFDS()          tmds_1.I := TMDS_shift_green(0)          io.hdmi.tmds_p(1) := tmds_1.O          io.hdmi.tmds_n(1) := tmds_1.OB           val tmds_2 = OBUFDS()          tmds_2.I := TMDS_shift_red(0)          io.hdmi.tmds_p(2) := tmds_2.O          io.hdmi.tmds_n(2) := tmds_2.OB <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>KarnixTestHDMITopLevel<\/strong> \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 Verilog \u0444\u0430\u0439\u043b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">object KarnixTestHDMIVerilog{       def main(args: Array[String]) {      SpinalVerilog(KarnixTestHDMITopLevel().setDefinitionName(\"KarnixTestHDMITopLevel\"))    }  }<\/code><\/pre>\n<p> \u0418 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 <strong>.\/src\/main\/scala\/mylib\/KarnixTestHDMI.scala<\/strong>. \u041f\u043e\u043b\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: <\/p>\n<p><a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/blob\/karnix_extended\/src\/main\/scala\/mylib\/KarnixTestHDMI.scala\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/blob\/karnix_extended\/src\/main\/scala\/mylib\/KarnixTestHDMI.scala<\/a><\/p>\n<p><a class=\"anchor\" name=\"6.7\" id=\"6.7\"><\/a><\/p>\n<h3> 6.7. \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c KarnixTestHDMI \u043d\u0430 \u041f\u041b\u0418\u0421<\/h3>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438, \u0442.\u00a0\u0435. \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044d\u0442\u0430\u043f\u043e\u0432. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u044f <a href=\"https:\/\/habr.com\/ru\/articles\/801191\/#7\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441<\/a>, \u0434\u0430\u043b\u0435\u0435 \u044f \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c.<\/p>\n<p>1. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0438 SpinalHDL \u0432 Verilog. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p> <code>$ sbt \"runMain mylib.KarnixTestHDMIVerilog\"<\/code><\/p>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <strong>KarnixTestHDMITopLevel.v<\/strong>.<\/p>\n<p>2. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>KarnixTestHDMITopLevel.v<\/strong> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog (\u0430 \u0438\u0445 \u0443 \u043d\u0430\u0441 \u0435\u0449\u0435 \u0434\u0432\u0430: <strong>TMDS_encoder.sv<\/strong> \u0438 <strong>OBUFDS.sv<\/strong>), \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0443 Yosys \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432\u0438\u0434\u0430:<\/p>\n<p> <code>$ yosys -v2 -p \"synth_ecp5 -abc9 -top KarnixTestHDMITopLevel -json KarnixTestHDMITopLevel.json\" KarnixTestHDMITopLevel.v TMDS_encoder.sv OBUFDS.sv<\/code><\/p>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>KarnixTestHDMITopLevel.json<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043d\u0435\u0442\u043b\u0438\u0441\u0442, \u0442.\u00a0\u0435. \u0441\u0445\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0438\u0437 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0445\u0430\u0440\u0434-\u0431\u043b\u043e\u043a\u043e\u0432.<\/p>\n<p>3. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u043d\u0435\u0442\u043b\u0438\u0441\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <strong>karnix_cabga256.lpf<\/strong>  \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043b\u0435\u0439\u0441\u0435\u0440\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u041f\u041b\u0418\u0421. \u0414\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432\u0438\u0434\u0430:<\/p>\n<p><code>$ nextpnr-ecp5 --seed 1122 --speed 8 --25k --parallel-refine --lpf karnix_cabga256.lpf --package CABGA256 --json KarnixTestHDMITopLevel.json --textcfg KarnixTestHDMITopLevel.json<\/code><\/p>\n<p>4. \u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u041f\u041b\u0418\u0421 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p><code>$ ecppack --svf bin\/KarnixTestHDMITopLevel_25F.svf KarnixTestHDMITopLevel_25F.config KarnixTestHDMITopLevel_25F.bit <\/code><\/p>\n<p>5. \u0422\u0435\u043f\u0435\u0440\u044c \u0444\u0430\u0439\u043b <strong>KarnixTestHDMITopLevel_25F.bit<\/strong> \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c \u0432 \u041f\u041b\u0418\u0421 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>openFPGALoader<\/strong>:<\/p>\n<p><code>$ openFPGALoader -f bin\/KarnixTestHDMITopLevel_25F.bit<\/code><\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0444\u043b\u044d\u0448 \u043f\u0430\u043c\u044f\u0442\u0438, \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421 \u0431\u0443\u0434\u0435\u0442 \u0441\u0431\u0440\u043e\u0448\u0435\u043d\u0430 \u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d HDMI \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u00ab\u043c\u0443\u0430\u0440\u0430\u00bb, \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441. 7.<\/p>\n<p> \u0427\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>Makefile.TestHDMI<\/strong>, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:<\/p>\n<p><a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/blob\/karnix_extended\/scripts\/KarnixExtended\/Makefile.TestHDMI\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/blob\/karnix_extended\/scripts\/KarnixExtended\/Makefile.TestHDMI<\/a><\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0437 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 <strong>.\/VexRiscvForKarnix\/scripts\/KarnixExtended<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f (\u0432\u0435\u0442\u043a\u0430 <strong>karnix_extenede<\/strong>). \u0422\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p> <code>rz@devbox:~\/VexRiscvForKarnix\/scripts\/KarnixExtended$ make -f Makefile.TestHDMI compile<\/code> <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/623\/a9f\/723\/623a9f7233cd6b4dfbc58b24dec3a2b7.png\" alt=\"\u0420\u0438\u0441. 7. \u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u043c\u0443\u0430\u0440) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 KarnixTestHDMI \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb.\" title=\"\u0420\u0438\u0441. 7. \u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u043c\u0443\u0430\u0440) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 KarnixTestHDMI \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb.\" width=\"3264\" height=\"1840\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/623\/a9f\/723\/623a9f7233cd6b4dfbc58b24dec3a2b7.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 7. \u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u043c\u0443\u0430\u0440) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435<br \/> \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 KarnixTestHDMI \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb.<\/em><\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"7\" id=\"7\"><\/a><\/p>\n<h2> 7. Color Graphics Adapter<\/h2>\n<p>\u0412 1980 \u0433\u043e\u0434\u0443 \u0433\u0438\u0433\u0430\u043d\u0442 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u0444\u0438\u0440\u043c\u0430 IBM \u043f\u0440\u0438\u043d\u044f\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u044b\u0439\u0442\u0438 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0432\u0438\u0434\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f IBM \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u00ab\u043d\u0430 \u0432\u0441\u044f\u043a\u0443\u044e \u0445\u0440\u0435\u043d\u044c \u043c\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0435\u043c \u0441\u0432\u043e\u044e \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0434\u0438\u0447\u044c\u00bb, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0430\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u0444\u0438\u0441\u0430 \u0438 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0438\u0437-\u043f\u043e\u0434 \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u0431\u044e\u0440\u043e\u043a\u0440\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0430 IBM, \u0432\u0435\u043b\u0430 \u0442\u0430\u0439\u043d\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0430 \u043e\u043f\u044b\u0442 \u0438 \u0447\u0443\u0442\u044c\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432, \u043d\u0435\u0436\u0435\u043b\u0438 \u043d\u0430 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438. \u042d\u0442\u043e \u0447\u0443\u0442\u044c\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e \u0438\u043c, \u0447\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0435\u0448\u0435\u0432\u043e\u0439 \u0438 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0439, \u0430 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u0447\u0442\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432,  \u0438 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043c\u0430\u0448\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439, \u0447\u0442\u043e \u043f\u043e \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0431\u044b\u043b\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043e\u0440\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0434\u043b\u044f IBM. \u0422\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438. \u041c\u0430\u0448\u0438\u043d\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0430\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 IBM Personal Computer model 5150 (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e IBM PC \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u041f\u041a \u2014 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440), \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0432 \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0435 \u0441\u0440\u043e\u043a\u0438 (\u043c\u0435\u043d\u0435\u0435 \u0447\u0435\u043c \u0437\u0430 1 \u0433\u043e\u0434), \u0432\u044b\u0448\u043b\u0430 \u0432 \u0441\u0432\u0435\u0442 \u0432 \u0430\u0432\u0433\u0443\u0441\u0442\u0435 1981 \u0433\u043e\u0434\u0430 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u043b\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0444\u0443\u0440\u043e\u0440 \u0432 \u0441\u0435\u043a\u0442\u043e\u0440\u0435 SOHO (small office, home office) &#8212; \u043c\u0435\u043b\u043a\u0438\u0435 \u0444\u0438\u0440\u043c\u0451\u0448\u043a\u0438, \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u0434\u043e\u043c\u0443 \u0432\u0440\u0430\u0447\u0438, \u044e\u0440\u0438\u0441\u0442\u044b, \u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0432 \u043d\u0435\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b. \u041e\u0434\u043d\u0430\u043a\u043e IBM PC \u043f\u0440\u043e\u0448\u0435\u043b \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0438 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u043b\u043e\u0434\u0435\u0436\u0438 \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0432\u0438\u0434\u0435\u043e-\u0438\u0433\u0440. \u0410 \u0432\u0441\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e IBM PC \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u043c\u043e\u043d\u043e\u0445\u0440\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 &#8212; MDA (Monochrome Display Adapter). \u041f\u043e\u043c\u0438\u043c\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 MDA \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u043e\u043d \u0435\u0449\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c IBM PC \u043a \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e  \u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u041f\u042d\u0412\u041c \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043a IBM PC  \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0437\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u0433\u0438. \u0411\u044b\u0441\u0442\u0440\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u0432 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u043c\u0430\u0445, IBM \u0441\u043b\u0435\u0434\u043e\u043c \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u2014 CGA (Color Graphics Adapter). \u042d\u0442\u043e\u0442 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0431\u044b\u043b \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u044a\u0435\u043c\u0430\u043c\u0438 &#8212; \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 (RGBI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u0440\u0430\u0437\u044a\u0435\u043c\u043e\u043c DB-9), \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 NTSC (\u0440\u0430\u0437\u044a\u0435\u043c RCA). \u0418 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0443 \u0441\u0430\u043c\u043e\u0439 IBM \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c RGBI \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b (\u0434\u0438\u0441\u043f\u043b\u0435\u0439 IBM 5153 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u0430\u0440\u0442\u0435 1983 \u0433\u043e\u0434\u0430), \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 CGA \u0445\u0443\u0434\u043e-\u0431\u0435\u0434\u043d\u043e \u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 IBM \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u2014 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435-\u0440\u0430\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439. \u041f\u0440\u0430\u0432\u0434\u0430, \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0438 \u0438\u0433\u0440\u0430\u043c\u0438 \u0434\u043b\u044f IBM PC \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0431\u0435\u0434\u0430, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0447\u044c \u043d\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p><em>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0421\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u0438 \u0440\u0430\u0434\u0438 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 MDA \u0438\u043c\u0435\u043b \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0440\u0430\u0432\u043d\u0443\u044e 18,43 \u043a\u0413\u0446, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0448\u0435 \u0447\u0435\u043c 15,7 \u043a\u0413\u0446 \u0443 CGA. \u0417\u0430 \u0441\u0447\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 MDA \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0433\u043b\u0430\u0437\u0443.<\/em><\/p>\n<p><a class=\"anchor\" name=\"7.1\" id=\"7.1\"><\/a><\/p>\n<h3>7.1. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/h3>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e-\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0438\u0437 \u0441\u0435\u0431\u044f \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 IBM CGA. \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 CGA \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0441\u043e\u0431\u043e\u0439 \u043f\u0435\u0447\u0430\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 ~340&#215;101\u043c\u043c \u0441 \u043a\u0440\u0430\u0435\u0432\u044b\u043c \u0440\u0430\u0437\u044a\u0435\u043c\u043e\u043c \u0434\u043b\u044f \u0441\u043b\u043e\u0442\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Industry_Standard_Architecturehttps:\/\/en.wikipedia.org\/wiki\/Industry_Standard_Architecture\" rel=\"noopener noreferrer nofollow\">Industrial Standard Architecture<\/a> (ISA), \u0443\u0441\u0435\u044f\u043d\u043d\u0443\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0438\u0437 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0441\u0435\u0440\u0438\u0438 SN74xx. \u0412 \u0446\u0435\u043d\u0442\u0440\u0435 \u043f\u043b\u0430\u0442\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u042d\u041b\u0422 (CRT controller) &#8212; Motorola MC6845, \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0435\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u0417\u0423 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u0430 \u043f\u043e\u0434 \u043d\u0438\u043c\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432\u043e\u0441\u0435\u043c\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 MCM4517P12 \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u0430 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043c\u043e\u043c 16 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442, \u0442.\u0435. \u043a\u0430\u0436\u0434\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u043f\u043e 1x16kBits. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 MC6845 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u044b, \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 &#8212; \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0445 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 CGA \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u0445\u0438\u0442\u0440\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0443\u0445\u0438\u0442\u0440\u0438\u043b\u0438\u0441\u044c \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u0435\u0433\u043e \u0432\u0445\u043e\u0434\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0438\u0437 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0435\u0441\u043b\u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.<\/p>\n<p>\u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 MC6845 \u043d\u0435 \u0431\u044b\u043b\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u043c \u0432\u0438\u0434\u0435\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430 \u00ab\u043e\u0431\u0432\u044f\u0437\u043a\u0438\u00bb, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0431<strong>\u043e<\/strong>\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u043b\u0430\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u0451, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435: \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0433 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443; \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u00ab\u043f\u043b\u0430\u0432\u043d\u043e\u0439\u00bb (\u043f\u043e-\u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0439) \u0438 \u00ab\u0433\u0440\u0443\u0431\u043e\u0439\u00bb (\u043f\u043e-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0439) \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (vertical scrolling); \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u00ab\u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0435\u0440\u0430\u00bb (Light Pen).  \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u042d\u041b\u0422 MC6845 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u041f\u042d\u0412\u041c \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a BBC Micro \u0438 Amstrad CPC.<\/p>\n<p>\u041d\u0430 \u0440\u0438\u0441. 8 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b MC6845, \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u044d\u0442\u043e\u0442 \u0432\u0438\u0434\u0435\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u042d\u041b\u0422. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0442\u043e \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 R0 \u0434\u043e R17 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432-\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u0438\u0434\u0435\u043e-\u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 <strong>\u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445<\/strong> \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u043e 8 \u0442\u043e\u0447\u0435\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 \u0438 \u043f\u043e <strong>N<\/strong> \u0441\u0442\u0440\u043e\u043a \u0432 \u0432\u044b\u0441\u043e\u0442\u0443 (\u0433\u0434\u0435 <strong>N<\/strong> &#8212; \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 32-\u0445 \u0441\u0442\u0440\u043e\u043a). \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b R0-R3 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438, \u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b R4-R9 &#8212; \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b-\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0432\u0435\u043b\u0438 \u0443\u0447\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0430\u044f \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438. \u041d\u0430 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u043a\u0430\u043a <strong>Horizontal CRT<\/strong> \u0438 <strong>Scan Line CRT<\/strong> (\u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 CounterX \u0438 CounterY \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435 \u0438\u0437 \u0433\u043b\u0430\u0432\u044b <em>\u00ab6.5. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u00ab\u043c\u0443\u0430\u0440\u00bb<\/em>). \u0412 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0440\u0435\u0433\u0438\u0441\u0442\u0440-\u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u043b \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043a\u0430\u043a <strong>Character Row CRT<\/strong>. \u041e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0445 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044f \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u043b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0430\u0434\u0440\u0435\u0441 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 MA[13:0], \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0430 \u043b\u0438\u043d\u0438\u044f\u0445 RA[4:0] \u043d\u043e\u043c\u0435\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430. 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u044b\u0435 ASCII \u043a\u043e\u0434\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 RA[4:0] (\u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430) \u0438 \u043f\u043e\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0432\u0445\u043e\u0434\u044b \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u0417\u0423 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0418\u0437 \u043d\u0435\u0451 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u043b\u0430\u0441\u044c 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 HSYNC, VSYNC \u0438 DE \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0434\u0430\u043b\u0435\u0435 \u0432 \u043b\u043e\u0433\u0438\u043a\u0443 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u0433\u0434\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0443\u0440\u043e\u0432\u043d\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 RGBI \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d\u0435 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 RGBI \u044d\u0442\u043e \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 Red, Green, Blue \u0438 Intensity \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0430\u0437\u044a\u0435\u043c \u0442\u0438\u043f\u0430 DB-9, \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c 16 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 R, G \u0438 B \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u043f\u0443\u0448\u0435\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u042d\u041b\u0422, \u043f\u043e \u044d\u0442\u043e\u043c\u0443 RGBI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0435\u0449\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u042d\u041b\u0422 (Direct-Drive CRT).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dda\/e9b\/812\/ddae9b812f6cd32538495c63a7f7a413.png\" alt=\"\u0420\u0438\u0441. 8. \u0411\u043b\u043e\u0447\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u042d\u041b\u0422 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 MC6845. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0442 1977\u0433.\" title=\"\u0420\u0438\u0441. 8. \u0411\u043b\u043e\u0447\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u042d\u041b\u0422 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 MC6845. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0442 1977\u0433.\" width=\"692\" height=\"937\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dda\/e9b\/812\/ddae9b812f6cd32538495c63a7f7a413.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 8. \u0411\u043b\u043e\u0447\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u042d\u041b\u0422 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 MC6845.<br \/> \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0442 1977\u0433.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u043e \u0440\u0430\u0431\u043e\u0442\u0435 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435.<\/p>\n<p>\u041e\u043f\u043e\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0432 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0440\u0430\u0432\u043d\u044f\u043b\u0430\u0441\u044c <strong>14,318181<\/strong> \u041c\u0413\u0446 \u0438\u043b\u0438 4-\u0445 \u043a\u0440\u0430\u0442\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043d\u0435\u0441\u0443\u0449\u0435\u0439 \u0446\u0432\u0435\u0442\u0430 \u0432 NTSC. \u0414\u0430\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0445\u0435\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 IBM PC \u0438 XT \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <strong>4,772<\/strong> \u041c\u0413\u0446, \u0447\u0442\u043e \u0440\u0430\u0432\u043d\u044f\u043b\u043e\u0441\u044c 1\/3 \u043e\u0442 \u043e\u043f\u043e\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b CGA. \u0412\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u041f\u042d\u0412\u041c \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>\u0412 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u043e\u043f\u043e\u0440\u0442\u043e\u0432\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u042d\u041b\u0422 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e, \u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 &#8212; \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e, \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0442\u0430\u043a\u0442\u0430, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b \u043b\u0438\u043d\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0438\u043c\u043f\u0435\u0434\u0430\u043d\u0441\u0430 (HighZ). \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u043e \u0441\u043f\u0430\u0434\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u0442\u0430\u043a\u0442\u0430, \u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u0442\u043e\u0447\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0438 \u0441\u0445\u0435\u043c\u043e\u0439 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0432 IBM PC \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c SDRAM \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f DMA \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0446\u0438\u043a\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b \u0440\u0430\u0437 \u0432 15\u043c\u0441). \u0415\u0441\u043b\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0430 \u0441 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430  \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043a\u043e\u0440\u043e\u0442\u0435\u043d\u044c\u043a\u0438\u0445 \u0448\u0442\u0440\u0438\u0445\u043e\u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 (\u0442.\u00a0\u043d. \u00ab\u0441\u043d\u0435\u0433\u00bb). \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u00ab\u0433\u043b\u0438\u0442\u0447\u00bb \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0441\u044f \u0435\u0441\u043b\u0438 DMA \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 SDRAM.  \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u00ab\u0441\u043d\u0435\u0433\u0430\u00bb \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u043b\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, 80&#215;25 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0433\u0434\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0438 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0430 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0448\u0438\u043d\u044b \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438.  \u0412 BIOS \u043d\u0430 IBM PC \u044d\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430 (\u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f), \u0430 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f. \u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0438\u0437\u0434\u0435\u043b\u0438\u044f\u0445-\u043a\u043b\u043e\u043d\u0430\u0445 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439, \u0437\u0430 \u0441\u0447\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0434\u0432\u0443\u0445\u043f\u043e\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 MC6845 \u043d\u0435 \u0438\u043c\u0435\u043b \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 RGBI \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u043b\u043e \u0432 \u0435\u0433\u043e \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043e\u0437\u0430\u0434\u0430\u0447\u0438\u043b\u0438\u0441\u044c \u044d\u0442\u0438\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b 16-\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0441 16-\u044e \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0446\u0432\u0435\u0442\u0430 \u0444\u043e\u043d\u0430 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u0415\u0449\u0435 \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0435\u043d \u0440\u0435\u0436\u0438\u043c \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u2014 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043d\u0430 \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0431\u0430\u0439\u0442\u0430\u043c\u0438 &#8212; \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u043e\u0442\u0432\u043e\u0434\u0438\u043b\u0441\u044f \u043f\u043e\u0434 \u0430\u0442\u0440\u0438\u0431\u0443\u0442: \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u043f\u043e\u043b\u0443\u0431\u0430\u0439\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u043b \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430, \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u2014 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430, \u0441\u0430\u043c\u044b\u0439 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0410 \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b ASCII \u043a\u043e\u0434 (codepage 437). \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u042d\u041b\u0422 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u043d\u0430 \u0441\u0432\u043e\u044e \u0448\u0438\u043d\u0443 MA[13:0] \u043d\u043e\u043c\u0435\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a \u0430\u0434\u0440\u0435\u0441 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0431\u044b\u043b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d \u043e\u0434\u043d\u0438\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0431\u0438\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0434 \u0430\u0442\u0440\u0438\u0431\u0443\u0442. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0438\u0434\u0435\u043e \u0440\u0435\u0436\u0438\u043c\u0430, \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c CGA \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0434\u043e \u0432\u043e\u0441\u044c\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0432\u044b\u0448\u0435, \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 MC6845 \u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0432 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0431\u044b\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u0443\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0439 RA[4:0], \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0438\u0445 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 (\u0431\u0430\u043d\u043a\u0430\u043c\u0438) \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u0432\u043e\u0451\u043c \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 (video plane). \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0438\u0437 200 \u0441\u0442\u0440\u043e\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0438\u0442 RA[0] \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0432\u044b\u0441\u043e\u0442\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0440\u0430\u0432\u043d\u043e\u0439 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u0441\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0434\u0435\u043b\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 (\u00ab\u043f\u043b\u0435\u0439\u043d\u0430\u00bb) &#8212; \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0448\u0435\u043b \u0431\u043b\u043e\u043a \u0441 \u0447\u0435\u0442\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 8\u041a\u0411, \u043f\u043e\u0442\u043e\u043c \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0431\u043b\u043e\u043a \u0441 \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438. \u0422\u0430\u043a\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430 \u0440\u044f\u0434 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 \u041f\u041e \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435.<\/p>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u00ab\u043d\u0430 \u043b\u0435\u0442\u0443\u00bb \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u043e\u0434\u043d\u0443 \u0438\u0437 \u0448\u0435\u0441\u0442\u0438 \u043f\u0430\u043b\u0438\u0442\u0440. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0446\u0438\u043a\u043b\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0446\u0432\u0435\u0442\u043e\u0432. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0433\u0440\u044b \u043d\u0430 IBM PC \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 (\u0440\u0438\u0441. 9) \u0432 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0448\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u041f\u0417\u0423 \u0438 \u0435\u0451 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u043d\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u043d\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e. \u0412\u0441\u0435\u0433\u043e \u0432 \u041f\u0417\u0423 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u043b\u043e\u0441\u044c \u0442\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432: 8&#215;14, 8&#215;8 \u0438 8&#215;8 bold. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0448\u0440\u0438\u0444\u0442 8&#215;8 bold, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0441\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u043e\u043c (NTSC) \u0432\u044b\u0445\u043e\u0434\u0435. \u0412\u044b\u0431\u043e\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e IBM CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0436\u0430\u043c\u043f\u0435\u0440\u043e\u0432.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/77f\/d9d\/744\/77fd9d7442cee6b07ba9794e0b75c211.png\" alt=\"\u0420\u0438\u0441. 9. \u041d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b 437 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 ASCII \u043f\u043b\u044e\u0441 \u00ab\u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb \u0441\u0438\u043c\u0432\u043e\u043b\u044b.\" title=\"\u0420\u0438\u0441. 9. \u041d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b 437 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 ASCII \u043f\u043b\u044e\u0441 \u00ab\u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb \u0441\u0438\u043c\u0432\u043e\u043b\u044b.\" width=\"256\" height=\"128\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/77f\/d9d\/744\/77fd9d7442cee6b07ba9794e0b75c211.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 9. \u041d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b 437 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 ASCII<br \/> \u043f\u043b\u044e\u0441 \u00ab\u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb \u0441\u0438\u043c\u0432\u043e\u043b\u044b.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0449\u0435 \u043e\u0434\u043d\u043e\u0439  \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0431\u044b\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 RCA \u0440\u0430\u0437\u044a\u0435\u043c\u0435 (\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0439 NTSC) \u043f\u043e\u0434\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0443 \u00ab\u0430\u0440\u0442\u0438\u0444\u0430\u043a\u0442\u0438\u043d\u0433\u0430\u00bb &#8212; \u043a\u043e\u0433\u0434\u0430 \u0446\u0432\u0435\u0442\u0430 \u0434\u0432\u0443\u0445 \u0440\u044f\u0434\u043e\u043c \u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0434\u0430\u044e\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0446\u0432\u0435\u0442. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e, \u0437\u0430 \u0441\u0447\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0445\u0443\u0434\u0448\u0435\u043d\u0438\u044f \u0447\u0435\u0442\u043a\u043e\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0431<strong>\u043e<\/strong>\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0446\u0432\u0435\u0442\u043e\u0432. \u0414\u0430\u043d\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0438\u0433\u0440\u0430\u0445, \u043d\u043e \u043e\u043d \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 RGBI \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\u0445. \u041d\u0438\u0436\u0435 \u043d\u0430 \u0440\u0438\u0441. 10. \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0434\u0432\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u043a\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0438\u0433\u0440\u044b \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 RGBI \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0438 \u043d\u0430 NTSC \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440. \u0417\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0437\u0436\u0435, \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b-\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u00ab\u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u043d\u0435\u0440\u044b\u00bb \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044f \u0445\u0438\u0442\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u042d\u041b\u0422  \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u00ab\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b\u00bb \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/en.wikipedia.org\/wiki\/Color_Graphics_Adapter#\/media\/File:CGA-1024-color-mode.pnghttps:\/\/en.wikipedia.org\/wiki\/Color_Graphics_Adapter%23\/media\/File:CGA-1024-color-mode.png\" rel=\"noopener noreferrer nofollow\">CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 1024 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u0430<\/a> \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u043e\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7dc\/78e\/390\/7dc78e390d3e93b332adc3c65138107a.png\" alt=\"\u0420\u0438\u0441. 10. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u0430\u0440\u0442\u0438\u0444\u0430\u043a\u0442\u0438\u043d\u0433\u00bb \u043d\u0430 CGA: \u0441\u043b\u0435\u0432\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 RGBI \u043c\u043e\u043d\u0438\u0442\u043e\u0440, \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430 NTSC \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440.\" title=\"\u0420\u0438\u0441. 10. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u0430\u0440\u0442\u0438\u0444\u0430\u043a\u0442\u0438\u043d\u0433\u00bb \u043d\u0430 CGA: \u0441\u043b\u0435\u0432\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 RGBI \u043c\u043e\u043d\u0438\u0442\u043e\u0440, \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430 NTSC \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440.\" width=\"474\" height=\"148\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7dc\/78e\/390\/7dc78e390d3e93b332adc3c65138107a.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 10. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u0430\u0440\u0442\u0438\u0444\u0430\u043a\u0442\u0438\u043d\u0433\u00bb \u043d\u0430 CGA: \u0441\u043b\u0435\u0432\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 RGBI \u043c\u043e\u043d\u0438\u0442\u043e\u0440,<br \/> \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430 NTSC \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u043d\u0430 \u0442\u0435\u043c\u0443 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 IBM Color Graphics Adapter, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0433\u043e \u00ab\u0433\u043b\u0438\u0442\u0447\u0435\u0439\u00bb \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0430 \u042e\u0442\u0443\u0431 \u043a\u0430\u043d\u0430\u043b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>PCRetroTech<\/strong> \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: <a href=\"https:\/\/www.youtube.com\/watch?v=IQ2UeIx1qIA\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=IQ2UeIx1qIA<\/a><\/p>\n<p><a class=\"anchor\" name=\"7.2\" id=\"7.2\"><\/a><\/p>\n<h3> 7.2. \u0412\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0438 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/h3>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443 <a href=\"https:\/\/www.fabmicro.ru\/pub\/IBM%20CGA%20Adapter.pdf\" rel=\"noopener noreferrer nofollow\">IBM Color\/Graphics Monitor Adater<\/a> \u0432 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 CGA \u0431\u044b\u043b\u043e \u0434\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b: \u0440\u0435\u0436\u0438\u043c \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 <strong>40&#215;25<\/strong> \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f <strong>80&#215;25<\/strong> \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u0438\u0437 <strong>8&#215;8<\/strong> \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (PELs \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 IBM, \u0442.\u00a0\u0435. \u00abpicture elements\u00bb \u0438\u043b\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439\/\u0442\u043e\u0447\u0435\u043a). \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0442\u043e\u0447\u043a\u0438, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0432\u0430 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c <strong>320&#215;200<\/strong> \u0438 <strong>640&#215;200<\/strong>.<\/p>\n<p>\u0414\u043b\u044f <strong>\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 320&#215;200<\/strong> (\u043a\u0430\u043a \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e 40&#215;25) \u0447\u0430\u0441\u0442\u043e\u0442\u0430 PIXCLK \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0432\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u043e\u043f\u043e\u0440\u043d\u043e\u0439, \u0442.\u00a0\u0435. <strong>7,1590905<\/strong> \u041c\u0413\u0446. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e <strong>456<\/strong>, \u0438\u0437 \u043d\u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e <strong>320<\/strong>. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u042d\u041b\u0422 \u0431\u044b\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0432\u044b\u0434\u0430\u0447\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 HSYNC \u0441 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 <strong>360<\/strong>, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b HSYNC \u0432\u044b\u0445\u043e\u0434\u0438\u043b \u0441 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0443\u0441\u0442\u044f <strong>32<\/strong> \u0442\u043e\u0447\u043a\u0438 \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u043b \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <strong>64<\/strong> \u0442\u043e\u0447\u043a\u0438. \u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0438 32 \u0442\u043e\u0447\u043a\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u043e\u043d\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u00ab\u0431\u043e\u0440\u0434\u044e\u0440\u00bb \u0441\u043b\u0435\u0432\u0430 \u0438 \u0441 \u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043f\u043e 16 \u0442\u043e\u0447\u0435\u043a, \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 16 \u0446\u0432\u0435\u0442\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0445\u0435\u043c\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430 \u0431\u044b\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439: 320 + 40 + 32 + 64 = 456 \u0442\u043e\u0447\u0435\u043a, \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u043b\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 H-freq = <strong>15699.759<\/strong> \u0413\u0446.<\/p>\n<p>\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f \u0440\u0435\u0436\u0438\u043c\u0430 320&#215;200 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u0437 <strong>200<\/strong> \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u043e\u0432 (\u0441\u0442\u0440\u043e\u043a), \u0441\u0438\u0433\u043d\u0430\u043b VSYNC \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441 <strong>226<\/strong>-\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0441\u044f <strong>16<\/strong> \u0441\u0442\u0440\u043e\u043a. \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u043e\u0439, \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 <strong>242<\/strong> \u043f\u043e <strong>262<\/strong> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438 \u0431\u043e\u0440\u0434\u044e\u0440 \u0441\u0432\u0435\u0440\u0445\u0443 \u0438 \u0441\u043d\u0438\u0437\u0443 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u043e 10 \u0441\u0442\u0440\u043e\u043a. \u0421\u0445\u0435\u043c\u0430 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439: 200 + 26 + 16 + 20 = 262 \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u043e\u0432, \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u043b\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 V-freq = <strong>59.927<\/strong> \u043a\u0413\u0446.<\/p>\n<p>\u0412 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 320&#215;200 \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0439\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 (\u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u0430) \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0430\u0445: \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u0432 \u043e\u0431\u0449\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 0xB8000, \u0430 \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u2014 \u0441 0xBA000. \u0412\u0441\u0435\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u043b\u043e\u0441\u044c 16000 \u0431\u0430\u0439\u0442 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u0414\u043b\u044f <strong>\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 640&#215;200<\/strong> (\u043a\u0430\u043a \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e 80&#215;25) \u0447\u0430\u0441\u0442\u043e\u0442\u0430 PIXCLK \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0432\u043d\u043e\u0439 \u043e\u043f\u043e\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435, \u0442.\u00a0\u0435. <strong>14,318181<\/strong> \u041c\u0413\u0446, \u0430 \u0432\u0441\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u043b\u0438\u0441\u044c. \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u043c\u043e\u0433 \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0446\u0432\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0438\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0446\u0432\u0435\u0442\u043e\u043c \u0444\u043e\u043d\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0439\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u043e\u0441\u044c\u043c\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0430\u0445. \u041a\u0430\u043a \u0438 \u0434\u043b\u044f \u0440\u0435\u0436\u0438\u043c\u0430 320&#215;200, \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u0432 \u043e\u0431\u0449\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 0xB8000, \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u2014 \u0441 0xBA000. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u043b\u043e\u0441\u044c 16000 \u0431\u0430\u0439\u0442 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u0412 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0435\u0449\u0435 \u043e\u0434\u0438\u043d <strong>\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c 160&#215;100<\/strong> \u0442\u043e\u0447\u0435\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u043e 16 \u0446\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0442\u043e\u0447\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u00abLow-Resolution Color\/Graphics Mode\u00bb \u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0432\u0448\u0438\u0439 16000 \u0431\u0430\u0439\u0442 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0430\u043b\u0438\u0442\u0440\u044b, \u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0431\u0438\u0442\u0430\u043c\u0438 I, R, G \u0438 B \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e PEL \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a, \u0442.\u00a0\u0435. PEL \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0441\u043e\u0431\u043e\u0439 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044f (\u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 2&#215;2).<\/p>\n<p>\u0412\u043e \u0432\u0441\u0435\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432 \u043a \u043c\u043b\u0430\u0434\u0448\u0438\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u0430\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043b\u0435\u0432\u0435\u0435.<\/p>\n<p><a class=\"anchor\" name=\"7.3\" id=\"7.3\"><\/a><\/p>\n<h3> 7.3. \u0410\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c CGA \u043f\u043e\u0434 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0438<\/h3>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ol>\n<li>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0443\u043c\u043d\u043e\u0436\u0430\u044f \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043d\u0430 3 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f PIXCLK \u0440\u0430\u0432\u043d\u043e\u0439 ~14,318 \u041c\u0413\u0446 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0438 \u0443\u043c\u043d\u043e\u0436\u0430\u044f \u043d\u0430 3\/2 \u043f\u043e\u043b\u0443\u0447\u0430\u044f PIXCLK \u0440\u0430\u0432\u043d\u0443\u044e ~7,159 \u041c\u0413\u0446 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p> CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0443\u043c\u0435\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0434\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 40&#215;25 \u0438 80&#215;25 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e 8&#215;8 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u0421\u0438\u043c\u0432\u043e\u043b \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430: \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 ASCII \u043a\u043e\u0434\u0430 \u0438 \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0437\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e 16 \u0446\u0432\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430, 8 \u0446\u0432\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u0444\u043e\u043d\u0430 \u0438 \u0431\u0438\u0442 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u044f. \u0412\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043d\u0430 4 \u0438\u043b\u0438 8 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0438\u0434\u0435\u043e \u0440\u0435\u0436\u0438\u043c\u0430.<\/p>\n<\/li>\n<li>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 320&#215;200 (4 \u0446\u0432\u0435\u0442\u0430) \u0438 640&#215;200 (2 \u0446\u0432\u0435\u0442\u0430).\u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043e 16000 \u0431\u0430\u0439\u0442 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0433\u0440\u0443\u0431\u043e \u043f\u0440\u043e\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c (\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u0442\u044c) \u0442\u0435\u043a\u0441\u0442 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043d\u0438\u0437 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.<\/p>\n<\/li>\n<li>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0443\u043c\u0435\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043c\u0435\u0440\u0446\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u0432\u0438\u0434\u0435 \u00ab\u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f\u00bb, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0438 \u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0443\u043c\u0435\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u00ab\u0431\u043e\u0440\u0434\u044e\u0440\u00bb \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16 \u0442\u043e\u0447\u0435\u043a \u043f\u043e \u0431\u043e\u043a\u0430\u043c \u0438 10 \u0442\u043e\u0447\u0435\u043a \u0441\u0432\u0435\u0440\u0445\u0443 \u0438 \u0441\u043d\u0438\u0437\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0411\u043e\u0440\u0434\u044e\u0440 \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 16-\u0442\u0438 \u0446\u0432\u0435\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0441\u043d\u0430\u0431\u0436\u0430\u043b\u0441\u044f 16 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043f\u043e\u0434 \u0432\u0438\u0434\u0435\u043e \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0441\u0442\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u0447\u0442\u043e \u0438\u0437 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u043c \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0441 \u041f\u041b\u0418\u0421 Lattice ECP5 \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043e\u043a\u043e\u043b\u043e 25\u041a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432? \u0418 \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c ?<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043e\u043f\u043e\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b. \u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0433\u043b\u0430\u0432\u0430\u0445 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435  \u0442\u0435\u0441\u0442\u0430 KarnixHDMITest, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u043f\u043e\u0440\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 14,318 \u041c\u0413\u0446 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043a \u043d\u0435\u0439 \u0443 \u043d\u0430\u0441 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0432\u044b\u0439\u0434\u0435\u0442. \u0410 \u0435\u0441\u043b\u0438 \u0432\u044b\u0439\u0434\u0435\u0442, \u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u044b \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u0441\u0435 \u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 25,0 \u041c\u0413\u0446 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u043e\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 640&#215;480 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.<\/p>\n<p>\u0414\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u0435\u0435. \u0421\u043d\u0430\u0431\u0434\u0438\u0442\u044c \u043d\u0430\u0448 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u043e\u0431\u044a\u0435\u043c\u043e\u043c 16 \u041a\u0411 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043b\u0435\u0433\u043a\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u0434\u0430\u0436\u0435 64 \u041a\u0411 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 BRAM \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u043e 16 \u043a\u0438\u043b\u043e\u0431\u0438\u0442, \u0438\u0445 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u041f\u041b\u0418\u0421 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f 56 \u0448\u0442\u0443\u043a, \u0447\u0442\u043e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u0434\u0430\u0435\u0442 <strong>114688<\/strong> \u0431\u0430\u0439\u0442 <strong>\u0442\u0440\u0435\u0445\u043f\u043e\u0440\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438<\/strong>. \u041d\u043e \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e BRAM \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0443\u0436\u0434\u044b \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u043e\u0434 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b, \u043f\u043e\u0434 \u043a\u044d\u0448 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u0434 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u0439 \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043b\u0430\u043d \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f BRAM \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u041e\u0417\u0423 (RAM) \u0434\u043b\u044f \u043a\u043e\u0434\u0430, \u0441\u0442\u044d\u043a\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445: 72 \u041a\u0411 \u2014 \u044d\u0442\u043e\u0433\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 SRAM (\u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0435\u0451 512\u041a\u0411) \u0438\u043b\u0438 SDRAM \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041a\u044d\u0448 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445: 2 \u041a\u0411 + 2 \u041a\u0411.<\/p>\n<\/li>\n<li>\n<p>MAC \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f Ethernet \u0444\u0440\u0435\u0439\u043c\u043e\u0432: 2 \u041a\u0411 + 2 \u041a\u0411.<\/p>\n<\/li>\n<li>\n<p>CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u0432\u0438\u0434\u0435\u043e \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440: 20 \u041a\u0411;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0430\u043b\u0438\u0442\u0440\u044b: 16*32 \u0431\u0438\u0442 = 64 \u0431\u0430\u0439\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0417\u0423 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430: 256 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 8 \u043f\u0438\u043a\u0441\u0435\u043b\u043e\u0432 \u0438 \u0432\u044b\u0441\u043e\u0442\u043e\u0439 16 \u0441\u0442\u0440\u043e\u043a = 4096 \u0431\u0430\u0439\u0442.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u043f\u043e \u043c\u0435\u043b\u043e\u0447\u0438, \u0440\u0430\u0441\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u0441\u044f\u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c, \u0431\u0443\u0444\u0435\u0440\u0430\u043c\u0438UAR\u0422, SPI, DAC \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442 640&#215;480 \u0445\u043e\u0440\u043e\u0448\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0438\u0437 <strong>30 \u0441\u0442\u0440\u043e\u043a \u043f\u043e 80 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/strong>, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 16 \u0441\u0442\u0440\u043e\u043a\/\u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u043e\u0432 \u043f\u043e 8 \u0442\u043e\u0447\u0435\u043a. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 \u0438 \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d 14:9, \u0442\u043e \u0443\u0434\u0432\u043e\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (\u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0448\u0438\u0440\u0438\u043d\u0435) \u0441\u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u043f\u0440\u0438\u0434\u0430\u0441\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0443 \u0432\u0438\u0434 \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443. \u041a\u0430\u043a \u0438 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c CGA \u0431\u0443\u0434\u0435\u043c \u0441\u043d\u0430\u0431\u0436\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0431\u0430\u0439\u0442\u043e\u043c \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f 4800 \u0431\u0430\u0439\u0442 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u0435\u043a\u0441\u0442\u0430 (\u043f\u0440\u0438 20\u041a\u0411 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e \u0446\u0435\u043b\u044b\u0445 4 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0441\u0442\u0430). \u041d\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043f\u0435\u0440\u0435\u0434 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 32-\u0445 \u0431\u0438\u0442\u043d\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0448\u0438\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u043e\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 32 \u0431\u0438\u0442\u0430, \u0442\u043e \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0435\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e), \u0431\u0443\u0434\u0435\u0442 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0435\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b \u043c\u044b \u0442\u043e\u0436\u0435 \u043e\u0442\u0432\u0435\u0434\u0435\u043c 32 \u0431\u0438\u0442\u0430. \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 CGA, \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0430\u0439\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c ASCII \u043a\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u2014 \u0435\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u0435\u0437 \u0434\u0435\u043b\u0430. \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u0430\u0432\u043d\u044b\u0439 9600 \u0431\u0430\u0439\u0442, \u0430 \u0432 \u043b\u0438\u043c\u0438\u0442 20\u041a\u0411 \u0432\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u0434\u0432\u0435 \u043f\u043e\u043b\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u043e 30 \u0441\u0442\u0440\u043e\u043a \u043f\u043b\u044e\u0441 \u0445\u0432\u043e\u0441\u0442\u0438\u043a \u0438\u0437 4-\u0445 \u0441\u0442\u0440\u043e\u043a (\u0432\u0441\u0435\u0433\u043e 64 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430).<\/p>\n<p>\u0417\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430\u0448\u0435\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u043c, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0434\u043b\u044f 256 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 8 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043d\u0430 16 \u0441\u0442\u0440\u043e\u043a (\u0432\u0441\u0435\u0433\u043e 16 \u0431\u0430\u0439\u0442), \u0442.\u00a0\u0435. \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f 4096 \u0431\u0430\u0439\u0442. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u00abcodepage 437\u00bb \u043e\u0442 IBM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432 CGA \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u044f\u0445 \u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 &#8212; \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 ASCII \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441 \u043a\u043e\u0434\u0430\u043c\u0438 0-127, \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430 \u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430. \u0422\u0430\u043a \u043a\u0430\u043a \u044f \u0432\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432 \u0441\u0440\u0435\u0434\u0435 Unix-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <a href=\"https:\/\/en.wikipedia.org\/wiki\/KOI8-R\" rel=\"noopener noreferrer nofollow\">KOI8-R<\/a>. \u041a \u0442\u043e\u043c\u0443-\u0436\u0435, \u0432 \u041e\u0421 FreeBSD \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0445 \u0448\u0440\u0438\u0444\u0442\u043e\u0432, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 8&#215;16 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 KOI8-R: \u0444\u0430\u0439\u043b \u0441\u043e \u0448\u0440\u0438\u0444\u0442\u0430\u043c\u0438 <strong>\/usr\/share\/syscons\/fonts\/koi8-r-8&#215;16.fnt<\/strong> \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>uuencode<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u041a\u0430\u043a \u043e\u043d \u0442\u0443\u0434\u0430 \u043f\u043e\u043f\u0430\u043b \u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0440\u0430\u0441\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0438 \u043f\u043e\u043a\u0430\u0436\u0443 \u043f\u043e\u0437\u0436\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u0435\u043c \u043d\u0430\u0434 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c. \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0441\u0447\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 640&#215;480 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f 38400 \u0431\u0430\u0439\u0442 \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u043c \u0446\u0432\u0435\u0442\u0435 \u0438 76800 \u0431\u0430\u0439\u0442 \u043f\u0440\u0438 \u0434\u0432\u0443\u0445\u0431\u0438\u0442\u043e\u0432\u043e\u043c. \u041d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 20\u041a\u0411 \u043b\u0438\u043c\u0438\u0442, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0432\u0430\u0442\u044c, \u0442.\u00a0\u0435. \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u0438 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u043d\u0430 \u0434\u0432\u0430, \u0430 \u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 PEL \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 2&#215;2. \u0422\u0430\u043a \u043c\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0432\u0438\u0434\u0435\u043e \u0440\u0435\u0436\u0438\u043c\u0443 <strong>320&#215;240<\/strong> \u043f\u043e \u0434\u0432\u0430 \u0431\u0438\u0442\u0430 \u043d\u0430 PEL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0439\u043c\u0435\u0442 19200 \u0431\u0430\u0439\u0442 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u0438 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0432 CGA. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u044b \u0434\u0430\u0436\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u00ab\u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u00bb \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 640&#215;240 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0431\u0438\u0442\u0443 \u043d\u0430 PEL.<\/p>\n<p>\u0423 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u042d\u041b\u0422 MC6845 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0433\u0440\u0443\u0431\u0443\u044e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430 (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0443 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 (\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 PEL) \u0438 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043c\u0430 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u044b\u043b\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u00ab\u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0433\u043e\u00bb \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0434\u0430\u043d\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043c\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0435 \u0442\u0435\u043a\u0441\u0442\u0430. \u0423 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f IBM PC (EGA \u0438 VGA) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0432\u0438\u0434\u0435\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432 \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u0430\u0445 (\u0430 \u043d\u0435 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u043e\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0430\u0445. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=2k1yuXiXJCY\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u0434\u0435\u043e<\/a>. \u0422\u0430\u043a\u0430\u044f \u043f\u043b\u0430\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0435\u043e\u0438\u0433\u0440, \u043d\u043e \u0438 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u0438\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=tSJfzrSA0ec\" rel=\"noopener noreferrer nofollow\">DEC VT320<\/a>, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0433\u043b\u0430\u0437\u0443.<\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043b\u0430\u0432\u043d\u043e\u0439 (\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u0443) \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c 10 \u0431\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0432\u0441\u0435 64 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 (64*16 = 1024 \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u043e\u0432) \u043e\u0434\u043d\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430.<\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438 \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<p>\u041e\u0442 \u0431\u043e\u0440\u0434\u044e\u0440\u0430 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u0441\u0440\u0430\u0437\u0443, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u043d\u0430\u043c \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430 \u0431\u043e\u0440\u0434\u044e\u0440 \u043c\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f &#8212; \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p><a class=\"anchor\" name=\"8\" id=\"8\"><\/a><\/p>\n<h2> 8. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/h2>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430. \u0414\u0430, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 CGA \u0438 \u0435\u0433\u043e \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043b\u043e\u0442 ISA \u0441\u0442\u0430\u0440\u0443\u0448\u043a\u0438 IBM P\u0421, \u043d\u043e \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e\u0433\u043e \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 \u0441\u043d\u0430\u0431\u0434\u0438\u0442\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0432 \u041f\u041b\u0418\u0421 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0435 \u0438\u043b\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 HDMI (DVI-D) \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 <strong>VexRiscvWithKarnix<\/strong> \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0440\u0430\u043d\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0442\u0435\u0441\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u00ab\u043c\u0443\u0430\u0440\u00bb \u0447\u0435\u0440\u0435\u0437 HDMI\/DVI-D. \u041d\u0430\u0448 \u0431\u0443\u0434\u0443\u0449\u0438\u0439 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0421\u043d\u041a \u043d\u0430 \u0431\u0430\u0437\u0435 <strong>Briey<\/strong> \u0438\u043b\u0438 <strong>Murax<\/strong>, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0448\u0438\u043d\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <strong>Apb3<\/strong>, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043d\u0435\u0441\u043b\u043e\u0436\u0435\u043d \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0438\u043c\u0438 \u0421\u043d\u041a. \u0414\u0430\u043b\u0435\u0435 \u0432\u0441\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u043b\u044f \u0421\u043d\u041a \u043d\u0430 \u0431\u0430\u0437\u0435 Briey, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 &#8212; \u0435\u0451 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043d\u0430\u0437\u0432\u0430\u043b <strong>BrieyForKarnix<\/strong>.<\/p>\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0448 \u0431\u0443\u0434\u0443\u0449\u0438\u0439 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0430\u0437\u043e\u0432\u0435\u043c <strong>Apb3CGA4HDMICtrl<\/strong> \u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u043a\u043e\u0434 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432  \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>..\/scripts\/KarnixExtended<\/strong> \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <strong>..\/..\/src\/main\/scala\/mylib\/CGA4HDMI.scala <\/strong>\u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0439 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 Scala. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u0430\u043a\u0435\u0442\u0430 (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438) <strong>mylib<\/strong>, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043a\u043e\u0434\u0430:<\/p>\n<p>package mylib  <\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a:<\/p>\n<pre><code class=\"scala\">import spinal.core._  import spinal.lib._  import spinal.lib.Counter  import spinal.lib.bus.amba3.apb.{Apb3, Apb3Config, Apb3SlaveFactory}  import spinal.lib.misc.HexTools  import mylib._ <\/code><\/pre>\n<p> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 <strong>spinal.lib.bus.amba3.apb<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0448\u0438\u043d\u0435 <strong>Apb3<\/strong>. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <strong>spinal.lib.misc.HexTools<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Intel HEX \u2014 \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043c \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u0437 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <strong>mylib<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u043d\u0430\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b <strong>HDMIInterface<\/strong>, TMDS_<strong>encoder<\/strong>, <strong>OBUFDS<\/strong> \u0438 <strong>DCCA<\/strong> \u2014 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u043a\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u00ab\u043c\u0443\u0430\u0440\u0430\u00bb.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>Apb3CGA4HDMICtrl<\/strong>:<\/p>\n<pre><code class=\"scala\">case class Apb3CGA4HDMICtrl(          horiz_back_porch: Int = 32,          horiz_active: Int = 640,          horiz_front_porch: Int = 32,          horiz_sync: Int = 96,          vert_back_porch: Int = 16,          vert_active: Int = 480,          vert_front_porch: Int = 27,          vert_sync: Int = 2,          charGenHexFile: String = \"font8x16x256.hex\"        ) extends Component {    val io = new Bundle {      val apb              = slave(Apb3(addressWidth = 16, dataWidth = 32))      val hdmi             = master(HDMIInterface())      val pixclk_x10       = in Bool()      val vblank_interrupt = out Bool()    }     \/\/ \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 }<\/code><\/pre>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>KarnixTestHDMITopLevel<\/strong>, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>Apb3CGA4HDMICtrl  <\/strong>\u043d\u0430\u0448\u0435\u0433\u043e CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c PLL, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0435\u043c\u0443 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0443\u0436\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>pixclk_x10<\/strong> \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 250 \u041c\u0413\u0446, \u0430 \u043a\u043e\u0434 PLL \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u044b\u0448\u0435 &#8212; \u0432 \u0442\u0435\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0421\u043d\u041a. \u0412\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u2014 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0415\u0449\u0435 \u043e\u0434\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u2014 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>Apb3CGA4HDMICtrl<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>vblank_interrupt<\/strong> \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0435\u043c\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430 (\u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f). \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u044f\u0434\u0430 \u00ab\u0433\u043b\u0438\u0442\u0447\u0435\u0439\u00bb \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>apb<\/strong> \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u044b\u043a\u043e\u0432\u043a\u0438 \u043a \u0448\u0438\u043d\u0435 <strong>Apb3<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u0421\u043d\u041a.<\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0448\u0438\u043d\u0435 <strong>Apb3<\/strong>:<\/p>\n<pre><code class=\"scala\">    val busCtrl = Apb3SlaveFactory(io.apb)<\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0434\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 32-\u0445 \u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u0430 <strong>cgaCtrlWord<\/strong> \u0438 <strong>cgaCtrl2Word<\/strong>, \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u0434\u043b\u044f \u043d\u0438\u0445:<\/p>\n<pre><code class=\"scala\">  val cgaCtrlWord = busCtrl.createReadAndWrite(Bits(32 bits), address = 48*1024+64) init(B\"32'x80000000\")    val cgaCtrl2Word = busCtrl.createReadAndWrite(Bits(32 bits), address = 48*1024+68) init(B\"32'xfc0f0000\") <\/code><\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 <strong>createReadAndWrite()<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u0448\u0438\u043d\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 32 \u0431\u0438\u0442\u0430), \u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043d\u0438\u043c \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432 \u043f\u043e\u043b\u0435 <strong>address<\/strong>. \u0417\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u0441\u0438\u0433\u043d\u0430\u043b <strong>io.apb<\/strong>, \u044d\u0442\u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043e\u0437\u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0421\u043d\u041a. \u0417\u0434\u0435\u0441\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 <strong>cgaCtrlWord<\/strong> \u0438 <strong>cgaCtrl2Word<\/strong> \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0448\u0438\u043d\u0435 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c 48*1024+64 \u0438 48*1024+68 \u0431\u0430\u0439\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0422\u0430\u043a\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 48\u041a \u043c\u044b \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0434 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0435\u0449\u0435 64 \u0431\u0430\u0439\u0442\u0430 \u2014 \u043f\u043e\u0434 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <strong>init()<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 (\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u043b\u043e\u0432) \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u041f\u041b\u0418\u0421. <\/p>\n<p>\u0421\u043b\u0435\u0434\u043e\u043c \u0440\u0430\u0441\u043f\u0438\u0448\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u043b\u043e\u0432:<\/p>\n<pre><code class=\"scala\">  val video_enabled = cgaCtrlWord(31).addTag(crossClockDomain)    val blanking_enabled = cgaCtrlWord(30).addTag(crossClockDomain)    val video_mode = cgaCtrlWord(25 downto 24).addTag(crossClockDomain)    val scroll_v_dir = cgaCtrlWord(10).addTag(crossClockDomain)    val scroll_v = cgaCtrlWord(9 downto 0).asUInt.addTag(crossClockDomain)     val cursor_x = cgaCtrl2Word(6 downto 0).asUInt.addTag(crossClockDomain)    val cursor_y = cgaCtrl2Word(13 downto 8).asUInt.addTag(crossClockDomain)    val cursor_bottom = cgaCtrl2Word(19 downto 16).asUInt.addTag(crossClockDomain)    val cursor_top = cgaCtrl2Word(23 downto 20).asUInt.addTag(crossClockDomain)    val cursor_blink = cgaCtrl2Word(26 downto 24).asUInt.addTag(crossClockDomain)    val cursor_blink_enabled = cgaCtrl2Word(27).addTag(crossClockDomain)    val cursor_color = cgaCtrl2Word(31 downto 28).asUInt.addTag(crossClockDomain)  <\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0431\u0435\u0440\u0435\u043c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u0442\u043e\u0432 \u0438\u0437 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u043b\u043e\u0432 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0438\u0445 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u041c\u0435\u0442\u043e\u0434 <strong>addTag()<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0441\u0438\u0433\u043d\u0430\u043b \u00ab\u0442\u044d\u0433\u00bb <strong>crossClockDomain<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 SpinalHDL \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 Verilog.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432.<\/p>\n<p> \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0441\u043b\u043e\u0432\u043e  <strong>cgaCtrlWord<\/strong>:<\/p>\n<ul>\n<li>\n<p><strong>blanking_enabled<\/strong> &#8212; \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440. \u0415\u0441\u043b\u0438 \u0440\u0430\u0432\u0435\u043d \u00ab1\u00bb, \u0442\u043e \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u043d\u0438 \u043d\u0443\u043b\u0438 (\u0447\u0435\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d).<\/p>\n<\/li>\n<li>\n<p><strong>video_mode<\/strong> \u2014 \u0434\u0432\u0443\u0445\u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c: 2\u201cb00 \u2014 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439,  2\u201cb01 \u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438\u043f\u0440\u0438 \u0438\u0445 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u044d\u043a\u0440\u0430\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0446\u0432\u0435\u0442. <\/p>\n<\/li>\n<li>\n<p><strong>scroll_v_dir<\/strong> \u2014 \u0437\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 (\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f)\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: 0 \u2014 \u0432\u0432\u0435\u0440\u0445, 1 \u2014 \u0432\u043d\u0438\u0437.<\/p>\n<\/li>\n<li>\n<p><strong>scroll_v<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 10 \u0431\u0438\u0442 \u0437\u0430\u0434\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043b\u0438\u043d\u0438\u0439 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c (\u0441\u043c\u0435\u0441\u0442\u0438\u0442\u044c) \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0441\u043b\u043e\u0432\u043e <strong>cgaCtrlWord2<\/strong>:<\/p>\n<ul>\n<li>\n<p><strong>cursor_x<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 7 \u0431\u0438\u0442 \u0437\u0430\u0434\u0430\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043f\u043e X (\u0432\u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445).<\/p>\n<\/li>\n<li>\n<p><strong>cursor_y<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 6 \u0431\u0438\u0442 \u0437\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043f\u043e \u043e\u0441\u0438 Y (\u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0442\u0435\u043a\u0441\u0442\u0430).<\/p>\n<\/li>\n<li>\n<p><strong>cursor_top<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 4 \u0431\u0438\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u0435\u0440\u0445\u043d\u044e\u044e \u0441\u0442\u043e\u043a\u0443 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>cursor_bottom<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 4 \u0431\u0438\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0438\u0436\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>cursor_blink<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 3 \u0431\u0438\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>cursor_blink_enabled<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u00ab0\u00bb, \u0442\u043e \u043a\u0443\u0440\u0441\u043e\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a. \u0418\u043d\u0430\u0447\u0435 \u2014 \u043c\u0438\u0433\u0430\u0435\u0442 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044e <strong>cursor_blink<\/strong>.<\/p>\n<\/li>\n<li>\n<p><strong>cursor_color<\/strong> \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 4 \u0431\u0438\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0439 \u0438\u0437 16 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434\u0443 \u0435\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u0435\u0449\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u0439 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0433\u043b\u0430\u0432\u0435.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c (\u0432\u0438\u0434\u0435\u043e \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440) \u0438 \u043f\u043e\u0434\u0432\u044f\u0437\u0430\u0442\u044c \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a \u043d\u0435\u043c\u0443. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0438\u0448\u0435\u043c \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u044d\u0442\u043e\u0442 \u0431\u0443\u0444\u0435\u0440 \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0440\u0430\u043d \u0438\u0437 \u044f\u0447\u0435\u0435\u043a \u0442\u0440\u0435\u0445\u043f\u043e\u0440\u0442\u043e\u0432\u043e\u0439 \u0431\u043b\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 BRAM. <\/p>\n<pre><code class=\"scala\">    val fb_mem = Mem(Bits(32 bits), wordCount = (320*(240+16)*2) \/ 32)<\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u0431\u043b\u043e\u043a\u0430 (\u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043b\u043e\u0432\u0430) \u0440\u0430\u0432\u043d\u044b\u0439 32 \u0431\u0438\u0442\u0430 \u0438 \u0447\u0438\u0441\u043b\u043e \u044d\u0442\u0438\u0445 \u0441\u043b\u043e\u0432: 320*(240+16)*2) \/ 32 = 5120 \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 20480 \u0431\u0430\u0439\u0442.<\/p>\n<p>\u0417\u0430\u0432\u0435\u0434\u0435\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>fb_access<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u043e\u0433 \u00ab1\u00bb \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043d\u0430 \u043d\u0430 \u0448\u0438\u043d\u0435 <strong>Apb3<\/strong> \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u0437 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 48\u041a \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u0432\u0435\u043b\u0438 \u043f\u043e\u0434 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c:<\/p>\n<pre><code class=\"scala\">    val fb_access = io.apb.PENABLE &amp;&amp; io.apb.PSEL(0) &amp;&amp; io.apb.PADDR &lt; 48*1024<\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0438\u0433\u043d\u0430\u043b <strong>fb_access<\/strong> \u043e\u043f\u0438\u0448\u0435\u043c \u0434\u0435\u043a\u043e\u0434\u0435\u0440, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043a \u0448\u0438\u043d\u0435 <strong>Apb3<\/strong>:<\/p>\n<pre><code class=\"scala\">when(fb_access) {      io.apb.PRDATA := fb_mem.readWriteSync(          address = (io.apb.PADDR &gt;&gt; 2).resized,          data  = io.apb.PWDATA.resized,          enable  = fb_access,          write  = io.apb.PWRITE,          mask  = 3      )      io.apb.PREADY := RegNext(fb_access)    } <\/code><\/pre>\n<p> \u041c\u0435\u0442\u043e\u0434  <strong>readWriteSync()<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u043b\u043e\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c, \u0442.\u00a0\u0435. \u043f\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c\u0443 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0443 (\u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e). \u041e\u0442\u0432\u0435\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>io.apb.PREADY<\/strong> \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435, \u0437\u0430 \u0442\u0430\u043a\u0442\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u0431\u043b\u043e\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430\/\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>RegNext()<\/strong>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0430\u0441\u0441\u0438\u0432 <strong>palette_mem<\/strong> \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u0412\u0441\u0435\u0433\u043e \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 16 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e 32 \u0431\u0438\u0442\u0430. \u041c\u043b\u0430\u0434\u0448\u0438\u0435 24 \u0431\u0438\u0442\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u044d\u0442\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 RGB, \u0441\u0442\u0430\u0440\u0448\u0438\u0435 8 \u0431\u0438\u0442 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u044d\u0442\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0438\u0437 17 \u043c\u043b\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u2014 \u043c\u0435\u043d\u044f\u0442\u044c \u0446\u0432\u0435\u0442\u043e\u0432\u0443\u044e \u0433\u0430\u043c\u043c\u0443 \u00ab\u043d\u0430 \u043b\u0435\u0442\u0443\u00bb \u043f\u0443\u0442\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0430\u043b\u0438\u0442\u0440\u044b.<\/p>\n<pre><code class=\"scala\">  val palette_mem = Mem(Bits(32 bits), wordCount = 16)   val palette_access = io.apb.PENABLE &amp;&amp; io.apb.PSEL(0) &amp;&amp; ((io.apb.PADDR &amp; U\"xffc0\") === U\"xc000\") \/\/ 49152    when(palette_access) {      io.apb.PRDATA := palette_mem.readWriteSync(          address = (io.apb.PADDR &gt;&gt; 2).resized,          data  = io.apb.PWDATA.resized,          enable  = palette_access,          write  = io.apb.PWRITE,          mask  = 3      )      io.apb.PREADY := RegNext(palette_access)    } <\/code><\/pre>\n<p> \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043e\u0442 IBM \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u043b 16 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b, \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0432\u0441\u0435 16 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0446\u0432\u0435\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\u0445 RGBI (\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0431\u0438\u0442\u043e\u0432 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 R, G, B \u0438 \u0431\u0438\u0442\u0430 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 I). \u041d\u0430 \u0440\u0438\u0441.11 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u0432 IBM CGA.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f2e\/4cb\/018\/f2e4cb0181d851838b09b4e12a5775c6.png\" alt=\"\u0420\u0438\u0441. 11. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 IBM Color\/Graphics Adapter.\" title=\"\u0420\u0438\u0441. 11. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 IBM Color\/Graphics Adapter.\" width=\"458\" height=\"863\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f2e\/4cb\/018\/f2e4cb0181d851838b09b4e12a5775c6.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 11. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 IBM Color\/Graphics Adapter.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>pixclk<\/strong> \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0443\u044e \u043e\u0442 <strong>pixclk_x10<\/strong>, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u0434 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u0432 \u0432\u0441\u0451 \u044d\u0442\u043e \u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>KarnixTestHDMITopLevel<\/strong>:<\/p>\n<pre><code class=\"scala\">  val pixclk_in = Bool() \/* Artificially synthesized clock *\/    val pixclk = Bool() \/* Artificially synthesized clock globally routed (ECP5 specific) *\/    val pixclk_x10 = Bool() \/* x10 multiplied clock *\/     \/* Route artificial TMDS clock using global lines, i.e. DCCA (ECP5 specific) *\/    val dcca = new DCCA()    dcca.CLKI := pixclk_in    dcca.CE := True    pixclk := dcca.CLKO     val dviClockDomain = ClockDomain(      clock = pixclk,      config = ClockDomainConfig(resetKind = BOOT),      frequency = FixedFrequency(25.0 MHz)    )     val tmdsClockDomain = ClockDomain(      clock = io.pixclk_x10,      config = ClockDomainConfig(resetKind = BOOT),      frequency = FixedFrequency(250.0 MHz)    ) <\/code><\/pre>\n<p> \u0422\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 <strong>dvi_area<\/strong> \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u0439, \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0433\u043b\u0430\u0432\u0430\u0445 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u044e <strong>dvi_area<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043d\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 \u043d\u0430\u0448 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440.<\/p>\n<pre><code class=\"scala\">  val dvi_area = new ClockingArea(dviClockDomain) {       \/* Define RGB regs, HV and DE signals *\/      val red = Bits(8 bits)      val green = Bits(8 bits)      val blue = Bits(8 bits)      val hSync = Bool()      val vSync = Bool()      val vBlank = Bool()      val de = Bool()       \/* Generate counters *\/       \/* Convenience params *\/      val horiz_total_width = horiz_back_porch + horiz_active + horiz_front_porch + horiz_sync      val vert_total_height = vert_back_porch + vert_active + vert_front_porch + vert_sync       \/* Set of counters *\/      val CounterX = Reg(UInt(log2Up(horiz_total_width) bits))      val CounterY = Reg(UInt(log2Up(vert_total_height) bits))      val CounterF = Reg(UInt(7 bits)) \/\/ Frame counter, used for cursor blink feature        CounterX := (CounterX === horiz_total_width - 1) ? U(0) | CounterX + 1       when(CounterX === horiz_total_width - 1) {          CounterY := ((CounterY === vert_total_height - 1) ? U(0) | CounterY + 1)      }        when(CounterX === 0 &amp;&amp; CounterY === 0) {        CounterF := CounterF + 1      }       \/* Produce HSYNC, VSYNC and DE based on back\/front porches *\/      hSync := (CounterX &gt;= horiz_back_porch + horiz_active + horiz_front_porch) &amp;&amp;               (CounterX &lt; horiz_back_porch + horiz_active + horiz_front_porch + horiz_sync)       vSync := (CounterY &gt;= vert_back_porch + vert_active + vert_front_porch) &amp;&amp;               (CounterY &lt; vert_back_porch + vert_active + vert_front_porch + vert_sync)       de := (CounterX &gt;= horiz_back_porch &amp;&amp; CounterX &lt; horiz_back_porch + horiz_active) &amp;&amp;            (CounterY &gt;= vert_back_porch &amp;&amp; CounterY &lt; vert_back_porch + vert_active)       vBlank := (CounterY &lt; vert_back_porch) || (CounterY &gt;= vert_active + vert_back_porch)            \/* Generate display picture *\/      \/\/ ...     \/\/ CGA implementation will be put here!     \/\/ ...       \/* Do TMDS encoding *\/       \/* Pass each color reg through external TMDS encoder to get TMDS regs filled *\/       val encoder_R = TMDS_encoder()      encoder_R.clk := pixclk      encoder_R.VD := red      encoder_R.CD := B\"00\"      encoder_R.VDE := de       val encoder_G = TMDS_encoder()      encoder_G.clk := pixclk      encoder_G.VD := green      encoder_G.CD := B\"00\"      encoder_G.VDE := de       val encoder_B = TMDS_encoder()      encoder_B.clk := pixclk      encoder_B.VD := blue      encoder_B.CD := vSync ## hSync \/* Blue channel carries HSYNC and VSYNC controls *\/      encoder_B.VDE := de       \/* Produce TMDS clock differential signal which is PIXCLK, i.e. 25.0 MHz, not 250.0 MHz !!! *\/      val tmds_clk = OBUFDS()      tmds_clk.I := pixclk      io.hdmi.tmds_clk_p := tmds_clk.O      io.hdmi.tmds_clk_n := tmds_clk.OB     }  <\/code><\/pre>\n<p> \u0421\u043b\u0435\u0434\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f TMDS \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0438 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0434\u043b\u044f <strong>pixclk_in<\/strong> (\u0441\u043c. \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <strong>pixclk<\/strong> \u0432 \u0433\u043b\u0430\u0432\u0435 \u00ab<em>6.4. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438<\/em>\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 <strong>tmds_area<\/strong>:<\/p>\n<pre><code class=\"scala\">  val tmds_area = new ClockingArea(tmdsClockDomain) {       \/* Generate 25 MHz PIXCLK by dividing pixclk_x10 by 10 *\/       val clk_div = Reg(UInt(4 bits)) init(0)      val clk = Reg(Bool())       clk_div := clk_div + 1       when(clk_div === 4) {        clk := True      }       when(clk_div === 9) {        clk := False        clk_div := 0      }       pixclk_in := clk        \/* Produce G, R and B data bits by shifting each TMDS register.         Use BufferCC() to cross clock domains.  *\/       val TMDS_shift_red = Reg(Bits(10 bits)) init(0)      val TMDS_shift_green = Reg(Bits(10 bits)) init(0)      val TMDS_shift_blue = Reg(Bits(10 bits)) init(0)      val TMDS_mod10 = Reg(UInt(4 bits)) init(0)      val TMDS_shift_load = Reg(Bool()) init(False)       TMDS_shift_red := TMDS_shift_load ? BufferCC(dvi_area.encoder_R.TMDS) | TMDS_shift_red(9 downto 1).resized      TMDS_shift_green := TMDS_shift_load ? BufferCC(dvi_area.encoder_G.TMDS) | TMDS_shift_green(9 downto 1).resized      TMDS_shift_blue := TMDS_shift_load ? BufferCC(dvi_area.encoder_B.TMDS) | TMDS_shift_blue(9 downto 1).resized      TMDS_mod10 := ((TMDS_mod10 === U(9)) ? U(0) | TMDS_mod10 + 1)      TMDS_shift_load := TMDS_mod10 === U(9)       \/* Produce differential signals using hard OBUFDS block *\/       val tmds_0 = OBUFDS()      tmds_0.I := TMDS_shift_blue(0)      io.hdmi.tmds_p(0) := tmds_0.O      io.hdmi.tmds_n(0) := tmds_0.OB       val tmds_1 = OBUFDS()      tmds_1.I := TMDS_shift_green(0)      io.hdmi.tmds_p(1) := tmds_1.O      io.hdmi.tmds_n(1) := tmds_1.OB       val tmds_2 = OBUFDS()      tmds_2.I := TMDS_shift_red(0)      io.hdmi.tmds_p(2) := tmds_2.O      io.hdmi.tmds_n(2) := tmds_2.OB    } <\/code><\/pre>\n<p> \u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0431\u0438\u0442\u044b 19, 20 \u0438 21 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u043b\u043e\u0432\u0430 <strong>cgaCtrlWord<\/strong>, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>hSync<\/strong>, <strong>vSync<\/strong> \u0438 <strong>vBlank<\/strong>. \u041d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432:<\/p>\n<pre><code class=\"scala\">  cgaCtrlWord(21 downto 19) := BufferCC(dvi_area.hSync ## dvi_area.vSync ## dvi_area.vBlank)    io.vblank_interrupt := cgaCtrlWord(19)      \/\/ Note, ## is concatination operator<\/code><\/pre>\n<p> \u0418 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>io.vblank_interrupt<\/strong> \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043a\u0430\u043a \u043a\u043e\u043f\u0438\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>dvi_area.vBlank<\/strong>.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043d\u0430\u0448\u0435\u0433\u043e CGA \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430.<\/p>\n<p><a class=\"anchor\" name=\"8.1\" id=\"8.1\"><\/a><\/p>\n<h3> 8.1. \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c, \u043e\u043d \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439<\/h3>\n<p>\u0414\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u044d\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u044b\u043c\u0430\u0442\u044c \u0438\u0437 \u043d\u0443\u0436\u043d\u044b\u0445 \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u0432\u044b\u0445\u043e\u0434 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0443. \u041d\u0430\u0448 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u044b\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u044f\u0447\u0435\u0439\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432 <strong>CounterX<\/strong> \u0438 <strong>CounterY<\/strong>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 32-\u0445 \u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u0441 \u043f\u043e\u0441\u043b\u043e\u0432\u043d\u043e\u0439 (\u043d\u0435 \u043f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0439) \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0435\u0439, \u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 320&#215;240 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e 16-\u0442\u0438 PEL-\u0430\u0445 (\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043c\u0430\u043a\u0440\u043e-\u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 2&#215;2), \u043f\u043e \u0434\u0432\u0430 \u0431\u0438\u0442\u0430 \u043d\u0430 PEL, \u0447\u0442\u043e \u0434\u0430\u0435\u0442 \u043d\u0430\u043c 20 \u0441\u043b\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 320 PEL-\u043e\u0432. \u042d\u0442\u0438 \u0434\u0432\u0430 \u0431\u0438\u0442\u0430 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0438\u0437 16 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0446\u0432\u0435\u0442\u043e\u0432, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438 \u0435\u0441\u0442\u044c \u0446\u0432\u0435\u0442 PEL-\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 R8G8B8:<\/p>\n<pre><code class=\"scala\">red := palette_mem(color).asBits(7 downto 0)  green := palette_mem(color).asBits(15 downto 8)  blue := palette_mem(color).asBits(23 downto 16) <\/code><\/pre>\n<p> \u0433\u0434\u0435 <strong>color<\/strong> \u2014 \u0434\u0432\u0443\u0445\u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0446\u0432\u0435\u0442\u0430, \u0430 <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u2014 8-\u043c\u0438 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0446\u0432\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440. \u0412\u0441\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b 16 \u0448\u0442\u0443\u043a, \u043d\u043e \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 320&#215;240 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430 \u0431\u0438\u0442\u0430 \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441.<\/p>\n<p>\u041f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 PEL \u044d\u0442\u043e \u043d\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043a\u0430\/\u043f\u0438\u043a\u0441\u0435\u043b\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 <strong>pixclk<\/strong> \u0437\u0430\u0434\u0430\u043d\u0430 \u0438\u0437 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 640 \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 480 \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u043e\u0432, \u0442\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0434\u043b\u044f  \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u043b\u043e\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439:<\/p>\n<p><strong>word_address<\/strong> = <strong>CounterY <\/strong>\/ 2 * 20 + <strong>CounterX <\/strong>\/ 2 \/ 16.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c <strong>CounterX<\/strong> \u0438 <strong>CounterY<\/strong> \u043d\u0430 \u0434\u0432\u0430 \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c PEL-\u0430, \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c <strong>CounterY<\/strong> \u043d\u0430 <strong>20<\/strong> \u0441\u043b\u043e\u0432 \u043f\u043e 16 PEL, \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c <strong>CounterX<\/strong> \u043d\u0430 <strong>16<\/strong> \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0417\u0432\u0443\u0447\u0438\u0442 \u043c\u043e\u043d\u0441\u0442\u0440\u0443\u043e\u0437\u043d\u043e, \u043d\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<p>word_address := (CounterY(9 downto 1) * 20 + CounterX(9 downto 5)).resized<\/p>\n<p>\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0432 \u0430\u0434\u0440\u0435\u0441 <strong>word_address<\/strong>, \u0441\u0447\u0438\u0442\u0430\u0442\u044c 32-\u0445 \u0431\u0438\u0442\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <strong>word<\/strong> \u0438\u0437 \u0431\u043b\u043e\u043a\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 <strong>fb_mem<\/strong> \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>word := fb_mem.readSync(address = word_address, enable = true, clockCrossing = true)<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u0441\u043b\u043e\u0432\u0430 <strong>word<\/strong> \u0438\u043d\u0434\u0435\u043a\u0441 <strong>color<\/strong> \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 16 PEL-\u043e\u0432, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <strong>CounterX<\/strong>:<\/p>\n<p>val color = UInt(4 bits)  <\/p>\n<p>color := (word &lt;&lt; (CounterX(4 downto 1) &lt;&lt; 1))(31 downto 30).asUInt.resized<\/p>\n<p>\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043b\u0438\u0442\u0440\u044b, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>KarnixTestHDMITopLevel<\/strong> (\u0441\u043c. \u043a\u043e\u0434 \u0432\u044b\u0448\u0435 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \/* Do TMDS encoding *\/).<\/p>\n<p>\u0412\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u2014 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442: \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0432 \u0430\u0434\u0440\u0435\u0441 <strong>word_address<\/strong> \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435, \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <strong>word<\/strong> \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435. \u0410 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0437\u0430 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 (\u043e\u0434\u0438\u043d \u043f\u0438\u043a\u0441\u0435\u043b\u044c) \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445 \u0437\u0430\u0432\u0435\u0434\u0435\u043c \u0444\u043b\u0430\u0433 <strong>word_load<\/strong> \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e <strong>31-\u0433\u043e<\/strong> <strong>\u043f\u0438\u043a\u0441\u0435\u043b\u044f<\/strong>:<\/p>\n<p>word_load := (CounterX &gt;= 0 &amp;&amp; CounterX &lt; U(horiz_back_porch + horiz_active)) &amp;&amp;  <\/p>\n<p>     (CounterY &lt; vert_back_porch + vert_active) &amp;&amp; ((<strong>CounterX &amp; U(31)) === U(31)<\/strong>)<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <strong>word_address<\/strong> \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u043b\u043e\u0441\u044c \u0441 \u043e\u043f\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0432\u043e (\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 32 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438\u043b\u0438 16 PEL-\u043e\u0432),  \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0442\u0430\u0439\u043c\u0438\u043d\u0433 <strong>horiz_back_porch<\/strong> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0437\u0430\u0434\u0430\u0432\u0430\u043b \u043e\u0442\u0441\u0442\u0443\u043f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 32 \u043f\u0438\u043a\u0441\u0435\u043b\u044f. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (<strong>horiz_back_porch = 32<\/strong>) \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u0410 \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0440\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0443 <strong>enable<\/strong> \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <strong>readSync()<\/strong> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0444\u043b\u0430\u0433\u0430 <strong>word_load<\/strong>:<\/p>\n<p>word := fb_mem.readSync(address = word_address, <strong>enable = word_load<\/strong>, clockCrossing = true)<\/p>\n<p>\u0421\u043e\u0431\u0440\u0430\u0432 \u0432\u0441\u0435 \u0432\u044b\u0448\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432\u043e\u0435\u0434\u0438\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (<strong>video_mode<\/strong> \u0440\u0430\u0432\u0435\u043d <strong>1<\/strong>):<\/p>\n<pre><code class=\"scala\">    \/* Generate display picture *\/       val blanking_not_enabled = !blanking_enabled      val word_load = Bool()      val word = Reg(Bits(32 bits))      val word_address = UInt(13 bits)       word_load := False      word_address := 0       \/\/ 32 bit word of current character\/PEL data      word := fb_mem.readSync(address = word_address, enable = word_load, clockCrossing = true)       switch(video_mode) {         is(B\"00\") { \/\/ Text mode: 80x30 characters each 8x16 pixels          \/\/ To be implemented...       }         is(B\"01\") { \/\/ Graphics mode: 320x240, 2 bits per PEL with full color palette           \/\/ Load flag active on each 30 and 31 pixel of 32 bit word          word_load := (CounterX &gt;= 0 &amp;&amp; CounterX &lt; U(horiz_back_porch + horiz_active)) &amp;&amp;                       (CounterY &lt; vert_back_porch + vert_active) &amp;&amp; ((CounterX &amp; U(30)) === U(30))           \/\/ Index of the 32 bit word in framebuffer memory: addr = y\/2 * 20 + x\/2\/16          word_address := (CounterY(9 downto 1) * 20 + CounterX(9 downto 5)).resized           when(de &amp;&amp; blanking_not_enabled) {             val color = UInt(4 bits)             color := (word &lt;&lt; (CounterX(4 downto 1) &lt;&lt; 1))(31 downto 30).asUInt.resized             red := palette_mem(color).asBits(7 downto 0)            green := palette_mem(color).asBits(15 downto 8)            blue := palette_mem(color).asBits(23 downto 16)           } otherwise {            red := 0            green := 0            blue := 0          }        }        default { \/\/ Display red screen for unsupported video modes            red := 255            green := 0            blue := 0        }      } <\/code><\/pre>\n<p> \u0420\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c <strong>dvi_area<\/strong> \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \/* Generate display picture *\/ \u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p><a class=\"anchor\" name=\"8.2\" id=\"8.2\"><\/a><\/p>\n<h3> 8.2. \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0432 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0421\u043d\u041a<\/h3>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a-\u0442\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0435\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>Apb3CGA4HDMICtrl <\/strong>\u0432 \u0421\u043d\u041a. \u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0448 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043a \u0421\u043d\u041a \u043d\u0430 \u0431\u0430\u0437\u0435 <strong>Briey<\/strong> (\u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 VexRiscv), \u0445\u043e\u0442\u044f \u0435\u0433\u043e \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0443\u0441\u043f\u0435\u0445\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u0421\u043d\u041a \u043d\u0430 \u0431\u0430\u0437\u0435 Murax \u0438\u043b\u0438 Litex. \u0410 \u0435\u0441\u043b\u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 SpinalHDL \u0432 Verilog, \u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0448\u0438\u043d\u044b <strong>Apb3<\/strong> (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 \u043b\u044e\u0431\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440).<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0421\u043d\u041a <strong>Briey<\/strong> \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f VexRiscv, \u0444\u0430\u0439\u043b <strong>.\/src\/main\/scala\/vexriscv\/demo\/Briey.scala<\/strong>, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u0444\u0430\u0439\u043b <strong>BrieyForKarnix.scala<\/strong> \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b <strong>Briey<\/strong>* \u0432 <strong>BrieyForKarnix<\/strong>* \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0438 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b. \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b (\u043a\u043b\u0430\u0441\u0441\u044b), \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 <strong>import<\/strong> \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0444\u0430\u0439\u043b\u0430 \u043a \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f:<\/p>\n<pre><code class=\"scala\">import mylib.{HDMIInterface, Apb3CGA4HDMICtrl}<\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435, \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>BrieyForKarnix<\/strong> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>hdmi<\/strong> \u0442\u0438\u043f\u0430 <strong>HDMIInterface<\/strong>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 HDMI\/DVI-D \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>pixclk_x10<\/strong>:<\/p>\n<pre><code class=\"scala\">class BrieyForKarnix(val config: BrieyForKarnixConfig) extends Component{     ...     val io = new Bundle {      ...     val hdmi = master(HDMIInterface())      val pixclk_x10 = in Bool()    } <\/code><\/pre>\n<p> \u0412 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>BrieyForKarnix<\/strong> \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 <strong>axi<\/strong> \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430\u0448 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440:<\/p>\n<pre><code class=\"scala\">  val axi = new ClockingArea(axiClockDomain) {      ...     val cgaCtrl = new Apb3CGA4HDMICtrl()      io.hdmi := cgaCtrl.io.hdmi      cgaCtrl.io.pixclk_x10 := io.pixclk_x10      ...<\/code><\/pre>\n<p> \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0441\u0438\u0433\u043d\u0430\u043b <strong>vblank_interrupt<\/strong> \u043e\u0442 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"scala\">    plic.setIRQ(cgaCtrl.io.vblank_interrupt, 7)<\/code><\/pre>\n<p> \u0418 \u0434\u043e\u0431\u0430\u0432\u0438\u043c CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0432 \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u0430\u0434\u0440\u0435\u0441\u0430 \u0448\u0438\u043d\u044b <strong>Apb3<\/strong> \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c <strong>0x40000<\/strong>:<\/p>\n<pre><code>    val apbDecoder = Apb3Decoder(        master = apbBridge.io.apb,        slaves = List(          ...         cgaCtrl.io.apb -&gt; (0x40000, 64 kB),          \u2026       )      )    } <\/code><\/pre>\n<p> \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0448\u0438\u043d\u044b <strong>Apb3<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0432\u0435\u043d 0xF0000000, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u043c \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d <strong>0xF0040000<\/strong>.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>hdmi<\/strong> \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0438 \u043e\u043f\u0438\u0441\u0430\u0442\u044c PLL \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0441\u044f\u0442\u0438\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b <strong>pixclk_x10<\/strong>. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u044d\u0442\u043e \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 <strong>BrieyForKarnixTopLevel<\/strong>.<\/p>\n<p>\u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c:<\/p>\n<pre><code class=\"scala\">case class BrieyForKarnixTopLevel() extends Component{      val io = new Bundle {          ...          val hdmi = master(HDMIInterface())          ...     } <\/code><\/pre>\n<p> \u0412 \u0442\u0435\u043b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043c PLL <strong>hdmi_pll<\/strong> \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>hdmi_pll.io.CLKOP<\/strong> \u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c <strong>briey.io.pixclk_x10<\/strong> \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u0421\u043d\u041a:<\/p>\n<pre><code class=\"scala\">    val hdmi_pll = new EHXPLLL( EHXPLLLConfig(clkiFreq = 25.0 MHz, mDiv = 1, fbDiv = 10, opDiv = 2, opCPhase = 0) ) \/\/ 250.0 MHz      hdmi_pll.io.CLKI := io.clk25      hdmi_pll.io.CLKFB := hdmi_pll.io.CLKOP      hdmi_pll.io.STDBY := False      hdmi_pll.io.RST := False      hdmi_pll.io.ENCLKOP := True      hdmi_pll.io.ENCLKOS := False      hdmi_pll.io.ENCLKOS2 := False      hdmi_pll.io.ENCLKOS3 := False      hdmi_pll.io.PLLWAKESYNC := False      hdmi_pll.io.PHASESEL0 := False      hdmi_pll.io.PHASESEL1 := False      hdmi_pll.io.PHASEDIR := False      hdmi_pll.io.PHASESTEP := False      hdmi_pll.io.PHASELOADREG := False      briey.io.pixclk_x10 := hdmi_pll.io.CLKOP <\/code><\/pre>\n<p> \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 PLL \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u0435\u043c \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u0435\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>KarnixTestHDMITopLevel<\/strong>.<\/p>\n<p>\u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0442\u0440\u0438\u0445 \u2014 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>hdmi<\/strong> \u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0421\u043d\u041a \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c:<\/p>\n<pre><code class=\"scala\">    io.hdmi &lt;&gt; briey.io.hdmi<\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443. \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u0434\u0430 Verilog \u0438\u0437 SpinalHDL \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p><code>rz@devbox:~\/VexRiscvForKarnix$ sbt \"runMain vexriscv.demo.BrieyForKarnixVerilog\"<\/code><\/p>\n<p> \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u043b\u0443\u0447\u0448\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c Makefile-\u043e\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <strong>.\/scripts\/KarnixExtended<\/strong> \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0432 \u0435\u0433\u043e \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0421\u043d\u041a <strong>BrieyForKarnix<\/strong>. \u042f \u043d\u0435 \u0441\u0442\u0430\u043d\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0439 \u0438 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0441\u0443\u0442\u0438 \u0434\u0435\u043b\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043d\u0435\u0433\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 Github-\u0435:  <\/p>\n<p><a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/blob\/karnix_extended\/scripts\/KarnixExtended\/Makefile.Briey\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/blob\/karnix_extended\/scripts\/KarnixExtended\/Makefile.Briey<\/a><\/p>\n<p>\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u0438\u043d\u0442\u0435\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p><code>$ make -f Makefile.Briey generate compile<\/code><\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0434\u043e\u0431\u044c\u0435\u043c\u0441\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/VexRiscvForKarnix\/scripts\/KarnixExtended$ ll bin\/BrieyForKarnixTopLevel_25F.bit  -rw-rw-r-- 1 rz rz 712177 Jul 11 22:54 bin\/BrieyForKarnixTopLevel_25F.bit<\/code><\/pre>\n<p><a class=\"anchor\" name=\"8.3\" id=\"8.3\"><\/a><\/p>\n<h3> 8.3. \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0421\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 CGA \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043a\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 Hardware Abstraction Layer (HAL). \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abkarnix_extended_test\u00bb \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>cga.h<\/strong> \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0430\u043a\u0440\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0431\u0438\u0442\u043e\u0432\u044b\u043c \u043f\u043e\u043b\u044f\u043c \u044d\u0442\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">rz@devbox:~\/VexRiscvForKarnix\/src\/main\/c\/karnix_extended_test$ cat src\/cga.h   #ifndef __CGA_H__  #define __CGA_H__   #define CGA_VIDEO_WIDTH         320  #define CGA_VIDEO_HEIGHT        240  #define CGA_FRAMEBUFFER_SIZE    (CGA_VIDEO_WIDTH*CGA_VIDEO_HEIGHT*2\/8)   #include &lt;stdint.h&gt;  #pragma pack(1)  typedef struct  {    uint8_t FB[CGA_FRAMEBUFFER_SIZE];                     \/\/ Framebuffer    uint8_t unused1[48*1024-CGA_FRAMEBUFFER_SIZE];        \/\/      volatile uint32_t PALETTE[16];                        \/\/ offset 48K    volatile uint32_t CTRL;                               \/\/ 48K + 64    volatile uint32_t CTRL2;                              \/\/ 48K + 128    uint8_t unused2[12200];                               \/\/    uint8_t CHARGEN[4096];                                \/\/ offset 60K  } CGA_Reg;  #pragma pack(0)   #define CGA_MODE_TEXT           0  #define CGA_MODE_GRAPHICS1      1  #define CGA_CTRL_VIDEO_EN               (1 &lt;&lt; 31)  #define CGA_CTRL_BLANKING_EN            (1 &lt;&lt; 30)  #define CGA_CTRL_VIDEO_MODE_SHIFT       24  #define CGA_CTRL_VIDEO_MODE             (3 &lt;&lt; CGA_CTRL_VIDEO_MODE_SHIFT)  #define CGA_CTRL_HSYNC_FLAG             (1 &lt;&lt; 21)  #define CGA_CTRL_VSYNC_FLAG             (1 &lt;&lt; 20)  #define CGA_CTRL_VBLANK_FLAG            (1 &lt;&lt; 19)  #define CGA_CTRL_V_SCROLL_DIR           (1 &lt;&lt; 10)  #define CGA_CTRL_V_SCROLL_SHIFT         0  #define CGA_CTRL_V_SCROLL               (0x03ff &lt;&lt; CGA_CTRL_V_SCROLL_SHIFT)   #define CGA_CTRL2_CURSOR_X_SHIFT        0  #define CGA_CTRL2_CURSOR_X              (0xff &lt;&lt; CGA_CTRL2_CURSOR_X_SHIFT)  #define CGA_CTRL2_CURSOR_Y_SHIFT        8  #define CGA_CTRL2_CURSOR_Y              (0xff &lt;&lt; CGA_CTRL2_CURSOR_Y_SHIFT)  #define CGA_CTRL2_CURSOR_BOTTOM_SHIFT   16  #define CGA_CTRL2_CURSOR_BOTTOM         (0x0f &lt;&lt; CGA_CTRL2_CURSOR_BOTTOM_SHIFT)  #define CGA_CTRL2_CURSOR_TOP_SHIFT      20  #define CGA_CTRL2_CURSOR_TOP            (0x0f &lt;&lt; CGA_CTRL2_CURSOR_TOP_SHIFT)  #define CGA_CTRL2_CURSOR_BLINK_SHIFT    24  #define CGA_CTRL2_CURSOR_BLINK          (0x07 &lt;&lt; CGA_CTRL2_CURSOR_BLINK_SHIFT)  #define CGA_CTRL2_CURSOR_BLINK_EN_SHIFT 27  #define CGA_CTRL2_CURSOR_BLINK_EN       (1 &lt;&lt; CGA_CTRL2_CURSOR_BLINK_EN_SHIFT)  #define CGA_CTRL2_CURSOR_COLOR_SHIFT    28  #define CGA_CTRL2_CURSOR_COLOR          (0x0f &lt;&lt; CGA_CTRL2_CURSOR_COLOR_SHIFT) <\/code><\/pre>\n<p> \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>src\/soc.h<\/strong> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439 \u043f\u0435\u0440\u0435\u0434, \u044d\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 <strong>cga.h<\/strong>:<\/p>\n<pre><code class=\"cpp\">#include \"cga.h\" ... #define TIMER_PRESCALER ((Prescaler_Reg*)0xF0020000)  #define TIMER_INTERRUPT ((InterruptCtrl_Reg*)0xF0020010)  #define TIMER0          ((Timer_Reg*)0xF0020000)  #define TIMER1          ((Timer_Reg*)0xF0021000)  #define UART0           ((Uart_Reg*)(0xF0010000))  ... #define CGA             ((CGA_Reg*)(0xF0040000))  ...<\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <strong>src\/cga.c<\/strong> \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/p>\n<pre><code class=\"cpp\">void cga_set_video_mode(int mode) {          CGA-&gt;CTRL &amp;= ~CGA_CTRL_VIDEO_MODE;          CGA-&gt;CTRL |= (mode &lt;&lt; CGA_CTRL_VIDEO_MODE_SHIFT) &amp; CGA_CTRL_VIDEO_MODE;           printf(\"cga_set_video_mode: mode = %d, ctrl = %p\\r\\n\", mode, CGA-&gt;CTRL);  }   void cga_fill_screen(char color) {          uint32_t *fb = (uint32_t*) CGA-&gt;FB;           color = color &amp; 0x3;           uint32_t filler = (color &lt;&lt; 30) | (color &lt;&lt; 28) | (color &lt;&lt; 26) | (color &lt;&lt; 24);                   filler |= (filler &gt;&gt; 8) | (filler &gt;&gt; 16) | (filler &gt;&gt; 24);           for(int i = 0; i &lt; CGA_FRAMEBUFFER_SIZE \/ (8*4); i += (8*4)) {                  *fb++ = filler;                  *fb++ = filler;                  *fb++ = filler;                  *fb++ = filler;                  *fb++ = filler;                  *fb++ = filler;                  *fb++ = filler;                  *fb++ = filler;          }  }   void cga_wait_vblank(void) {          while(!(CGA-&gt;CTRL &amp; CGA_CTRL_VBLANK_FLAG));  }  void cga_set_palette(uint32_t c[16]) {          memcpy((void *)CGA-&gt;PALETTE, c, 16 * 4);  }<\/code><\/pre>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>src\/cga.h<\/strong>:<\/p>\n<pre><code class=\"cpp\">void cga_set_video_mode(int mode); void cga_fill_screen(char color); void cga_wait_vblank(void); void cga_set_palette(uint32_t c[16]);<\/code><\/pre>\n<p> \u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_set_video_mode(int mode)<\/strong> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 (\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0438\u043b\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <strong>mode<\/strong> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b <strong>CGA_MODE_TEXT<\/strong> \u0438\u043b\u0438 <strong>CGA_MODE_GRAPHICS1<\/strong>. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043d\u0430\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c <strong>CGA_MODE_GRAPHICS1<\/strong>.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_wait_vblank(void)<\/strong> \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f (\u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0433\u043b\u0438\u0442\u0447\u0435\u0439 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u0443\u0441\u043f\u0435\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_fill_screen(char color)<\/strong> \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d \u043e\u0434\u043d\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441 <strong>color<\/strong> \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_set_palette(uint32_t c[16])<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 16-\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0438\u043b\u0438 \u043d\u0443\u043b\u0438), \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0431\u0435\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043b\u0438\u0431\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0447\u0435\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d.<\/p>\n<p>\u0418\u043c\u0435\u044f \u0432 \u0440\u0443\u043a\u0430\u0445 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 HAL \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u043c\u044b \u0443\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043f\u0443\u0442\u0435\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <\/p>\n<\/li>\n<li>\n<p>\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c CGA_MODE_GRAPHICS1;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c CGA \u043f\u0430\u043b\u0438\u0442\u0440\u0443;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u043a\u0430\u043a\u0438\u043c \u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0434\u043d\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0430\u0448 \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u0441\u0442 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0434\u043d\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b <strong>src\/main.c<\/strong>, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0432 \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main() <\/strong>\u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0434\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 SRAM. \u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u00ab\u0441\u0438\u043d\u0435-\u0437\u0435\u043b\u0435\u043d\u043e\u0439\u00bb \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u044f\u0442\u043d\u0443\u044e \u0433\u043b\u0430\u0437\u0443 \u00ab\u043a\u0440\u0430\u0441\u043d\u043e-\u0441\u0438\u043d\u0435-\u0437\u0435\u043b\u0435\u043d\u0443\u044e\u00bb, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 <strong>rgb_palette<\/strong>:<\/p>\n<pre><code class=\"cpp\">void main() {           ...                  printf(\"Hardware init\\r\\n\");           \/\/ Test SRAM and initialize heap for malloc to use SRAM if tested OK          if(sram_test_write_random_ints(10) == 0) {             ...         } else {                  printf(\"SRAM %s!\\r\\n\", \"disabled\");          }           \/\/ Init CGA: enable graphics mode and load color palette          cga_set_video_mode(CGA_MODE_GRAPHICS1);           static uint32_t rgb_palette[16] = {                          0x00000000, 0x000000f0, 0x0000f000, 0x00f00000,                          0x0000f0f0, 0x00f000f0, 0x00f0f000, 0x00f0f0f0,                          0x000f0f0f, 0x000f0fff, 0x000fff0f, 0x00ff0f0f,                          0x000fffff, 0x00ff0fff, 0x00ffff0f, 0x00ffffff,                          };          cga_set_palette(rgb_palette);           cga_wait_vblank();          cga_fill_screen(2); \/\/ use color #2 (green)          ... <\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <strong>make<\/strong>:<\/p>\n<p> <code>rz@devbox:~\/VexRiscvForKarnix\/src\/main\/c\/karnix_extended_test$ make clean &amp;&amp; make<\/code><\/p>\n<p> \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<pre><code class=\"1c\">Memory region         Used Size  Region Size  %age Used               RAM:       64976 B        72 KB     88.13%  \/opt\/riscv64\/bin\/riscv64-unknown-elf-objcopy -O ihex build\/karnix_extended_test.elf build\/karnix_extended_test.hex  \/opt\/riscv64\/bin\/riscv64-unknown-elf-objcopy -O binary build\/karnix_extended_test.elf build\/karnix_extended_test.bin  hexdump -v -e '\/4 \"%08X\\n\"' &lt; build\/karnix_extended_test.bin &gt; build\/karnix_extended_test.hexx  make inc_build_num  make[1]: Entering directory '\/home\/rz\/VexRiscvForKarnix\/src\/main\/c\/karnix_extended_test'  make[1]: Leaving directory '\/home\/rz\/VexRiscvForKarnix\/src\/main\/c\/karnix_extended_test'  \/opt\/riscv64\/bin\/riscv64-unknown-elf-objdump -S -d build\/karnix_extended_test.elf &gt; build\/karnix_extended_test.asm  \/opt\/riscv64\/bin\/riscv64-unknown-elf-objcopy -O verilog build\/karnix_extended_test.elf build\/karnix_extended_test.v <\/code><\/pre>\n<p>\u042d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0441 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c <strong>build\/karnix_extended_test.hexx<\/strong> \u0433\u043e\u0442\u043e\u0432 \u0434\u043b\u044f <em>\u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438<\/em> \u0432 \u0431\u0438\u0442c\u0442\u0440\u0438\u043c. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0438\u0437 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430:<\/p>\n<pre><code class=\"1c\">rz@devbox:~\/VexRiscvForKarnix\/scripts\/KarnixExtended$ make -f Makefile.Briey compile   ecpbram -v -i bin\/BrieyForKarnixTopLevel_random_25F.config -o bin\/BrieyForKarnixTopLevel_25F.config -f ..\/..\/BrieyForKarnixTopLevel_random.hexx -t ..\/..\/src\/main\/c\/karnix_extended_test\/build\/karnix_extended_test.hexx  Padding to_hexfile from 15220 words to 18432  Loaded pattern for 32 bits wide and 18432 words deep memory.  Extracted 1152 bit slices from from\/to hexfile data.  ecppack --svf bin\/BrieyForKarnixTopLevel_25F.svf  bin\/BrieyForKarnixTopLevel_25F.config bin\/BrieyForKarnixTopLevel_25F.bit <\/code><\/pre>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 <em>\u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c<\/em>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u043e\u043c <strong>bin\/BrieyForKarnixTopLevel_25F.bit<\/strong> \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438\u0437 Verilog \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 SpinalHDL. \u0412 \u043a\u043e\u0434\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0421\u043d\u041a \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041e\u0417\u0423 (\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f RAM) \u0438 \u0435\u0451 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 <strong>..\/..\/BrieyForKarnixTopLevel_random.hex<\/strong> \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0432 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 RAM \u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u043a\u043e\u0434 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0431\u044b\u043b \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>ecpbrm<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 RAM \u0432 \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0435 \u043d\u0430 \u043d\u043e\u0432\u043e\u0435. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u043b\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c, \u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <strong>make compile<\/strong>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0431\u0438\u0441\u0442\u0440\u0438\u043c\u0430 <strong>bin\/BrieyForKarnixTopLevel_25F.bit<\/strong> \u0441 \u0443\u0436\u0435 \u043d\u043e\u0432\u044b\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u043c \u0432 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 RAM.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043b\u0430\u0442\u0443 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043d\u0435\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u043e\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u043a\u0440\u0430\u0441\u0438\u043b\u0441\u044f \u043b\u0438 \u044d\u043a\u0440\u0430\u043d \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0432 \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u0446\u0432\u0435\u0442. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p><code>rz@devbox:~\/VexRiscvForKarnix\/scripts\/KarnixExtended$ make -f Makefile.Briey prog<\/code><\/p>\n<p><a class=\"anchor\" name=\"8.4\" id=\"8.4\"><\/a><\/p>\n<h3> 8.4. \u0418\u0437\u043c\u0435\u0440\u044f\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c<\/h3>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u043c\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u043c \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u043c, \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442: \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0446\u0438\u043a\u043b \u0441 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u044b\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0437\u0430\u043c\u0435\u0440 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043c\u0435\u0440\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <strong>get_mtime()<\/strong> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u0441\u0443\u0442\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u044f\u0434\u0440\u043e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430:<\/p>\n<pre><code class=\"cpp\">        #ifdef CGA_MEM_TEST1          printf(\"Executing CGA video framebuffer write performance test...\\r\\n\");           csr_clear(mstatus, MSTATUS_MIE); \/\/ Disable Machine interrupts during test          uint32_t cga_t0 = get_mtime();          for(int i = 0; i &lt; 1000; i++) {                  cga_fill_screen(rand()); \/\/ use random color          }          uint32_t cga_t1 = get_mtime();          csr_set(mstatus, MSTATUS_MIE); \/\/ Enable Machine interrupts after test           printf(\"CGA framebuffer write perf: %ld uS after 1000 frames\\r\\n\", cga_t1 - cga_t0);          #endif  <\/code><\/pre>\n<p> \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 <strong>main.c<\/strong> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 <strong>CGA_MEM_TEST1<\/strong> \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f) \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"cpp\">#defineCGA_MEM_TEST1<\/code><\/pre>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0421\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0437\u0430\u0442\u0435\u043c \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c, \u0438 \u0435\u0449\u0435 \u0440\u0430\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u043f\u043b\u0430\u0442\u0443 \u041a\u0430\u0440\u043d\u043e, \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 UART \u043f\u043e\u0440\u0442\u0443 #1 \u043f\u043b\u0430\u0442\u044b \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b:<\/p>\n<p>\u0414\u043b\u044f \u041e\u0421 FreeBSD:<\/p>\n<p><code>rz@butterfly:~ % sudo minicom -b 115200 -D \/dev\/ttyU1<\/code><\/p>\n<p>\u0414\u043b\u044f \u041e\u0421 Linux:<\/p>\n<p><code>rz@devbox:~$ sudo minicom -b 115200 -D \/dev\/ttyUSB1<\/code><\/p>\n<p>\u0412 \u043e\u043a\u043d\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<pre><code class=\"cpp\">Karnix ASB-254 test prog. Build 00876, date\/time: Sep  3 2024 15:46:26  Copyright (C) 2021-2024 Fabmicro, LLC., Tyumen, Russia.   Hardware init  Filling SRAM at: 0x90000000, size: 524288 bytes...  Checking SRAM at: 0x90000000, size: 524288 bytes...  ... Filling SRAM at: 0x90000000, size: 524288 bytes...                                Checking SRAM at: 0x90000000, size: 524288 bytes...                               Enabling SRAM...                                                                  SRAM enabled!                                                                     Filling video RAM at: 0xf0040000, size: 19200 bytes...                            Checking video RAM at: 0xf0040000, size: 19200 bytes...                           cga_set_video_mode: mode = 1, ctrl = 0x81080000                                   Executing CGA video framebuffer write performance test...                         CGA framebuffer write perf: 320568 uS after 1000 frames ...<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: <strong>320568 \u043c\u043a\u0441<\/strong> \u0437\u0430 <strong>1000<\/strong> \u043a\u0430\u0434\u0440\u043e\u0432 \u0438\u043b\u0438 <strong>0,321 \u043c\u0441<\/strong> \u043d\u0430 \u043a\u0430\u0434\u0440, \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 3115 FPS \u043f\u0440\u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u044f\u0434\u0440\u0430 60 \u041c\u0413\u0446. \u0426\u0438\u0444\u0440\u0430, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u043d\u043e \u043a\u0430\u043a\u0430\u044f \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 ? <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_fill_screen()<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0430\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 GCC:<\/p>\n<pre><code class=\"assembly\">8000622e &lt;cga_fill_screen&gt;:  8000622e:       890d                    andi    a0,a0,3  80006230:       01e51793                slli    a5,a0,0x1e  80006234:       01c51713                slli    a4,a0,0x1c  80006238:       8fd9                    or      a5,a5,a4  8000623a:       01a51713                slli    a4,a0,0x1a  8000623e:       8fd9                    or      a5,a5,a4  80006240:       0562                    slli    a0,a0,0x18  80006242:       8fc9                    or      a5,a5,a0  80006244:       0187d713                srli    a4,a5,0x18  80006248:       0087d693                srli    a3,a5,0x8  8000624c:       0107d613                srli    a2,a5,0x10  80006250:       8ed1                    or      a3,a3,a2  80006252:       8fd5                    or      a5,a5,a3  80006254:       8f5d                    or      a4,a4,a5  80006256:       f00407b7                lui     a5,0xf0040  8000625a:       f0045637                lui     a2,0xf0045  8000625e:       ae060613                addi    a2,a2,-1312 # f0044ae0 &lt;_ram_heap_end+0x70032ae0&gt;  80006262:       a011                    j       80006266 &lt;cga_fill_screen+0x38&gt;  80006264:       87b6                    mv      a5,a3  80006266:       c398                    sw      a4,0(a5)  80006268:       c3d8                    sw      a4,4(a5)  8000626a:       c798                    sw      a4,8(a5)  8000626c:       c7d8                    sw      a4,12(a5)  8000626e:       cb98                    sw      a4,16(a5)  80006270:       cbd8                    sw      a4,20(a5)  80006272:       cf98                    sw      a4,24(a5)  80006274:       02078693                addi    a3,a5,32 # f0040020 &lt;_ram_heap_end+0x7002e020&gt;  80006278:       cfd8                    sw      a4,28(a5)  8000627a:       fec795e3                bne     a5,a2,80006264 &lt;cga_fill_screen+0x36&gt;  8000627e:       8082                    ret <\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u0442\u0435\u043b\u043e \u0446\u0438\u043a\u043b\u0430, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u0436\u0438\u0440\u043d\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u043e\u0441\u0435\u043c\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 32-\u0445 \u0431\u0438\u0442\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c, \u0432\u0441\u0435\u0433\u043e 10 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (\u0442.\u00a0\u0435. 10 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u043e\u0432) \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u043b\u043e\u043a\u0430 \u0438\u0437 32 \u0431\u0430\u0439\u0442. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c 10 * (19200 \/ 32) \/ 60 000 000 = ~ 100 \u043c\u043a\u0441 \u043d\u0430 \u043e\u0434\u0438\u043d \u043a\u0430\u0434\u0440, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043c\u0435\u0440\u043e\u0432 \u2014 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430. \u042d\u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0445\u043e\u043b\u043e\u0441\u0442\u044b\u0435 \u0446\u0438\u043a\u043b\u044b \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 \u2014 \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 RAM \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f RAM \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0440\u0430\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 32 \u0431\u0438\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u044b\u044f\u0441\u043d\u0438\u043c, \u043a\u0430\u043a\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u043a\u0430\u0434\u0440\u043e\u0432 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043e\u0442 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442 <strong>CGA_MEM_TEST2<\/strong>:<\/p>\n<pre><code class=\"cpp\">        #ifdef CGA_TEST2          printf(\"Executing CGA video framebuffer copy from RAM performance test...\\r\\n\");           static char test_buffer[960];           for(int i = 0; i &lt; 960; i++)                 test_buffer[i] = rand();           csr_clear(mstatus, MSTATUS_MIE); \/\/ Disable Machine interrupts during test          uint32_t cga_t2 = get_mtime();          for(int i = 0; i &lt; 1000; i++) {                  for(int j = 0; j &lt; 20; j++)                          memcpy(CGA-&gt;FB + j * 960, test_buffer, 960);           }          uint32_t cga_t3 = get_mtime();          csr_set(mstatus, MSTATUS_MIE); \/\/ Enable Machine interrupts after test           printf(\"CGA framebuffer copy from RAM perf: %ld uS after 1000 frames\\r\\n\", cga_t3 - cga_t2);          #endif <\/code><\/pre>\n<p> \u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432 \u041f\u041b\u0418\u0421. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434:<\/p>\n<pre><code>Karnix ASB-254 test prog. Build 00879, date\/time: Sep  3 2024 17:54:03  Copyright (C) 2021-2024 Fabmicro, LLC., Tyumen, Russia.   Hardware init  Filling SRAM at: 0x90000000, size: 524288 bytes...  Checking SRAM at: 0x90000000, size: 524288 bytes...  ... Filling SRAM at: 0x90000000, size: 524288 bytes...                                Checking SRAM at: 0x90000000, size: 524288 bytes...                               Enabling SRAM...                                                                  SRAM enabled!                                                                     Filling video RAM at: 0xf0040000, size: 19200 bytes...                            Checking video RAM at: 0xf0040000, size: 19200 bytes...                           cga_set_video_mode: mode = 1, ctrl = 0x81080000                                   Executing CGA video framebuffer write performance test...  CGA framebuffer write perf: 320568 uS after 1000 frames Executing CGA video framebuffer copy from RAM performance test...  CGA framebuffer copy from RAM perf: 357479 uS after 1000 frames ...<\/code><\/pre>\n<p> \u0412\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c <strong>0,357 \u043c\u0441<\/strong> \u043d\u0430 \u043a\u0430\u0434\u0440. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0430 CGA_MEM_TEST2 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0439 CGA_MEM_TEST1 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 <strong>37 \u043c\u043a\u0441<\/strong> \u043d\u0430 \u043a\u0430\u0434\u0440 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u2014 \u0432 \u043a\u043e\u0434\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434. \u0422\u0430\u043a \u043a\u0430\u043a \u0433\u043e\u0440\u044f\u0447\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>memcpy()<\/strong>, \u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432 \u043d\u0435\u0433\u043e. \u0418 \u0432\u043e\u0442, \u0447\u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c:<\/p>\n<pre><code class=\"assembly\">8000c744 &lt;memcpy&gt;:  8000c744:       00a5c7b3                xor     a5,a1,a0  8000c748:       0037f793                andi    a5,a5,3  8000c74c:       00c50733                add     a4,a0,a2  8000c750:       00079663                bnez    a5,8000c75c &lt;memcpy+0x18&gt;  8000c754:       00300793                li      a5,3  8000c758:       02c7e263                bltu    a5,a2,8000c77c &lt;memcpy+0x38&gt;  8000c75c:       00050793                mv      a5,a0  8000c760:       0ae57c63                bgeu    a0,a4,8000c818 &lt;memcpy+0xd4&gt;  8000c764:       0005c683                lbu     a3,0(a1)  8000c768:       00178793                addi    a5,a5,1  8000c76c:       00158593                addi    a1,a1,1  8000c770:       fed78fa3                sb      a3,-1(a5)  8000c774:       fee7e8e3                bltu    a5,a4,8000c764 &lt;memcpy+0x20&gt;  8000c778:       00008067                ret  8000c77c:       00357693                andi    a3,a0,3  8000c780:       00050793                mv      a5,a0  8000c784:       00068e63                beqz    a3,8000c7a0 &lt;memcpy+0x5c&gt;  8000c788:       0005c683                lbu     a3,0(a1)  8000c78c:       00178793                addi    a5,a5,1  8000c790:       00158593                addi    a1,a1,1  8000c794:       fed78fa3                sb      a3,-1(a5)  8000c798:       0037f693                andi    a3,a5,3  8000c79c:       fe9ff06f                j       8000c784 &lt;memcpy+0x40&gt;  8000c7a0:       ffc77693                andi    a3,a4,-4  8000c7a4:       fe068613                addi    a2,a3,-32  8000c7a8:       06c7f463                bgeu    a5,a2,8000c810 &lt;memcpy+0xcc&gt;  8000c7ac:       0005a383                lw      t2,0(a1)  8000c7b0:       0045a283                lw      t0,4(a1)  8000c7b4:       0085af83                lw      t6,8(a1)  8000c7b8:       00c5af03                lw      t5,12(a1)  8000c7bc:       0105ae83                lw      t4,16(a1)  8000c7c0:       0145ae03                lw      t3,20(a1)  8000c7c4:       0185a303                lw      t1,24(a1)  8000c7c8:       01c5a883                lw      a7,28(a1)  8000c7cc:       02458593                addi    a1,a1,36  8000c7d0:       0077a023                sw      t2,0(a5)  8000c7d4:       ffc5a803                lw      a6,-4(a1)  8000c7d8:       0057a223                sw      t0,4(a5)  8000c7dc:       01f7a423                sw      t6,8(a5)  8000c7e0:       01e7a623                sw      t5,12(a5)  8000c7e4:       01d7a823                sw      t4,16(a5)  8000c7e8:       01c7aa23                sw      t3,20(a5)  8000c7ec:       0067ac23                sw      t1,24(a5)  8000c7f0:       0117ae23                sw      a7,28(a5)  8000c7f4:       02478793                addi    a5,a5,36  8000c7f8:       ff07ae23                sw      a6,-4(a5)  8000c7fc:       fadff06f                j       8000c7a8 &lt;memcpy+0x64&gt;  8000c800:       0005a603                lw      a2,0(a1)  8000c804:       00478793                addi    a5,a5,4  8000c808:       00458593                addi    a1,a1,4  8000c80c:       fec7ae23                sw      a2,-4(a5)  8000c810:       fed7e8e3                bltu    a5,a3,8000c800 &lt;memcpy+0xbc&gt;  8000c814:       f4e7e8e3                bltu    a5,a4,8000c764 &lt;memcpy+0x20&gt;  8000c818:       00008067                ret <\/code><\/pre>\n<p> \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0442\u0435\u043b\u043e \u0446\u0438\u043a\u043b\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0432\u043e\u0441\u044c\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 RAM), \u0441\u043b\u0435\u0434\u043e\u043c \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0438\u0434\u0443\u0442 \u0432\u043e\u0441\u0435\u043c\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c). \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u0435\u0441\u0442\u0430 CGA_MEM_TEST1 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0435\u0449\u0435 \u0432\u043e\u0441\u0435\u043c\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043e\u0434\u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043f\u0435\u0440\u0435\u0441\u0447\u0435\u0442\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043e\u043a\u043e\u043b\u043e 9 \u0442\u0430\u043a\u0442\u043e\u0432 * 30 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 * 20 \u0446\u0438\u043a\u043b\u043e\u0432 \/ 60 \u041c\u0413\u0446 = 90 \u043c\u043a\u0441. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0436\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 &#8212; \u043d\u0430 37 \u043c\u043a\u0441 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440. \u041e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043a\u044d\u0448\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u043a\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0448\u0438\u043d\u044b AXI\/APB3 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<p>\u0418 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d, \u0442\u0440\u0435\u0442\u0438\u0439, \u0442\u0435\u0441\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u2014 \u044d\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u0448\u0438\u043d\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 16 \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0448\u0438\u043d\u0435 AXI \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a 32-\u0445 \u0431\u0438\u0442\u043d\u044b\u043c \u0441\u043b\u043e\u0432\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e \u0434\u0432\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 SRAM \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 60 \u041c\u0413\u0446 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u043e\u0434\u0438\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0447\u0442\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a 32 \u0431\u0438\u0442\u0430\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0432 SRAM \u0431\u0443\u0434\u0435\u0442 <strong>\u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435<\/strong> \u0447\u0435\u043c \u043a 32 \u0431\u0438\u0442\u0430\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0432 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 RAM.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442, \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (SRAM \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 0x90000000), \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0451 \u043f\u043b\u043e\u0445\u043e. \u0418\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u044d\u0448 \u0441\u0433\u043b\u0430\u0434\u0438\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 ? \u041a\u043e\u0434 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u0430 (<strong>CGA_MEM_TEST3<\/strong>) \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"cpp\">        #ifdef CGA_MEM_TEST3          printf(\"Executing CGA video framebuffer copy from external SRAM performance test...\\r\\n\");           char *sram_test_buffer = (char*) 0x90000000;           for(int i = 0; i &lt; 960; i++)                 sram_test_buffer[i] = rand();           csr_clear(mstatus, MSTATUS_MIE); \/\/ Disable Machine interrupts during test          uint32_t cga_t4 = get_mtime();          for(int i = 0; i &lt; 1000; i++) {                  for(int j = 0; j &lt; 20; j++)                          memcpy(CGA-&gt;FB + j * 960, sram_test_buffer, 960);           }          uint32_t cga_t5 = get_mtime();          csr_set(mstatus, MSTATUS_MIE); \/\/ Enable Machine interrupts after test           printf(\"CGA framebuffer copy from external SRAM perf: %ld uS after 1000 frames\\r\\n\", cga_t5 - cga_t4);          #endif <\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u041f\u041b\u0418\u0421 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>Karnix ASB-254 test prog. Build 00884, date\/time: Sep  3 2024 19:39:30  Copyright (C) 2021-2024 Fabmicro, LLC., Tyumen, Russia.   Hardware init  Filling SRAM at: 0x90000000, size: 524288 bytes...  Checking SRAM at: 0x90000000, size: 524288 bytes...  ... Filling SRAM at: 0x90000000, size: 524288 bytes...  Checking SRAM at: 0x90000000, size: 524288 bytes...  Enabling SRAM...  SRAM enabled!  Filling video RAM at: 0xf0040000, size: 19200 bytes...  Checking video RAM at: 0xf0040000, size: 19200 bytes...  cga_set_video_mode: mode = 1, ctrl = 0x81080000  Executing CGA video framebuffer write performance test...  CGA framebuffer write perf: 320568 uS after 1000 frames  Executing CGA video framebuffer copy from RAM performance test...  CGA framebuffer copy from RAM perf: 357480 uS after 1000 frames  Executing CGA video framebuffer copy from external SRAM performance test...  CGA framebuffer copy from external SRAM perf: 357487 uS after 1000 frames <\/code><\/pre>\n<p> \u0418 \u0447\u0442\u043e \u0436\u0435 \u043c\u0438 \u0432\u0438\u0434\u0438\u043c ? \u0412\u0440\u0435\u043c\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 SRAM \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0436\u0435, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438\u0437 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 RAM, \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <strong>357 \u043c\u043a\u0441<\/strong> \u043d\u0430 \u043a\u0430\u0434\u0440. \u0412\u043e\u0442 \u0442\u0430\u043a \u0444\u043e\u043a\u0443\u0441!<\/p>\n<p>\u041a\u0430\u043a\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432? \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0440\u0438 \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u0431\u0438\u0442\u043c\u0430\u043f\u043e\u0432 (\u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432) \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430 \u0440\u0430\u0432\u043d\u043e\u0435 357 \u043c\u043a\u0441 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u043d\u0430\u0434\u0435\u0436\u0434\u0443 \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f (\u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430) \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <strong>3,84 \u043c\u0441<\/strong>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0448\u0430\u043d\u0441 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u0433\u043b\u0430\u0437\u0443 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0412 \u0421\u043d\u041a Briey \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (\u00abC extention\u00bb \u0438\u043b\u0438 \u00abcompressed instruction set\u00bb), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 16 \u0431\u0438\u0442, \u0430 \u043d\u0435 32 \u0431\u0438\u0442\u0430. <\/em> <\/p>\n<p><a class=\"anchor\" name=\"8.5\" id=\"8.5\"><\/a><\/p>\n<h3> 8.5. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Bitblit \u0438 \u0437\u0430\u043c\u0435\u0440 \u0435\u0451 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p><strong>Bit blit<\/strong> (BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt \u0438 \u0442.\u00a0\u0434.) \u2014 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f \u043e\u0442 \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Bit_blit\" rel=\"noopener noreferrer nofollow\">bit block transfer<\/a>\u00bb, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0432\u0438\u0434\u0435\u043e\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u0431\u0438\u0442\u043c\u0430\u043f\u043e\u0432) \u0432 \u043e\u0434\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0443\u043b\u0435\u0432\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u041e\u0431\u044b\u0447\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f Bitblit \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0434\u0432\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u0442\u0440\u0435\u0442\u0438\u0439. \u0427\u0430\u0441\u0442\u043e \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0436\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0443\u043b\u0435\u0432\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0443 \u0436\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 Bitblit \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u0440\u0435\u0442\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0430\u0441\u043a\u0443 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0442 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044e\/\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e. <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f Bitblit \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e, \u0442\u0430\u043a \u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0447\u0438\u043f\u0441\u0435\u0442 \u043d\u0430 \u041f\u042d\u0412\u041c Commodore Amiga \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0434\u043e \u0442\u0440\u0435\u0445 \u0431\u0438\u0442\u043c\u0430\u043f\u043e\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f \u043a \u043d\u0438\u043c \u043b\u044e\u0431\u0443\u044e \u0438\u0437 256-\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 3-\u0432\u0445\u043e\u0434\u043e\u0432\u044b\u0445 \u0431\u0443\u043b\u0435\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u043b\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0432\u0438\u0434\u0435\u043e \u0438\u0433\u0440, \u0443\u043f\u0440\u043e\u0449\u0430\u043b\u043e \u0438\u0445 \u0442\u0440\u0443\u0434 \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u0445 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u0430 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0433\u043b\u0430\u0437\u0443 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0441\u043c\u0435\u0448\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Alpha_compositing\" rel=\"noopener noreferrer nofollow\">alpha compositing \u0438\u043b\u0438 alpha blending<\/a>). \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 Bitblit, \u0432 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u0445. \u0423\u0447\u0435\u043d\u044b\u0435 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u0442\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b Bitblit, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0440\u0445\u0435\u043e\u043b\u043e\u0433\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 Xerox PARC \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Xerox_Alto\" rel=\"noopener noreferrer nofollow\">Xerox Alto<\/a>.<\/p>\n<p>\u0412\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 IBM CGA \u043d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0431\u0438\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u043b\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0447\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u043b\u0430 (\u0438\u043b\u0438 \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0438\u0442\u043c\u0430\u043f\u043e\u0432 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u043c \u043e\u0446\u0435\u043d\u043a\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Bitblit \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0437\u0430\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443\/\u0432\u044b\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f (\u0438\u043b\u0438 PEL-\u0430).<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Bitblit \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0431\u0438\u0442\u043c\u0430\u043f\u0430\u0445 \u0438 \u043e\u0431 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0442 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438. \u0412 \u0442\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0438\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e \u00ab\u0431\u0438\u0442\u043e\u0432\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c\u00bb (bit plane). \u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u0442\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0446\u0432\u0435\u0442\u0430. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u0446\u0432\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0431\u0438\u0442\u0430\u043c\u0438 (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0442 4\u201cb0000 \u0434\u043e 4\u201cb1111), \u0442\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0431\u0438\u0442\u0443 \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f. \u0422\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0431\u044b\u043b \u0443\u0434\u043e\u0431\u0435\u043d \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0432  \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u0445 \u0434\u0440\u0435\u0432\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a EGA \u0438\u043b\u0438 VGA, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 Amiga \u0438 Atari ST. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0431\u0443\u043b\u0435\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0431\u0438\u0442\u0430\u043c\u0438, \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u044b\u043b\u0438 \u00ab\u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043d\u044b\u043c\u0438\u00bb). \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0435 \u0446\u0438\u043a\u043b\u044b \u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 (\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u00abbit slicing\u00bb), \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0443\u0436\u0435 \u0432 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c, \u0440\u0430\u0437\u0431\u0438\u0442\u043e\u043c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p>\u0414\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u043c\u0430\u043f\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0431\u0438\u0442\u044b \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e. \u0422\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab\u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u00bb (packed). \u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0446\u0432\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 4-\u0445 \u0434\u043e 6-\u0442\u0438 \u0431\u0430\u0439\u0442 (\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e 8, 10 \u0438 12 \u0431\u0438\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0446\u0432\u0435\u0442\u0430) \u0438 \u0442\u043e\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u00ab\u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u00bb. \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c CGA \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 320&#215;200 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0430\u0441\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e 4-\u0445 PEL-\u0430\u0445, \u043f\u043e \u0434\u0432\u0430 \u0431\u0438\u0442\u0430 \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441. <\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c CGA-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u043c\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0438\u043d\u0434\u0435\u043a\u0441\u0435 \u0446\u0432\u0435\u0442\u0430 \u0432 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043f\u043e 32 \u0431\u0438\u0442\u0430 \u0437\u0430 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442. \u041e\u0442\u0441\u044e\u0434\u0430 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0431\u0438\u0442\u043c\u0430\u043f \u0432 \u0432\u0438\u0434\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432 \u043f\u043e 32 \u0431\u0438\u0442\u0430 (4 \u0431\u0430\u0439\u0442\u0430), \u043d\u043e \u044d\u0442\u043e \u0436\u0435  \u0446\u0435\u043b\u044b\u0445 16 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439! \u0422\u0430\u043a\u0430\u044f \u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430, \u043e\u043d\u0430 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0438\u043a\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0441\u0435\u0431\u0435 \u0437\u0430\u0434\u0430\u0447\u0443 \u2014 \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u043c\u0430\u043f\u0430 \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c\u0438 \u043f\u043e 4 \u043f\u0438\u043a\u0441\u0435\u043b\u044f (\u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0430\u0439\u0442\u0430\u043c\u0438), \u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e Bitblit \u043d\u0430\u0443\u0447\u0438\u043c \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0431\u0438\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0431\u0438\u0442\u043c\u0430\u043f\u0430, \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0451 <strong>cga_bitblit()<\/strong>, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0432\u0443\u043c\u044f \u0431\u0438\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <strong>src_img<\/strong> \u0438 <strong>dst_img <\/strong>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0438\u043f\u0430 <strong>uint8_t*<\/strong>. \u0422\u0430\u043a\u0436\u0435 <strong>cga_bitblit()<\/strong> \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0434\u0432\u0430 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 <strong>x<\/strong> \u0438 <strong>y<\/strong> \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0441\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 (PEL-\u0430\u0445). \u0415\u0449\u0435 \u0434\u0432\u0430 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <strong>src_width<\/strong> \u0438 <strong>src_height<\/strong> \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0448\u0438\u0440\u0438\u043d\u044b (\u0432 \u0442\u043e\u0447\u043a\u0430\u0445) \u0438 \u0432\u044b\u0441\u043e\u0442\u044b (\u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445) \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0432\u0430 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <strong>dst_width<\/strong> \u0438 <strong>dst_height<\/strong> \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f <strong>dst_img<\/strong>. \u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_bitblit()<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">void cga_bitblit(uint8_t *src_img, uint8_t *dst_img, int x, int y, int src_width, int src_height, int dst_width, int dst_height);<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_bitblit()<\/strong>. \u0412 \u0446\u0435\u043b\u043e\u043c, \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f: \u0434\u0432\u0430 \u0446\u0438\u043a\u043b\u0430, \u043e\u0434\u0438\u043d \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043f\u043e c\u0442\u0440\u043e\u043a\u0430\u043c (<strong>row<\/strong>) \u0438 \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c (<strong>col<\/strong>). \u0412\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0431\u0438\u0442\u043c\u0430\u043f\u0430 \u0438 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0447\u0435\u0442 \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0441\u043a\u0438 <strong>pixel_mask<\/strong>, \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e, \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 <strong>pixel_word<\/strong> \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c. \u041d\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043d\u044e\u0430\u043d\u0441\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043f\u043e 32 \u0431\u0438\u0442. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u043b\u043e\u0432\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 32 \u0431\u0438\u0442\u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0438\u0437 \u0431\u0438\u0442\u043c\u0430\u043f\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u043e 32 \u0431\u0438\u0442\u0430. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0435\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u0440\u0430\u0437\u0443 16-\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043f\u043e \u0434\u0432\u0430 \u0431\u0438\u0442\u0430 \u043a\u0430\u0436\u0434\u044b\u0439. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f, \u0442\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u043d\u0438\u0437\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 16 \u0440\u0430\u0437, \u0430 \u044d\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u0441 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u2014 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435, \u0430 \u043d\u0435 \u0432 \u0442\u0435\u043b\u0435 \u0446\u0438\u043a\u043b\u0430. C\u043b\u0435\u0433\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_bitblit()<\/strong> \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"cpp\">void cga_bitblit(uint8_t *src_img, uint8_t *dst_img, int x, int y, int src_width, int src_height,                  int dst_width, int dst_height) {           uint32_t* dst = (uint32_t*)dst_img;          uint8_t* src = (uint8_t*)src_img;           int pixel_idx, pixel_offset, word_idx, word_idx_prev = -1;          uint32_t pixel_word, pixel_mask;           int src_pixel_offset, src_word_idx;          int src_stride = (src_width &gt;&gt; 2);          uint32_t src_word;           int col_start = 0;          int col_end = src_width;           \/\/ Y border limits          if(y &gt;= dst_height || y + src_height &lt;= 0)                  return;           if(y &lt; 0) {                  src += -y * src_stride;                  src_height += y;                  y = 0;          }           if(y + src_height &gt; dst_height)                  src_height = dst_height - y;           \/\/ X border limits          if(x &gt;= dst_width || x + src_width &lt;= 0)                  return;           if(x &lt; 0)                  col_start = -x;           if(x + src_width &gt; dst_width)                  col_end = dst_width - x;           int pixel_idx_0 = y * dst_width + x;           for(int row = 0; row &lt; src_height; row++) {                   for(int col = col_start; col &lt; col_end; col++) {                           pixel_idx = pixel_idx_0 + col;                          pixel_offset = (15 - (pixel_idx &amp; 0xf)) &lt;&lt; 1;                           word_idx = pixel_idx &gt;&gt; 4; \/\/ 16 pixels per 32 bit word                            pixel_mask = 0x03 &lt;&lt; pixel_offset;                           if(word_idx != word_idx_prev) {                                  if(word_idx_prev != -1)                                          dst[word_idx_prev] = pixel_word;                                   pixel_word = dst[word_idx];                          }                           \/\/ Get image data                          src_word_idx = col &gt;&gt; 2; \/\/ 4 pixels per byte                          src_pixel_offset = (3 - (col &amp; 0x03)) &lt;&lt; 1;                          src_word = src[src_word_idx];                           pixel_word &amp;= ~pixel_mask;                           if(pixel_offset &gt;= src_pixel_offset)                                  src_word &lt;&lt;= (pixel_offset - src_pixel_offset);                          else                                  src_word &gt;&gt;= (src_pixel_offset - pixel_offset);                           pixel_word |= src_word &amp; pixel_mask;                           word_idx_prev = word_idx;                  }                   src += src_stride;                  pixel_idx_0 += dst_width;          }          dst[word_idx] = pixel_word;  } <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_bitblit()<\/strong> \u0438 \u0435\u0451 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0440\u044f\u0434 \u0442\u0435\u0441\u0442\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0434\u043e\u0431\u0438\u0432\u0430\u044f\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>cga_bitblit()<\/strong> \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0431\u0438\u0442\u043c\u0430\u043f\u043e\u043c (\u0441\u043f\u0440\u0430\u0439\u0442\u043e\u043c), \u0430 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u043a\u0430\u0434\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043f\u0440\u0430\u0439\u0442 \u043f\u043e \u043a\u0440\u0443\u0433\u0443, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442. \u042f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0441\u0435\u0440\u0438\u044e \u0438\u0437 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16&#215;16 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u0438\u0441. 12 \u043d\u0438\u0436\u0435. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e9b\/6cf\/a20\/e9b6cfa20830f6673a035ff2bd9f7bb4.png\" alt=\"\u0420\u0438\u0441. 12. \u0421\u0435\u0440\u0438\u044f \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16x16 \u0442\u043e\u0447\u0435\u043a 4 \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_bitblit().\" title=\"\u0420\u0438\u0441. 12. \u0421\u0435\u0440\u0438\u044f \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16x16 \u0442\u043e\u0447\u0435\u043a 4 \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_bitblit().\" width=\"709\" height=\"63\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9b\/6cf\/a20\/e9b6cfa20830f6673a035ff2bd9f7bb4.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 12. \u0421\u0435\u0440\u0438\u044f \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16&#215;16 \u0442\u043e\u0447\u0435\u043a 4 \u0446\u0432\u0435\u0442\u0430<br \/> \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_bitblit().<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_video_test1()<\/strong> \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<pre><code>static int _x = 0, _y = 0;  static int _sprite_idx = 0;   void cga_video_test1(void) {           uint32_t t0 = get_mtime() &amp; 0xffffffff;            for(int y = 0; y &lt; 240; y += 16)                  for(int x = 0; x &lt; 320; x += 16)                          cga_bitblit((uint8_t*)cga_sprites[_sprite_idx], CGA-&gt;FB, x + _x, y + _y, 16, 16,                                          CGA_VIDEO_WIDTH, CGA_VIDEO_HEIGHT);            uint32_t t1 = get_mtime() &amp; 0xffffffff;           printf(\"cga_video_test1: t = %lu uS\\r\\n\", t1 - t0);           _sprite_idx = (_sprite_idx + 1) % 11;  } <\/code><\/pre>\n<p> \u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0442\u0440\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 (\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445) \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445: <strong>_sprite_idx<\/strong> \u0437\u0430\u0434\u0430\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0432 \u0441\u0435\u0440\u0438\u0438, \u0430 <strong>_x<\/strong> \u0438 <strong>_y<\/strong> \u0437\u0430\u0434\u0430\u044e\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0441\u044f\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0418\u0437\u043c\u0435\u043d\u044f\u044f <strong>_x<\/strong> \u0438 <strong>_y<\/strong> \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0432\u0441\u0451 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443.<\/p>\n<p>\u0412\u0441\u0442\u0430\u0432\u0438\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_video_test1()<\/strong> \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0438 \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 \u041f\u041b\u0418\u0421 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432:<\/p>\n<pre><code>Karnix ASB-254 test prog. Build 00905, date\/time: Sep  4 2024 20:14:29  Copyright (C) 2021-2024 Fabmicro, LLC., Tyumen, Russia.   Hardware init  Filling SRAM at: 0x90000000, size: 524288 bytes...  Checking SRAM at: 0x90000000, size: 524288 bytes...  ... Enabling SRAM...  SRAM enabled!  Filling video RAM at: 0xf0040000, size: 19200 bytes...  Checking video RAM at: 0xf0040000, size: 19200 bytes...  cga_set_video_mode: mode = 1, ctrl = 0x81080000  Executing CGA video framebuffer write performance test...  CGA framebuffer write perf: 320568 uS after 1000 frames  Executing CGA video framebuffer copy from RAM performance test...  CGA framebuffer copy from RAM perf: 357479 uS after 1000 frames  Executing CGA video framebuffer copy from external SRAM performance test...  CGA framebuffer copy from external SRAM perf: 357487 uS after 1000 frames  ...<\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_video_test1()<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u043c.<\/p>\n<pre><code>cga_set_video_mode: mode = 1, ctrl = 0x81000000  cga_video_test1: t = 35912 uS  cga_video_test1: t = 35920 uS  cga_video_test1: t = 35919 uS  cga_video_test1: t = 35917 uS  cga_video_test1: t = 36095 uS  cga_video_test1: t = 36255 uS  ...<\/code><\/pre>\n<p> \u0410 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u00ab\u043c\u0443\u0430\u0440\u00bb (\u0441\u043c. \u0440\u0438\u0441. 13).<\/p>\n<p>\u041f\u0435\u0440\u0435\u0432\u0435\u0434\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 (<strong>36 \u043c\u0441<\/strong>) \u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u0443, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e <strong>28 FPS<\/strong>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0447\u0442\u043e \u0432\u0441\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u043c\u0438 \u0436\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0435\u0439 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439. \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f \u043a \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u2014 \u043f\u0440\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u0434\u0432\u0438\u0433 (\u0438\u043b\u0438 \u00ab\u0438\u0437\u043b\u043e\u043c\u00bb) \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0448 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435. \u042d\u0442\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u00ab\u0433\u043b\u0438\u0442\u0447\u00bb \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0438\u0434\u0435\u043e \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u043e\u043c. \u0418\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438: 1) \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u0438\u043b\u0438 2) \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ca9\/394\/e11\/ca9394e116850c9c95506195eadbe537.png\" alt=\"\u0420\u0438\u0441. 13. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_video_test1(). \u0421\u043b\u0435\u0432\u0430 \u2014 \u043e\u0431\u0449\u0438\u0439 \u0432\u0438\u0434. \u0421\u043f\u0440\u0430\u0432\u0430 \u2014 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u0441 \u00ab\u0438\u0437\u043b\u043e\u043c\u043e\u043c\u00bb \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.\" title=\"\u0420\u0438\u0441. 13. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_video_test1(). \u0421\u043b\u0435\u0432\u0430 \u2014 \u043e\u0431\u0449\u0438\u0439 \u0432\u0438\u0434. \u0421\u043f\u0440\u0430\u0432\u0430 \u2014 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u0441 \u00ab\u0438\u0437\u043b\u043e\u043c\u043e\u043c\u00bb \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.\" width=\"2056\" height=\"691\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca9\/394\/e11\/ca9394e116850c9c95506195eadbe537.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 13. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_video_test1().<br \/> \u0421\u043b\u0435\u0432\u0430 \u2014 \u043e\u0431\u0449\u0438\u0439 \u0432\u0438\u0434. \u0421\u043f\u0440\u0430\u0432\u0430 \u2014 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u0441 \u00ab\u0438\u0437\u043b\u043e\u043c\u043e\u043c\u00bb \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 (36 \u043c\u0441) \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f (3,84 \u043c\u0441). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u0441 \u0442\u0435\u0445\u043d\u0438\u043a\u0430\u043c\u0438 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0442\u0435\u043a\u0441\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_video_test2()<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0435\u0439 SRAM \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 <strong>0x90001000<\/strong> \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430. \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043e\u0447\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_wait_vblank()<\/strong> \u0434\u043b\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>memcpy()<\/strong>:<\/p>\n<pre><code class=\"cpp\">void cga_video_test2(void) {           uint32_t t0 = get_mtime() &amp; 0xffffffff;           for(int y = 0; y &lt; 240; y += 16)                  for(int x = 0; x &lt; 320; x += 16)                          cga_bitblit((uint8_t*)cga_sprites[_sprite_idx], (uint8_t*)0x90001000, x + _x, y + _y, 16, 16,                                          CGA_VIDEO_WIDTH, CGA_VIDEO_HEIGHT);           cga_wait_vblank();           memcpy(CGA-&gt;FB, (uint8_t*)0x90001000, 19200);           uint32_t t1 = get_mtime() &amp; 0xffffffff;           printf(\"cga_video_test2: t = %lu uS\\r\\n\", t1 - t0);           _sprite_idx = (_sprite_idx + 1) % 11;  } <\/code><\/pre>\n<p> \u0412 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0432\u044b\u0437\u043e\u0432 <strong>cga_video_test1()<\/strong> \u043d\u0430 <strong>cga_video_test2()<\/strong>, \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 \u041f\u041b\u0418\u0421. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>Karnix ASB-254 test prog. Build 00907, date\/time: Sep  4 2024 22:02:05  Copyright (C) 2021-2024 Fabmicro, LLC., Tyumen, Russia.   Hardware init  Filling SRAM at: 0x90000000, size: 524288 bytes...  Checking SRAM at: 0x90000000, size: 524288 bytes...  ... Enabling SRAM...  SRAM enabled!  Filling video RAM at: 0xf0040000, size: 19200 bytes...  Checking video RAM at: 0xf0040000, size: 19200 bytes...  ... Hardware init done  cga_video_test2: t = 47012 uS  cga_video_test2: t = 47016 uS  cga_video_test2: t = 47009 uS  cga_video_test2: t = 47020 uS <\/code><\/pre>\n<p> \u041f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0432\u0448\u0438\u0441\u044c \u043a \u044d\u043a\u0440\u0430\u043d\u0443 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u00ab\u0438\u0437\u043b\u043e\u043c\u00bb \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0430\u043b (\u0440\u0438\u0441. 14), \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u043e\u0432 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0441\u043d\u0438\u0437\u0438\u043b\u0430\u0441\u044c \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0436\u0435 <strong>21 FPS<\/strong> (47 \u043c\u0441 \u043d\u0430 \u043a\u0430\u0434\u0440). \u041e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u2014 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u043f\u043e\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0446\u0435\u043b\u044b\u0439 \u043a\u0430\u0434\u0440 (\u043e\u043a\u043e\u043b\u043e 10 \u043c\u0441). \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <strong>memcpy()<\/strong> \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0447\u044c, \u043d\u0430\u043f\u043e\u043c\u043d\u044e \u0447\u0442\u043e \u043e\u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <strong>0,35 \u043c\u0441<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9e0\/f35\/cc2\/9e0f35cc2958d29e9bee6ca7bf6a4b1b.png\" alt=\" \u0420\u0438\u0441. 14. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_video_test2(). \u00ab\u0418\u0437\u043b\u043e\u043c\u00bb \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.  \" title=\" \u0420\u0438\u0441. 14. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_video_test2(). \u00ab\u0418\u0437\u043b\u043e\u043c\u00bb \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.  \" width=\"948\" height=\"731\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9e0\/f35\/cc2\/9e0f35cc2958d29e9bee6ca7bf6a4b1b.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 14. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_video_test2(). \u00ab\u0418\u0437\u043b\u043e\u043c\u00bb \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/em>  <\/figcaption><\/div>\n<\/figure>\n<p> \u0412\u0438\u0434\u0435\u043e \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0435\u0441\u0442\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: <a href=\"https:\/\/www.youtube.com\/watch?v=b2RDPzVEt38\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=b2RDPzVEt38<\/a><\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430\u0448\u0435\u0433\u043e CGA-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u0435-\u043a\u0430\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 \u0421\u0438. \u041c\u044b \u0435\u0449\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0443 \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u0443\u044e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u043f\u043e\u043a\u0430 \u0434\u0432\u0438\u043d\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p><a class=\"anchor\" name=\"9\" id=\"9\"><\/a><\/p>\n<h2> 9. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/h2>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0433\u043b\u0430\u0432\u0430\u0445 \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u0432 \u0432\u044b\u0432\u043e\u0434\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043d\u0430\u0448\u0435\u043c CGA-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 30 \u0441\u0442\u0440\u043e\u043a \u043f\u043e 80 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 32-\u043c\u044f \u0431\u0438\u0442\u0430\u043c\u0438, \u0437\u043d\u0430\u0447\u0430\u0449\u0438\u043c\u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043b\u0430\u0434\u0448\u0438\u0435 16 \u0431\u0438\u0442 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043d\u043e\u043c\u0435\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (0-255) \u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b &#8212; \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430 \u0438 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e 4 \u0431\u0438\u0442\u0430 \u043a\u0430\u0436\u0434\u044b\u0439. \u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 \u0431\u043b\u043e\u043a \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>fb_mem<\/strong> \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 20\u041a\u0411. \u0412\u0441\u0435\u0433\u043e \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0441\u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f 64 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0434\u0432\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0445\u0432\u043e\u0441\u0442\u0438\u043a\u043e\u043c. \u0420\u0430\u0437\u043c\u0435\u0440 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 (\u0441\u0438\u043c\u0432\u043e\u043b\u0430) \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c 8 \u0442\u043e\u0447\u0435\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 \u0438 16 \u043b\u0438\u043d\u0438\u0439 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0432\u044b\u0441\u043e\u0442\u0443, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0443 640&#215;480. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0443 \u2014 \u0432\u0441\u0435 \u0441\u0445\u0435\u043c\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438.<\/p>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0431\u0440\u0430\u0437\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u00ab\u0437\u0430\u0448\u0438\u0442\u044b\u0435\u00bb \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00ab\u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u00bb. \u0412\u043e\u043e\u0431\u0449\u0435, \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u0432\u0441\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043e\u0431\u0432\u044f\u0437\u043a\u043e\u0439 \u0438 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043d\u0430\u0434 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430\u0447\u043d\u0435\u043c \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p><a class=\"anchor\" name=\"9.1\" id=\"9.1\"><\/a><\/p>\n<h3> 9.1. \u0417\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/h3>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0441\u044f \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u041f\u0417\u0423, \u043d\u0435 \u043f\u043e\u0434\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b \u043d\u0438\u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041d\u0430\u0448\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0441 \u0446\u0435\u043b\u044c\u044e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u041f\u041b\u0418\u0421, \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e, \u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 <strong>.\/src\/main\/scala\/mylib\/CGA4HDMI.scala<\/strong>, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f <strong>fb_mem<\/strong> \u0438 \u0435\u0451 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u0448\u0438\u043d\u0435, \u043e\u043f\u0438\u0448\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">  \/\/ Define memory block for character generator    val chargen_mem = Mem(Bits(8 bits), wordCount = 16*256 ) \/\/ font8x16 x 256 <\/code><\/pre>\n<p> \u0411\u043b\u043e\u043a <strong>chargen_mem<\/strong>  \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 8 \u0431\u0438\u0442 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 16*256 = 4096 \u0448\u0442\u0443\u043a, \u0438\u043b\u0438 4\u041a\u0411. \u041a\u0430\u0436\u0434\u044b\u0439 \u0431\u0438\u0442 \u0441\u043b\u043e\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0430\u0441\u043a\u0443 \u043e\u0431\u0440\u0430\u0437\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (\u0433\u043b\u0438\u0444): \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u00ab1\u00bb \u0432 \u0431\u0438\u0442\u0435 \u043c\u0430\u0441\u043a\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u0430 \u00ab0\u00bb &#8212; \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0446\u0432\u0435\u0442\u043e\u043c \u0444\u043e\u043d\u0430. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0435 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043b\u0438\u0442\u0440\u043e\u0439, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0431\u043b\u043e\u043a\u043e\u043c <strong>palette_mem<\/strong>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 16 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u043e 32 \u0431\u0438\u0442\u0430 \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 xBGR (\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u00abR\u00bb \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u043c\u043b\u0430\u0434\u0448\u0438\u0445 8-\u043c\u0438 \u0431\u0438\u0442\u0430\u0445).<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u043b\u043e\u043a <strong>chargen_mem<\/strong> \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <strong>spinal.lib.misc.HexTools<\/strong>:<\/p>\n<pre><code class=\"scala\">  HexTools.initRam(chargen_mem, charGenHexFile, 0x0l) <\/code><\/pre>\n<p> \u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043d\u0430 \u0438\u043c\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u0442 \u044d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>charGenHexFile<\/strong>, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 <strong>Apb3CGA4HDMICtrl<\/strong> \u043f\u0440\u0438 \u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0435\u043c\u0443 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 <strong>&#171;font8x16x256.hex&#187;<\/strong> (\u0441\u043c. \u0441\u0430\u043c\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u0433\u043b\u0430\u0432\u044b \u00ab<em>8. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/em>\u00bb). \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0432 IntelHEX \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0432 \u0444\u0430\u0439\u043b \u0441 \u044d\u0442\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0432 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 SpinalHDL \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>chargen_mem<\/strong> \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0433\u043b\u0430\u0432\u0435 \u00ab<em>7.3. \u0410\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c CGA \u043f\u043e\u0434 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0438<\/em>\u00bb \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u0447\u0442\u043e \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b FreeBSD \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0440\u044b\u0435 \u0434\u043e\u0431\u0440\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438, \u0430 \u043f\u0430\u043c\u044f\u0442\u044c \u0431\u044b\u043b\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u0438 \u042d\u041b\u0422 \u043c\u043e\u043d\u0438\u0442\u043e\u0440. \u0412\u0441\u0451, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0432\u043e\u0434\u0438\u043b \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0442\u0443\u0442 \u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u0432 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u0430 \u043e\u0442\u0432\u0435\u0442 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0441\u044f \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435. \u041f\u043e\u0437\u0436\u0435, \u0441 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0441\u0442\u0430\u043b\u0438 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443, \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0438 \u042d\u041b\u0422 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u041f\u042d\u0412\u041c. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 FreeBSD \u0442\u043e\u0436\u0435 \u0443\u043c\u0435\u0435\u0442 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0432 \u0447\u0438\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u043e\u043b\u043e\u0447\u0435\u043a (\u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0434\u043b\u044f \u0438\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f). \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e CGA-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u044b \u0442\u043e\u0436\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b.<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c UTF-8, \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043e\u0434\u043d\u0438\u043c 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u044b\u043c \u0431\u0430\u0439\u0442\u043e\u043c. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u043e\u043c\u0438\u043c\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 ASCII, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0441 \u043a\u043e\u0434\u0430\u043c\u0438 \u043e\u0442 0 \u0434\u043e 127, \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u0441\u0435\u0432\u0434\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a (\u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432). \u041e\u0442\u043b\u0438\u0447\u0430\u043b\u0438\u0441\u044c \u043e\u043d\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0441 \u043a\u043e\u0434\u0430\u043c\u0438 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 128 \u0434\u043e 255. \u0414\u043b\u044f \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u042d\u0412\u041c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0441 DEC PDP-11 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 KOI7, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0437\u0436\u0435 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 KOI8-R \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b. \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 KOI8-R \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0438 \u043f\u0435\u0440\u0432\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u0435\u0446 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u00ab\u0414\u0415\u041c\u041e\u0421\u00bb, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Andrei_Chernov\" rel=\"noopener noreferrer nofollow\">\u0410\u043d\u0434\u0440\u0435\u0439 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u043e\u0432\u0438\u0447 \u0427\u0435\u0440\u043d\u043e\u0432<\/a>. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/FreeBSD_Core_Team\" rel=\"noopener noreferrer nofollow\">FreeBSD Core Team<\/a> c 1993 \u043f\u043e 2000 \u0433\u043e\u0434\u044b.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 FreeBSD \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 <strong>\/usr\/share\/syscons\/fonts\/<\/strong>. \u0412 \u043d\u0451\u043c \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 <strong>8&#215;16<\/strong> \u0438 \u043f\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 <strong>koi8<\/strong>:<\/p>\n<pre><code class=\"1c\">rz@butterfly:~ % freebsd-version  13.3-RELEASE-p2   rz@butterfly:~ % ll \/usr\/share\/syscons\/fonts | grep 8x16 | grep koi8  -r--r--r--  1 root  wheel   5676 Mar 12 04:20 koi8-r-8x16.fnt  -r--r--r--  1 root  wheel   5677 Mar 12 04:20 koi8-rb-8x16.fnt  -r--r--r--  1 root  wheel   5677 Mar 12 04:20 koi8-rc-8x16.fnt  -r--r--r--  1 root  wheel   5676 Mar 12 04:20 koi8-u-8x16.fnt <\/code><\/pre>\n<p> \u041e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b <strong>koi8-r-8&#215;16.fnt<\/strong>.<\/p>\n<p> \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u043e\u0439 \u041e\u0421 FreeBSD \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0435\u0451 \u0434\u0435\u0440\u0435\u0432\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u0438 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043e\u043d\u043b\u0430\u0439\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f: <a href=\"https:\/\/cgit.freebsd.org\/src\/plain\/share\/syscons\/fonts\/koi8-r-8x16.fnt\" rel=\"noopener noreferrer nofollow\">https:\/\/cgit.freebsd.org\/src\/plain\/share\/syscons\/fonts\/koi8-r-8&#215;16.fnt<\/a><\/p>\n<p> \u0424\u0430\u0439\u043b  <strong>koi8-r-8&#215;16.fnt<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u043a\u0441\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Uuencodinghttps:\/\/en.wikipedia.org\/wiki\/Uuencoding\" rel=\"noopener noreferrer nofollow\"><strong>uuencode<\/strong><\/a> \u2014 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0435\u0447\u0430\u0442\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0442\u0435\u043b\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435, \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u043b\u0438 \u0432 \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Usenethttps:\/\/en.wikipedia.org\/wiki\/Usenet\" rel=\"noopener noreferrer nofollow\">USENET<\/a>. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f Base64 \u2014 \u043e\u0431\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438, \u043d\u043e \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c.<\/p>\n<p> \u041d\u043e \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0441 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 uuencode \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439), \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>uudecode<\/strong> \u0438\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439. \u0412 \u041e\u0421 FreeBSD \u0434\u0430\u043d\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442, \u0430 \u0432 \u041e\u0421 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044f\u0434\u0440\u0430 Linux \u0434\u0430\u043d\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0430\u043a\u0435\u0442\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <strong>sharutils<\/strong> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p>  <code>$ sudo apt install sharutils<\/code><\/p>\n<p> \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0437\u043e\u0432\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>uudecode<\/strong> \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e (\u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e) \u0444\u0430\u0439\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0446\u0438\u044e <strong>-o &lt;filename.bin&gt;<\/strong>, \u0430 \u0440\u044f\u0434\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u041b\u0438\u0431\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u0435 \u0438 \u0434\u0430\u043b\u0435\u0435 \u043e\u043d\u0430 \u0441\u0430\u043c\u0430 \u0432\u043e \u0432\u0441\u0451\u043c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0442\u0441\u044f. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"1c\">$ uudecode -o koi8-r-8x16.bin \/usr\/share\/syscons\/fonts\/koi8-r-8x16.fnt   $ ls -al koi8-r-8x16.bin  -rw-r--r--  1 rz  rz  4096 Sep  8 04:35 koi8-r-8x16.bin <\/code><\/pre>\n<p> \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>koi8-r-8&#215;16.bin <\/strong>\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u043e\u0432\u043d\u043e 4 \u041a\u0411 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (16*256).<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Intel_HEX\" rel=\"noopener noreferrer nofollow\">IntelHEX<\/a> \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 SpinalHDL \u043f\u0430\u043a\u0435\u0442\u0430 <strong>HexTools<\/strong>. \u0424\u043e\u0440\u043c\u0430\u0442 InetlHEX \u0431\u044b\u043b \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d \u0432 1973 \u0433\u043e\u0434\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Intel \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u041f\u0417\u0423. \u0424\u043e\u0440\u043c\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u041f\u0417\u0423 \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435 \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044f\u0441\u044c \u0441 \u0438\u0445 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0424\u043e\u0440\u043c\u0430\u0442 IntelHEX \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u043e\u0431\u0435\u043d (\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443), \u0447\u0442\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043b\u0438\u0441\u0442\u0430\u0445 \u0431\u0443\u043c\u0430\u0433\u0438 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432 70-\u0445 \u0438 80-\u0445 \u0433\u043e\u0434\u0430\u0445 \u0440\u0430\u0434\u0438\u043e\u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0438, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0449\u0438\u043a\u0438 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0442\u0430\u043a \u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u2014 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 \u0432 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0434\u0430\u043c\u043f\u044b \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u041f\u0417\u0423, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 IntelHEX \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>objdump<\/strong>, \u043e\u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u0445, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432 GCC \u0438 \u0432 LLVM. \u0424\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<pre><code class=\"1c\">$ objcopy -I binary -O ihex koi8-r-8x16.bin font8x16x256.hex   $ ls -al font8x16x256.hex  -rw-rw-r-- 1 rz rz 11533 Sep  8 00:06 font8x16x256.hex<\/code><\/pre>\n<p> \u0427\u0442\u043e-\u0436, \u0444\u0430\u0439\u043b <strong>font8x16x256.hex<\/strong> \u0441 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p><a class=\"anchor\" name=\"9.2\" id=\"9.2\"><\/a><\/p>\n<h3> 9.2. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430<\/h3>\n<p>\u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>Apb3CGA4HDMICtrl<\/strong> \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>switch(video_mode)<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0435\u0442\u043e\u043a (video_mode == 2\u201cb00) \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430:<\/p>\n<pre><code class=\"scala\">      is(B\"00\") { \/\/ Text mode: 80x30 characters each 8x16 pixels          \/\/ To be implemented...       } <\/code><\/pre>\n<p> \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0431\u0435\u043b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u043b\u0430\u0433\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043b\u043e\u0432\u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430:<\/p>\n<pre><code class=\"scala\">        \/\/ Load flag active on each 6th and 7th pixel          word_load := (CounterX &gt;= U(horiz_back_porch - 8) &amp;&amp;  CounterX &lt; U(horiz_back_porch + horiz_active)) &amp;&amp;  (CounterY &lt; vert_back_porch + vert_active + 16) &amp;&amp;  ((CounterX &amp; U(6)) === U(6))           \/\/ Index of the 32 bit word in framebuffer memory: addr = (y \/ 16) * 80 + x\/8          word_address := ((CounterY - 16)(9 downto 4) * 80 +                           (CounterX - (horiz_back_porch - 8))(9 downto 3)).resized  <\/code><\/pre>\n<p> \u041a\u0430\u043a \u0438 \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u044b\u0436\u0438\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e ASCII \u043a\u043e\u0434 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0435\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b <strong>char_row<\/strong> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430, \u0438 \u0441\u0438\u0433\u043d\u0430\u043b <strong>char_mask<\/strong>, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0441\u043a\u0438. \u0421\u0438\u0433\u043d\u0430\u043b <strong>char_mask<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0442\u0440\u043e\u043a\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 (\u0442.\u00a0\u0435. \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 8-\u043c\u0438 \u0431\u0438\u0442):<\/p>\n<pre><code class=\"scala\">        val char_row = CounterY(3 downto 0)          val char_mask = Reg(Bits(8 bits))           when((CounterX &amp; 7) === 7) {            char_mask := B\"10000000\"          } otherwise {            char_mask := B\"0\" ## char_mask(7 downto 1)          } <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0421\u0438\u0433\u043d\u0430\u043b <strong>char_idx<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 (\u0442\u043e \u0435\u0441\u0442\u044c \u0435\u0433\u043e ASCII \u043a\u043e\u0434), \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u0437 8-\u043c\u0438 \u043c\u043b\u0430\u0434\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 <strong>word<\/strong>.<\/p>\n<pre><code class=\"scala\">        val char_idx = word(7 downto 0) <\/code><\/pre>\n<p> \u0422\u0430\u043a\u0436\u0435 \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430 (\u0431\u0438\u0442\u044b \u0441 11-\u0433\u043e \u043f\u043e 8-\u0439) \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0446\u0432\u0435\u0442\u0430 \u0444\u043e\u043d\u0430 (\u0431\u0438\u0442\u044b \u0441 19-\u0433\u043e \u043f\u043e 16-\u0439):<\/p>\n<pre><code class=\"scala\">        val char_fg_color = word(11 downto 8).asUInt          val char_bg_color = word(19 downto 16).asUInt <\/code><\/pre>\n<p> \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0438\u0437 \u0437\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u043b\u0438\u0444 (<strong>char_data<\/strong>) \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u00ab\u0441\u043a\u043b\u0435\u0438\u0442\u044c\u00bb \u0432\u043c\u0435\u0441\u0442\u0435 \u0431\u0438\u0442\u044b \u043d\u043e\u043c\u0435\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (<strong>char_idx<\/strong>) \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (<strong>char_row<\/strong>):<\/p>\n<pre><code class=\"scala\">        val char_data = chargen_mem((char_idx ## char_row).asUInt).asBits <\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043c \u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b <strong>char_fg_color<\/strong> \u0438 <strong>char_bg_color<\/strong> \u043a\u0430\u043a \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b <strong>palette_mem<\/strong>. \u0415\u0441\u043b\u0438 \u0431\u0438\u0442 \u0432 \u0433\u043b\u0438\u0444\u0435 <strong>char_data<\/strong>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0430\u0441\u043a\u0430 <strong>char_mask<\/strong>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u00ab1\u00bb, \u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u043e\u043c <strong>char_fg_color<\/strong>, \u0438\u043d\u0430\u0447\u0435 \u2014 \u0446\u0432\u0435\u0442\u043e\u043c <strong>char_bg_color<\/strong>. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0432\u0438\u0434\u0438\u043c\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043e \u0447\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u0438\u0433\u043d\u0430\u043b <strong>de<\/strong>, \u0442\u043e <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0443\u043b\u044f\u043c\u0438. \u0412\u0441\u0435 \u0432\u044b\u0448\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">        when(de) {             when((char_data &amp; char_mask) =\/= 0) {              \/\/ Draw character              red := palette_mem(char_fg_color).asBits(7 downto 0)              green := palette_mem(char_fg_color).asBits(15 downto 8)              blue := palette_mem(char_fg_color).asBits(23 downto 16)            } otherwise {              \/\/ Draw background              red := palette_mem(char_bg_color).asBits(7 downto 0)              green := palette_mem(char_bg_color).asBits(15 downto 8)              blue := palette_mem(char_bg_color).asBits(23 downto 16)            }           } otherwise {            red := 0            green := 0            blue := 0          } <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 HDMI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u0441\u0445\u0435\u043c\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0438 \u043e\u043d\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u044f\u0434\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430, \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043f\u043b\u0430\u0432\u043d\u0443\u044e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440.<\/p>\n<p><a class=\"anchor\" name=\"9.3\" id=\"9.3\"><\/a><\/p>\n<h3> 9.3. \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>Apb3CGA4HDMICtrl<\/strong> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0435\u0433\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <strong>make -f Makefile.Briey generate compile<\/strong>. <\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 <strong>karnix_extended_test<\/strong>, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0444\u0430\u0439\u043b <strong>src\/main.c<\/strong> \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_video_test3()<\/strong>:<\/p>\n<pre><code class=\"scala\">void cga_video_test3(void) {          uint32_t *fb = (uint32_t*) CGA-&gt;FB;           uint32_t t0 = get_mtime() &amp; 0xffffffff;           cga_wait_vblank();           for(int y = 0; y &lt; CGA_TEXT_HEIGHT_TOTAL; y++)                  for(int x = 0; x &lt; CGA_TEXT_WIDTH; x++) {                          if(x &lt; y)                                  fb[y * 80 + x] = ' ';                          else                                  fb[y * 80 + x] = ('0' + x % 80) &amp; 0xff;                           fb[y * 80 + x] |= (x &amp; 0x3) &lt;&lt; 8;                           fb[y * 80 + x] |= ((y&amp;3) &lt;&lt; 16);                  }           uint32_t t1 = get_mtime() &amp; 0xffffffff;           printf(\"cga_video_test3: text mode t = %lu uS, _y = %d\\r\\n\", t1 - t0, _y);  }<\/code><\/pre>\n<p> \u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u043e\u0442 0 \u0434\u043e ~ \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u044f \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0430 \u0440\u0438\u0441. 15.<\/p>\n<p>\u0417\u0430\u043c\u0435\u043d\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430 \u0432 \u0442\u0435\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong>:<\/p>\n<p>        cga_set_video_mode(CGA_MODE_GRAPHICS1);  <\/p>\n<p>\u043d\u0430<\/p>\n<p>       cga_set_video_mode(CGA_MODE_TEXT);  <\/p>\n<p> \u0418 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_video_test3()<\/strong> \u0432 \u0442\u0435\u043b\u043e \u0446\u0438\u043a\u043b\u0430 <strong>while()<\/strong> \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_video_test2()<\/strong>. <\/p>\n<p> \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>Karnix ASB-254 test prog. Build 00922, date\/time: Sep 15 2024 22:49:59            Copyright (C) 2021-2024 Fabmicro, LLC., Tyumen, Russia.                                                                                                             \u2026 cga_set_video_mode: mode = 0, ctrl = 0x80000000                                   cga_video_test3: text mode t = 4852 uS                                            cga_video_test3: text mode t = 12637 uS                                           cga_video_test3: text mode t = 12553 uS                                           cga_video_test3: text mode t = 12555 uS                                           cga_video_test3: text mode t = 12562 uS                                           cga_video_test3: text mode t = 12554 uS    <\/code><\/pre>\n<p> \u0418\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0441\u0442\u0430 (\u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f) \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 12,5 \u043c\u0441. \u0415\u0441\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_video_test3()<\/strong> \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0437\u0430\u043d\u044f\u043b\u043e 4,8 \u043c\u0441 \u2014 \u044d\u0442\u043e \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0440\u0435\u0434\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0432\u043f\u0430\u043b \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u0440\u0435\u043c\u044f \u0435\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0447\u0442\u0438 \u0434\u043e \u043d\u0443\u043b\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/30f\/ec0\/00a\/30fec000a05df5e9b2b32922936e4d7d.png\" alt=\" \u0420\u0438\u0441. 15. \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430.\" title=\" \u0420\u0438\u0441. 15. \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430.\" width=\"1560\" height=\"879\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/30f\/ec0\/00a\/30fec000a05df5e9b2b32922936e4d7d.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 15. \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430.<\/em><\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"9.4\" id=\"9.4\"><\/a><\/p>\n<h3> 9.4. \u041c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440<\/h3>\n<p>\u0423\u043b\u0443\u0447\u0448\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043d\u0430\u0448\u0435\u0433\u043e CGA-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e (\u0430\u0434\u0440\u0435\u0441\u0443\u0435\u043c\u043e\u0433\u043e) \u043c\u0438\u0433\u0430\u044e\u0449\u0435\u0433\u043e \u043a\u0443\u0440\u0441\u043e\u0440\u0430. \u0423 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043a\u0443\u0434\u0430 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d \u0432\u044b\u0432\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438\u043b\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0432\u0432\u043e\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (\u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0434\u043b\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u043d\u0438\u043c (\u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f).<\/p>\n<\/li>\n<\/ol>\n<p>\u0421 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u0443\u0440\u0441\u043e\u0440 \u044d\u0442\u043e \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0440\u0430: \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 X) \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Y). \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043a\u0443\u0440\u0441\u043e\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u043c \u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u00ab\u0437\u0430\u0431\u043e\u0439\u00bb \u0441 ASCII \u043a\u043e\u0434\u043e\u043c 255.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5a\/043\/d50\/a5a043d50a3b178e3bd6400d4c613743.gif\" alt=\" \u0420\u0438\u0441. 16. \u0411\u043b\u043e\u0447\u043d\u044b\u0439 \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440.\" title=\" \u0420\u0438\u0441. 16. \u0411\u043b\u043e\u0447\u043d\u044b\u0439 \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440.\" width=\"160\" height=\"65\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5a\/043\/d50\/a5a043d50a3b178e3bd6400d4c613743.gif\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 16. \u0411\u043b\u043e\u0447\u043d\u044b\u0439 \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u044b. \u041f\u0435\u0440\u0432\u044b\u0435 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b (\u0438\u043b\u0438 Video Display Units \u2014 VDUs) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e-\u043b\u0443\u0447\u0435\u0432\u044b\u0445 \u0442\u0440\u0443\u0431\u043e\u043a \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b 1950-\u0445 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u0430\u044f \u0438\u0433\u0440\u0430 \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Spacewar!\" rel=\"noopener noreferrer nofollow\">Spacewar!<\/a>\u00bb \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u043d\u0430 \u042d\u0412\u041c PDP-1 \u0432 1962 \u0433\u043e\u0434\u0443. \u041f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b <a href=\"https:\/\/en.wikipedia.org\/wiki\/IBM_2260\" rel=\"noopener noreferrer nofollow\">IBM 2260<\/a> \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 1964-\u043c. \u0415\u0433\u043e \u00ab\u043b\u043e\u0433\u0438\u043a\u0430\u00bb \u0431\u044b\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u0430\u0445, \u0430 \u043f\u0430\u043c\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u0442 240 \u0434\u043e 960 \u0431\u0430\u0439\u0442 (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u043e\u0434\u0435\u043b\u0438) \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 &#8212; \u043d\u0430 \u0430\u043a\u0443\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Delay-line_memoryhttps:\/\/en.wikipedia.org\/wiki\/Delay-line_memory\" rel=\"noopener noreferrer nofollow\">\u043b\u0438\u043d\u0438\u044f\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438<\/a>. \u0412\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b IBM 2260 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0441\u043e\u0431\u043e\u0439 \u0431\u043b\u043e\u0447\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u0435\u043a\u0441\u0442\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0415\u0433\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0441\u043d\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. IBM 2260 \u043d\u0435 \u0438\u043c\u0435\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<p><em>\u0418\u0434\u0435\u044e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u00ab\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u00bb \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 1968 \u0433\u043e\u0434\u0443 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b <\/em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Douglas_Engelbart\" rel=\"noopener noreferrer nofollow\"><em>\u0414\u0443\u0433\u043b\u0430\u0441 \u042d\u043d\u0433\u0435\u043b\u044c\u0431\u0430\u0440\u0442<\/em><\/a><em> \u2014 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u0437 \u0421\u0442\u044d\u043d\u0444\u043e\u0440\u0434\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 (HMI).  \u041e\u043d \u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u043c\u044b\u0448\u0438.<\/em><\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u043c \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u0441\u0442\u0430\u043b <a href=\"https:\/\/en.wikipedia.org\/wiki\/VT05\" rel=\"noopener noreferrer nofollow\">DEC VT05<\/a> (1970) \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0443\u0436\u0435 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u0448\u0435\u0432\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c \u0442\u043e\u043b\u0447\u043a\u043e\u043c \u043a \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432\u0432\u043e\u0434\u0430 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041d\u0430 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 VT05 \u043a\u0443\u0440\u0441\u043e\u0440 \u0438\u043c\u0435\u043b \u0444\u043e\u0440\u043c\u0443 \u00ab\u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f\u00bb &#8212; \u0432 \u0432\u0438\u0434\u0435 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0441\u044b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0438\u0437\u0443 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0439 \u043a\u0443\u0440\u0441\u043e\u0440 \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 \u0435\u0433\u043e \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445. \u0423\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, VT52, \u0441\u0442\u0430\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u00ab\u0434\u0435-\u0444\u0430\u043a\u0442\u043e\u00bb \u0434\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0445 (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445) \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 Unix \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u0412\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b VT100 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e (\u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u042d\u0412\u041c) \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u044d\u043a\u0440\u0430\u043d\u0430, \u043d\u043e \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 (\u0441\u0442\u0440\u0435\u043b\u043e\u043a) \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u043e\u0442 IBM \u0441\u0435\u0440\u0438\u0438 3270 (1971 \u0433\u043e\u0434) \u0431\u044b\u043b\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u043d\u0438\u0445 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u0432\u043e\u0434\u0430: \u043f\u0440\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 (insert mode) \u043a\u0443\u0440\u0441\u043e\u0440 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u043a\u0430\u043a \u0443\u0442\u043e\u043b\u0449\u0435\u043d\u043d\u044b\u0439 \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u0437\u043d\u0430\u043a \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f, \u0430 \u043f\u0440\u0438 \u0437\u0430\u043c\u0435\u043d\u0435 (overwrite) \u2014 \u043a\u0430\u043a \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430 IBM-\u043e\u0432\u0441\u043a\u0438\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0442.\u00a0\u043d. \u00abhalf-block\u00bb \u043a\u0443\u0440\u0441\u043e\u0440 \u2014 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043d\u0438\u0436\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>\u041f\u043e\u0447\u0442\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445 \u043a\u0443\u0440\u0441\u043e\u0440 \u0431\u044b\u043b \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u043c, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 3,75 \u0413\u0446 \u0438\u043b\u0438 7,5 \u0413\u0446. \u041d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445 \u0444\u043e\u0440\u043c\u0443 (\u0441\u0442\u0438\u043b\u044c) \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u043e\u043f\u0430\u0434\u0430\u043b \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 (\u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448). \u041f\u043e\u0437\u0436\u0435, \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445 \u0444\u043e\u0440\u043c\u0443 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ANSI ESC-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 &#8212; \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 0x1B (\u0438\u043b\u0438 ^[ \u0438\u043b\u0438 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u0430 Escape\u00bb). \u0412 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ESC-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0443, \u043d\u043e \u0438 \u0446\u0432\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043c\u0438\u0433\u0430\u043d\u0438\u044f, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043c\u0438\u0433\u0430\u043d\u0438\u044f. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0437 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 <strong>bash<\/strong> \u0432\u0432\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<p><code>$ echo -ne \"\\x1b[\\x33 q\";<\/code><\/p>\n<p>\u0438 \u043a\u0443\u0440\u0441\u043e\u0440 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u00ab\u043c\u0438\u0433\u0430\u044e\u0449\u0435\u0435 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u00bb. \u0410 \u043a\u043e\u043c\u0430\u043d\u0434\u0430<\/p>\n<p><code>$ echo -ne \"\\x1b]12;#00FF00\\a\"<\/code><\/p>\n<p> \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043e\u043b\u0434\u0441\u043a\u0443\u043b\u044c\u043d\u043e \u0437\u0435\u043b\u0451\u043d\u044b\u043c.<\/p>\n<p>\u041d\u043e \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0443 \u043e\u0442 IBM. \u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f P\u0421, \u0432 \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043a\u0430\u043a \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043a \u00ab\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u00bb, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043a\u0443\u0440\u0441\u043e\u0440\u0430. \u0411\u043b\u0430\u0433\u043e, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u042d\u041b\u0422 MC6845 \u0443\u0436\u0435 \u0438\u043c\u0435\u043b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043a\u0443\u0440\u0441\u043e\u0440\u0430, \u0444\u043e\u0440\u043c\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u0432\u0443\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u2014 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00ab\u043d\u0430\u0447\u0430\u043b\u043e \u043a\u0443\u0440\u0441\u043e\u0440\u0430\u00bb (R10) \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u00ab\u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430\u00bb (R11), \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0439 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430. \u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438\u043c\u0435\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 6 \u0438 7 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u043e\u0441\u044c \u0432 \u0432\u0438\u0434\u0435 \u0443\u0442\u043e\u043b\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f (\u0434\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430). \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043d\u0430 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0435 \u0431\u044b\u043b\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 3,745 \u0413\u0446,  \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u043d\u0430 \u0432 \u043e\u0431\u0445\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u042d\u041b\u0422 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b VSYNC \u043d\u0430 16. \u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u042d\u041b\u0422 \u0438\u043c\u0435\u043b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439, \u044d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 CGA \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f <a href=\"https:\/\/retrocomputing.stackexchange.com\/questions\/27803\/what-are-the-blinking-rates-of-the-caret-and-of-blinking-text-on-pc-graphics-car\" rel=\"noopener noreferrer nofollow\">\u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0441 \u0441\u0430\u0439\u0442\u0430 \u00abStackExchange\u00bb<\/a> \u043d\u0430 \u0442\u0435\u043c\u0443 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0438 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u0445 MDA \u0438 CGA:<\/p>\n<p><em>MDA, original card from IBM, reverse-engineered from schematics :<\/em><\/p>\n<p><em>The cursor blink signal is not handled by the Motorola 6845 CRTC. It is handled by dividing VSYNC with 74LS393 by 16, so it is on for 8 frames and off for 8 frames. As the original MDA has 16.257 MHz pixel clock, 882 dot clocks per HSYNC, and 370 lines per frame, the VSYNC rate is 49.816 Hz and cursor blinks at 3.114 Hz. Blinking text blinks at the cursor rate divided down by 2.<\/em><\/p>\n<p><em>CGA, original card from IBM, reverse engineered from schematics :<\/em><\/p>\n<p><em>Practically same as MDA but with different vertical rate causing different blink rate. VSYNC is externally divided by 16 with 74LS393 for cursor blink and again by two more for text blink. As the original CGA card runs from motherboard oscillator signal, the pixel clock is 315\/22 MHz, and as there are 912 dot clocks per HSYNC, and 262 lines per frame, the VSYNC rate is 59.923 Hz, and cursor blinks at 3.745 Hz. Text blink again with cursor rate divided by 2.<\/em><\/p>\n<p> \u0417\u0430\u0447\u0435\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c \u0438\u0437 IBM \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0432 \u042d\u041b\u0422 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0430 \u0441\u0432\u043e\u044e \u2014 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u044f\u0441\u043d\u043e. \u041c\u043e\u0451 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043a\u0430\u044f \u0444\u0438\u0447\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c, \u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c MC6845. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0445\u0435\u043c\u044b \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 (\u0430 \u043e\u043d\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439) \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0432 \u043e\u0431\u0445\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u043a\u0443\u0440\u0441\u043e\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435 \u0432 \u0441\u0435\u0431\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0412 \u0433\u043b\u0430\u0432\u0435 \u00ab<em>8. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/em>\u00bb \u043c\u044b \u0443\u0436\u0435 \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u043f\u043e\u0434 \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044f <strong>cursor_x<\/strong> \u0438 <strong>cursor_y<\/strong> \u0432 \u043e\u0431\u0449\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c <strong>cgaCtrl2Word<\/strong>. \u0422\u0430\u043c \u0436\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0434\u0432\u0430 \u043f\u043e\u043b\u044f <strong>cursor_bottom<\/strong> \u0438 <strong>cursor_top<\/strong> \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u043a\u0443\u0440\u0441\u043e\u0440\u0430. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u2014 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a\u0436\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <strong>cursor_blink<\/strong> \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0438 \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <strong>cursor_blink_enabled<\/strong> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043c\u0438\u0433\u0430\u043d\u0438\u044f. \u0414\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 (\u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c CGA \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e) \u043c\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 <strong>cursor_color<\/strong>. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u044f \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439:<\/p>\n<pre><code class=\"scala\">  val cursor_x = cgaCtrl2Word(6 downto 0).asUInt.addTag(crossClockDomain)    val cursor_y = cgaCtrl2Word(13 downto 8).asUInt.addTag(crossClockDomain)    val cursor_bottom = cgaCtrl2Word(19 downto 16).asUInt.addTag(crossClockDomain)    val cursor_top = cgaCtrl2Word(23 downto 20).asUInt.addTag(crossClockDomain)    val cursor_blink = cgaCtrl2Word(26 downto 24).asUInt.addTag(crossClockDomain)    val cursor_blink_enabled = cgaCtrl2Word(27).addTag(crossClockDomain)    val cursor_color = cgaCtrl2Word(31 downto 28).asUInt.addTag(crossClockDomain) <\/code><\/pre>\n<p> \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0432\u0432\u0435\u0434\u0435\u043c 7-\u043c\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0447\u0438\u0441\u043b\u0430 \u043a\u0430\u0434\u0440\u043e\u0432 <strong>CounterF<\/strong>, \u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 <strong>cursor_blink<\/strong> \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043d\u043e\u043c\u0435\u0440 \u0431\u0438\u0442\u0430 (\u0438\u043d\u0434\u0435\u043a\u0441) \u0432 \u044d\u0442\u043e\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0435 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043e\u043d\u043e\u0433\u043e \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430: \u00ab\u043a\u0443\u0440\u0441\u043e\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f\u00bb \u0438 \u00ab\u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f\u00bb. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0446\u0435\u043b\u044b\u0445 7 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0434\u043b\u044f \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u2014 \u043e\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0432 30 \u0413\u0446 (cursor_blink = 0) \u0434\u043e 0,8125 \u0413\u0446 (cursor_blink = 6). <\/p>\n<pre><code class=\"scala\">    val CounterF = Reg(UInt(7 bits)) \/\/ Frame counter, used for cursor blink feature      when(CounterX === 0 &amp;&amp; CounterY === 0) {        CounterF := CounterF + 1      } <\/code><\/pre>\n<p> \u0412\u0432\u0435\u0434\u0435\u043c \u0444\u043b\u0430\u0433 <strong>blink_flag<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u2014 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043c\u0435\u0449\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0430 \u043a\u0443\u0440\u0441\u043e\u0440 \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0438\u043b\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 (\u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435): \u0431\u0443\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0441\u0442\u0440\u043e\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <strong>char_row<\/strong> \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 <strong>cursor_top<\/strong> \u0438 <strong>cursor_bottom<\/strong>:<\/p>\n<pre><code class=\"scala\">          var blink_flag = CounterF(cursor_blink) &amp;&amp; cursor_blink_enabled &amp;&amp;                             char_row &gt;= cursor_top &amp;&amp; char_row &lt;= cursor_bottom <\/code><\/pre>\n<p> \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043b\u0438\u043d\u0438\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0446\u0432\u0435\u0442\u043e\u043c \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f. \u0418\u043d\u0430\u0447\u0435, \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0433\u043b\u0438\u0444\u043e\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430.<\/p>\n<p>\u0412\u0432\u0435\u0434\u0435\u043c \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <strong>x<\/strong> \u0438 <strong>y<\/strong>, \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0431\u0438\u0442\u043e\u0432 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432 <strong>CounterX<\/strong> \u0438 <strong>CounterY<\/strong>, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u043f\u043e X \u0438 \u043f\u043e Y:<\/p>\n<pre><code class=\"scala\">          var x = (CounterX - horiz_back_porch)(9 downto 3) \/\/ current ray column position            var y = (CounterY - vert_back_porch)(9 downto 4) \/\/ current ray raw position <\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0435\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>red<\/strong>, <strong>green<\/strong> \u0438 <strong>blue<\/strong> \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430:<\/p>\n<pre><code class=\"scala\">          when(x === cursor_x &amp;&amp; y === cursor_y &amp;&amp; blink_flag) {              \/\/ Implement blinking cursor              red := palette_mem(cursor_color).asBits(7 downto 0)              green := palette_mem(cursor_color).asBits(15 downto 8)              blue := palette_mem(cursor_color).asBits(23 downto 16)            } elsewhen((char_data &amp; char_mask) =\/= 0) {              \/\/ Draw character              red := palette_mem(char_fg_color).asBits(7 downto 0)              green := palette_mem(char_fg_color).asBits(15 downto 8)              blue := palette_mem(char_fg_color).asBits(23 downto 16)            } otherwise {              \/\/ Draw background              red := palette_mem(char_bg_color).asBits(7 downto 0)              green := palette_mem(char_bg_color).asBits(15 downto 8)              blue := palette_mem(char_bg_color).asBits(23 downto 16)            } <\/code><\/pre>\n<p> \u0417\u0430\u043c\u0435\u043d\u0438\u043c \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 <strong>switch(video_mode)<\/strong> \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f <strong>is(B&#187;00&#8243;)<\/strong>. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">      is(B\"00\") { \/\/ Text mode: 80x30 characters each 8x16 pixels           \/\/ Load flag active on each 6th and 7th pixel          word_load := (CounterX &gt;= U(horiz_back_porch - 8) &amp;&amp; CounterX &lt; U(horiz_back_porch + horiz_active)) &amp;&amp;                       (CounterY &lt; vert_back_porch + vert_active + 16) &amp;&amp; ((CounterX &amp; U(6)) === U(6))           \/\/ Index of the 32 bit word in framebuffer memory: addr = (y \/ 16) * 80 + x\/8          word_address := ((CounterY - 16)(9 downto 4) * 80 +                           (CounterX - (horiz_back_porch - 8))(9 downto 3)).resized           val char_row = CounterY_(3 downto 0)          val char_mask = Reg(Bits(8 bits))           val char_idx = word(7 downto 0)          val char_fg_color = word(11 downto 8).asUInt          val char_bg_color = word(19 downto 16).asUInt           when((CounterX &amp; 7) === 7) {            char_mask := B\"10000000\"          } otherwise {            char_mask := B\"0\" ## char_mask(7 downto 1)          }           val char_data = chargen_mem((char_idx ## char_row).asUInt).asBits           when(de) {             var x = (CounterX - horiz_back_porch)(9 downto 3) \/\/ current ray column position            var y = (CounterY - vert_back_porch)(9 downto 4) \/\/ current ray raw position            var blink_flag = CounterF(cursor_blink) &amp;&amp; cursor_blink_enabled &amp;&amp;                             char_row &gt;= cursor_top &amp;&amp; char_row &lt;= cursor_bottom             when(x === cursor_x &amp;&amp; y === cursor_y &amp;&amp; blink_flag) {              \/\/ Implement blinking cursor              red := palette_mem(cursor_color).asBits(7 downto 0)              green := palette_mem(cursor_color).asBits(15 downto 8)              blue := palette_mem(cursor_color).asBits(23 downto 16)            } elsewhen((char_data &amp; char_mask) =\/= 0) {              \/\/ Draw character              red := palette_mem(char_fg_color).asBits(7 downto 0)              green := palette_mem(char_fg_color).asBits(15 downto 8)              blue := palette_mem(char_fg_color).asBits(23 downto 16)            } otherwise {              \/\/ Draw background              red := palette_mem(char_bg_color).asBits(7 downto 0)              green := palette_mem(char_bg_color).asBits(15 downto 8)              blue := palette_mem(char_bg_color).asBits(23 downto 16)            }           } otherwise {            red := 0            green := 0            blue := 0          }        } <\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0443 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 <strong>make -f Makefile.Briey generate compile<\/strong>, \u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u041f\u041b\u0418\u0421 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432\u0441\u0451 \u0442\u043e \u0436\u0435 \u043f\u043e\u043b\u0435 \u0438\u0437 \u0440\u0430\u0437\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <strong>cga_video_test3()<\/strong>, \u043d\u043e \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u0431\u0443\u0434\u0435\u0442 \u043c\u0438\u0433\u0430\u0442\u044c \u0431\u0435\u043b\u044b\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u043e \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043d\u0430\u0448 \u043a\u0443\u0440\u0441\u043e\u0440!<\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b <strong>.\/src\/main\/c\/karnix_extended_test\/src\/cga.c<\/strong>:<\/p>\n<pre><code class=\"cpp\">void cga_set_cursor_xy(int x, int y) {          CGA-&gt;CTRL2 &amp;= ~CGA_CTRL2_CURSOR_X;          CGA-&gt;CTRL2 |= (x &amp; 0xff) &lt;&lt; CGA_CTRL2_CURSOR_X_SHIFT;          CGA-&gt;CTRL2 &amp;= ~CGA_CTRL2_CURSOR_Y;          CGA-&gt;CTRL2 |= (y &amp; 0xff) &lt;&lt; CGA_CTRL2_CURSOR_Y_SHIFT;  }    void cga_set_cursor_style(int top, int bottom) {          CGA-&gt;CTRL2 &amp;= ~CGA_CTRL2_CURSOR_TOP;          CGA-&gt;CTRL2 |= (top &amp; 0x0f) &lt;&lt; CGA_CTRL2_CURSOR_TOP_SHIFT;          CGA-&gt;CTRL2 &amp;= ~CGA_CTRL2_CURSOR_BOTTOM;          CGA-&gt;CTRL2 |= (bottom &amp; 0x0f) &lt;&lt; CGA_CTRL2_CURSOR_BOTTOM_SHIFT;  }    inline int cga_get_cursor_x(void) {          return (CGA-&gt;CTRL2 &gt;&gt; CGA_CTRL2_CURSOR_X_SHIFT) &amp; 0xff;  }    inline int cga_get_cursor_y(void) {          return (CGA-&gt;CTRL2 &gt;&gt; CGA_CTRL2_CURSOR_Y_SHIFT) &amp; 0xff;  }<\/code><\/pre>\n<p> \u0418 \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>.\/src\/main\/c\/karnix_extended_test\/src\/cga.h:<\/strong><\/p>\n<pre><code class=\"cpp\">void cga_set_cursor_xy(int x, int y);  void cga_set_cursor_style(int top, int bottom);  inline int cga_get_cursor_x(void);  inline int cga_get_cursor_y(void); <\/code><\/pre>\n<p> \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0438 \u0435\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_video_test3()<\/strong> \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <strong>.\/src\/main.c<\/strong> \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <strong>karnix_extended_test<\/strong>:<\/p>\n<pre><code class=\"cpp\">void cga_video_test3(void) {           ...          cga_wait_vblank();           cga_set_cursor_xy(2, 1);           cga_set_cursor_style(10, 14);           ... }<\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0421\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0435\u0433\u043e \u0432 \u041f\u041b\u0418\u0421,  \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u044d\u0442\u043e \u0436\u0435 \u043f\u043e\u043b\u0435 \u0438\u0437 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043d\u043e \u043a\u0443\u0440\u0441\u043e\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0435\u0442\u044c\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0441\u0432\u043e\u044e \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u00ab\u0436\u0438\u0440\u043d\u043e\u0435 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u00bb.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u0441 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u0438 \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u043e\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u043c\u0435\u0447\u0443 \u043b\u0438\u0448\u044c, \u0447\u0442\u043e \u043a\u0443\u0440\u0441\u043e\u0440 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0443\u0441\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u043f\u0438\u0448\u0435\u0442 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0432\u043e\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p><a class=\"anchor\" name=\"9.5\" id=\"9.5\"><\/a><\/p>\n<h3> 9.5. \u041f\u043b\u0430\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 (\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>\u041f\u043e\u0434 \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u043e\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (smooth vertical scrolling) \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043b\u0438\u043d\u0438\u0439 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u0448\u0430\u0433\u043e\u043c \u0432 \u043e\u0434\u043d\u0443 \u043b\u0438\u043d\u0438\u044e. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0444\u0438\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u00ab\u043e\u043a\u043d\u043e\u00bb \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0434\u043d\u0443 \u043b\u0438\u043d\u0438\u044e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u0430 \u0444\u0438\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 &#8212; \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e, \u0442\u0430\u043a \u0438 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e.<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b DEC \u0438 Wyse \u0438\u043c\u0435\u043b\u0438 \u0440\u0435\u0436\u0438\u043c \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b 1970-\u0445, \u0432 DEC VT100 (1978\u0433) \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u044d\u0442\u0430 \u0444\u0438\u0447\u0430. \u041d\u0430 IBM PC \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 IBM VGA (1987), \u043d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0438\u0447\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u041f\u041e (\u043d\u0438 \u0432 BIOS, \u043d\u0438 \u0432 MS-DOS), \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u2014 \u0441 \u0448\u0430\u0433\u043e\u043c \u0432 \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u043e, \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 IBM PC\/AT \u043f\u0440\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0438\u0447\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u043b\u043e\u0441\u044c. \u0412 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043c\u0435\u043b\u0438 \u0431\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u043f\u043b\u0430\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u0439 \u042d\u0412\u041c \u0423\u041a\u041d\u0426 \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u041c\u0421 0511 \u0432 \u0434\u0430\u043b\u0435\u043a\u043e\u043c 1989 \u0433\u043e\u0434\u0443 \u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u043b\u043e \u043d\u0430 \u043c\u0435\u043d\u044f \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435. \u041f\u043e\u0437\u0436\u0435 \u043c\u043d\u0435 \u0434\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u043c Wyse 60, \u0433\u0434\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u043f\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430. \u0410 \u0432\u043e\u0442 \u0432 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 UNIX \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0442\u0430\u043a\u043e\u0439 \u0444\u0438\u0447\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>\u041d\u0430\u0448\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430 (\u0438\u043b\u0438 \u0442\u043e\u0447\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f) \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u043e\u0432. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0435\u0451 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442 &#8212; \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b, \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f <strong>scroll_v<\/strong>. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <strong>CounterY<\/strong> \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, <strong>CounterY_,<\/strong> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u043e \u043d\u0430 <strong>scroll_v<\/strong> \u0441\u0442\u0440\u043e\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <strong>scroll_v_dir<\/strong>:<\/p>\n<pre><code class=\"scala\">val CounterY_ = (scroll_v_dir ? (CounterY - BufferCC(scroll_v)) |                  (CounterY + BufferCC(scroll_v)))<\/code><\/pre>\n<p> \u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b <strong>scroll_v<\/strong> \u0438 <strong>CounterY_<\/strong> \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c. \u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <strong>scroll_v<\/strong> \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0431\u0443\u0444\u0435\u0440 <strong>BufferCC<\/strong>. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <strong>scroll_v_dir<\/strong> \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0431\u0443\u0444\u0435\u0440, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0434\u043a\u043e, \u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430 \u043a\u043e\u0434\u0430 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">      is(B\"01\") { \/\/ Graphics mode: 320x240, 2 bits per PEL with full color palette           ...         \/\/ Index of the 32 bit word in framebuffer memory: addr = y\/2 * 20 + x\/2\/16          word_address := ((CounterY_ - 16)(9 downto 1) * 20 + CounterX(9 downto 5)).resized <\/code><\/pre>\n<p> \u0414\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0449\u0435 \u0440\u044f\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439: \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u043e\u043a\u0438 <strong>char_row<\/strong> \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 <strong>y<\/strong>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0443\u044e \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430. \u041f\u043e\u043f\u0440\u0430\u0432\u043a\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">      is(B\"00\") { \/\/ Text mode: 80x30 characters each 8x16 pixels           ...         \/\/ Index of the 32 bit word in framebuffer memory: addr = (y \/ 16) * 80 + x\/8          word_address := ((CounterY_ - 16)(9 downto 4) * 80 +                           (CounterX - (horiz_back_porch - 8))(9 downto 3)).resized           val char_row = CounterY_(3 downto 0)          ...         when(de &amp;&amp; blanking_not_enabled) {             var x = (CounterX - horiz_back_porch)(9 downto 3) \/\/ current ray column position            var y = (CounterY_ - vert_back_porch)(9 downto 4) \/\/ current ray raw position            ...<\/code><\/pre>\n<p> \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <strong>CounterY_<\/strong> \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c <strong>CounterY<\/strong> \u043d\u0430 <strong>CounterY_<\/strong> \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0440\u0430\u0441\u0447\u0435\u0442 <strong>CounterY<\/strong>, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>hSync<\/strong> \u0438 <strong>vSync<\/strong>!<\/p>\n<p> \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043b\u0430\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0442\u0435\u043b\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong> \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>.\/src\/main.c<\/strong> \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <strong>scroll_v<\/strong> \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e  <strong>cga_set_scroll()<\/strong>:<\/p>\n<pre><code class=\"cpp\">                #if CGA_VIDEO_TEST == CGA_TEST_TEXT                  {                          static int _scroll = 0;                           if(GPIO-&gt;INPUT &amp; GPIO_IN_KEY0)                                  _scroll--;                           if(GPIO-&gt;INPUT &amp; GPIO_IN_KEY3)                                  _scroll++;                           cga_wait_vblank();                          cga_set_scroll(_scroll);                  }                  #endif <\/code><\/pre>\n<p> \u0412 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0444\u0430\u0439\u043b\u0430 <strong>.\/src\/main.c<\/strong> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043c\u0430\u043a\u0440\u043e <strong>CGA_VIDEO_TEST<\/strong> \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <strong>CGA_TEST_TEXT<\/strong> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_set_scroll()<\/strong> \u0432 \u0444\u0430\u0439\u043b <strong>.\/src\/cga.c<\/strong>. \u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f <strong>scroll_v<\/strong> \u0438 \u0444\u043b\u0430\u0433\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <strong>scroll_v_dir<\/strong> \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <strong>scrl<\/strong>:<\/p>\n<pre><code class=\"cpp\">\/*   * Set vertical scroll register value to scrl. Resulting effect is:   * negative value - scroll up scrl scan-lines,   * positive value - scroll down scrl scan-lines,   * zero value - no scroll.   *\/  void cga_set_scroll(int scrl) {          CGA-&gt;CTRL &amp;= ~CGA_CTRL_V_SCROLL;          if(scrl &gt;= 0) {                  CGA-&gt;CTRL &amp;= ~CGA_CTRL_V_SCROLL_DIR;                  CGA-&gt;CTRL |= (scrl &lt;&lt; CGA_CTRL_V_SCROLL_SHIFT) &amp; CGA_CTRL_V_SCROLL;          } else {                  CGA-&gt;CTRL |= CGA_CTRL_V_SCROLL_DIR;                  CGA-&gt;CTRL |= ((-scrl) &lt;&lt; CGA_CTRL_V_SCROLL_SHIFT) &amp; CGA_CTRL_V_SCROLL;          }  }<\/code><\/pre>\n<p> \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b <strong>.\/src\/cga.h<\/strong>:<\/p>\n<pre><code class=\"scala\">void cga_set_scroll(int scrl);<\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u043c\u044b \u043e\u043f\u044f\u0442\u044c \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u043e\u0441\u044b \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0438 KEY0 \u0438 KEY3 \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043d\u0438\u0437 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 1024 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0438 \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0441 \u043d\u0435\u0439 \u0443\u0445\u043e\u0434\u0438\u0442 \u0438 \u043a\u0443\u0440\u0441\u043e\u0440. \u0415\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u043d\u0435 \u0441\u0430\u043c \u0442\u0435\u043a\u0441\u0442 \u0432 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0444\u0435\u0440\u0435, \u0430 \u00ab\u043e\u043a\u043d\u043e\u00bb \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u0427\u0430\u0441\u0442\u043e \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0444\u0435\u0440\u0435. \u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u044b\u043c  \u043c\u0435\u0442\u043e\u0434\u043e\u043c (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0432 \u0440\u0430\u043c\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 (15 \u043b\u0438\u043d\u0438\u0439) \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u00ab\u043e\u043a\u043d\u0430\u00bb, \u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e 16-\u044e \u043b\u0438\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\/\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0444\u0435\u0440\u0435 \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u043a\u043d\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 (\u043d\u0443\u043b\u0435\u0432\u043e\u0435) \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u0432\u0443\u0445 \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, <strong>cga_text_scroll_up()<\/strong> \u0438 <strong>cga_text_scroll_down()<\/strong>, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"cpp\">void cga_text_scroll_up(int scroll_delay) {          uint32_t *fb = (uint32_t*) CGA-&gt;FB;           CGA-&gt;CTRL2 &amp;= ~CGA_CTRL2_CURSOR_BLINK_EN;          CGA-&gt;CTRL &amp;= ~CGA_CTRL_V_SCROLL_DIR;           for(int i = 0; i &lt; 16; i++) {                  cga_wait_vblank();                  CGA-&gt;CTRL &amp;= ~CGA_CTRL_V_SCROLL;                  CGA-&gt;CTRL |= (i &amp; 0x0f) &lt;&lt; CGA_CTRL_V_SCROLL_SHIFT;                  delay_us(scroll_delay);          }           cga_wait_vblank();           for(int col = 0; col &lt; CGA_TEXT_WIDTH; col++) {                  uint32_t tmp = fb[col];                  for(int row = 0; row &lt; CGA_TEXT_HEIGHT_TOTAL - 1; row++) {                          fb[row * CGA_TEXT_WIDTH + col] = fb[row * CGA_TEXT_WIDTH + col + CGA_TEXT_WIDTH];                  }                  fb[(CGA_TEXT_HEIGHT_TOTAL - 1) * CGA_TEXT_WIDTH + col] = tmp;          }           CGA-&gt;CTRL &amp;= ~CGA_CTRL_V_SCROLL;          CGA-&gt;CTRL2 |= CGA_CTRL2_CURSOR_BLINK_EN;  }   void cga_text_scroll_down(int scroll_delay) {          uint32_t *fb = (uint32_t*) CGA-&gt;FB;           CGA-&gt;CTRL2 &amp;= ~CGA_CTRL2_CURSOR_BLINK_EN;          CGA-&gt;CTRL |= CGA_CTRL_V_SCROLL_DIR;           for(int i = 0; i &lt; 16; i++) {                  cga_wait_vblank();                  CGA-&gt;CTRL &amp;= ~CGA_CTRL_V_SCROLL;                  CGA-&gt;CTRL |= (i &amp; 0x0f) &lt;&lt; CGA_CTRL_V_SCROLL_SHIFT;                  delay_us(scroll_delay);          }           cga_wait_vblank();           for(int col = 0; col &lt; CGA_TEXT_WIDTH; col++) {                  uint32_t tmp = fb[(CGA_TEXT_HEIGHT_TOTAL - 1) * CGA_TEXT_WIDTH + col];                  for(int row = CGA_TEXT_HEIGHT_TOTAL - 1; row &gt; 0; row--) {                          fb[row * CGA_TEXT_WIDTH + col] = fb[row * CGA_TEXT_WIDTH + col - CGA_TEXT_WIDTH];                  }                  fb[col] = tmp;          }           CGA-&gt;CTRL &amp;= ~CGA_CTRL_V_SCROLL;          CGA-&gt;CTRL2 |= CGA_CTRL2_CURSOR_BLINK_EN;  }<\/code><\/pre>\n<p> \u041e\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>scroll_delay<\/strong>, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u043a\u043d\u0430, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0434\u043e\u0431\u0438\u0432\u0430\u044f\u0441\u044c \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0433\u043b\u0430\u0437\u0443 \u044d\u0444\u0444\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main() \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">                #if CGA_VIDEO_TEST == CGA_TEST_TEXT_SCROLL                  {                          if(GPIO-&gt;INPUT &amp; GPIO_IN_KEY0)                                  cga_text_scroll_up(500);                           if(GPIO-&gt;INPUT &amp; GPIO_IN_KEY3)                                  cga_text_scroll_down(500);                  }                  #endif <\/code><\/pre>\n<p> \u0418 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043c\u0430\u043a\u0440\u043e <strong>CGA_VIDEO_TEST<\/strong> \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <strong>CGA_TEST_TEXT_SCROLL<\/strong> \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0444\u0430\u0439\u043b\u0430 <strong>.\/src\/main.c<\/strong>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438 KEY0 \u0438 KEY3, \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0438 \u043f\u043b\u0430\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0443\u0440\u0441\u043e\u0440 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u043c\u0435\u0441\u0442\u0435. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0443 \u043d\u0430\u0441 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432 \u0441\u0432\u043e\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432 \u0434\u0443\u0445\u0435 MS-DOS.<\/p>\n<p><a class=\"anchor\" name=\"10\" id=\"10\"><\/a><\/p>\n<h2> 10. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b<\/h2>\n<p>\u041c\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043f\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0431\u044b\u043b \u0431\u044b \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u043c \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u044f\u0434\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 (\u0438\u043b\u0438 \u00ab\u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432\u00bb) \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0433\u0440 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0434\u0430\u0431\u044b \u0445\u043e\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u0432\u044b\u0441\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u0434 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043a\u0443\u0434\u043d\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432. \u0418 \u0441\u043a\u0430\u0436\u0443 \u0412\u0430\u043c, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u0442\u0430\u043a\u043e\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u043e \u0432\u043e\u0441\u0442\u043e\u0440\u0433 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0440\u044e\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0446\u0432\u0435\u0442\u043e\u0432. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0430\u0434\u0430\u043f\u0442\u0435\u0440 IBM CGA \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u0438\u0437 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043a\u0443\u0434\u043d\u043e\u0439 \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u0412 \u0433\u043b\u0430\u0432\u0435 \u00ab<em>7.1. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/em>\u00bb \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 CGA \u0438\u043c\u0435\u043b \u0432\u044b\u0445\u043e\u0434 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 NTSC \u043f\u0440\u0438 \u0432\u044b\u0432\u043e\u0434\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432 \u0440\u044f\u0434\u043e\u043c \u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0433\u0440\u044b \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u043b\u0438 \u043a \u044d\u0442\u043e\u043c\u0443 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0437\u0430\u0441\u0442\u0430\u0432\u043a\u0443 \u043a \u0438\u0433\u0440\u0435 (\u0441\u043c. \u0440\u0438\u0441. 10) \u0432\u0438\u0434\u0438\u043c\u0443\u044e \u0445\u043e\u0442\u044f \u0431\u044b \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0435. \u042d\u0442\u043e\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u00abcomposite artifact colors\u00bb (\u0446\u0432\u0435\u0442\u0430 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432) \u0438 \u0431\u044b\u043b \u043e\u043d \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c.<\/p>\n<p><a class=\"anchor\" name=\"10.1\" id=\"10.1\"><\/a><\/p>\n<h3>10.1. \u0412\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0435 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432<\/h3>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 \u0441 HDMI\/DVI-D \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c, \u043d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u2014 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u044f \u0434\u0432\u0430 \u0446\u0432\u0435\u0442\u0430 \u043f\u0443\u0442\u0435\u043c \u043f\u043e\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u043c\u0435\u043d\u044b \u0447\u0430\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439, \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u0430\u0437 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u041a\u0430\u043a \u043c\u044b \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043d\u0430\u043c\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u043c\u0435\u043d\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0444\u0435\u0440\u0435 \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430, \u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a 60 \u0413\u0446. \u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u0442\u0440\u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0443 \u043d\u0430\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u0430 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0447\u0435\u0440\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435), \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0449\u0435 \u0442\u0440\u0438: \u00ab\u0436\u0435\u043b\u0442\u044b\u0439\u00bb (yellow) \u2014 \u043a\u0430\u043a \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u00ab\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e\u00bb \u0438 \u00ab\u0437\u0435\u043b\u0435\u043d\u043e\u0433\u043e\u00bb, \u00ab\u0433\u043e\u043b\u0443\u0431\u043e\u0439\u00bb (cyan) \u2014 \u043a\u0430\u043a \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u00ab\u0437\u0435\u043b\u0435\u043d\u043e\u0433\u043e\u00bb \u0438 \u00ab\u0441\u0438\u043d\u0435\u0433\u043e\u00bb, \u0438 \u00ab\u0440\u043e\u0437\u043e\u0432\u044b\u0439\u00bb (magenta) \u2014 \u043a\u0430\u043a \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u00ab\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e\u00bb \u0438 \u00ab\u0441\u0438\u043d\u0435\u0433\u043e\u00bb. \u0417\u0434\u0435\u0441\u044c \u044f \u0431\u0435\u0440\u0443 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432 \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e 24-\u043c\u044f \u0431\u0438\u0442\u0430\u043c\u0438 (\u0431\u043e\u0433\u0430\u0442\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 &#8212; \u044d\u0442\u043e \u0444\u0438\u0447\u0430 \u043d\u0430\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430), \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0440\u044e\u043a \u0441\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0441\u0451 \u0442\u0430\u043a \u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u0446\u0432\u0435\u0442. \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u0438 \u00ab\u0447\u0435\u0440\u043d\u044b\u0439\u00bb, \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u00ab\u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043d\u044b\u0445\u00bb \u0446\u0432\u0435\u0442\u043e\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0448\u0435\u0441\u0442\u044c, \u0430 \u0432 \u0441\u0443\u043c\u043c\u0435 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u2014 \u0434\u0435\u0441\u044f\u0442\u044c. \u0415\u0449\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0442\u0440\u044e\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e. \u0412 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c 16 \u0446\u0432\u0435\u0442\u043e\u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u0447\u0442\u043e, \u0432 \u0442\u0435\u043e\u0440\u0438\u0438, \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u043d\u0430\u043c \u0430\u0436 120 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u0430!<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043c\u0435\u0448\u0430\u0442\u044c \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u0430 &#8212; \u043a\u0440\u0430\u0441\u043d\u044b\u0439, \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u0438 \u0441\u0438\u043d\u0438\u0439. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435: \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0448\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u2014 \u0442\u0440\u0451\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0442\u0440\u0435\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043d\u044b\u0445. \u0414\u043b\u044f \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f, \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0432 \u043d\u0438\u0436\u043d\u0438\u0445 \u0442\u0440\u0451\u0445 \u0447\u0430\u0441\u0442\u044f\u0445, \u0442.\u00a0\u0435. \u0442\u0430\u043c \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0442\u0435\u043b\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong> \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>CGA_VIDEO_TEST<\/strong> \u0432 <strong>CGA_TEST_VIDEOFX_TEXTFLIC:<\/strong><\/p>\n<pre><code class=\"cpp\">                #define CGA_VIDEO_TEST    CGA_TEST_VIDEOFX_TEXTFLIC    ...                  #if CGA_VIDEO_TEST == CGA_TEST_VIDEOFX_TEXTFLIC                  {                                 uint32_t *fb = (uint32_t*) CGA-&gt;FB;                                                    cga_wait_vblank();                                                    for(int i = 0; i &lt; 80*5; i++) {                                  fb[80 *  0] = 0x00000131;                                  fb[80 *  5] = 0x00000232;                                  fb[80 * 10] = 0x00000333;                                  fb[80 * 15] = 0x00000134;                                  fb[80 * 20] = 0x00000235;                                  fb[80 * 25] = 0x00000336;                                  fb++;                          }                                                    fb = (uint32_t*) CGA-&gt;FB;                                                    cga_wait_vblank();                                                    for(int i = 0; i &lt; 80*5; i++) {                                  fb[80 *  0] = 0x00000131;                                  fb[80 *  5] = 0x00000232;                                  fb[80 * 10] = 0x00000333;                                  fb[80 * 15] = 0x00000234;                                  fb[80 * 20] = 0x00000335;                                  fb[80 * 25] = 0x00000136;                                  fb++;                          }                  }                  #endif  <\/code><\/pre>\n<p> \u041f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0432 \u043a\u043e\u0434 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u0440\u0438\u0441. 17.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8c4\/f3c\/af2\/8c4f3caf2c3ef9546a3f7b1b1f3f817b.png\" alt=\"\u0420\u0438\u0441. 17. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0433\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f. \u0421\u043b\u0435\u0432\u0430 \u2014 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0431\u0435\u0437 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u044b\u0442\u043e\u0435 \u0438 \u0432\u0438\u0434\u043d\u044b \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b.\" title=\"\u0420\u0438\u0441. 17. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0433\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f. \u0421\u043b\u0435\u0432\u0430 \u2014 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0431\u0435\u0437 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u044b\u0442\u043e\u0435 \u0438 \u0432\u0438\u0434\u043d\u044b \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b.\" width=\"1560\" height=\"465\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c4\/f3c\/af2\/8c4f3caf2c3ef9546a3f7b1b1f3f817b.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 17. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0433\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f. \u0421\u043b\u0435\u0432\u0430 \u2014 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0431\u0435\u0437 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u044b\u0442\u043e\u0435 \u0438 \u0432\u0438\u0434\u043d\u044b \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0430\u0436\u043d\u043e! \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0442\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u00ab\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a\u00bb \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043d\u0435 \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0430 (\u0438\u043b\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438) \u0432 \u043a\u043e\u0434\u0435 \u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>cga_wait_vblank()<\/strong>. \u0415\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c, \u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u0443 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u043c. \u0418 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u0441 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0442\u043a\u0438\u043c \u0438 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043e\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u043c \u0432 \u0436\u0435\u043b\u0442\u044b\u0439, \u0433\u043e\u043b\u0443\u0431\u043e\u0439 \u0438 \u0440\u043e\u0437\u043e\u0432\u044b\u0439 \u0446\u0432\u0435\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u0440\u0438 \u0441\u044a\u0451\u043c\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u044e\u043a\u0430 \u0441 \u044d\u043a\u0440\u0430\u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043d\u0430 \u043a\u0430\u043c\u0435\u0440\u0443 \u043c\u043e\u0435\u0433\u043e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430, \u044f \u043e\u0436\u0438\u0434\u0430\u043b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0440\u043e\u0431\u043e\u0441\u043a\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u043e\u0434 \u0442\u0438\u043f \u0442\u0435\u0445, \u0447\u0442\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u044a\u0451\u043c\u043a\u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u042d\u041b\u0422 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 &#8212; \u043c\u0438\u0433\u0430\u044e\u0449\u0430\u044f \u0447\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u043b\u043e\u0441\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041d\u043e \u0441\u0442\u0440\u043e\u0431\u043e\u0441\u043a\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043d\u0435 \u043f\u0440\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u043c\u0435\u0440\u0435 \u043e\u0447\u0435\u043d\u044c \u0447\u0435\u0442\u043a\u043e\u0435, \u0431\u0435\u0437 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0439. \u0410 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f \u043a \u044d\u043a\u0440\u0430\u043d\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c, \u0442\u043e \u043b\u0435\u0433\u043a\u043e\u0435 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0435 \u0432\u0441\u0451 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c.<\/p>\n<p>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c (\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c) \u0434\u0432\u0435 \u0441\u043b\u0435\u0433\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043a\u043e\u043f\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043d\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c. \u041d\u043e \u044d\u0442\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043b\u0435\u0433\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432. \u041d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 IBM PC \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0432 \u0432\u0438\u0434\u0443 \u043d\u0438\u0437\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043a \u0447\u0435\u043c\u0443 \u0442\u0430\u043a\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 &#8212; \u044d\u0442\u043e \u043a \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u043c\u0438\u0433\u0430\u044e\u0449\u0435\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<\/p>\n<p><a class=\"anchor\" name=\"10.2\" id=\"10.2\"><\/a><\/p>\n<h3> 10.2. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/h3>\n<p>\u0412 \u043d\u0430\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 CGA-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0446\u0432\u0435\u0442 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u0438\u0437 \u0442\u0435\u0445, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0442\u0440\u0435\u043c\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 R, G \u0438 B \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e 8 \u0431\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439. \u0415\u0449\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u043b\u0443\u0447\u0430\u00bb \u0447\u0435\u0440\u0435\u0437 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b <strong>vi_area.hSync <\/strong>\u0438 <strong>dvi_area.vSync<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <strong>cgaCtrlWord[21:20]<\/strong>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b <strong>hSync<\/strong> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u00ab\u043b\u0443\u0447\u00bb \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0445\u043e\u0434 \u0441 \u043a\u043e\u043d\u0446\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043b\u0438\u043d\u0438\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0441\u0438\u0433\u043d\u0430\u043b <strong>vSync<\/strong> \u2014 \u0441 \u043a\u043e\u043d\u0446\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u044d\u043a\u0440\u0430\u043d\u0430.  \u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 <strong>hSync<\/strong>) \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u043b\u0438\u043d\u0438\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c, \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0432\u0435\u0442\u043e\u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u043b\u0438\u0448\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432 \u0440\u0430\u0434\u0443\u0436\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0444\u0430\u0439\u043b <strong>.\/src\/cga.c<\/strong> \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_text_print()<\/strong> \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 (\u0438\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430 \u0438 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430):<\/p>\n<pre><code class=\"cpp\">void cga_text_print(uint8_t *framebuffer, int x, int y, int fg_color, int bg_color, char *text, int text_size)  {          if(!text)                  return;           uint32_t *fb = (uint32_t*) framebuffer;          uint32_t attributes = (fg_color &lt;&lt; 8) | (bg_color &lt;&lt; 16);           fb += CGA_TEXT_WIDTH * y + x;           for(int i = 0; text[i]; i++)                  *fb++ = attributes | text[i];   }<\/code><\/pre>\n<p> \u0412 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e, \u043e\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u043e\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_video_test4()<\/strong> \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f  \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0437\u0430\u043b\u0438\u0442\u043e\u0433\u043e \u0447\u0435\u0440\u043d\u044b\u043c \u0444\u043e\u043d\u043e\u043c. \u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043e\u0431\u0432\u0435\u0440\u043d\u0435\u043c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <strong>#ifdef<\/strong>, \u0447\u0442\u043e\u0431\u044b \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c:<\/p>\n<pre><code class=\"cpp\">#if (CGA_VIDEO_TEST == CGA_TEST_VIDEOFX_DYNPALETTE)  void cga_video_test4(void) {          char *text1 = \"Hello, Habr!\";          char *text2 = \"Here're some special video effects for ya.\";          char *text3 = \"Press KEY1 or KEY2 to roll rainbow around.\";           cga_wait_vblank();            cga_fill_screen(0); \/\/ clear screen           cga_text_print(CGA-&gt;FB, (CGA_TEXT_WIDTH - strlen(text1)) \/ 2, 13, 1, 0, text1, strlen(text1));          cga_text_print(CGA-&gt;FB, (CGA_TEXT_WIDTH - strlen(text2)) \/ 2, 14, 1, 0, text2, strlen(text2));          cga_text_print(CGA-&gt;FB, (CGA_TEXT_WIDTH - strlen(text3)) \/ 2, 16, 1, 0, text3, strlen(text3));  }  #endif<\/code><\/pre>\n<p> \u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_video_test4()<\/strong> \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u044d\u043a\u0440\u0430\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c (\u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043d\u0443\u043b\u044f\u043c\u0438) \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0446\u0432\u0435\u0442\u043e\u043c \u043d\u043e\u043c\u0435\u0440 <strong>1<\/strong>. \u0422\u0443\u0442 \u0432\u0430\u0436\u0435\u043d \u043d\u0435 \u0441\u0430\u043c \u0446\u0432\u0435\u0442 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0430\u0441\u043d\u044b\u0439), \u0430 \u0435\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b. \u041e\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441 \u044d\u0442\u0438\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0442\u043e, \u043a\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0446\u0432\u0435\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0442\u0438\u0441\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u0412\u0441\u0442\u0430\u0432\u0438\u043c \u0432\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong> \u043f\u0435\u0440\u0435\u0434 \u0441\u0430\u043c\u044b\u043c \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u0412 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0436\u0435 \u0444\u0430\u0439\u043b\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>CGA_VIDEO_TEST<\/strong>  \u043d\u0430 \u043d\u043e\u0432\u043e\u0435 <strong>CGA_TEST_VIDEOFX_DYNPALETTE<\/strong>.<\/p>\n<pre><code class=\"cpp\">#define CGA_VIDEO_TEST CGA_TEST_VIDEOFX_DYNPALETTE  ... int main(void) {         ...          #if (CGA_VIDEO_TEST == CGA_TEST_VIDEOFX_DYNPALETTE)          cga_video_test4();          #endif           while(1) {                  ...         }<\/code><\/pre>\n<p> \u041d\u0443, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0412 \u0442\u0435\u043b\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">                #if CGA_VIDEO_TEST == CGA_TEST_VIDEOFX_DYNPALETTE                  {                          static uint32_t colorfx_rainbow[] = {                                  \/\/ Straight                                  0x000000ff, 0x000055ff, 0x0000aaff, 0x0000ffff,                                  0x0000ffaa, 0x0000ff2a, 0x002bff00, 0x0080ff00,                                  0x00d4ff00, 0x00ffd400, 0x00ffaa00, 0x00ff5500,                                  0x00ff0000, 0x00ff0055, 0x00ff00aa, 0x00ff00ff,                                  \/\/ Reversed                                  0x00ff00ff, 0x00ff00aa, 0x00ff0055, 0x00ff0000,                                  0x00ff5500, 0x00ffaa00, 0x00ffd400, 0x00d4ff00,                                  0x0080ff00, 0x002bff00, 0x0000ff2a, 0x0000ffaa,                                  0x0000ffff, 0x0000aaff, 0x000055ff, 0x000000ff,                          };                           static int colorfx_offset = 6;                           int colorfx_idx = colorfx_offset;                           while(!(CGA-&gt;CTRL &amp; CGA_CTRL_VSYNC_FLAG)); \/\/ 1                          for(int i = 0; i &lt; 525\/2; i++) {                                  while(!(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG)); \/\/ 2                                 CGA-&gt;PALETTE[1] = colorfx_rainbow[colorfx_idx]; \/\/ 3                                 colorfx_idx = (colorfx_idx + 1) % 32; \/\/ 4                                 while(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG); \/\/ 5                                  while(!(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG)); \/\/ 6                                 while(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG); \/\/ 7                         }                           if(GPIO-&gt;INPUT &amp; GPIO_IN_KEY1)                                  colorfx_offset++;                           if(GPIO-&gt;INPUT &amp; GPIO_IN_KEY2)                                  colorfx_offset--;                  }                  #endif  <\/code><\/pre>\n<p> \u042f \u043e\u0431\u044a\u044f\u0441\u043d\u044e \u0447\u0442\u043e \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435. \u0421\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c, \u0440\u0435\u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421. \u0412\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/200\/a0c\/066\/200a0c066d1bc7908932f6e85abb3683.png\" alt=\" \u0420\u0438\u0441. 18. \u0420\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0430\u0434\u0443\u0436\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) \u043f\u0443\u0442\u0435\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043f\u0430\u043b\u0438\u0442\u0440\u044b.\" title=\" \u0420\u0438\u0441. 18. \u0420\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0430\u0434\u0443\u0436\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) \u043f\u0443\u0442\u0435\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043f\u0430\u043b\u0438\u0442\u0440\u044b.\" width=\"1560\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/200\/a0c\/066\/200a0c066d1bc7908932f6e85abb3683.png\"\/><\/p>\n<div><figcaption> <em>\u0420\u0438\u0441. 18. \u0420\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0430\u0434\u0443\u0436\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) \u043f\u0443\u0442\u0435\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043f\u0430\u043b\u0438\u0442\u0440\u044b.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e: <a href=\"https:\/\/www.youtube.com\/watch?v=UlG--Ezm3rM\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=UlG&#8212;Ezm3rM<\/a><\/p>\n<p>\u0410 \u0443\u0432\u0438\u0434\u0438\u043c \u043c\u044b \u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0435 \u0432 \u0440\u0430\u0434\u0443\u0436\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0441 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0446\u0432\u0435\u0442\u0430 \u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043e\u0442\u0442\u0435\u043d\u043a\u0430\u043c\u0438 \u0436\u0435\u043b\u0442\u043e\u0433\u043e, \u0437\u0435\u043b\u0435\u043d\u043e\u0433\u043e, \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e, \u0440\u043e\u0437\u043e\u0432\u043e\u0433\u043e \u0438 \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0436\u043c\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 KEY1 \u0438\u043b\u0438 KEY2, \u0442\u043e \u044d\u0442\u043e\u0442 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043d\u0430\u0447\u043d\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0435\u0440\u0435\u0442\u0435\u043a\u0430\u044e\u0449\u0435\u0433\u043e \u0446\u0432\u0435\u0442\u0430. \u0423 \u043d\u0435\u0438\u0441\u043a\u0443\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043b\u043e\u0436\u043d\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c \u043d\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u043f\u0440\u0438\u0447\u0435\u043c \u0441 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432. \u041d\u043e \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0431\u0435\u043b\u044b\u0439 \u043a\u0443\u0440\u0441\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 640&#215;480 \u043a\u0430\u0434\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 525 \u0441\u0442\u0440\u043e\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u0437 \u043d\u0438\u0445 480 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u043c\u0438 (\u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438), \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u043c\u0438: 2 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 HSYNC; 27 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u00ab\u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u0440\u043e\u0433\u00bb  (front porch), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430 VSYNC; \u0438 16 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u00ab\u0437\u0430\u0434\u043d\u0438\u0439 \u043f\u043e\u0440\u043e\u0433\u00bb (back porch), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u00ab\u043f\u0435\u0440\u0435\u0434\u043d\u0438\u043c \u043f\u043e\u0440\u043e\u0433\u043e\u043c\u00bb. \u041d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u0430\u0434\u0440\u0430 (\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>vSync<\/strong>) \u0438 \u0434\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043d\u043e\u043c\u0435\u0440 1 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 xBGR. \u042d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 <strong>colorfx_rainbow<\/strong>, \u0432\u0441\u0435\u0433\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f 32 \u0442\u043e\u0447\u043a\u0438 \u0446\u0432\u0435\u0442\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u00ab\u0440\u0430\u0434\u0443\u0433\u0443\u00bb &#8212; \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e, \u043e\u0442 \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043a \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u043e\u043c\u0443, \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e. \u041c\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043d\u043e\u043c\u0435\u0440 1 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u0442\u0435\u043a\u0441\u0442 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c. \u0422\u0435\u043a\u0441\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 \u0446\u0432\u0435\u0442\u0430 (0, 2 \u0438 3) \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a \u043a\u043e\u0434\u0443. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u044f \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a \u043a \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c. \u0421\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u0430\u044f \u0446\u0438\u0444\u0440\u043e\u0439 \u00ab1\u00bb \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0430\u0441\u044c \u043d\u0430\u043c \u0440\u0430\u043d\u0435\u0435 \u2014 \u044d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438, \u0442.\u00a0\u0435. \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 <strong>vSync<\/strong>. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0446\u0438\u043a\u043b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0438\u0437 525\/2 = 262 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u0436\u0430\u0442\u044b\u043c \u0438 \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443 \u0441 \u00ab\u0440\u0430\u0434\u0443\u0433\u043e\u0439\u00bb \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0433\u0434\u0430 \u00ab\u043b\u0443\u0447\u00bb \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 \u043a\u0440\u0430\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043d\u0430\u0447\u043d\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0445\u043e\u0434 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438. \u042d\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 <strong>hSync<\/strong>. \u0412 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u0434\u0430 \u00ab2\u00bb \u043c\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u0436\u0434\u0435\u043c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u0430 <strong>CGA_CTRL_HSYNC_FLAG<\/strong> \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u0434\u0435 \u00ab3\u00bb \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043d\u043e\u043c\u0435\u0440 1 \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u00ab\u0440\u0430\u0434\u0443\u0433\u0438\u00bb \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u0434\u0430 \u00ab4\u00bb. \u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u0434\u0430 \u00ab5\u00bb \u0437\u0430\u0432\u0438\u0441\u0430\u0435\u043c \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0446\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>hSync<\/strong>. \u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0446\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u00ab\u043b\u0443\u0447\u00bb \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u0412 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043a\u043e\u0434\u0430 \u00ab6\u00bb \u0438 \u00ab7\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u00ab2\u00bb \u0438 \u00ab5\u00bb &#8212; \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e <strong>hSync<\/strong> \u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0442\u0443\u0442 \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u2014 \u0440\u0438\u0441\u0443\u0435\u043c \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0446\u0432\u0435\u0442\u043e\u043c \u043f\u043e \u0434\u0432\u0430 \u0440\u0430\u0437\u0430. \u0414\u0430\u043b\u0435\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0438\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 KEY1 \u0438 KEY2, \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>colorfx_offset<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 <strong>colorfx_idx<\/strong>, \u0442.\u00a0\u0435. \u0437\u0430\u0434\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u00ab\u0440\u0430\u0434\u0443\u0433\u0438\u00bb. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430 \u0446\u0432\u0435\u0442\u0430 \u2014 \u0446\u0432\u0435\u0442 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c <strong>0<\/strong> \u0438 <strong>1<\/strong>. \u0426\u0432\u0435\u0442 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c <strong>0<\/strong> \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u043d\u044b\u043c. \u0410 \u0446\u0432\u0435\u0442 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c <strong>1<\/strong> \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u0442\u0435\u0439\u043b\u0438\u0432\u044b\u0439 \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043c\u0435\u044f \u0432 \u0437\u0430\u043f\u0430\u0441\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u043b\u0443\u0447\u0430\u00bb. \u0420\u0430\u0441\u043a\u0440\u043e\u044e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0435\u043a\u0440\u0435\u0442 \u2014 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u0435\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u0443\u0447\u0430 \u0438 \u043f\u043e-\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0432 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0446\u0432\u0435\u0442\u043e\u0432 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442\u044b.<\/p>\n<p>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d \u2014 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u0430\u044f \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u00ab\u043b\u0443\u0447\u0430\u00bb, \u043b\u044e\u0431\u043e\u0435 \u043e\u0442\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0441\u0431\u043e\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u043c\u0435\u0448\u0435\u043d\u0438\u044e \u0446\u0432\u0435\u0442\u043e\u0432 \u0432 \u0435\u0434\u0438\u043d\u0443\u044e \u0441\u0435\u0440\u0443\u044e \u043c\u0430\u0441\u0441\u0443. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 <strong>vblank<\/strong> \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b\u0437\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0430\u0437\u0434\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d, \u0442\u043e \u044d\u0442\u043e \u0441\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0412\u0441\u0451 \u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d. \u041d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u0438\u043c \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u0433\u0440\u043e\u0434\u0435\u043b\u044b \u0438 \u0434\u0435\u043c\u043e-\u043c\u044d\u0439\u043a\u0435\u0440\u044b \u0432 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u0443\u044e \u044d\u043f\u043e\u0445\u0443 \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043a\u0430\u043a Atari 800, Commodore C64 \u0438 \u0440\u044f\u0434\u0430 \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<p><a class=\"anchor\" name=\"10.3\" id=\"10.3\"><\/a><\/p>\n<h3> 10.3. \u0421\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u2014 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e<\/h3>\n<p>\u0410 \u0441\u0435\u0439\u0447\u0430\u0441, \u043f\u0440\u0438\u0441\u0442\u0435\u0433\u043d\u0438\u0442\u0435 \u0440\u0435\u043c\u043d\u0438 \u2014 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435.  \u041a\u0430\u043a \u0412\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e, \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 60 \u0413\u0446, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c ? \u0414\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0442\u0443\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0437\u0430\u0447\u0435\u043c \u0433\u0430\u0434\u0430\u0442\u044c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c!<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u0430. \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u2014 \u0432 \u043d\u0451\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043a\u0430\u043a\u043e\u0439 \u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 (\u00abLorem Ipsum\u00bb \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442). \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 16 \u0446\u0432\u0435\u0442\u043e\u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0444\u043e\u043d\u0430 \u0438 \u0442\u0435\u043a\u0441\u0442\u0430. \u0418 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u2014 \u0432 \u043d\u0451\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u0438\u0442\u043c\u0430\u043f \u0432 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0446\u0432\u0435\u0442\u0430\u0445. <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_text_print()<\/strong> &#8212; \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 ESC-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432: <strong>\\t<\/strong> \u2014 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f, <strong>\\n<\/strong> \u2014 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 <strong>\\r<\/strong> \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043a\u0430\u0440\u0435\u0442\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_text_print()<\/strong> \u0441\u043b\u0435\u0433\u043a\u0430 \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0435\u0442\u0441\u044f \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">void cga_text_print(uint8_t *framebuffer, int x, int y, int fg_color, int bg_color, char *text)  {          if(!text)                  return;           uint32_t *fb = (uint32_t*) framebuffer;          uint32_t attributes = (fg_color &lt;&lt; 8) | (bg_color &lt;&lt; 16);           fb += CGA_TEXT_WIDTH * y + x;           for(int i = 0; text[i]; i++) {                  if(text[i] == '\\n') {                          fb += CGA_TEXT_WIDTH;                  } else if(text[i] == '\\r') {                          fb -= (fb - (uint32_t*)framebuffer) % CGA_TEXT_WIDTH;                  } else if(text[i] == '\\t') {                          for(int j = 0; j &lt; 8; j++)                                  *fb++ = attributes | 0x20;                  } else if(text[i] == 0x1b) {                          i++;                          switch(text[i]) {                                  case 'F': {                                          i++;                                          attributes &amp;= ~ 0x0000ff00;                                          attributes |= atoi(&amp;text[i]) &lt;&lt; 8;                                          while(text[++i] != ';');                                  } break;                                  case 'B': {                                          i++;                                          attributes &amp;= ~ 0x00ff0000;                                          attributes |= atoi(&amp;text[i]) &lt;&lt; 16;                                          while(text[++i] != ';');                                  } break;                                  case 'D': {                                          i++;                                          fb += CGA_TEXT_WIDTH * atoi(&amp;text[i]);                                          while(text[++i] != ';');                                  } break;                                  case 'U': {                                          i++;                                          fb -= CGA_TEXT_WIDTH * atoi(&amp;text[i]);                                          while(text[++i] != ';');                                  } break;                                  case 'L': {                                          i++;                                          fb -= atoi(&amp;text[i]);                                          while(text[++i] != ';');                                  } break;                                  case 'R': {                                          i++;                                          fb += atoi(&amp;text[i]);                                          while(text[++i] != ';');                                  } break;                          }                          continue;                  } else                          *fb++ = attributes | text[i];          }  }  <\/code><\/pre>\n<p> \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 ESC-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">#define ESC_UP          \"\\033U\" \/\/ Move cursor upward 1 line  #define ESC_DOWN        \"\\033D\" \/\/ Move cursor downward 1 line (same as \\n)  #define ESC_LEFT        \"\\033L\" \/\/ Move cursor to the left 1 char  #define ESC_RIGTH       \"\\033R\" \/\/ Move cursor to the right 1 char  #define ESC_FG          \"\\033F\" \/\/ Set foreground color  #define ESC_BG          \"\\033B\" \/\/ Set background color <\/code><\/pre>\n<p> \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0438 \u043c\u0430\u043a\u0440\u043e \u0432 \u0444\u0430\u0439\u043b <strong>.\/src\/cga.h<\/strong>.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043e\u0440\u0446\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u0430\u0445: \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0443\u044e \u0432 <strong>videobuf_for_text<\/strong>, \u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e &#8212;  \u0432 <strong>videobuf_for_graphics<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0411\u0443\u0444\u0435\u0440\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u041e\u0417\u0423, \u0442.\u00a0\u0435. \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 <strong>0x90000000<\/strong>. \u0421\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_video_test5()<\/strong> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u0434\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0435\u0451 \u0432 \u0444\u0430\u0439\u043b <strong>.\/src\/main.c<\/strong>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <strong>CGA_VIDEO_TEST<\/strong> \u043d\u0430 <strong>CGA_TEST_VIDEOFX_HYBRID<\/strong>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cga_video_test5() <\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#if (CGA_VIDEO_TEST == CGA_TEST_VIDEOFX_HYBRID)  static unsigned char *videobuf_for_text = (unsigned char*)0x90001000;  static unsigned char *videobuf_for_graphics = (unsigned char*)0x90006000;   void cga_video_test5(void) {          char *lorem_ipsum =                  ESC_FG \"1;\" \"Lorem ipsum\" ESC_FG \"15;\" \" dolor sit amet, consectetur adipiscing elit, \"                  \"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim \"                  \"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. \"                  \"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat \"                  \"nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia \"                  \"deserunt mollit anim id est laborum.\\r\\n\\n\\t\\t\"                          \"+------------------------------------+\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"|                                    |\" ESC_DOWN \"1;\" ESC_LEFT \"38;\"                          \"+------------------------------------+\\r\\n\\n\"                   ESC_BG \"3;\" \"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots \"                  \"in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard \"                  \"McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the \"                  \"more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the \"                  \"cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum \"                  \"comes from sections 1.10.32 and 1.10.33 of \\\"\" ESC_FG \"1;\" \"de Finibus Bonorum et Malorum\"                  ESC_FG \"15;\" \"\\\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a \"                  \"treatise on the theory of ethics, very popular during the Renaissance. The first line of \"                  \"Lorem Ipsum, \\\"Lorem ipsum dolor sit amet..\\\", comes from a line in section 1.10.32.\";           memset(videobuf_for_text, 0, 20*1024);          cga_text_print(videobuf_for_text, 0,  0, 15, 0, lorem_ipsum);           memset(videobuf_for_graphics, 0, 20*1024);           int i = 0;          for(int y = 64; y &lt; 128; y += 16)                  for(int x = 68; x &lt; 212; x += 16)                          cga_bitblit((uint8_t*)cga_sprites[(_sprite_idx + i) % 11],         videobuf_for_graphics, x, y, 16, 16,                                  CGA_VIDEO_WIDTH, CGA_VIDEO_HEIGHT);           _sprite_idx++;  }  #endif <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0448\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>cga_video_test5()<\/strong> \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u00abLorem Ipsum\u00bb \u0432 \u0431\u0443\u0444\u0435\u0440 <strong>videobuf_for_text<\/strong> \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u0440\u0438\u043f\u0443\u0434\u0440\u0438\u0432\u0430\u044f \u0435\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ESC-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u0441\u0442\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0435 \u00ab\u043e\u043a\u043d\u043e\u00bb \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u00ab+\u00bb, \u00ab-\u00bb \u0438 \u00ab|\u00bb. \u0412 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043f\u0440\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0431\u0443\u0444\u0435\u0440 <strong>videobuf_for_graphics<\/strong> \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0442\u043e \u0436\u0435 \u043c\u0435\u0441\u0442\u043e \u044d\u043a\u0440\u0430\u043d\u0430 \u0433\u0434\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e.<\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u044b. \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c \u0441\u0430\u043c \u044d\u0444\u0444\u0435\u043a\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong> \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">                #if CGA_VIDEO_TEST == CGA_TEST_VIDEOFX_HYBRID                  {                          cga_wait_vblank(); \/\/ 1                         cga_set_video_mode(CGA_MODE_TEXT); \/\/ 2                         memcpy(CGA-&gt;FB, videobuf_for_text, 20*1024); \/\/ 3                         cga_wait_vblank_end(); \/\/ 4                          cga_video_test5(); \/\/ 5                          cga_wait_vblank(); \/\/ 6                         cga_set_video_mode(CGA_MODE_GRAPHICS1); \/\/ 7                         memcpy(CGA-&gt;FB, videobuf_for_graphics, 20*1024); \/\/ 8                         cga_wait_vblank_end();                  }                  #endif <\/code><\/pre>\n<p> \u0421\u0442\u043e\u0438\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ol>\n<li>\n<p>\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f. \u0412\u0441\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0438 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432 \u043c\u043e\u043c\u0435\u043d\u0442, \u043f\u043e\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0411\u044b\u0441\u0442\u0440\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e <strong>\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e<\/strong> \u0432\u0438\u0434\u0435\u043e\u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0431\u0443\u0444\u0435\u0440 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0446 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430. \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0437\u0430\u043d\u044f\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>cga_video_test5()<\/strong> \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0432 \u0431\u0443\u0444\u0435\u0440\u0430\u0445  <strong>videobuf_for_text<\/strong> \u0438 <strong>videobuf_for_graphics<\/strong>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043f\u0440\u0430\u0439\u0442\u044b \u0438 \u0441\u0430\u043c \u0442\u0435\u043a\u0441\u0442 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0411\u044b\u0441\u0442\u0440\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e <strong>\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e<\/strong>\u0432\u0438\u0434\u0435\u043e\u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0431\u0443\u0444\u0435\u0440 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0446 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430. \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440   \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<p> \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u043a\u043e\u0434, \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/672aaaf3ca01a46b4caa69e2\" data-style=\"\" id=\"672aaaf3ca01a46b4caa69e2\" width=\"\"><\/div>\n<p> <em>\u0420\u0438\u0441. 19. \u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u043e\u0432.<\/em><\/p>\n<p> \u042d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u044f \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0434\u043b\u044f MS-DOS \u043d\u0430 IBM PC\/AT. \u0412 \u043d\u0435\u0439 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u043c\u0435\u043d\u044e \u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0441\u0434\u043e\u0431\u0440\u0435\u043d \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439. \u0421\u0443\u0434\u044f \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0448\u0440\u0438\u0444\u0442\u0430, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0430 \u0442\u0435\u043a\u0441\u0442 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0430 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c 640&#215;200 \u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439. \u041d\u0430 CGA \u0438 EGA \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0432 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 (Mode 2 \u0438 Mode 6) \u0431\u044b\u043b\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 ~15.7\u043a\u0413\u0446, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0431\u044b\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0433\u043b\u0430\u0437\u0443. \u041d\u043e \u044f \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0432 \u0447\u0435\u043c \u0431\u044b\u043b \u043f\u043e\u0434\u0432\u043e\u0445! \ud83d\ude42<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u0441\u043e \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c\u0438. \u042d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u00ab\u043d\u0435\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u0441\u0442\u043e\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0436\u0435 \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a\u0430\u043a\u0438\u0435 \u0435\u0449\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043d\u0430 \u0412\u0430\u0448 \u0432\u0437\u0433\u043b\u044f\u0434 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0435.<\/p>\n<p><a class=\"anchor\" name=\"10.4\" id=\"10.4\"><\/a><\/p>\n<h3> 10.4. \u0412\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435<\/h3>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0442\u0440\u0438 \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442\u0430: \u043f\u043b\u0430\u0432\u043d\u0443\u044e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430, \u0440\u0430\u0434\u0443\u0436\u043d\u0443\u044e \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u0443\u044e \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0434\u043b\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 (\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u00ab\u043f\u0443\u043b\u044c\u0441\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432\u00bb). <\/p>\n<details class=\"spoiler\">\n<summary>\u0422\u0440\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#if (CGA_VIDEO_TEST == CGA_TEST_DEMO)  static unsigned char *videobuf_for_text = (unsigned char*)0x90001000;  static unsigned char *videobuf_for_graphics = (unsigned char*)0x90006000;   float my_sine(float x)  {          x = ((int)(x * 57.297469) % 360) * 0.017452; \/\/ fmod(x, 2*PI)         float res = 0, pow = x, fact = 1;           for(int i = 0; i &lt; 5; ++i) {                  res+=pow\/fact;                  pow*=-1*x*x;                  fact*=(2*(i+1))*(2*(i+1)+1);          }          return res;  }   void cga_video_demo(void) {           char *greetings =                  ESC_FG \"5;\"                  \"\\t\\tGreetings to all users of Habr!\\r\\n\"                  \"\\n\"                  \"\\tHope you  enjoyed  reading  my post on  developing  CGA-like  video\\r\\n\"                  \"\\tsubsystem for  FPGA  based synthesizable microcontroller  and liked\\r\\n\"                  \"\\tthe VFXs demoed.\\r\\n\"                  \"\\n\"                  \"\\tThis work was inspired by those few who proceed coding for resource\\r\\n\"                  \"\\tscarse systems  gaining  impossible  from them  using minuscule yet\\r\\n\"                  \"\\tpowerful handcrafted tools.\\r\\n\"                  \"\\n\"                  \"\\t\\tKudos to you dear old-time hacker fellows!\\r\\n\"                  \"\\n\"                  \"\\n\"                  \"\\t\\tSpecial credits to:\\r\\n\"                  \"\\t\\t===================\\r\\n\"                  \"\\t\" ESC_FG \"14;\" \"Yuri Panchul\" ESC_FG \"5; for his work on basics-graphics-music Verilog labs\\r\\n\"                  \"\\t\" ESC_FG \"14;\" \"Dmitry Petrenko\" ESC_FG \"5; for inspirations and ideas for Karnix FPGA board\\r\\n\"                  \"\\t\" ESC_FG \"14;\" \"Vitaly Maltsev\" ESC_FG \"5; for helping with bitblit code optimization\\r\\n\"                  \"\\t\" ESC_FG \"14;\" \"Victor Sergeev\" ESC_FG \"5; for demoscene inpirations\\r\\n\"                  \"\\t\" ESC_FG \"14;\" \"Evgeny Korolenko\" ESC_FG \"5; for editing and testing\\r\\n\"                  \"\\n\"                  \"\\t\\tThanks:\\r\\n\"                  \"\\t\\t=======\\r\\n\"                  \"\\n\"                  \"\\t\" ESC_FG \"14;\" \"@Manwe_Sand\" ESC_FG \"5; for his Good Apple for BK-0011M and other BK-0010 stuff\\r\\n\"                  \"\\t\" ESC_FG \"14;\" \"@KeisN13\" ESC_FG \"5; for organizing FPGAs community in Russia\\r\\n\"                  \"\\t\" ESC_FG \"14;\" \"@frog\" ESC_FG \"5; for CC'24 and keeping Russian demoscene running...\\r\\n\"                  \"\\n\"                  \"\\t\\t*\\t*\\t*\\n\\n\\n\\n\";          memset(videobuf_for_text, 0, 20*1024);          cga_text_print(videobuf_for_text, 0,  0, 15, 0, greetings);          cga_set_cursor_xy(60, 10);           memset(videobuf_for_graphics, 0, 20*1024);                for(int y = 0; y &lt; 240; y += 48)                  for(int x = 0; x &lt; 320; x += 48)                          cga_bitblit((uint8_t*)cga_sprites[(_sprite_idx) % 11], videobuf_for_graphics,                                  x + 64 * my_sine((x+_sprite_idx)\/80.0),                                  y + 64 * my_sine((x+_sprite_idx)\/80.0),                                  16, 16, CGA_VIDEO_WIDTH, CGA_VIDEO_HEIGHT);           _sprite_idx++;  }  #endif <\/code><\/pre>\n<p> \u0418 \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong>:<\/p>\n<pre><code class=\"cpp\">                #if CGA_VIDEO_TEST == CGA_TEST_DEMO                  {                          static int _scroll = 480;                          static uint32_t colorfx_rainbow[] = {                                  \/\/ Straight                                  0x000000ff, 0x000055ff, 0x0000aaff, 0x0000ffff,                                  0x0000ffaa, 0x0000ff2a, 0x002bff00, 0x0080ff00,                                  0x00d4ff00, 0x00ffd400, 0x00ffaa00, 0x00ff5500,                                  0x00ff0000, 0x00ff0055, 0x00ff00aa, 0x00ff00ff,                                  \/\/ Reversed                                  0x00ff00ff, 0x00ff00aa, 0x00ff0055, 0x00ff0000,                                  0x00ff5500, 0x00ffaa00, 0x00ffd400, 0x00d4ff00,                                  0x0080ff00, 0x002bff00, 0x0000ff2a, 0x0000ffaa,                                  0x0000ffff, 0x0000aaff, 0x000055ff, 0x000000ff,                          };                           static int colorfx_offset = 6;                           int colorfx_idx = colorfx_offset;                           cga_wait_vblank();                          cga_set_video_mode(CGA_MODE_TEXT);                          cga_set_scroll(_scroll++);                          memcpy(CGA-&gt;FB, videobuf_for_text, 20*1024);                          cga_wait_vblank_end();                           for(int i = 0; i &lt; 480\/2; i++) {                                  while(!(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG));                                  CGA-&gt;PALETTE[5] = colorfx_rainbow[colorfx_idx];                                  colorfx_idx = (colorfx_idx + 1) % 32;                                  while(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG);                                   while(!(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG));                                  while(CGA-&gt;CTRL &amp; CGA_CTRL_HSYNC_FLAG);                          }                           cga_wait_vblank();                          cga_set_video_mode(CGA_MODE_GRAPHICS1);                          cga_set_scroll(0);                          memcpy(CGA-&gt;FB, videobuf_for_graphics, 20*1024);                          cga_wait_vblank_end();                           cga_video_demo();                  }                  #endif <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0432\u0438\u0434\u0435\u043e: <a href=\"https:\/\/www.youtube.com\/watch?v=5aY6kXc1IaU\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=5aY6kXc1IaU<\/a><\/p>\n<p>\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0435 \u00abintro\u00bb \u0432 \u0434\u0443\u0445\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u044b \u0438\u0437 80-\u0445.  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0431\u044b\u043b\u043e \u0442\u0430\u043a\u043e\u0435 \u043d\u0430 IBM PC \u0441 CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u043c ? \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0442, \u043d\u043e \u043d\u0435 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u0430 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0438\u0437\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 i8086. \u0412\u0441\u0451 \u0442\u0430\u043a\u0438 32-\u0445 \u0431\u0438\u0442\u043d\u0430\u044f RISC \u043c\u0430\u0448\u0438\u043d\u0430 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0421\u043d\u041a \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 60 \u041c\u0413\u0446 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u0435.<\/p>\n<p><a class=\"anchor\" name=\"11\" id=\"11\"><\/a><\/p>\n<h2> 11.\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430\u043d\u044f\u043b\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0435\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u0435\u0449\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0437\u0430\u043d\u044f\u043b \u043a\u043e\u0434\u0438\u043d\u0433 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0431\u044b\u0432\u0430\u0442\u044c \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435 \u043d\u0430 \u0444\u0435\u0441\u0442\u0438\u0432\u0430\u043b\u0435 \u00abChaos Constructions 2024\u00bb \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0442\u0440\u043e-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c, \u0440\u0435\u0442\u0440\u043e-\u043a\u043e\u0434\u0438\u043d\u0433\u0443 \u0438 \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u0435. \u041d\u0430 \u0444\u0435\u0441\u0442\u0438\u0432\u0430\u043b\u0435 \u044f \u0443\u0437\u043d\u0430\u043b \u043f\u0440\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e TIC-80 \u2014 \u044d\u0434\u0430\u043a\u0438\u0445  \u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0445 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0435\u043c\u043e, \u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u043c\u0443\u0437\u044b\u043a\u0430 (\u0438 \u0434\u0430\u0436\u0435 \u0438\u0433\u0440\u044b). \u041e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439 \u0438\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u00abfantasy console\u00bb \u043d\u0430 \u0431\u0430\u0437\u0435 \u041f\u041b\u0418\u0421, \u0430 \u043d\u0435 \u0432 Web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0443 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0440\u044f\u0434 \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0434\u0443\u0445 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u044b: \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u0431\u043e\u0440\u044c\u0431\u0430 \u0437\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0437\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 LUT, \u0432\u044b\u0436\u0438\u043c\u0430\u043d\u0438\u0435 \u0438\u0437 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430, \u0432\u0435\u0434\u044c \u041f\u041b\u0418\u0421 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u043c \u0441\u0432\u0435\u0442\u0435 \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u043f\u043b\u0430\u0442\u0430 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u043e\u0432\u0430\u043d\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0437\u044f\u0442\u0430 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u0444\u0435\u043d\u0442\u0435\u0437\u0438\u0439\u043d\u043e\u0439 \u0440\u0435\u0442\u0440\u043e-\u043a\u043e\u043d\u0441\u043e\u043b\u0438.<\/p>\n<p><a class=\"anchor\" name=\"12\" id=\"12\"><\/a><\/p>\n<h2>12. \u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 ?<\/h2>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0422\u0435\u0442\u0440\u0438\u0441! <\/p>\n<p>\u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u0438\u0433\u0440\u0443 \u0432 \u0441\u0442\u0438\u043b\u0435 80-\u0445 \u0441 \u043f\u0435\u0440\u0435\u043b\u0438\u0432\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 \u0438 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u043d\u0430 \u0442\u0440\u0438 \u0428\u0418\u041c \u043a\u0430\u043d\u0430\u043b\u0430.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438 \u043e \u0437\u0432\u0443\u043a\u0435. \u0415\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u041f\u041b\u0418\u0421 \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430 \u0434\u043b\u044f \u0437\u0432\u0443\u043a\u0430 \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0432 HDMI<sup>(R)<\/sup>, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0445 IP \u0431\u043b\u043e\u043a\u043e\u0432.<\/p>\n<p>\u0418 \u0442\u0440\u0435\u0442\u044c\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0422\u0430\u043a\u0430\u044f \u041e\u0421 \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u2014 \u044d\u0442\u043e <a href=\"https:\/\/pdos.csail.mit.edu\/6.828\/2024\/xv6.htmlhttps:\/\/pdos.csail.mit.edu\/6.828\/2024\/xv6.html\" rel=\"noopener noreferrer nofollow\">Xv6<\/a>, \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Unix \u0432\u0435\u0440\u0441\u0438\u0438 6. <strong>Xv6<\/strong> \u0443\u0436\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 RISC-V \u0438 \u0435\u0451 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0421\u043d\u041a \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043d\u044f\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>PS: \u0422\u0435\u0442\u0440\u0438\u0441, \u0431\u0435\u0437 \u043c\u0443\u0437\u044b\u043a\u0438, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e <strong>svedev0<\/strong> \u0441 Github-\u0430 \u0437\u0430 \u0435\u0433\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u0433\u0440\u044b \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u0421\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430: <a href=\"https:\/\/github.com\/svedev0\/tetris-c\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/svedev0\/tetris-c<\/a><\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/672aad7c08571a136ef38611\" data-style=\"\" id=\"672aad7c08571a136ef38611\" width=\"\"><\/div>\n<p><a class=\"anchor\" name=\"13\" id=\"13\"><\/a><\/p>\n<h2> 13. \u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>1. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0421\u043d\u041a \u0441 CGA-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb: <a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended<\/a><\/p>\n<p>2. Makefile \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0443\u0442: <a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended\/scripts\/KarnixTetris\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended\/scripts\/KarnixTetris<\/a><\/p>\n<p>3. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0438\u0433\u0440\u044b TetRISC-V \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u00ab\u0421\u0438\u00bb \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0421\u043d\u041a: <a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended\/src\/main\/c\/karnix_tetris\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix_extended\/src\/main\/c\/karnix_tetris<\/a><\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/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\/articles\/855718\/\"> https:\/\/habr.com\/ru\/articles\/855718\/<\/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<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 (<a href=\"https:\/\/habr.com\/ru\/articles\/801191\/\" rel=\"noopener noreferrer nofollow\">\u0447.1<\/a>, <a href=\"https:\/\/habr.com\/ru\/articles\/802127\/\" rel=\"noopener noreferrer nofollow\">\u0447.2<\/a>) \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u0443\u044e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u2014 \u043d\u0435\u043a\u0443\u044e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0434 \u0432\u0430\u0448\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0451 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u0430\u0448\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0438 \u043e\u0442 \u0440\u044b\u043d\u043e\u0447\u043d\u043e\u0439 \u043a\u043e\u043d\u044a\u044e\u043d\u043a\u0442\u0443\u0440\u044b, \u043d\u0438 \u043e\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0438 \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u044d\u0442\u043e\u0439 \u0421\u043d\u041a \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043f\u043e\u0434 \u0442\u0438\u043f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0434\u043e\u0431\u0440\u043e\u0433\u043e Color Graphics Adapter (CGA), \u043d\u043e \u0441 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c (HDMI) \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL \u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0435 \u0435\u0451 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0442\u0443\u043b. \u0412\u0441\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab<a href=\"https:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254https:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u0440\u043d\u043e<\/a>\u00bb \u0441 \u041f\u041b\u0418\u0421 Lattice \u0441\u0435\u0440\u0438\u0438 ECP5, \u043d\u043e \u0432\u0435\u0441\u044c \u043c\u043e\u0439 \u043a\u043e\u0434, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0430\u0441\u0442\u0438 \u043a\u0430\u0441\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a PLL, \u0431\u0443\u0434\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0438 \u043b\u0435\u0433\u043a\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043f\u043e\u0434 \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0438\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c Yosys\/NextPNR.<\/p>\n<figure class=\"full-width\">\n<div><figcaption><em>IBM Color\/Graphics Adapter, circa 1981.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u043d\u043d\u043e\u0439, \u0432 \u043d\u0435\u0439 \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 SpinalHDL \u0438 \u043d\u0430 C. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0441\u043e\u0432\u0435\u0442 \u0442\u0435\u043c \u043a\u043e\u043c\u0443 \u043d\u0435 \u0442\u0435\u0440\u043f\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; \u043c\u043e\u0442\u0430\u0439\u0442\u0435 \u0432 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u043d\u0435\u0446, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e. \u0410 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0432\u0441\u0451 \u0436\u0435 \u0440\u0438\u0441\u043a\u043d\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e \u043a\u043e\u043d\u0446\u0430, \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e <a href=\"https:\/\/www.fabmicro.ru\/pub\/articles\/Developing_CGA_on_SpinalHDL.pdf\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PDF<\/a>. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448\u0435 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f!<\/p>\n<p> <strong>\u0421\u041e\u0414\u0415\u0420\u0416\u0410\u041d\u0418\u0415<\/strong><\/p>\n<p><a href=\"#1\" rel=\"noopener noreferrer nofollow\">1. \u0417\u0430\u0447\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e ?<\/a><\/p>\n<p><a href=\"#2\" rel=\"noopener noreferrer nofollow\">2. High-Definition Media Interface<\/a><\/p>\n<p><a href=\"#3\" rel=\"noopener noreferrer nofollow\">3. \u042d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432 \u0440\u0430\u0437\u044a\u0435\u043c\u0435 HDMI<\/a><\/p>\n<p><a href=\"#4\" rel=\"noopener noreferrer nofollow\">4. TMDS \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 DVI-D \u0438 HDMI<sup>(R)<\/sup><\/a><\/p>\n<p><a href=\"#5\" rel=\"noopener noreferrer nofollow\">5. \u0412\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438 \u0432\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438<\/a><\/p>\n<p><a href=\"#6\" rel=\"noopener noreferrer nofollow\">6. \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430<\/a><\/p>\n<p><a href=\"#6.1\" rel=\"noopener noreferrer nofollow\">6.1. \u0412\u044b\u0431\u043e\u0440 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/a><\/p>\n<p><a href=\"#6.2\" rel=\"noopener noreferrer nofollow\">6.2. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 HDMIInterface<\/a><\/p>\n<p><a href=\"#6.3\" rel=\"noopener noreferrer nofollow\">6.3. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 KarnixTestHDMITopLevel<\/a><\/p>\n<p><a href=\"#6.4\" rel=\"noopener noreferrer nofollow\">6.4. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438<\/a><\/p>\n<p><a href=\"#6.5\" rel=\"noopener noreferrer nofollow\">6.5. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u00ab\u043c\u0443\u0430\u0440\u00bb<\/a><\/p>\n<p><a href=\"#6.6\" rel=\"noopener noreferrer nofollow\">6.6. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c TMDS \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u044b<\/a><\/p>\n<p><a href=\"#6.7\" rel=\"noopener noreferrer nofollow\">6.7. \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c KarnixTestHDMI \u043d\u0430 \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#7\" rel=\"noopener noreferrer nofollow\">7. Color Graphics Adapter<\/a><\/p>\n<p><a href=\"#7.1\" rel=\"noopener noreferrer nofollow\">7.1. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/a><\/p>\n<p><a href=\"#7.2\" rel=\"noopener noreferrer nofollow\">7.2. \u0412\u0438\u0434\u0435\u043e \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0438 \u0432\u0438\u0434\u0435\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u044b CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/a><\/p>\n<p><a href=\"#7.3\" rel=\"noopener noreferrer nofollow\">7.3. \u0410\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c CGA \u043f\u043e\u0434 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0438<\/a><\/p>\n<p><a href=\"#8\" rel=\"noopener noreferrer nofollow\">8. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 CGA \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430<\/a><\/p>\n<p><a href=\"#8.1\" rel=\"noopener noreferrer nofollow\">8.1. \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c, \u043e\u043d \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439<\/a><\/p>\n<p><a href=\"#8.2\" rel=\"noopener noreferrer nofollow\">8.2. \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f CGA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0432 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0421\u043d\u041a<\/a><\/p>\n<p><a href=\"#8.3\" rel=\"noopener noreferrer nofollow\">8.3. \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0421\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430<\/a><\/p>\n<p><a href=\"#8.4\" rel=\"noopener noreferrer nofollow\">8.4. \u0418\u0437\u043c\u0435\u0440\u044f\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c<\/a><\/p>\n<p><a href=\"#8.5\" rel=\"noopener noreferrer nofollow\">8.5. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Bitblit \u0438 \u0437\u0430\u043c\u0435\u0440 \u0435\u0451 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<p><a href=\"#9\" rel=\"noopener noreferrer nofollow\">9. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/a><\/p>\n<p><a href=\"#9.1\" rel=\"noopener noreferrer nofollow\">9.1. \u0417\u043d\u0430\u043a\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/a><\/p>\n<p><a href=\"#9.2\" rel=\"noopener noreferrer nofollow\">9.2. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430<\/a><\/p>\n<p><a href=\"#9.3\" rel=\"noopener noreferrer nofollow\">9.3. \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/a><\/p>\n<p><a href=\"#9.4\" rel=\"noopener noreferrer nofollow\">9.4. \u041c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441\u043e\u0440<\/a><\/p>\n<p><a href=\"#9.5\" rel=\"noopener noreferrer nofollow\">9.5. \u041f\u043b\u0430\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 (\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a><\/p>\n<p><a href=\"#10\" rel=\"noopener noreferrer nofollow\">10. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b<\/a><\/p>\n<p><a href=\"#10.1\" rel=\"noopener noreferrer nofollow\">10.1. \u0412\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0435 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432<\/a><\/p>\n<p><a href=\"#10.2\" rel=\"noopener noreferrer nofollow\">10.2. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/a><\/p>\n<p><a href=\"#10.3\" rel=\"noopener noreferrer nofollow\">10.3. \u0421\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u2014 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e<\/a><\/p>\n<p><a href=\"#10.4\" rel=\"noopener noreferrer nofollow\">10.4. \u0412\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435<\/a><\/p>\n<p><a href=\"#11\" rel=\"noopener noreferrer nofollow\">11. \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<p><a href=\"#12\" rel=\"noopener noreferrer nofollow\">12. \u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 ?<\/a><\/p>\n<p><a href=\"#13\" rel=\"noopener noreferrer nofollow\">13. \u0421\u0441\u044b\u043b\u043a\u0438<\/a><\/p>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h2> 1. \u0417\u0430\u0447\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e ?<\/h2>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u043e\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u043d\u0430\u0444\u0438\u0433\u0430 \u043a\u043e\u0437\u0435 \u0431\u0430\u044f\u043d \u0438 \u0432 \u0447\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u0442?\u00bb <\/p>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0421\u043d\u041a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434 RV32IM (32 \u0431\u0438\u0442 RISC-V), \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00abIoT\u00bb. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0412\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u0431\u043e\u0440 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0432 \u043a\u043e\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432 \u0432\u0430\u0448\u0435\u043c \u0437\u0430\u0433\u043e\u0440\u043e\u0434\u043d\u043e\u043c \u0434\u043e\u043c\u0435. \u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u044d\u0442\u043e\u0439 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 &#8212; \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e-\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435, \u043d\u043e \u043c\u044b \u0442\u0430\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c, \u0442\u0430\u043a \u0432\u0435\u0434\u044c? \ud83d\ude09 \u0421\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u0430\u043c\u043e\u0431\u044b\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0442\u0443\u0442 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435  Arduino Nano \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u0441 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043d\u0430 \u0421\u0438. \u0418 \u0442\u0430\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 Github-\u0430 \u0442\u043e\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0412\u0430\u043c \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u0438\u043b\u0438 \u043d\u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0432 \u0433\u043e\u0441\u0442\u0438\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435, \u043d\u0443 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0433\u043e\u0441\u0442\u044f\u043c\u0438 \u0432\u0430\u0448\u0438\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u042d\u0412\u041c \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0435 \u0445\u0443\u0436\u0435 \u0447\u0435\u043c Raspberry Pi, \u0441 HDMI \u0438\u043b\u0438 VGA \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0438 \u0441 \u041e\u0421 Linux \u043d\u0430 \u0431\u043e\u0440\u0442\u0443. \u0412 \u0446\u0435\u043b\u043e\u043c, \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e, \u043d\u043e \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u0448\u0435\u0432\u044b\u043c. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c-\u0442\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435, \u0442\u0430\u043a \u043a\u0430\u043a MMC\/MicroSD \u043a\u0430\u0440\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u044d\u0442\u0438\u0445 \u00ab\u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u0438\u043a\u043e\u0432\u00bb, \u043f\u0440\u0438 \u0431\u0440\u043e\u0441\u043a\u0430\u0445 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043c\u0440\u0443\u0442 \u043a\u0430\u043a \u043c\u0443\u0445\u0438. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0434\u043e\u043b\u0433\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041e\u0421 Linux. \u041d\u0443 \u0438 \u0432-\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0445, \u0412\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0435\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0434 Linux \u0438 X11, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0432 \u043f\u0430\u0440\u0443-\u0442\u0440\u043e\u0439\u043a\u0443 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0445 \u0446\u0438\u0444\u0440 \u0438\u043b\u0438 \u043f\u0430\u0440\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u044b\u043c. \u0418\u043b\u0438 \u0432\u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u0431\u043b\u043e \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u043d\u0430 \u0430\u0432\u0442\u043e\u0431\u0443\u0441\u043d\u043e\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. \u0422\u0430 \u0436\u0435 RPi \u0442\u0443\u0442 \u0443\u0436\u0435 \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043d\u0438\u0437\u043a\u0438\u0445 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440 \u0438 \u0447\u0442\u043e\u0431\u044b \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u043e\u0433\u043e\u0440\u043e\u0434. \u0418\u043b\u0438 \u043f\u0443\u043b\u044c\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u043c \u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0410\u0421\u0423\u0422\u041f (\u0442.\u00a0\u043d. HMI). \u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u0430\u0445 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440, \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438 \u0441\u0431\u043e\u0435, \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u043e\u0432\u044b\u0448\u0435 \u0447\u0435\u043c \u0443 MicroSD \u043a\u0430\u0440\u0442\u044b. \u041a\u043e\u0440\u043e\u0447\u0435, \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 HDMI \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0438\u043b\u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0438\u0442 \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439.<\/p>\n<p>\u041d\u043e \u0441\u0430\u043c \u044f \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043a \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u2014 \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 HDMI \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c-\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u041f\u041b\u0418\u0421 \u0434\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0441\u043c\u043e\u0433 \u0431\u044b \u0435\u0433\u043e \u0440\u0430\u0441\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0437\u0430\u043d\u044f\u043b\u0441\u044f \u044f \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0438\u0437 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430.<\/p>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<h2> 2. High-Definition Media Interface<\/h2>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u043e, \u0432\u0438\u0434\u0435\u043e \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0435, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 High-Definition Multimedia Interface (HDMI) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u043c \u0438 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0435\u0433\u043e \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0430 \u00abHDMI Adopters\u00bb \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043d\u0430\u043c  \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0430\u0443\u0434\u0438\u043e\/\u0432\u0438\u0434\u0435\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b &#8212; Sony, Panasonic, Hitachi, Thompson, Toshiba, Philips \u0438 Silicon Image. \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f \u043f\u0438\u0448\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c \u0432\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 1700 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0438 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435\u043c\u0430\u043b\u044b\u0445 \u0434\u0435\u043d\u0435\u0433. \u042f \u043d\u0435 \u044e\u0440\u0438\u0441\u0442, \u043d\u043e \u0432 \u0441\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI <sup>(R)<\/sup> \u043e\u0431\u044f\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u00ab\u0440\u043e\u044f\u043b\u0442\u0438\u00bb \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 HDMI Licensing, LLC \u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u043f\u0430 \u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u044d\u0442\u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u043d \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u043c \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0430 \u0438\u043b\u0438 \u0441\u043a\u0430\u0447\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI<sup>(R)<\/sup> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 &#8212; \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (source) \u043a \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443 (sink), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c \u0432 \u043e\u0431\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445. \u0426\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u0430\u0443\u0434\u0438\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432 \u0441\u0436\u0430\u0442\u043e\u043c (compressed), \u0442\u0430\u043a \u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c (uncompressed) \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0432\u0438\u0434\u0435\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0436\u0430\u0442\u044b\u043c. \u0415\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 (\u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439) \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e HDMI \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432\u0438\u0434\u0435\u043e \u0438 \u0430\u0443\u0434\u0438\u043e, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Intel \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e High-bandwidth Digital Content Protection (HDCP), \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442 DVD \u043f\u043b\u0435\u0439\u0435\u0440\u0430) \u043a \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443 (\u0432\u0438\u0434\u0435\u043e\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440\u0443). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043b\u044e\u0447\u0430\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u043e\u0442 Digital Content Protection LLC, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u0442\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u044f\u0434\u0443 \u0441\u0442\u0440\u043e\u0433\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0418 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0434\u0430\u0432\u043d\u043e \u00ab\u0443\u0442\u0435\u043a\u043b\u0438\u00bb \u0438 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, Intel \u0433\u0440\u043e\u0437\u0438\u0442\u0441\u044f \u0437\u0430\u0441\u0443\u0434\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e, \u043a\u0442\u043e \u043f\u043e\u0441\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0441 <a href=\"https:\/\/en.wikipedia.org\/wiki\/High-bandwidth_Digital_Content_Protectionhttps:\/\/en.wikipedia.org\/wiki\/High-bandwidth_Digital_Content_Protection\" rel=\"noopener noreferrer nofollow\">HDCP<\/a> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<p>\u041d\u043e \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI <sup>(R)<\/sup> \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2000-\u0445, \u0432 \u044d\u043f\u043e\u0445\u0443 \u0431\u0443\u0440\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e (PAL\/NTS\u0421 \u0438 VGA) \u0432\u0438\u0434\u0435\u043e \u043a \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u043c\u0443 \u0438 \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e HDMI \u0432\u043d\u0435\u0441\u0435\u043d\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_Visual_Interface\" rel=\"noopener noreferrer nofollow\">DVI<\/a>, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 DVI-D \u2014 \u0435\u0433\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u043b \u044d\u0442\u043e \u043c\u0438\u043c\u043e\u043b\u0435\u0442\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043d\u0438\u0435, \u043f\u043e\u044f\u0441\u043d\u044e \u0447\u0442\u043e DVI \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 (\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439) \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u0432, \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 \u043a \u041f\u041a \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 1990-\u0445 \u0433\u043e\u0434\u043e\u0432. \u0415\u0433\u043e \u0446\u0435\u043b\u044c\u044e \u0431\u044b\u043b\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 VGA \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0415\u0441\u043b\u0438 \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/VGA_connector\" rel=\"noopener noreferrer nofollow\">VGA \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435<\/a> (\u0442\u0443\u0442 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0443 \u0441\u0430\u043c \u0440\u0430\u0437\u044a\u0435\u043c D-sub DE-15) \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u00abred\u00bb, \u00abgreen\u00bb \u0438 \u00abblue\u00bb \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0442\u0440\u0435\u043c \u043f\u0430\u0440\u0430\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432 \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0443\u0440\u043e\u0432\u043d\u044f\u043c\u0438 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0439, \u0442\u043e \u0432 DVI-D \u044d\u0442\u0438 \u0436\u0435 \u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0442 \u043f\u043e \u0442\u0440\u0435\u043c \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c TMDS \u043f\u0430\u0440\u0430\u043c, \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0446\u0432\u0435\u0442\u0430, \u0438 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c. \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f TMDS \u043f\u0430\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 (pixclk), \u0447\u0435\u0433\u043e \u0432 VGA \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041e\u0442 VGA \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 DVI \u0431\u044b\u043b\u0430 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0430 \u0441\u0435\u0442\u043a\u0430 \u0447\u0430\u0441\u0442\u043e\u0442 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 VESA, \u0445\u043e\u0442\u044f \u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0430. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 640&#215;480 @ 60 \u0413\u0446 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 pixclk = 25.175 \u041c\u0413\u0446 (\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u043a\u0443 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435). \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0432 DVI \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0435\u043d \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 Display Data Channel (DDC) \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 (E-DID) \u0438 \u043f\u0440\u043e\u0447\u0435\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c. \u0414\u043b\u044f DDC \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f I<sup>2<\/sup>C \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u2014 DDC clock \u0438 DDC data.<\/p>\n<p>\u0422\u0430\u043a \u0447\u0435\u043c \u0436\u0435 \u044d\u0442\u043e \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c? \u0410 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 HDMI \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e DVI-D, \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, HDMI \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 DVI-D \u0438 \u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0414\u0430, \u0443 HDMI \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0438 \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0441 DVI-D, \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c<\/p>\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-437672","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/437672","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=437672"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/437672\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=437672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=437672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=437672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}