{"id":416779,"date":"2024-06-30T01:09:41","date_gmt":"2024-06-30T01:09:41","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=416779"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=416779","title":{"rendered":"<span>Zynq 7000. \u041e\u0431\u043c\u0435\u043d \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 PS \u0438 PL<\/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>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043c\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0441 SoC Zynq 7000 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b QMTech. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 \u0442\u043e, \u043a\u0430\u043a \u044f \u0440\u0435\u0448\u0430\u043b \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 PS \u0438 PL \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c baremetal application \u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Linux. \u0412\u0441\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/99a\/a2a\/9b9\/99aa2a9b9cab6af18e79104cb77b9d5b.png\" width=\"680\" height=\"432\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/99a\/a2a\/9b9\/99aa2a9b9cab6af18e79104cb77b9d5b.png\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u044e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0435\u043c \u043e\u043f\u044b\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u043f\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442 \u043d\u0430 \u0431\u0430\u0437\u0435 Zynq. \u042f \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043f\u043e\u0434 \u041f\u041b\u0418\u0421 \u0438 SoC Zynq, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u043f\u043e\u0434 Linux \u0438 \u043c\u043e\u0433\u0443 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0441\u0430\u043c\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447, etc. \u041d\u043e \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043b\u044e\u0431\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u0440\u0438\u0442\u0438\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0443\u0440\u043e\u043a\u0430 &#8212; \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/users\/megalloid\/posts\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0443\u0440\u043e\u043a\u0438<\/a> \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u043e Zynq. \u0418\u043d\u0436\u0435\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435, \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Xilinx Vivado \u0438 \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Xilinx SDK \u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 Xilinx Vivado;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c baremetal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Zynq, \u043a\u0430\u043a \u0435\u0433\u043e \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Linux \u0441 FSBL, bitstream-\u0444\u0430\u0439\u043b\u043e\u043c, U-Boot, Device Tree, Root FS \u0438 \u044f\u0434\u0440\u043e\u043c;<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u043d\u0443\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0418 \u044f \u0435\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b! \u0420\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/529770\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0448\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u0421\u0442\u0430\u043d\u0446\u0438\u0438-Max \u0438 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439 \u043f\u043b\u0430\u0442, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u201c\u0434\u0436\u0438\u0433\u0438\u201d (\u0430\u043d\u0433\u043b. jigs).\u00a0<\/p>\n<p>\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0441\u0442\u0430\u0451\u0442 \u0438\u0433\u043b\u0430\u043c\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0438\u0433\u043b\u044b\u00a0 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0435 \u0432\u0434\u0430\u0432\u0430\u044f\u0441\u044c \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0434\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0441 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430. \u041d\u043e \u0441 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0441\u0447\u0451\u0442\u0430 \u0442\u0430\u043a\u0438\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u041f\u043b\u044e\u0441\u043e\u043c \u043a \u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0438\u0434\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441 \u044f\u0434\u0440\u043e\u043c Cortex-M4 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u043e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438, \u0442.\u0435. \u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0447\u0451\u0442\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0434\u0442\u0438 \u0438 \u0440\u0435\u0447\u0438. \u0418 \u0442\u0443\u0442 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u041f\u041b\u0418\u0421 \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Linux \u0438 \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u0443\u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0441\u0435\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Zynq!\u00a0<\/p>\n<p>\u0418 \u0442\u0443\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043e\u0444\u043e\u0440\u043c\u0438\u043b\u0430\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430:<\/p>\n<ol>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421 \u043d\u0430\u0431\u043e\u0440 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0434\u043e 2\u041c\u0413\u0446;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c\u0438\\\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u0431\u0440\u043e\u0441\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438\u0437 PS \u0438\u043b\u0438 Linux;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 (\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 1-2 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430).<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u044b\u043b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u0447\u0435\u0442\u043a\u0438\u0439 \u043f\u043b\u0430\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Processing System \u0438 Processor System Reset.\u00a0<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0438\u043d\u044b \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0445\u043e\u0434\u0430\u043c\u0438 \u0434\u043b\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0412 \u041f\u041b\u0418\u0421 \u0434\u0435\u043b\u0430\u0435\u043c \u0431\u043b\u043e\u043a \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0431\u043e\u043b\u0435\u0435 2 \u041c\u0413\u0446 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u041f\u041b\u0418\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0432 \u041f\u041b\u0418\u0421 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u0447\u0451\u0442\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u041f\u041b\u0418\u0421;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u043d\u0435\u043a\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u0438\u0437 \u041f\u041b\u0418\u0421, \u0442\u0430\u043a \u0438 \u0438\u0437 PS-\u0447\u0430\u0441\u0442\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u0434\u0432\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0432\u0443\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0441\u0431\u0440\u043e\u0441, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435) \u0438 \u043e\u0434\u043d\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 PS, \u0438 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u201c\u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c\u201d \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f\\\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c baremetal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u0437 Linux.<\/p>\n<\/li>\n<\/ol>\n<p>\u0427\u0442\u043e \u0436, \u043e\u0431\u0449\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e. <\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u0442\u0430\u043f<\/h2>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0435 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443. \u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#8212; \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 <a href=\"https:\/\/habr.com\/ru\/users\/megalloid\/posts\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/a>.  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e Block Design.<\/p>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 <strong>Create Block Design<\/strong> \u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c IP-\u044f\u0434\u0440\u043e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <strong>Zynq Processing System<\/strong>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e tcl-\u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u042f \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u0438\u043b Preset \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b QMTech \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u0435\u043d\u044e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Presets<\/strong> <strong>&#8212; Apply Configuration<\/strong> \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/ZynqQMTech.tcl\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d7e\/f3a\/e61\/d7ef3ae61b562a0020732fb6732a8fbc.png\" width=\"692\" height=\"273\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d7e\/f3a\/e61\/d7ef3ae61b562a0020732fb6732a8fbc.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043c\u0435\u043d\u044e<strong> Clock Configuration &#8212; PL Fabric Clocks<\/strong> \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c <strong>FCLK_CLK1<\/strong> \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0447\u0442\u043e \u0438 <strong>FCLK_CLK0<\/strong>. \u042d\u0442\u043e\u0442 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 (ILA &#8212; Integrated Logic Analyzer) \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1e2\/8ca\/2a8\/1e28ca2a8dd5c723b4601951efbe39c2.png\" width=\"1022\" height=\"682\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1e2\/8ca\/2a8\/1e28ca2a8dd5c723b4601951efbe39c2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d \u0431\u043b\u043e\u043a <strong>Processor System Reset<\/strong>. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c21\/480\/bda\/c21480bda699371fceb428a4e5cea26b.png\" width=\"900\" height=\"290\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c21\/480\/bda\/c21480bda699371fceb428a4e5cea26b.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043f\u0438\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <strong>Physical Constraints<\/strong>. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b <strong>physical_constr<\/strong> \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0438\u0437 \u0434\u0440\u0435\u0432\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dee\/209\/10f\/dee20910f1c17de64ab00bc016418273.png\" width=\"904\" height=\"630\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dee\/209\/10f\/dee20910f1c17de64ab00bc016418273.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0444\u0430\u0439\u043b physical_constr \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:\u00a0<\/p>\n<pre><code>set_property -dict { PACKAGE_PIN P20 IOSTANDARD LVCMOS33 } [get_ports { pulse_1 } ]; set_property -dict { PACKAGE_PIN N20 IOSTANDARD LVCMOS33 } [get_ports { pulse_2 } ]; set_property -dict { PACKAGE_PIN T19 IOSTANDARD LVCMOS33 } [get_ports { pulse_3 } ];<\/code><\/pre>\n<p>\u041f\u043e\u044f\u0441\u043d\u044e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e. \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c Zynq. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0438 \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<h2>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0445<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0430\u043d\u0442\u0438\u0437\u0432\u043e\u043d\u0430 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043b\u0438\u0448\u044c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0434\u0443\u043b\u044c <strong>debouncer<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 source-\u0444\u0430\u0439\u043b, \u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0435\u0433\u043e \u043a\u0430\u043a <strong>debouncer<\/strong> \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u044f \u0434\u0435\u043b\u0430\u043b \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/564152\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>  \u0438 \u043a\u043e\u0434 \u043e\u0431\u0438\u043b\u044c\u043d\u043e \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438. \u041d\u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f03\/60d\/0f7\/f0360d0f7fff0605b3bbe99d0c171f07.png\" width=\"1036\" height=\"380\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f03\/60d\/0f7\/f0360d0f7fff0605b3bbe99d0c171f07.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f debouncer. <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/debouncer.v\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430<\/a>.<\/p>\n<pre><code> `timescale 1ns \/ 1ps \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ Company: - \/\/ Engineer: megaloid \/\/  \/\/ Create Date: 08\/14\/2021 02:39:31 PM \/\/ Design Name: Zynq Multichannel Counter \/\/ Module Name: debouncer \/\/ Project Name:  \/\/ Target Devices:  \/\/ Tool Versions:  \/\/ Description: Debouncer for input signals from pins \/\/  \/\/ Dependencies:  \/\/  \/\/ Revision: \/\/ Revision 0.01 - File Created \/\/ Additional Comments: \/\/  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  module debouncer  \/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b #(     parameter CNT_WIDTH = 4 \/\/ \u0420\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430, \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e,  \/\/ \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 2\u041c\u0413\u0446 )  \/\/ \u041f\u043e\u0440\u0442\u044b ( input clk_i,                \/\/ Clock input input rst_i,                \/\/ Reset input input sw_i,                 \/\/ Switch input   output reg sw_state_o,      \/\/ \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0438 output reg sw_down_o,        \/\/ \u0418\u043c\u043f\u0443\u043b\u044c\u0441 \"\u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0430\" output reg sw_up_o           \/\/ \u0418\u043c\u043f\u0443\u043b\u044c\u0441 \"\u043a\u043d\u043e\u043f\u043a\u0430 \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u0430\" );      reg [1:0] sw_r;                    \/\/ \u0422\u0440\u0438\u0433\u0433\u0435\u0440 \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439      always @ (negedge rst_i or posedge clk_i)                    if (~rst_i)             sw_r   &lt;= 2'b00;         else             sw_r    &lt;= {sw_r[0], ~sw_i};                       reg [CNT_WIDTH-1:0] sw_count;       \/\/ \u0421\u0447\u0435\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f              wire sw_change_f = (sw_state_o != sw_r[1]);     wire sw_cnt_max = &amp;sw_count;               always @(negedge rst_i or posedge clk_i) \/\/ \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u043e\u043d\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 clk_i \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 sw_i         if (~rst_i)         begin             sw_count &lt;= 0;             sw_state_o &lt;= 0;         end          else if(sw_change_f)             \/\/ \u0418 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e           begin                             \/\/ \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e, \u0442\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.             sw_count &lt;= sw_count + 'd1;                                                                                 if(sw_cnt_max)                    \/\/ \u0421\u0447\u0435\u0442\u0447\u0438\u043a \u0434\u043e\u0441\u0442\u0438\u0433 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.                  sw_state_o &lt;= ~sw_state_o;    \/\/ \u0424\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0441\u043c\u0435\u043d\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439.             end                                                                      else                                  \/\/ \u0410 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u043f\u044f\u0442\u044c \u0440\u0430\u0432\u043d\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443,             sw_count &lt;= 0;                    \/\/ \u0442\u043e \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442. \u0411\u044b\u043b\u043e \u043b\u043e\u0436\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435                     always @(posedge clk_i)     begin         sw_down_o &lt;= sw_change_f &amp; sw_cnt_max &amp; ~sw_state_o; \/\/ \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438         sw_up_o &lt;= sw_change_f &amp; sw_cnt_max &amp;  sw_state_o;   \/\/ \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u0440\u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438     end                                     endmodule <\/code><\/pre>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u044e\u0442 \u0438\u0437 debouncer-\u043c\u043e\u0434\u0443\u043b\u044f. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e counter. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/counter.v\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430<\/a>.<\/p>\n<pre><code>`timescale 1ns \/ 1ps \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ Company: - \/\/ Engineer: megalloid \/\/  \/\/ Create Date: 08\/14\/2021 02:51:56 PM \/\/ Design Name: Zynq Multichannel Counter \/\/ Module Name: counter \/\/ Project Name: - \/\/ Target Devices: - \/\/ Tool Versions: - \/\/ Description: Pulses counter \/\/  \/\/ Dependencies: - \/\/  \/\/ Revision: - \/\/ Revision 0.01 - File Created \/\/ Additional Comments: - \/\/  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   module counter(     input pulse_i,          \/\/ \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432     input rst_i,            \/\/ \u0412\u0445\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0431\u0440\u043e\u0441\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     input ena_i,            \/\/ \u0412\u0445\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b     output [31:0] cnt_o       \/\/ \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430     );         reg[31:0] cnt_r = 0;     \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430         assign cnt_o = cnt_r;      \/\/ \u041f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443             always @ (posedge pulse_i or negedge rst_i) begin    \/\/ \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430  if (~rst_i) begin  cnt_r &lt;= 32'b0;                              \/\/ \u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a end else if(pulse_i &amp;&amp; ena_i) begin cnt_r &lt;= cnt_r + 1'b1;                       \/\/ \u0418\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0447\u0451\u0442 end end      endmodule <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0434\u0438\u0437\u0430\u0439\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0435 \u043d\u0430\u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e debouncer-\u043e\u0432 \u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432. \u042f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0442\u0440\u0451\u0445 \u043a\u0430\u043d\u0430\u043b\u0430\u0445. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u044d\u0442\u0438 \u0431\u043b\u043e\u043a\u0438 \u0432 \u043d\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043c \u043f\u043e\u0440\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f debouncer-\u043e\u0432, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0438\u0445 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/894\/77c\/243\/89477c2432d7c1c639bbf530a0fe064f.png\" width=\"1064\" height=\"586\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/894\/77c\/243\/89477c2432d7c1c639bbf530a0fe064f.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<h2>AXI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, BRAM \u0438 \u0432\u043e\u0442 \u044d\u0442\u043e \u0432\u0441\u0451<\/h2>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043e\u0431\u043c\u0435\u043d \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 PS \u0438 PL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 AXI. \u0414\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 Zynq \u0438 \u043f\u043e \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0413\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 AXI \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0451\u0442, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 AXI. \u041d\u043e \u0437\u0430 \u0442\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u043c\u043d\u0435 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.\u00a0<\/p>\n<p>\u0414\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043d\u0430\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u043c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Xilinx, \u0431\u043b\u043e\u043a AXI SmartConnect,\u00a0 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0435\u043c\u043d\u0438\u043a\u043e\u043c AXI Interconnect. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 &#8212; AXI4-Lite, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442, \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u043e\u0440\u0446\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0437\u0430 \u0440\u0430\u0437. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0438\u0437\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c. \u0421\u0430\u043c\u043e\u0435 \u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0442\u0440\u0451\u0445 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d IP-\u0431\u043b\u043e\u043a <strong>AXI SmartConnect<\/strong> \u0438 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0439\u0434\u0435\u043c \u0432 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0432\u044b\u0431\u0435\u0440\u0435\u043c <strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e Slave-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/strong> \u0440\u0430\u0432\u043d\u044b\u043c <strong>1<\/strong>. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1de\/487\/058\/1de4870580010dc29411b2022972a0b2.png\" width=\"542\" height=\"319\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1de\/487\/058\/1de4870580010dc29411b2022972a0b2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c <strong>AXI BRAM Controller<\/strong> \u0438 <strong>Block Memory Generator<\/strong>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0445 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435.\u00a0<\/p>\n<p>\u0414\u0432\u043e\u0439\u043d\u044b\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 AXI BRAM Controller-\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e9a\/9fb\/d02\/e9a9fbd0257e0d51adebdb3271272589.png\" width=\"660\" height=\"537\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9a\/9fb\/d02\/e9a9fbd0257e0d51adebdb3271272589.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>AXI<\/strong> <strong>Protocol<\/strong> <strong>AXI4LITE<\/strong>. \u0418 \u0434\u0435\u043b\u0430\u0435\u043c <strong>\u043e\u0434\u0438\u043d BRAM Interface<\/strong>. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u041e\u041a.\u00a0<\/p>\n<p>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b Master AXI \u0441 Slave AXI \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u043a AXI BRAM Controller:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/342\/81a\/43e\/34281a43ecdb0fd9993a0e27c4925d24.png\" width=\"827\" height=\"360\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/342\/81a\/43e\/34281a43ecdb0fd9993a0e27c4925d24.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 <strong>Block Memory Generator<\/strong>. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c<strong> Memory Type<\/strong> \u043a\u0430\u043a <strong>True Dual Port RAM<\/strong> \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f8\/fc3\/800\/2f8fc3800b83c7b6e2754cf8079e4e77.png\" width=\"597\" height=\"133\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f8\/fc3\/800\/2f8fc3800b83c7b6e2754cf8079e4e77.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2d6\/d71\/aad\/2d6d71aadce87bdb2da4849ddf4f21c8.png\" width=\"889\" height=\"389\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2d6\/d71\/aad\/2d6d71aadce87bdb2da4849ddf4f21c8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 BRAM. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0435 \u043c\u0435\u043d\u044e <strong>Window &#8212; Address Editor<\/strong> \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/18b\/c41\/41b\/18bc4141b750eb788c7108f4af75f566.png\" width=\"529\" height=\"223\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/18b\/c41\/41b\/18bc4141b750eb788c7108f4af75f566.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f <strong>0x4000_0000<\/strong> \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 <strong>8\u041a<\/strong>. \u041d\u0430\u043c \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438. \u041e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<h2>\u0411\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430\u043c\u0438<\/h2>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a BRAM \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 RTL-\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u0418\u0442\u0430\u043a, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d <strong>BRAM_PORTB<\/strong> \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u0435\u0433\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/04e\/365\/a20\/04e365a2098a1c5ee407bc0cc68e6e53.png\" width=\"264\" height=\"275\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/04e\/365\/a20\/04e365a2098a1c5ee407bc0cc68e6e53.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0432\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0434\u043b\u044f <strong>Enable B Port (enb) <\/strong>\u0438 <strong>Reset B Port (rstb)<\/strong>.\u00a0<\/p>\n<p>\u0414\u043b\u044f <strong>enb<\/strong> \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u043a\u0430\u043a \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443. \u0414\u043e\u0431\u0430\u0432\u0438\u043c IP-\u0431\u043b\u043e\u043a <strong>Contsant<\/strong> \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0448\u0438\u0440\u0438\u043d\u0443 \u0448\u0438\u043d\u044b \u0432 1 \u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e &#8212; 1.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/59c\/289\/5eb\/59c2895ebed1c6cc7eb48ac168b65678.png\" width=\"770\" height=\"431\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59c\/289\/5eb\/59c2895ebed1c6cc7eb48ac168b65678.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>rstb<\/strong> &#8212; \u0434\u0435\u043b\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 NOT \u0447\u0435\u0440\u0435\u0437 IP-\u0431\u043b\u043e\u043a Utility Vector Logic. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0438\u043f NOT \u0438 \u0448\u0438\u0440\u0438\u043d\u0443 \u0442\u0430\u043a \u0436\u0435 \u0432 1.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fe3\/5ff\/63e\/fe35ff63efea1465c06a53c956b4c929.png\" width=\"722\" height=\"532\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fe3\/5ff\/63e\/fe35ff63efea1465c06a53c956b4c929.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0ad\/bc3\/0e0\/0adbc30e07da0a13474ee6f8d88473ce.png\" width=\"939\" height=\"432\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0ad\/bc3\/0e0\/0adbc30e07da0a13474ee6f8d88473ce.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e RTL-\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u0430\u0437\u043e\u0432\u0451\u043c \u0435\u0433\u043e counter_mgmt.\u00a0 \u0418\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0440\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>\u0412\u0445\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0412\u0445\u043e\u0434 \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0412\u0445\u043e\u0434\u043d\u044b\u0435 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0448\u0438\u043d\u044b \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\\\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b Write Enable \u0434\u043b\u044f Block Memory Generator, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0435\u043c\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0445\u043e\u0434\u043d\u0430\u044f 32-\u0431\u0438\u0442\u043d\u0430\u044f \u0448\u0438\u043d\u0430 Address \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u0432 \u043a\u0430\u043a\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u043b\u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>32-\u0431\u0438\u0442\u043d\u0430\u044f \u0448\u0438\u043d\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438\u0437 BRAM;<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0444\u043e\u0440\u043c\u043b\u044f\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432: <\/p>\n<pre><code>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ Company: - \/\/ Engineer: Andrey Zaostrovnykh \/\/  \/\/ Create Date: 08\/14\/2021 02:39:31 PM \/\/ Design Name: Zynq Multichannel Counter \/\/ Module Name: counter_mgmt \/\/ Project Name:  \/\/ Target Devices:  \/\/ Tool Versions:  \/\/ Description: Management module for counters \/\/  \/\/ Dependencies:  \/\/  \/\/ Revision: \/\/ Revision 0.01 - File Created \/\/ Additional Comments: \/\/  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  module counter_mgmt(     input clk_i,                \/\/ \u0412\u0445\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f     input rst_i,                \/\/ \u0412\u0445\u043e\u0434 \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430     input [31:0] cnt_0_data,    \/\/ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     input [31:0] cnt_1_data,    \/\/ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 2-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     input [31:0] cnt_2_data,    \/\/ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 3-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     output cnt_0_en,           \/\/ \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 1-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     output cnt_0_rst,           \/\/ \u0421\u0431\u0440\u043e\u0441 1-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     output cnt_1_en,           \/\/ \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 1-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     output cnt_1_rst,           \/\/ \u0421\u0431\u0440\u043e\u0441 1-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     output cnt_2_en,           \/\/ \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 1-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     output cnt_2_rst,           \/\/ \u0421\u0431\u0440\u043e\u0441 1-\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430     output we,            \/\/ \u0421\u0438\u0433\u043d\u0430\u043b Write Enable     output [31:0] addr,         \/\/ \u0410\u0434\u0440\u0435\u0441 \u0447\u0442\u0435\u043d\u0438\u044f-\u0437\u0430\u043f\u0438\u0441\u0438     output [31:0] dout,         \/\/ \u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c     input [31:0] din           \/\/ \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438     );  endmodule<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u043e\u0434 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u043e\u0431\u0449\u0443\u044e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0441 Block Memory Generator \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/00f\/e64\/227\/00fe64227fb0c8c0fa222f2e9e497d06.png\" width=\"1152\" height=\"685\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/00f\/e64\/227\/00fe64227fb0c8c0fa222f2e9e497d06.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445\\\u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u043e\u0431\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c.\u00a0<\/p>\n<p>\u0417\u0430\u0434\u0443\u043c\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f. \u0420\u0430\u0431\u043e\u0442\u0430 \u0432\u0441\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u044f\u0447\u0435\u0439\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 BRAM. \u0422\u043e \u0435\u0441\u0442\u044c, \u043d\u0430\u0448 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u044f\u0447\u0435\u0439\u043a\u0443, \u0438 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0438\u0448\u0435\u0442 PS \u0432 \u044d\u0442\u0443 \u044f\u0447\u0435\u0439\u043a\u0443 &#8212; \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443. \u0412\u0442\u043e\u0440\u0430\u044f \u0438 \u0442\u0440\u0435\u0442\u044c\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\\\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432, \u0438 \u0441\u0431\u0440\u043e\u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0427\u0435\u0442\u0432\u0435\u0440\u0442\u0430\u044f, \u043f\u044f\u0442\u0430\u044f, \u0448\u0435\u0441\u0442\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u0437 \u0432 PS.\u00a0<\/p>\n<p>\u041a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f05\/647\/429\/f056474298d0fd9cb5ae7e231e1b29cf.png\" width=\"673\" height=\"245\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f05\/647\/429\/f056474298d0fd9cb5ae7e231e1b29cf.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0438 \u0441\u0431\u0440\u043e\u0441\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043d\u043e\u043c\u0435\u0440\u0443 \u0431\u0438\u0442\u0430 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e49\/482\/350\/e49482350ff09a5f1d623875885139ac.png\" width=\"734\" height=\"145\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e49\/482\/350\/e49482350ff09a5f1d623875885139ac.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 &#8212; 32 \u0448\u0442\u0443\u043a\u0438.\u00a0<\/p>\n<p>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0441\u0431\u0440\u043e\u0441\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u0438\u0441\u0432\u043e\u0438\u043c \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u0430\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0417\u0430\u043f\u0438\u0448\u0435\u043c \u044d\u0442\u043e \u0432 \u0444\u0430\u0439\u043b <strong>counter_mgmt.v<\/strong>:<\/p>\n<pre><code>reg [31:0] cnt_rst; reg [31:0] cnt_en;      assign cnt_0_rst = cnt_rst[0]; assign cnt_1_rst = cnt_rst[1]; assign cnt_2_rst = cnt_rst[2];          assign cnt_0_en = cnt_en[0]; assign cnt_1_en = cnt_en[1]; assign cnt_2_en = cnt_en[2];<\/code><\/pre>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. \u0422\u0443\u0442 \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b36\/ae8\/168\/b36ae81687872e8743f05fd19f5fdb16.png\" width=\"760\" height=\"258\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b36\/ae8\/168\/b36ae81687872e8743f05fd19f5fdb16.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0432\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c:<\/p>\n<pre><code>localparam IDLE = 4'd1; localparam EN = 4'd2; localparam EN_W = 4'd3; localparam EN_R = 4'd4; localparam RST = 4'd5; localparam RST_W = 4'd6; localparam RST_R = 4'd7; localparam WRT = 4'd8; localparam WRT_W = 4'd9; localparam WRT_R = 4'd10;<\/code><\/pre>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430:<\/p>\n<pre><code>reg [3:0] state = IDLE;<\/code><\/pre>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e BRAM.<\/p>\n<pre><code>reg we_r = 1'd0;\/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c assign we = we_r;\/\/ \u041f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443      reg [31:0] addr_r = 32'd0;\/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438\\\u0447\u0442\u0435\u043d\u0438\u044f assign addr = addr_r;\/\/ \u041f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443  reg [31:0] dout_r = 32'd0; \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0432 BRAM assign dout = dout_r;\/\/ \u041f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430:<\/p>\n<pre><code>reg [3:0] reg_choose = 4'h0;<\/code><\/pre>\n<p>\u041e\u043f\u0438\u0448\u0435\u043c, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c c Write Enable \u0438 Address \u043f\u0440\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0432 \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 state:<\/p>\n<pre><code>always @(posedge clk_i)     begin                case(state)                             IDLE: begin    \/\/ \u041f\u043e\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 IDLE \u0447\u0438\u0442\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 0x0                 we_r &lt;= 1'b0;                 addr_r &lt;= 32'd0;             end                                          EN: begin    \/\/ \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 EN \u0447\u0438\u0442\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 0x4                  we_r &lt;= 1'b0;                 addr_r &lt;= 32'd4;             end                          EN_W: begin    \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u043a\u043b\\\u0432\u044b\u043a\u043b \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432                  we_r &lt;= 1'b0;    \/\/ \u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u044b                 addr_r &lt;= 32'd4;             end                              EN_R: begin    \/\/ \u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u044b                 we_r &lt;= 1'b1;                 addr_r &lt;= 32'd0;             end                          RST: begin    \/\/ \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 RST \u0447\u0438\u0442\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 0x8                  we_r &lt;= 1'b0;                 addr_r &lt;= 32'd8;             end                          RST_W: begin    \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0434\u043e \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c                 we_r &lt;= 1'b0;    \/\/ \u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u044b                 addr_r &lt;= 32'd8;             end                              RST_R: begin    \/\/ \u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u044b                 we_r &lt;= 1'b1;                 addr_r &lt;= 32'd0;             end                          WRT: begin    \/\/ \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 WRT \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u0438                 we_r &lt;= 1'b1;                  addr_r &lt;= 32'h0;                                 end                          WRT_W: begin    \/\/ \u0414\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0431\u0435\u0433 \u043f\u043e \u0432\u0441\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f                 we_r &lt;= 1'b1;                    case (reg_choose)                                      4'd0: begin                      addr_r &lt;= 32'hC;  reg_choose &lt;= 4'h1;                     end                                            4'd1: begin                      addr_r &lt;= 32'h10;  reg_choose &lt;= 4'h2;                     end                                            4'd2: begin                      addr_r &lt;= 32'h14;  reg_choose &lt;= 4'h3;                     end                                          default: begin                         addr_r &lt;= 32'h0;                     end                                      endcase             end                          WRT_R: begin\/\/ \u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b                 we_r &lt;= 1'b1;                 addr_r &lt;= 32'd0;                   reg_choose &lt;= 4'h0;                           end                          default: begin                 we_r &lt;= 1'b0;                 addr_r &lt;= 32'd0;             end                                      endcase     end <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c BRAM \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 state \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430:<\/p>\n<pre><code> always @(posedge clk_i)     begin         if (rst_i == 1'b1) begin state &lt;= IDLE; end else begin             case(state)                                  IDLE: begin\/\/ \u0415\u0441\u043b\u0438 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 IDLE                                      case(din) \/\/ \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u0438\u0433\u043d\u0430\u043b din \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a BRAM                                              32'd1: begin\/\/ \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 0x1                             state &lt;= EN;\/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 EN                         end                                                      32'd2: begin\/\/ \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 0x2                             state &lt;= RST;\/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 RST                         end                                                      32'd3: begin\/\/ \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 0x3                             state &lt;= WRT;\/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 WRT                         end                                                  default: begin\/\/ \u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u043e                             state &lt;= state;\/\/ \u0422\u043e \u043e\u0441\u0442\u0430\u0451\u043c\u0441\u044f \u0432 \u0442\u043e\u043c \u0436\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438                         end                                              endcase                 end                              EN: begin                      state &lt;= EN_W;                                     end                                                     EN_W: begin                     state &lt;= EN_R;                  end                                                      EN_R: begin                                      state &lt;= IDLE;                 end                                  RST: begin                      state &lt;= RST_W;                                     end                                      RST_W: begin                     state &lt;= RST_R;                  end                                      RST_R: begin                                        state &lt;= IDLE;                 end                                  WRT: begin                      state &lt;= WRT_W;                                     end                         WRT_W: begin                     case (reg_choose)                                                      4'd2: begin                               state &lt;= WRT_R;                         end                                                      default: begin                             state &lt;= IDLE;                            end                                              endcase                 end                                                           WRT_R: begin                     state &lt;= IDLE;                 end                                      default: begin                     state &lt;= IDLE;                 end                                         endcase                 end     end <\/code><\/pre>\n<p>\u0418 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d behavioral-\u0431\u043b\u043e\u043a \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<pre><code>always @(posedge clk_i)     begin                  case(state)                                                 EN_R: begin                     cnt_en[0] &lt;= din[0];                 cnt_en[1] &lt;= din[1];                 cnt_en[2] &lt;= din[2];                                          dout_r &lt;= 32'b0;             end                                  RST_R: begin                     cnt_rst[0] &lt;= din[0];                 cnt_rst[1] &lt;= din[1];                 cnt_rst[2] &lt;= din[2];                                          dout_r &lt;= 32'b0;                   end                     WRT_W: begin                 case (reg_choose)                                          4'd0: begin                         dout_r &lt;= cnt_0_data;                      end                                                    4'd1: begin                          dout_r &lt;= cnt_1_data;                     end                                                    4'd2: begin                          dout_r &lt;= cnt_2_data;                     end                                                  default: begin                         dout_r &lt;= 32'h0;                     end                                          endcase              end                                   WRT_R: begin                 dout_r &lt;= 32'b0;              end                                    endcase       end<\/code><\/pre>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/counter_mgmt.v\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0432\u044b\u0445\u043e\u0434\u0430\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u0418\u043c \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u0430 PS-\u0441\u0438\u0441\u0442\u0435\u043c\u0430. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 IP-\u0431\u043b\u043e\u043a\u0430 <strong>Integrated Logic Analyzer<\/strong>.\u00a0<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 <strong>ILA<\/strong> \u043a <strong>FCLK_CLK1<\/strong>. \u0418 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043b\u043e\u0433. \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>Monitor<\/strong> <strong>Type<\/strong> \u043a\u0430\u043a <strong>Native<\/strong>. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c<strong> Number of Probes<\/strong> \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <strong>13 \u0448\u0442\u0443\u043a<\/strong>.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f03\/ed3\/abb\/f03ed3abbc06197ae48a52865bc82860.png\" width=\"790\" height=\"895\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f03\/ed3\/abb\/f03ed3abbc06197ae48a52865bc82860.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0431\u043d\u0438\u043a\u0438 \u043d\u0430 \u0448\u0438\u0440\u0438\u043d\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435. \u041f\u043e\u043b\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u044b\u0448\u043b\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u0433. \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7b7\/7bc\/a01\/7b77bca010ae6a4771187071467bcc99.png\" width=\"952\" height=\"682\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7b7\/7bc\/a01\/7b77bca010ae6a4771187071467bcc99.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a \u0441\u043b\u043e\u0432\u0443. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0432\u0441\u0435\u0439 \u0441\u0445\u0435\u043c\u044b \u0432 \u0446\u0435\u043b\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 &#8212; \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c. \u041d\u0443 \u0430 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u0438 \u043d\u0435 \u0432\u0435\u0440\u044e \u0447\u0442\u043e \u0432\u0441\u0451 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 &#8212; \u044f \u0441\u043e\u0435\u0434\u0438\u043d\u044e \u0432\u0441\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u043c \u0441 \u043b\u043e\u0433. \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c \u0438 \u043f\u043e\u0439\u0434\u0443 \u0437\u0430\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0444\u0435, \u043f\u043e\u043a\u0430 \u0438\u0434\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437.<\/p>\n<p>\u041d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u043e\u0442\u043c\u0435\u0447\u0443 \u043e\u0431\u0449\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043b\u043e\u0433.\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c:<\/p>\n<ol>\n<li>\n<p>\u0417\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u0437 Hardware manager \u0432 Vivado bitstream-\u0444\u0430\u0439\u043b \u0432 \u041f\u041b\u0418\u0421;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c SDK \u0438 \u0434\u0435\u043b\u0430\u0435\u043c Clean Project;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043c\u044b \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0432 baremetal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438);<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 Refresh device \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u044f\u0445 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0437\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c;<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0422\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043d\u0435\u0442.<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043a \u0441\u0438\u043d\u0442\u0435\u0437\u0443 \u0438 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 bitstream-\u0444\u0430\u0439\u043b\u0430.\u00a0<\/p>\n<ol>\n<li>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Validate Design<\/strong> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0432\u0441\u0451 \u043b\u0438 \u0445\u043e\u0440\u043e\u0448\u043e.\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043b\u0435\u0432\u043e\u043c \u043c\u0435\u043d\u044e <strong>Hierarchy<\/strong> \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043a\u043b\u0438\u043a\u0430\u0435\u043c \u043d\u0430 \u0444\u0430\u0439\u043b\u0435 <strong>zynq.bd<\/strong> \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <strong>Create HDL Wrapper<\/strong>, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>Let Vivado manage wrapper and auto-update<\/strong> \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>\u041e\u041a<\/strong>.\u00a0<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043a\u043d\u0430 <strong>Generate Block Design<\/strong>, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>Synthesis Options &#8212; Global<\/strong> \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Generate<\/strong>. \u0414\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u043a\u043e\u043d\u0446\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0438\u043d\u0442\u0435\u0437 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <strong>Generate bitstream.<\/strong><\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 (\u043e\u043a\u043e\u043b\u043e 10 \u043c\u0438\u043d\u0443\u0442).\u00a0<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 SDK \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 baremetal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432\u0441\u0451 \u0447\u0435\u0440\u0435\u0437 JTAG. \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u044b, \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u043c microSD-\u043a\u0430\u0440\u0442\u0443.\u00a0<\/p>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043c\u0435\u043d\u044e <strong>File &#8212; Export &#8212; Export Hardware<\/strong>. \u0421\u0442\u0430\u0432\u0438\u043c \u0433\u0430\u043b\u043e\u0447\u043a\u0443 <strong>Include bitstream<\/strong>. \u0418 \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c SDK \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e <strong>File &#8212; Launch SDK<\/strong>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f <strong>Xilinx SDK<\/strong> \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <strong>File &#8212; New &#8212; Application Project<\/strong>.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/688\/36a\/8fa\/68836a8fa490f97ea56342ce6b46c7ba.png\" width=\"889\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/688\/36a\/8fa\/68836a8fa490f97ea56342ce6b46c7ba.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0438\u0448\u0435\u043c \u0438\u043c\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Next<\/strong> \u0438 \u0431\u0435\u0440\u0435\u043c \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <strong>Hello World<\/strong>.\u00a0 \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u043d \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0435\u0433\u043e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0444\u0430\u0439\u043b <strong>helloworld.c:<\/strong><\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ff7\/63b\/ccf\/ff763bccf7b39391f696a6e04504082f.png\" width=\"260\" height=\"326\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ff7\/63b\/ccf\/ff763bccf7b39391f696a6e04504082f.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>#include &lt;stdio.h> #include \"platform.h\" #include \"xil_printf.h\" #include \"xil_io.h\" #include \"xparameters.h\" #include \"sleep.h\"  int main() { int num; int rev;  init_platform();  \/\/ Enable all counters Xil_Out32(XPAR_BRAM_0_BASEADDR + 4, 0x7);\/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 ENA \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0b111 Xil_Out32(XPAR_BRAM_0_BASEADDR + 0, 0x1);\/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 ENA  xil_printf(\"Enable all counters \\n\\r\");                  Xil_Out32(XPAR_BRAM_0_BASEADDR + 8, 0x7);\/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 RST \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0b111 Xil_Out32(XPAR_BRAM_0_BASEADDR + 0, 0x2);\/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 RST  xil_printf(\"Counting...\\n\\r\");   while(1) { Xil_Out32(XPAR_BRAM_0_BASEADDR + 0, 0x3);\/\/ \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f  for(num = 0; num &lt; 6 ; num++) { rev = Xil_In32(XPAR_BRAM_0_BASEADDR + num * 4); xil_printf(\"The data at 0x%x is 0x%x \\n\\r\", XPAR_BRAM_0_BASEADDR + num * 4, rev); }  xil_printf(\"\\n\\r\");  usleep(500000); }  cleanup_platform();  return 0; } <\/code><\/pre>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/helloworld.c\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c:<\/p>\n<ol>\n<li>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 ENA, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u0442\u0440\u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 ENA \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043c\u0430\u043d\u0434;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 RST, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u043d\u0430 \u0442\u0440\u0435\u0445 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\u0445 (0 &#8212; \u0441\u0431\u0440\u043e\u0441 \u0430\u043a\u0442\u0438\u0432\u0435\u043d, 1 &#8212; \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u0435\u043d);<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 RST \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043c\u0430\u043d\u0434;<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448\u0438 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435. \u0414\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b WRT \u0432 \u0446\u0438\u043a\u043b\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0446\u0438\u043a\u043b\u0435;<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c bitstream \u0432 FPGA \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e <strong>Xilinx &#8212; Program FPGA<\/strong> \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Program<\/strong>. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f91\/bd7\/95d\/f91bd795de26c5645976de72288e76ad.png\" width=\"563\" height=\"633\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f91\/bd7\/95d\/f91bd795de26c5645976de72288e76ad.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. \u041a\u043b\u0438\u043a\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0443\u043d\u043a\u0442 <strong>Run as &#8212; Launch on hardware (System debugger)<\/strong>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0430\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u043d\u0430 \u043d\u043e\u0436\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0432 constraints-\u0444\u0430\u0439\u043b\u0435 &#8212; \u0442\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0440\u0430\u0441\u0442\u0430\u0442\u044c. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c minicom \u0438 \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0432\u044b\u0432\u043e\u0434\u043e\u043c:<\/p>\n<pre><code>minicom -D \/dev\/ttyUSBx<\/code><\/pre>\n<p>\u0411\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432:<\/p>\n<pre><code>The data at 0x40000000 is 0x0 - \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 The data at 0x40000004 is 0x7   - \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u043a\u043b\\\u0432\u044b\u043a\u043b \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 The data at 0x40000008 is 0x7   - \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0431\u0440\u043e\u0441\u0430 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 The data at 0x4000000C is 0x14  - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 The data at 0x40000010 is 0x1E  - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 The data at 0x40000014 is 0x18  - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0432 baremetal \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u0438\u0437 Linux.<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u0437 Linux<\/h2>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0436\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043a\u0430\u043a \u0432 baremetal \u0438\u0437 Linux. \u0422\u0443\u0442 \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 userspace-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u0421\u0438.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ol>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 BOOT.BIN \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0437\u0430\u043d\u044f\u0442\u0438\u044f\u0445 \u0441 \u043d\u043e\u0432\u044b\u043c bitstream-\u0444\u0430\u0439\u043b\u043e\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438 \u0437\u0430\u043b\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 SD-\u043a\u0430\u0440\u0442\u0443 \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439.\u00a0 \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/565368\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0435, \u0430 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 BOOT.BIN \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.dropbox.com\/s\/s0g8s6k2wnyol1t\/sdcard?dl=0\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f Linux;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u043f\u043b\u0430\u0442\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0451;<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0432 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432 \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430, \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e;<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440:<\/p>\n<pre><code>sudo apt install gcc-arm-linux-gnueabihf<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 Zynq. \u0412 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u043f\u0430\u043f\u043a\u0443 Application:<\/p>\n<pre><code>megalloid@megalloid-lenovo:~$ cd Zynq\/Projects\/10.LinuxMulticounter\/ megalloid@megalloid-lenovo:~\/Zynq\/Projects\/10.LinuxMulticounter$ mkdir Application megalloid@megalloid-lenovo:~\/Zynq\/Projects\/10.LinuxMulticounter$ cd Application\/<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430, \u043f\u0435\u0440\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 <strong>counter_mgmt.c<\/strong> \u0438 <strong>Make-\u0444\u0430\u0439\u043b<\/strong> \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438:<\/p>\n<pre><code>megalloid@megalloid-lenovo:~\/Zynq\/Projects\/10.LinuxMulticounter\/Application$ touch counter_mgmt.c Makefile<\/code><\/pre>\n<p>\u0412 \u0444\u0430\u0439\u043b<strong> counter_mgmt.c <\/strong>\u043f\u0438\u0448\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<pre><code>#include &lt;stdio.h> #include &lt;unistd.h> #include &lt;sys\/mman.h> #include &lt;sys\/types.h> #include &lt;sys\/stat.h> #include &lt;fcntl.h> #include &lt;signal.h>  #define BRAM_CTRL_0 0x40000000 #define DATA_LEN    6  int fd; unsigned int *map_base0;  int sigintHandler(int sig_num) {       printf(\"\\n Terminating using Ctrl+C \\n\");      fflush(stdout);       close(fd);       munmap(map_base0, DATA_LEN);       return 0; }  int main(int argc, char **argv) {      signal(SIGINT, sigintHandler);       fd = open(\"\/dev\/mem\", O_RDWR | O_SYNC);       if (fd &lt; 0)       {           printf(\"can not open \/dev\/mem \\n\");           return (-1);      }          printf(\"\/dev\/mem is open \\n\");       map_base0 = mmap(NULL, DATA_LEN * 4, PROT_READ | PROT_WRITE, MAP_SHARED, fd, BRAM_CTRL_0);       if (map_base0 == 0)      {           printf(\"NULL pointer\\n\");      }         else      {           printf(\"mmap successful\\n\");      }          unsigned long addr;      unsigned int content;      int i = 0;       addr = (unsigned long)(map_base0 + 1);      content = 0x7;      map_base0[1] = content;       printf(\"%2dth data, address: 0x%lx data_write: 0x%x\\t\\t\\n\", i, addr, content);       addr = (unsigned long)(map_base0 + 0);      content = 0x1;      map_base0[0] = content;       printf(\"%2dth data, address: 0x%lx data_write: 0x%x\\t\\t\\n\", i, addr, content);            addr = (unsigned long)(map_base0 + 2);      content = 0x7;      map_base0[2] = content;       printf(\"%2dth data, address: 0x%lx data_write: 0x%x\\t\\t\\n\", i, addr, content);       addr = (unsigned long)(map_base0 + 0);      content = 0x2;      map_base0[0] = content;       printf(\"%2dth data, address: 0x%lx data_write: 0x%x\\t\\t\\n\", i, addr, content);       while(1)      {           addr = (unsigned long)(map_base0 + 0);           content = 0x3;           map_base0[0] = content;            printf(\"%2dth data, address: 0x%lx data_write: 0x%x\\t\\t\\n\", i, addr, content);            sleep(1);            printf(\"\\nread data from bram\\n\");           for (i = 0; i &lt; DATA_LEN; i++)           {                addr = (unsigned long)(map_base0 + i);                content = map_base0[i];                printf(\"%2dth data, address: 0x%lx data_read: 0x%x\\t\\t\\n\", i, addr, content);           }                     }       }<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/counter_mgmt.c\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430<\/a> \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b <strong>Makefile<\/strong>. \u0412 \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>CC=arm-linux-gnueabihf-gcc  CFLAGS ?= -O2 -static  objects = counter_mgmt.o   CHECKFLAGS = -Wall -Wuninitialized -Wundef  override CFLAGS := $(CHECKFLAGS) $(CFLAGS)  progs = counter_mgmt  counter_mgmt: $(objects) $(CC) $(CFLAGS) -o $@ $(objects)   clean: rm -f $(progs) $(objects) $(MAKE) -C clean  .PHONY: clean <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code># make # file counter_mgmt counter_mgmt: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU\/Linux), statically linked, BuildID[sha1]=adfec945dc44cf0b8a702405ca2a2ae9af1b06dd, for GNU\/Linux 3.2.0, not stripped<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043d\u0430 \u043f\u043b\u0430\u0442\u0443 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043d\u0430 SD-\u043a\u0430\u0440\u0442\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 Linux \u043f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u044f\u043d\u0443\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 Ethernet-\u043a\u0430\u0431\u0435\u043b\u044c \u043a \u043f\u043b\u0430\u0442\u0435;<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/strong> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442. \u0421\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0440\u0442\u0440\u0438\u0434\u0435\u0440 \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 SD-\u043a\u0430\u0440\u0442\u0443.\u00a0 \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c UART-\u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0430\u0448\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0438 \u043f\u0438\u0448\u0435\u043c:<\/p>\n<pre><code># mount \/dev\/mmcblk0p1 \/media # ls \/media\/ BOOT.bin           counter_mgmt    uImage             uramdisk.image.gz system.dtb         uboot.env<\/code><\/pre>\n<p><strong>\u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/strong> \u0442\u043e\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u0431\u0435\u043b\u044c Ethernet \u043e\u0442 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u043a \u043f\u043b\u0430\u0442\u0435. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043b\u0438\u00a0 IP-\u0430\u0434\u0440\u0435\u0441:<\/p>\n<pre><code># ifconfig eth0 eth0      Link encap:Ethernet  HWaddr 82:A4:28:8C:74:0A             inet addr:192.168.2.188  Bcast:192.168.2.255  Mask:255.255.255.0           inet6 addr: fe80::2a2f:f8c1:f353:e8b\/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:6 errors:0 dropped:0 overruns:0 frame:0           TX packets:13 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000            RX bytes:1404 (1.3 KiB)  TX bytes:1562 (1.5 KiB)           Interrupt:33 Base address:0xb000 <\/code><\/pre>\n<p>\u0412 buildroot \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u043a\u0435 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0442\u043e\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 DHCP \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f IP-\u0430\u0434\u0440\u0435\u0441\u0430. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0434\u0440\u0443\u0433\u043e\u0439 Linux &#8212; \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code># ifconfig eth0 192.168.2.188 netmask 255.255.255.0 up<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u043c IP-\u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u043f\u0438\u043d\u0433\u0443\u0435\u043c \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Zynq, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u044c \u0435\u0441\u0442\u044c \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u043e SSH (\u043d\u0430 PC \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d SSH-\u0441\u0435\u0440\u0432\u0435\u0440):<\/p>\n<pre><code># ping 192.168.2.121 PING 192.168.2.121 (192.168.2.121): 56 data bytes 64 bytes from 192.168.2.121: seq=0 ttl=64 time=892.638 ms 64 bytes from 192.168.2.121: seq=1 ttl=64 time=1.057 ms 64 bytes from 192.168.2.121: seq=2 ttl=64 time=2.897 ms 64 bytes from 192.168.2.121: seq=3 ttl=64 time=2.661 ms 64 bytes from 192.168.2.121: seq=4 ttl=64 time=147.555 ms ^C --- 192.168.2.121 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min\/avg\/max = 1.057\/209.361\/892.638 ms  # scp megalloid@192.168.2.121:\/home\/megalloid\/Zynq\/Projects\/10.LinuxMulticounter\/Application\/counter_mgmt .  Host '192.168.2.121' is not in the trusted hosts file. (ssh-ed25519 fingerprint sha1!! 78:97:ca:b2:0d:fb:49:3a:3d:d3:6a:69:a1:10:b5:92:69:95:e1:46) Do you want to continue connecting? (y\/n) y counter_mgmt                                  100% 3490KB   3.4MB\/s   00:01     # chmod +x counter_mgmt # .\/counter_mgmt<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u043b\u0436\u0435\u043d \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># .\/counter_mgmt  \/dev\/mem is open  mmap successful  0th data, address: 0xb6fd0004 data_write: 0x7  0th data, address: 0xb6fd0000 data_write: 0x1  0th data, address: 0xb6fd0008 data_write: 0x7  0th data, address: 0xb6fd0000 data_write: 0x2  0th data, address: 0xb6fd0000 data_write: 0x3  read data from bram  0th data, address: 0xb6fd0000 data_read: 0x0  1th data, address: 0xb6fd0004 data_read: 0x7  2th data, address: 0xb6fd0008 data_read: 0x7  3th data, address: 0xb6fd000c data_read: 0xb  4th data, address: 0xb6fd0010 data_read: 0x12  5th data, address: 0xb6fd0014 data_read: 0xa  6th data, address: 0xb6fd0000 data_write: 0x3<\/code><\/pre>\n<p>\u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u0441\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u0430\u0447\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043a\u043d\u043e\u043f\u043a\u0438 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0443\u0440\u043e\u043a\u043e\u0432) &#8212; \u0443 \u043d\u0430\u0441 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430.\u00a0<\/p>\n<p>\u0417\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0439. \u0423\u0432\u0438\u0434\u0438\u043c\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0440\u043e\u043a\u0430\u0445! =)<\/p>\n<p><strong>P.S. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Zynq &#8212; \u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435 \u0432 Telegram @megalloid. \u0418 \u043c\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0443 \u0432\u0430\u043c. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 &#8212; \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u043d\u0430\u0442 \u043a\u0430\u043a \u0441\u043a\u0440\u043e\u043c\u043d\u0443\u044e \u043e\u043f\u043b\u0430\u0442\u0443 \u0437\u0430 \u0442\u0443 \u0443\u0439\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0447\u0442\u043e \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430&#8230;<\/strong><\/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\/573066\/\"> https:\/\/habr.com\/ru\/articles\/573066\/<\/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>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043c\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0441 SoC Zynq 7000 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b QMTech. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 \u0442\u043e, \u043a\u0430\u043a \u044f \u0440\u0435\u0448\u0430\u043b \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 PS \u0438 PL \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c baremetal application \u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Linux. \u0412\u0441\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442!<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u044e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0435\u043c \u043e\u043f\u044b\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u043f\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442 \u043d\u0430 \u0431\u0430\u0437\u0435 Zynq. \u042f \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043f\u043e\u0434 \u041f\u041b\u0418\u0421 \u0438 SoC Zynq, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u043f\u043e\u0434 Linux \u0438 \u043c\u043e\u0433\u0443 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0441\u0430\u043c\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447, etc. \u041d\u043e \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043b\u044e\u0431\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u0440\u0438\u0442\u0438\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0443\u0440\u043e\u043a\u0430 &#8212; \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/users\/megalloid\/posts\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0443\u0440\u043e\u043a\u0438<\/a> \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u043e Zynq. \u0418\u043d\u0436\u0435\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435, \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Xilinx Vivado \u0438 \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Xilinx SDK \u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 Xilinx Vivado;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c baremetal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Zynq, \u043a\u0430\u043a \u0435\u0433\u043e \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Linux \u0441 FSBL, bitstream-\u0444\u0430\u0439\u043b\u043e\u043c, U-Boot, Device Tree, Root FS \u0438 \u044f\u0434\u0440\u043e\u043c;<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u043d\u0443\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0418 \u044f \u0435\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b! \u0420\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/529770\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0448\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u0421\u0442\u0430\u043d\u0446\u0438\u0438-Max \u0438 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439 \u043f\u043b\u0430\u0442, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u201c\u0434\u0436\u0438\u0433\u0438\u201d (\u0430\u043d\u0433\u043b. jigs).\u00a0<\/p>\n<p>\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0441\u0442\u0430\u0451\u0442 \u0438\u0433\u043b\u0430\u043c\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0438\u0433\u043b\u044b\u00a0 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0435 \u0432\u0434\u0430\u0432\u0430\u044f\u0441\u044c \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0434\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0441 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430. \u041d\u043e \u0441 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0441\u0447\u0451\u0442\u0430 \u0442\u0430\u043a\u0438\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u041f\u043b\u044e\u0441\u043e\u043c \u043a \u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0438\u0434\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441 \u044f\u0434\u0440\u043e\u043c Cortex-M4 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u043e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438, \u0442.\u0435. \u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0447\u0451\u0442\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0434\u0442\u0438 \u0438 \u0440\u0435\u0447\u0438. \u0418 \u0442\u0443\u0442 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u041f\u041b\u0418\u0421 \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Linux \u0438 \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u0443\u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0441\u0435\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Zynq!\u00a0<\/p>\n<p>\u0418 \u0442\u0443\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043e\u0444\u043e\u0440\u043c\u0438\u043b\u0430\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430:<\/p>\n<ol>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421 \u043d\u0430\u0431\u043e\u0440 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0434\u043e 2\u041c\u0413\u0446;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c\u0438\\\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u0431\u0440\u043e\u0441\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438\u0437 PS \u0438\u043b\u0438 Linux;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 (\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 1-2 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430).<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u044b\u043b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u0447\u0435\u0442\u043a\u0438\u0439 \u043f\u043b\u0430\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Processing System \u0438 Processor System Reset.\u00a0<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0438\u043d\u044b \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0445\u043e\u0434\u0430\u043c\u0438 \u0434\u043b\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0412 \u041f\u041b\u0418\u0421 \u0434\u0435\u043b\u0430\u0435\u043c \u0431\u043b\u043e\u043a \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0431\u043e\u043b\u0435\u0435 2 \u041c\u0413\u0446 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u041f\u041b\u0418\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0432 \u041f\u041b\u0418\u0421 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u0447\u0451\u0442\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u041f\u041b\u0418\u0421;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u043d\u0435\u043a\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u0438\u0437 \u041f\u041b\u0418\u0421, \u0442\u0430\u043a \u0438 \u0438\u0437 PS-\u0447\u0430\u0441\u0442\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u0434\u0432\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0432\u0443\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0441\u0431\u0440\u043e\u0441, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435) \u0438 \u043e\u0434\u043d\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 PS, \u0438 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u201c\u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c\u201d \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f\\\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c baremetal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u0437 Linux.<\/p>\n<\/li>\n<\/ol>\n<p>\u0427\u0442\u043e \u0436, \u043e\u0431\u0449\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e. <\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u0442\u0430\u043f<\/h2>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0435 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443. \u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#8212; \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 <a href=\"https:\/\/habr.com\/ru\/users\/megalloid\/posts\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/a>.  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e Block Design.<\/p>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 <strong>Create Block Design<\/strong> \u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c IP-\u044f\u0434\u0440\u043e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <strong>Zynq Processing System<\/strong>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e tcl-\u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u042f \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u0438\u043b Preset \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b QMTech \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u0435\u043d\u044e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Presets<\/strong> <strong>&#8212; Apply Configuration<\/strong> \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/ZynqQMTech.tcl\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043c\u0435\u043d\u044e<strong> Clock Configuration &#8212; PL Fabric Clocks<\/strong> \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c <strong>FCLK_CLK1<\/strong> \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0447\u0442\u043e \u0438 <strong>FCLK_CLK0<\/strong>. \u042d\u0442\u043e\u0442 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 (ILA &#8212; Integrated Logic Analyzer) \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d \u0431\u043b\u043e\u043a <strong>Processor System Reset<\/strong>. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043f\u0438\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <strong>Physical Constraints<\/strong>. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b <strong>physical_constr<\/strong> \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0438\u0437 \u0434\u0440\u0435\u0432\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0444\u0430\u0439\u043b physical_constr \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:\u00a0<\/p>\n<pre><code>set_property -dict { PACKAGE_PIN P20 IOSTANDARD LVCMOS33 } [get_ports { pulse_1 } ]; set_property -dict { PACKAGE_PIN N20 IOSTANDARD LVCMOS33 } [get_ports { pulse_2 } ]; set_property -dict { PACKAGE_PIN T19 IOSTANDARD LVCMOS33 } [get_ports { pulse_3 } ];<\/code><\/pre>\n<p>\u041f\u043e\u044f\u0441\u043d\u044e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e. \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c Zynq. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0438 \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<h2>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0445<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0430\u043d\u0442\u0438\u0437\u0432\u043e\u043d\u0430 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043b\u0438\u0448\u044c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0434\u0443\u043b\u044c <strong>debouncer<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 source-\u0444\u0430\u0439\u043b, \u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0435\u0433\u043e \u043a\u0430\u043a <strong>debouncer<\/strong> \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u044f \u0434\u0435\u043b\u0430\u043b \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/564152\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>  \u0438 \u043a\u043e\u0434 \u043e\u0431\u0438\u043b\u044c\u043d\u043e \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438. \u041d\u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f debouncer. <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/debouncer.v\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430<\/a>.<\/p>\n<pre><code> `timescale 1ns \/ 1ps \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ Company: - \/\/ Engineer: megaloid \/\/  \/\/ Create Date: 08\/14\/2021 02:39:31 PM \/\/ Design Name: Zynq Multichannel Counter \/\/ Module Name: debouncer \/\/ Project Name:  \/\/ Target Devices:  \/\/ Tool Versions:  \/\/ Description: Debouncer for input signals from pins \/\/  \/\/ Dependencies:  \/\/  \/\/ Revision: \/\/ Revision 0.01 - File Created \/\/ Additional Comments: \/\/  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  module debouncer  \/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b #(     parameter CNT_WIDTH = 4 \/\/ \u0420\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430, \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e,  \/\/ \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 2\u041c\u0413\u0446 )  \/\/ \u041f\u043e\u0440\u0442\u044b ( input clk_i,                \/\/ Clock input input rst_i,                \/\/ Reset input input sw_i,                 \/\/ Switch input   output reg sw_state_o,      \/\/ \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0438 output reg sw_down_o,        \/\/ \u0418\u043c\u043f\u0443\u043b\u044c\u0441 \"\u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0430\" output reg sw_up_o           \/\/ \u0418\u043c\u043f\u0443\u043b\u044c\u0441 \"\u043a\u043d\u043e\u043f\u043a\u0430 \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u0430\" );      reg [1:0] sw_r;                    \/\/ \u0422\u0440\u0438\u0433\u0433\u0435\u0440 \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439      always @ (negedge rst_i or posedge clk_i)                    if (~rst_i)             sw_r   &lt;= 2'b00;         else             sw_r    &lt;= {sw_r[0], ~sw_i};                       reg [CNT_WIDTH-1:0] sw_count;       \/\/ \u0421\u0447\u0435\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f              wire sw_change_f = (sw_state_o != sw_r[1]);     wire sw_cnt_max = &amp;sw_count;               always @(negedge rst_i or posedge clk_i) \/\/ \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u043e\u043d\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 clk_i \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 sw_i         if (~rst_i)         begin             sw_count &lt;= 0;             sw_state_o &lt;= 0;         end          else if(sw_change_f)             \/\/ \u0418 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e           begin                             \/\/ \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e, \u0442\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.             sw_count &lt;= sw_count + 'd1;                                                                                 if(sw_cnt_max)                    \/\/ \u0421\u0447\u0435\u0442\u0447\u0438\u043a \u0434\u043e\u0441\u0442\u0438\u0433 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.                  sw_state_o &lt;= ~sw_state_o;    \/\/ \u0424\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0441\u043c\u0435\u043d\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439.             end                                                                      else                                  \/\/ \u0410 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u043f\u044f\u0442\u044c \u0440\u0430\u0432\u043d\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443,             sw_count &lt;= 0;                    \/\/ \u0442\u043e \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442. \u0411\u044b\u043b\u043e \u043b\u043e\u0436\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435                     always @(posedge clk_i)     begin         sw_down_o &lt;= sw_change_f &amp; sw_cnt_max &amp; ~sw_state_o; \/\/ \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438         sw_up_o &lt;= sw_change_f &amp; sw_cnt_max &amp;  sw_state_o;   \/\/ \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u0440\u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438     end                                     endmodule <\/code><\/pre>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u044e\u0442 \u0438\u0437 debouncer-\u043c\u043e\u0434\u0443\u043b\u044f. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e counter. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. <a href=\"https:\/\/github.com\/megalloid\/zynq_qmtech\/blob\/main\/counter.v\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430<\/a>.<\/p>\n<pre><code>`timescale 1ns \/ 1ps \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ Company: - \/\/ Engineer: megalloid \/\/  \/\/ Create Date: 08\/14\/2021 02:51:56 PM \/\/ Design Name: Zynq Multichannel Counter \/\/ Module<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-416779","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/416779","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=416779"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/416779\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=416779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=416779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=416779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}