{"id":315610,"date":"2020-12-27T15:00:21","date_gmt":"2020-12-27T15:00:21","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=315610"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=315610","title":{"rendered":"Zynq. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 (<a href=\"https:\/\/habr.com\/ru\/post\/508292\/\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Zynq? \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440<\/a>), \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0448\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c. \u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a!<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<p>  <a href=\"#Generalinformation\">1 \u041e\u0431\u0449\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f<\/a><br \/>  <a href=\"#PIO\">2 \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 PIO<\/a><br \/>  <a href=\"#HardPIO\">2.1 \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/a><br \/>  <a href=\"#SoftPIO\">2.2 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/a><br \/>  <a href=\"#ResPIO\">2.3 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/a><br \/>  <a href=\"#DMA\">3 \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 DMA<\/a><br \/>  <a href=\"#HardDMA\">3.1 \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/a><br \/>  <a href=\"#SoftDMA\">3.2 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/a><br \/>  <a href=\"#ResDMA\">3.3 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/a><br \/>  <a href=\"#Conclusion\">4 \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><br \/>  <a href=\"#SourcesUsed\">5 \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/a><\/p>\n<p>  <a name=\"Generalinformation\"><\/a><\/p>\n<h2>1 \u041e\u0431\u0449\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0432 \u0434\u0432\u0443\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445:  <\/p>\n<ul>\n<li><abbr title=\"Programmed input\/output\">PIO<\/abbr>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u0442 GP. <\/li>\n<li><abbr title=\"direct memory access\">DMA<\/abbr>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u0442 HP.<\/li>\n<\/ul>\n<p>  <a name=\"PIO\"><\/a><\/p>\n<h2>2 \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 PIO<\/h2>\n<p>  \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 PIO \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u043a\u0430\u043a \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 PIO \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u043e\u043c \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430 GP, \u0433\u0434\u0435 Master \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, Slave \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430. <br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/o4\/nb\/dj\/o4nbdjaohn3o1zgvnrpf3vcl5mi.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/o4\/nb\/dj\/o4nbdjaohn3o1zgvnrpf3vcl5mi.png\"><\/a><br \/>  <sub>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 PIO<\/sub><\/p>\n<p>  <a name=\"HardPIO\"><\/a><\/p>\n<h3>2.1 \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p>  <\/p>\n<ol>\n<li>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f Zybo \u0432 Vivado, \u0442\u0438\u043f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b xc7z010clg400-1. <\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0435\u043c block design. \u0412\u043e Flow Navigator =&gt; Create Block Design =&gt; \u0438\u043c\u044f \u00abProcessingSystem\u00bb =&gt; OK. <\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab+\u00bb \u043d\u0430 \u043f\u043e\u043b\u0435 \u0438\u043b\u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl + I \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e. <a href=\"https:\/\/habrastorage.org\/webt\/3y\/1m\/pa\/3y1mpaqhxco5jk2oo7581bhjnjm.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3y\/1m\/pa\/3y1mpaqhxco5jk2oo7581bhjnjm.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abRun Block Automation\u00bb =&gt; OK. <\/li>\n<li>\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 Zynq7 Processing System =&gt; Import XPS Setting =&gt; \u0423\u043a\u0430\u0436\u0435\u043c \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 =&gt; OK =&gt; OK. <\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e\u0435 \u044f\u0434\u0440\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435. Tools =&gt; Create and Package New IP =&gt; Next =&gt; Create a new AXI4 peripheral =&gt; Next =&gt; \u0417\u0430\u0434\u0430\u0435\u043c \u0438\u043c\u044f \u044f\u0434\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u00abPIO_registers\u00bb \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f =&gt; Next =&gt; \u0412 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 (4 \u0445\u0432\u0430\u0442\u0438\u0442), \u0442\u0438\u043f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e Lite =&gt; Next =&gt; Add IP to the repository =&gt; Finish. <a href=\"https:\/\/habrastorage.org\/webt\/u-\/in\/c7\/u-inc7ybowmyka5n4ti6-1xagti.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/u-\/in\/c7\/u-inc7ybowmyka5n4ti6-1xagti.png\"><\/a><\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IP \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. \u041c\u043e\u0436\u043d\u043e \u0435\u0433\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432 Flow Navigator =&gt; IP Catalog. <a href=\"https:\/\/habrastorage.org\/webt\/xb\/bo\/sj\/xbbosjn1e9a0lyqptxkg4qsdubs.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xb\/bo\/sj\/xbbosjn1e9a0lyqptxkg4qsdubs.png\"><\/a><\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c. Ctrl + I =&gt; PIO_registers. <a href=\"https:\/\/habrastorage.org\/webt\/o-\/au\/am\/o-auamnnxwaufdlcveitfgeib8u.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/o-\/au\/am\/o-auamnnxwaufdlcveitfgeib8u.png\"><\/a><\/li>\n<li>\u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 \u043d\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u043a\u0430\u043c\u0438 \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u0431\u043b\u043e\u043a\u0435 PIO_registers \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 =&gt; Edit in IP Packager =&gt; OK. \u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e Vivado \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u044f\u0434\u0440\u043e\u043c. <\/li>\n<li>\u0412 \u0444\u0430\u0439\u043b\u0435 PIO_registers_v1_0.vhd \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0438\u0445 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e:<br \/> \n<pre><code class=\"vhdl\">iSwitches\t: in\tstd_logic_vector( 3 downto 0); oLeds\t\t: out\tstd_logic_vector( 3 downto 0); ... iSwitches\t=&gt; iSwitches, oLeds\t\t=&gt; oLeds, <\/code><\/pre>\n<p>  <\/li>\n<li>\u0412 \u0444\u0430\u0439\u043b\u0435 PIO_registers_v1_0_S_AXI.vhd \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b:<br \/> \n<pre><code class=\"vhdl\">iSwitches\t: in\tstd_logic_vector( 3 downto 0); oLeds\t\t: out\tstd_logic_vector( 3 downto 0); <\/code><\/pre>\n<p>   <\/li>\n<li>\u041e\u043f\u0438\u0448\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0445\u043e\u0434\u043e\u0432 \u0438 \u0432\u044b\u0445\u043e\u0434\u043e\u0432:<br \/> \n<pre><code class=\"vhdl\">signal\tSwitchesReg\t: std_logic_vector(31 downto 0); ... process (SwitchesReg, slv_reg1, slv_reg2, slv_reg3, axi_araddr, S_AXI_ARESETN, slv_reg_rden) variable loc_addr :std_logic_vector(OPT_MEM_ADDR_BITS downto 0); begin     -- Address decoding for reading registers     loc_addr := axi_araddr(ADDR_LSB + OPT_MEM_ADDR_BITS downto ADDR_LSB);     case loc_addr is       when b&quot;00&quot; =&gt;         reg_data_out &lt;= SwitchesReg;       when b&quot;01&quot; =&gt;         reg_data_out &lt;= slv_reg1;       when b&quot;10&quot; =&gt;         reg_data_out &lt;= slv_reg2;       when b&quot;11&quot; =&gt;         reg_data_out &lt;= slv_reg3;       when others =&gt;         reg_data_out  &lt;= (others =&gt; '0');     end case; end process;  process (S_AXI_ACLK) begin \tif (rising_edge(S_AXI_ACLK)) then \t\tif (S_AXI_ARESETN = '0') then \t\t\tSwitchesReg &lt;= (others =&gt; '0'); \t\telse \t\t\tSwitchesReg( 3 downto 0) &lt;= iSwitches; \t\tend if; \tend if; end process; \t process (S_AXI_ACLK) begin \tif (rising_edge(S_AXI_ACLK)) then \t\tif (S_AXI_ARESETN = '0') then \t\t\toLeds &lt;= (others =&gt; '0'); \t\telse \t\t\toLeds &lt;= slv_reg1( 3 downto 0); \t\tend if; \tend if; end process; <\/code><\/pre>\n<p>   <\/li>\n<li>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c vhd \u0444\u0430\u0439\u043b\u044b, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Package IP \u2013 PIO_registers. \u041e\u0431\u043d\u043e\u0432\u0438\u043c \u044f\u0434\u0440\u043e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u0412\u043a\u043b\u0430\u0434\u043a\u0430 Compatibility \u043c\u0435\u043d\u044f\u0435\u043c Life Cycle \u043d\u0430 Production. \u0412\u043a\u043b\u0430\u0434\u043a\u0430 File Groups =&gt; Merge changes from File Group Wizard. \u0412\u043a\u043b\u0430\u0434\u043a\u0430 Customization Parameters =&gt; Merge changes from Customization Parameters Wizard. \u0412\u043a\u043b\u0430\u0434\u043a\u0430 Review and Package =&gt; Re-Package IP =&gt; Yes. Vivado \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u044f\u0434\u0440\u043e\u043c \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f. <\/li>\n<li>\u0412 \u043e\u043a\u043d\u0435 Block Design \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Report IP Status, \u0432 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u043c\u0441\u044f \u0432\u043d\u0438\u0437\u0443 \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Upgrade Selected =&gt; OK =&gt; Skip =&gt; OK. <a href=\"https:\/\/habrastorage.org\/webt\/ss\/bo\/pe\/ssbopeabqgs-wdcodmnygqetf0y.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ss\/bo\/pe\/ssbopeabqgs-wdcodmnygqetf0y.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Run Connection Automation =&gt; OK. <a href=\"https:\/\/habrastorage.org\/webt\/ty\/jq\/kz\/tyjqkzdzv3gxxjta5y7cmulzoau.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ty\/jq\/kz\/tyjqkzdzv3gxxjta5y7cmulzoau.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u043e\u0440\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u043a \u043f\u043e\u0440\u0442\u0430\u043c block design\u2019a. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u0440\u0442, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 =&gt; Make External. <a href=\"https:\/\/habrastorage.org\/webt\/c4\/-a\/oa\/c4-aoa00bmt7aa4-_7uvsavqrc0.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/c4\/-a\/oa\/c4-aoa00bmt7aa4-_7uvsavqrc0.png\"><\/a><\/li>\n<li>\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f iSwitches_0 =&gt; iSwitches. oLeds_0 =&gt; oLeds. <a href=\"https:\/\/habrastorage.org\/webt\/to\/kz\/co\/tokzcob_3jycxkjqjwdscq7ccqy.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/to\/kz\/co\/tokzcob_3jycxkjqjwdscq7ccqy.png\"><\/a><\/li>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d =&gt; Tools =&gt; Validate Design =&gt; Ok. <\/li>\n<li>File =&gt; Save Block Design. <\/li>\n<li>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u0438\u0437 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 block design \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u043d\u0430\u0436\u0430\u0432 \u0432\u043e Flow Navigator =&gt; Project Manager. <\/li>\n<li>\u0421\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0440\u0442\u044b \u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e block design\u2019a. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0440\u0430\u0435\u043c \u0444\u0430\u0439\u043b ProcessingSystem.bd, \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 =&gt; View Instantiation Template. <a href=\"https:\/\/habrastorage.org\/webt\/1k\/g-\/2u\/1kg-2uuusxv7znycfarclwckw0i.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/1k\/g-\/2u\/1kg-2uuusxv7znycfarclwckw0i.png\"><\/a><\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0435\u043c vhd \u0444\u0430\u0439\u043b top-\u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 \u043d\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 block design. File =&gt; Add Sources =&gt; Add or create design sources =&gt; Next =&gt; Create File =&gt; \u0432\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 =&gt; OK =&gt; Finish =&gt; OK =&gt; Yes. <\/li>\n<li>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b: <br \/> \n<pre><code class=\"vhdl\">entity PioTransfer is port\t(\tDDR_addr\t\t: inout std_logic_vector(14 downto 0 ); \t\tDDR_ba\t\t\t: inout std_logic_vector( 2 downto 0 ); \t\tDDR_cas_n\t\t: inout std_logic; \t\tDDR_ck_n\t\t: inout std_logic; \t\tDDR_ck_p\t\t: inout std_logic; \t\tDDR_cke\t\t\t: inout std_logic; \t\tDDR_cs_n\t\t: inout std_logic; \t\tDDR_dm\t\t\t: inout std_logic_vector( 3 downto 0 ); \t\tDDR_dq\t\t\t: inout std_logic_vector(31 downto 0 ); \t\tDDR_dqs_n\t\t: inout std_logic_vector( 3 downto 0 ); \t\tDDR_dqs_p\t\t: inout std_logic_vector( 3 downto 0 ); \t\tDDR_odt\t\t\t: inout std_logic; \t\tDDR_ras_n\t\t: inout std_logic; \t\tDDR_reset_n\t\t: inout std_logic; \t\tDDR_we_n\t\t: inout std_logic; \t\tFIXED_IO_ddr_vrn\t: inout std_logic; \t\tFIXED_IO_ddr_vrp\t: inout std_logic; \t\tFIXED_IO_mio\t\t: inout std_logic_vector( 53 downto 0 ); \t\tFIXED_IO_ps_clk\t\t: inout std_logic; \t\tFIXED_IO_ps_porb\t: inout std_logic; \t\tFIXED_IO_ps_srstb\t: inout std_logic; \t\t-- Control \t\tiSwitches\t\t: in\tstd_logic_vector( 3 downto 0 ); \t\toLeds\t\t\t: out\tstd_logic_vector( 3 downto 0 ) ); end PioTransfer;  architecture Behavioral of PioTransfer is  begin  PS : entity WORK.ProcessingSystem port map\t(\tDDR_addr\t\t=&gt; DDR_addr, \t\t\tDDR_ba\t\t\t=&gt; DDR_ba, \t\t\tDDR_cas_n\t\t=&gt; DDR_cas_n, \t\t\tDDR_ck_n\t\t=&gt; DDR_ck_n, \t\t\tDDR_ck_p\t\t=&gt; DDR_ck_p, \t\t\tDDR_cke\t\t\t=&gt; DDR_cke, \t\t\tDDR_cs_n\t\t=&gt; DDR_cs_n, \t\t\tDDR_dm\t\t\t=&gt; DDR_dm, \t\t\tDDR_dq\t\t\t=&gt; DDR_dq, \t\t\tDDR_dqs_n\t\t=&gt; DDR_dqs_n, \t\t\tDDR_dqs_p\t\t=&gt; DDR_dqs_p, \t\t\tDDR_odt\t\t\t=&gt; DDR_odt, \t\t\tDDR_ras_n\t\t=&gt; DDR_ras_n, \t\t\tDDR_reset_n\t\t=&gt; DDR_reset_n, \t\t\tDDR_we_n\t\t=&gt; DDR_we_n, \t\t\tFIXED_IO_ddr_vrn\t=&gt; FIXED_IO_ddr_vrn, \t\t\tFIXED_IO_ddr_vrp\t=&gt; FIXED_IO_ddr_vrp, \t\t\tFIXED_IO_mio\t\t=&gt; FIXED_IO_mio, \t\t\tFIXED_IO_ps_clk\t\t=&gt; FIXED_IO_ps_clk, \t\t\tFIXED_IO_ps_porb\t=&gt; FIXED_IO_ps_porb, \t\t\tFIXED_IO_ps_srstb\t=&gt; FIXED_IO_ps_srstb, \t\t\t-- Control \t\t\tiSwitches\t\t=&gt; iSwitches, \t\t\toLeds\t\t\t=&gt; oLeds ); end Behavioral;<\/code><\/pre>\n<p>  <\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u0438 \u0432\u044b\u0445\u043e\u0434\u044b \u0432 \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. File =&gt; Add sources =&gt; Add or create constrains =&gt; Next =&gt; Create File =&gt; \u0432\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 =&gt; OK =&gt; Finish. <br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/8q\/yz\/dd\/8qyzddjnobvba8nuyknnk4kl3tc.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8q\/yz\/dd\/8qyzddjnobvba8nuyknnk4kl3tc.png\"><\/a><\/li>\n<li>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435: <br \/>  <code>#Switches<br \/>  set_property PACKAGE_PIN G15 [get_ports {iSwitches[0]}]<br \/>  set_property PACKAGE_PIN P15 [get_ports {iSwitches[1]}]<br \/>  set_property PACKAGE_PIN W13 [get_ports {iSwitches[2]}]<br \/>  set_property PACKAGE_PIN T16 [get_ports {iSwitches[3]}]<br \/>  set_property IOSTANDARD LVCMOS33 [get_ports {iSwitches[*]}]\n<p>  #LEDs<br \/>  #IO_L23P_T3_35<br \/>  set_property PACKAGE_PIN M14 [get_ports {oLeds[0]}]<br \/>  set_property PACKAGE_PIN M15 [get_ports {oLeds[1]}]<br \/>  set_property PACKAGE_PIN G14 [get_ports {oLeds[2]}]<br \/>  set_property PACKAGE_PIN D18 [get_ports {oLeds[3]}]<br \/>  set_property IOSTANDARD LVCMOS33 [get_ports {oLeds[*]}] <\/code>  <\/li>\n<li>\u0421\u043e\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e Flow Navigator =&gt; Generate Bitstream =&gt; OK. \u041f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043e\u043a\u043d\u043e, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c. <\/li>\n<li>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c File =&gt; Export =&gt; Export Hardware =&gt; \u0432\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 =&gt; OK. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0444\u0430\u0439\u043b .xsa <br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/c3\/1v\/3w\/c31v3wksuyx19soq95wqbac98co.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/c3\/1v\/3w\/c31v3wksuyx19soq95wqbac98co.png\"><\/a><\/li>\n<\/ol>\n<p>  <a name=\"SoftPIO\"><\/a><\/p>\n<h3>2.2 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0435 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Vitis \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443 Hello World, \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435[1].<br \/>  \u0410\u0434\u0440\u0435\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 Vivado. \u0412 Flow Navigator =&gt; Open Block Design =&gt; \u0412\u043a\u043b\u0430\u0434\u043a\u0430 Address Editor. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u0432\u0435\u043d 0x43C0_0000. \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a, \u0432 \u043a\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x43C0_0004 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c.<\/p>\n<p>  \u0412 Vitis \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0444\u0430\u0439\u043b helloworld.c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c:  <\/p>\n<pre><code class=\"cpp\">int main() { \tinit_platform();  \tu32 Status = 0x00; \tu32 Command = 0x00;  \txil_printf(&quot;Hello World\\n\\r&quot;);  \twhile (1) \t{  \t\tStatus = Xil_In32(0x43C00000);  \t\txil_printf(&quot;Status %x\\n\\r&quot;, Status);  \t\tif (Status == 0x01 || Status == 0x02 || Status == 0x04 || Status == 0x08) \t\t{ \t\t\tCommand = 0x01; \t\t} \t\telse if (Status == 0x03 || Status == 0x5 || Status == 0x06 || Status == 0x9 || Status == 0xA || Status == 0x0C) \t\t{ \t\t\tCommand = 0x03; \t\t} \t\telse if (Status == 0x7 || Status ==  0x0B || Status == 0x0D || Status == 0x0E) \t\t{ \t\t\tCommand = 0x7; \t\t} \t\telse if (Status == 0x0F) \t\t{ \t\t\tCommand = 0x0F; \t\t} \t\telse \t\t{ \t\t\tCommand = 0x00; \t\t}  \t\txil_printf(&quot;Command %x\\n\\r&quot;, Command);  \t\tXil_Out32(0x43C00004, Command);  \t\tusleep(1000000); \t}  \tcleanup_platform(); \treturn 0; } <\/code><\/pre>\n<p>  \u0413\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f Xil_In32 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f 4\u0445 \u0431\u0430\u0439\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u0430 Xil_Out32 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 4\u0445 \u0431\u0430\u0439\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443.<\/p>\n<p>  <a name=\"ResPIO\"><\/a><\/p>\n<h3>2.3 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h3>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438 \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0432 \u043f\u043b\u0430\u0442\u0443. \u041e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435[1].<br \/>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 com-\u043f\u043e\u0440\u0442\u0430:<br \/>  <code>Xilinx First Stage Boot Loader <br \/>  Release 2019.2 Dec 9 2020-15:16:52<br \/>  Silicon Version 3.1<br \/>  Boot mode is QSPI<br \/>  SUCCESSFUL_HANDOFF<br \/>  FSBL Status = 0x1<br \/>  Hello World<br \/>  Status 0<br \/>  Command 0<br \/>  Status 8<br \/>  Command 1<br \/>  Status C<br \/>  Command 3<br \/>  Status D<br \/>  Command 7<br \/>  Status F<br \/>  Command F<br \/>  <\/code><br \/>  \u0412\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 PIO \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c, \u0433\u0434\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c. \u0422\u0430\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0442\u043e\u043c GP.<\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0440\u0442 GP. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0434\u0440\u044f\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435, \u0438 \u0438\u0437\u043c\u0435\u0440\u0438\u043c \u0432\u0440\u0435\u043c\u044f \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0442\u0430\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0448\u0438\u043d\u044b. <\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0448\u0438\u043d\u0430 Axi-Lite \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 100 \u041c\u0413\u0446, \u043f\u0430\u0443\u0437\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c 23 \u0442\u0430\u043a\u0442\u0430. \u0418\u0437\u043c\u0435\u043d\u0438\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0448\u0438\u043d\u044b \u0434\u043e 200 \u041c\u0413\u0446. \u041f\u0430\u0443\u0437\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u043e\u0439 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c 33 \u0442\u0430\u043a\u0442\u0430.<br \/>  \u0418\u0442\u043e\u0433\u043e, 4 \u0431\u0430\u0439\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 100 \u041c\u0413\u0446 23 \u0442\u0430\u043a\u0442\u0430. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442: 32\/(23*10\u043d\u0441)= 139 130 434 \u0431\u0430\u0439\u0442\/\u0441 \u2248 135 869 \u041a\u0431\u0430\u0439\u0442\/\u0441 \u2248 132 \u041c\u0431\u0430\u0439\u0442\/\u0441.<br \/>  \u0418\u0442\u043e\u0433\u043e, 4 \u0431\u0430\u0439\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 200 \u041c\u0413\u0446 33 \u0442\u0430\u043a\u0442\u0430. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 32\/(33*5\u043d\u0441)= 193 939 393 \u0431\u0430\u0439\u0442\/\u0441 \u2248 189 393 \u041a\u0431\u0430\u0439\u0442\/\u0441 \u2248 184 \u041c\u0431\u0430\u0439\u0442\/\u0441.<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432 184 \u041c\u0431\u0430\u0439\u0442\/\u0441, \u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442: <a href=\"https:\/\/github.com\/Finnetrib\/PioTransfer\" rel=\"nofollow\">github.com\/Finnetrib\/PioTransfer<\/a><\/p>\n<p>  <a name=\"DMA\"><\/a><\/p>\n<h2>3 \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 DMA<\/h2>\n<p>  \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 DMA \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043e\u0431\u043c\u0435\u043d\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0435 \u0446\u0435\u043b\u0438: \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043b\u0430\u0442\u043e\u0439 \u0437\u0430 \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b. <br \/>  \u0412 Zynq \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 ip-\u044f\u0434\u0435\u0440, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 DMA. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u044f\u0434\u0440\u043e AXI DMA [2].<br \/>  \u0412 AXI DMA \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 MM2S \u0438 S2MM. \u041a\u0430\u043d\u0430\u043b MM2S (Memory-mapped to stream) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443. \u041a\u0430\u043d\u0430\u043b S2MM (Stream to memory-mapped) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c. \u041a\u0430\u043d\u0430\u043b\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. <\/p>\n<p>  AXI DMA \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>Direct Register Mode <\/li>\n<li>Scatter \/ Gather Mode <\/li>\n<\/ul>\n<p>  \u0412 Direct Register Mode \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043d\u0430\u0431\u043e\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0431\u0443\u0444\u0435\u0440 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c DMA. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 DMA \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442 \u043e\u0434\u0438\u043d \u0431\u0443\u0444\u0435\u0440 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f. <br \/>  \u0412 Scatter \/ Gather Mode \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432. DMA \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u0443\u0444\u0435\u0440, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0435, \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0431\u0443\u0444\u0435\u0440\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0435.<\/p>\n<p>  <a name=\"HardDMA\"><\/a><\/p>\n<h3>3.1 \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/3k\/d7\/lm\/3kd7lm6muowpe9-daq3vpctz13e.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3k\/d7\/lm\/3kd7lm6muowpe9-daq3vpctz13e.png\"><\/a><br \/>  <sub>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 DMA<\/sub><\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435. \u0423 \u0431\u043b\u043e\u043a\u0430 DMA \u0435\u0441\u0442\u044c \u043f\u043e\u0440\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u043e\u0440\u0442\u0443 GP \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u0442 HP, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u041e\u0417\u0423 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u043a\u0430\u043a \u0438\u0437 DMA, \u0442\u0430\u043a \u0438 \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b, DMA \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b.<\/p>\n<ol>\n<li> \u0421\u043e\u0437\u0434\u0430\u0435\u043c block design. \u0412\u043e Flow Navigator =&gt; Create Block Design =&gt; \u0438\u043c\u044f \u00abProcessingSystem\u00bb =&gt; OK.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab+\u00bb \u043d\u0430 \u043f\u043e\u043b\u0435 \u0438\u043b\u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl + I \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e.<\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abRun Block Automation\u00bb =&gt; OK. <\/li>\n<li>\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 Zynq7 Processing System =&gt; Import XPS Setting =&gt; \u0423\u043a\u0430\u0436\u0435\u043c \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 =&gt; OK =&gt; OK <\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430 \u043f\u043e\u043b\u0435 \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e AXI Direct Memory Access, \u0434\u0432\u0430 \u044f\u0434\u0440\u0430 AXI BRAM Controller, \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e Block Memory Generator. <a href=\"https:\/\/habrastorage.org\/webt\/j-\/9q\/8h\/j-9q8hp6fwon8ccvuzn-uueav_4.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/j-\/9q\/8h\/j-9q8hp6fwon8ccvuzn-uueav_4.png\"><\/a><\/li>\n<li>\u0414\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 \u044f\u0434\u0440\u0435 AXI Direct Memory Access, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u044f\u0434\u0440\u043e. \u0413\u0430\u043b\u043a\u0430 \u00abEnable Scatter Gather Engine\u00bb \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c. \u0413\u0430\u043b\u043a\u0430 \u00abEnable Control \/ Status Stream\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u044f\u0434\u0440\u043e\u043c AXI Ethernet, \u0441\u043d\u0438\u043c\u0430\u0435\u043c. \u041f\u043e\u043b\u0435 \u00abWith of Buffer Length Register\u00bb \u0437\u0430\u0434\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0444\u0435\u0440\u0430. \u0417\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043f\u043e\u043b\u0435 \u0447\u0438\u0441\u043b\u043e 20, \u0447\u0442\u043e \u0434\u0430\u0441\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 2^20 = 1 048 576 \u0431\u0430\u0439\u0442. \u041f\u043e\u043b\u0435 \u00abAddress With\u00bb \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 32 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0413\u0430\u043b\u043a\u0438 \u00abEnable Read Channel\u00bb \u0438 \u00abEnable Write Channel\u00bb \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u00abEnable Single AXI4 Data interface\u00bb \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u0438\u043d\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0435\u0433\u043e. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abOK\u00bb \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. <a href=\"https:\/\/habrastorage.org\/webt\/mi\/gx\/p9\/migxp9izsluycw7nig0rlqlfsp4.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mi\/gx\/p9\/migxp9izsluycw7nig0rlqlfsp4.png\"><\/a><\/li>\n<li>\u0414\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 \u044f\u0434\u0440\u0435 AXI BRAM Controller. \u0412 \u043f\u043e\u043b\u0435 \u00abNumber of BRAM Interfaces\u00bb \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abOK\u00bb \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. <a href=\"https:\/\/habrastorage.org\/webt\/iv\/k4\/vd\/ivk4vdq18miggzvuxbhmk5a2fog.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/iv\/k4\/vd\/ivk4vdq18miggzvuxbhmk5a2fog.png\"><\/a> <\/li>\n<li>\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0434\u0440\u0430 AXI BRAM Controller. <\/li>\n<li>\u0414\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 \u044f\u0434\u0440\u0435 Block Memory Generator. \u0412 \u043f\u043e\u043b\u0435 \u00abMemory Type\u00bb \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u00abTrue Dual Port RAM\u00bb. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abOK\u00bb \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. <a href=\"https:\/\/habrastorage.org\/webt\/jq\/nb\/es\/jqnbeshoehqeu8dv6ulu1vpe8pa.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jq\/nb\/es\/jqnbeshoehqeu8dv6ulu1vpe8pa.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abRun Connection Automation\u00bb =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 axi_bram_ctrl_0 BRAM_PORTA =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 axi_bram_ctrl_1 BRAM_PORTA =&gt; OK. <a href=\"https:\/\/habrastorage.org\/webt\/yt\/sn\/43\/ytsn432kxqk4ygkomrrhwnaypca.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yt\/sn\/43\/ytsn432kxqk4ygkomrrhwnaypca.png\"><\/a> <\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abRun Connection Automation\u00bb =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 axi_bram_ctrl_0 S_AXI =&gt; \u0412\u044b\u0431\u0440\u0430\u0442\u044c Master Interface \/processing_system7_0\/M_AXI_GP0 =&gt; OK. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432.<a href=\"https:\/\/habrastorage.org\/webt\/vh\/my\/6f\/vhmy6fu8kpvmcqyi8yqpkeacpri.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vh\/my\/6f\/vhmy6fu8kpvmcqyi8yqpkeacpri.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a \u044f\u0434\u0440\u0443 DMA. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abRun Connection Automation\u00bb =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 axi_bram_ctrl_1 S_AXI =&gt; \u0412\u044b\u0431\u0440\u0430\u0442\u044c Master Interface \/axi_dma_0\/M_AXI_SG =&gt; OK. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, DMA \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432.<a href=\"https:\/\/habrastorage.org\/webt\/io\/2f\/m_\/io2fm_r41upotav0mkqr4shmraq.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/io\/2f\/m_\/io2fm_r41upotav0mkqr4shmraq.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 DMA \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abRun Connection Automation\u00bb =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 axi_dma_0 S_AXI_LITE =&gt; OK. <a href=\"https:\/\/habrastorage.org\/webt\/so\/fq\/td\/sofqtd4dknaairafhhljs8d9hmc.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/so\/fq\/td\/sofqtd4dknaairafhhljs8d9hmc.png\"><\/a><\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u043c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u2013 HP \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 \u044f\u0434\u0440\u0435 Zynq7 Processing System =&gt; \u0412\u043a\u043b\u0430\u0434\u043a\u0430 PS-PL Configuration =&gt; \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c HP Slave AXI Interface =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 S AXI HP0 Interface. <a href=\"https:\/\/habrastorage.org\/webt\/qv\/2d\/mn\/qv2dmn45fvavafuxr8u7xkf5n_0.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qv\/2d\/mn\/qv2dmn45fvavafuxr8u7xkf5n_0.png\"><\/a><br \/>  \u0412\u043a\u043b\u0430\u0434\u043a\u0430 Interrupts =&gt; \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c Fabric Interrupts =&gt; \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c PL-PS Interrupts Ports =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 Fabric Interrupts =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 IRQ_F2P =&gt; OK. <a href=\"https:\/\/habrastorage.org\/webt\/n4\/b_\/47\/n4b_47rduldemnhxjonuz2zj0dm.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/n4\/b_\/47\/n4b_47rduldemnhxjonuz2zj0dm.png\"><\/a> <\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c DMA \u043a \u043f\u043e\u0440\u0442\u0443 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abRun Connection Automation\u00bb =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 processing_system7_0 S_AXI_HP0 =&gt; \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c Master Interface \/axi_dma_0\/M_AXI =&gt; OK. <a href=\"https:\/\/habrastorage.org\/webt\/sg\/7c\/ht\/sg7chtyesdbmqbhuhffd1kfggce.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sg\/7c\/ht\/sg7chtyesdbmqbhuhffd1kfggce.png\"><\/a> <\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 DMA \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430 \u043f\u043e\u043b\u0435 \u0431\u043b\u043e\u043a Concat \u0447\u0435\u0440\u0435\u0437 \u043a\u043d\u043e\u043f\u043a\u0443 + \u0438\u043b\u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl + I. <\/li>\n<li>\u041d\u0430\u0432\u0435\u0434\u0435\u043c \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434 mm2s_introut DMA, \u043a\u0443\u0440\u0441\u043e\u0440 \u043f\u0440\u0438\u043c\u0435\u0442 \u0444\u043e\u0440\u043c\u0443 \u043a\u0430\u0440\u0430\u043d\u0434\u0430\u0448\u0430. \u041a\u043b\u0438\u043a\u0430\u0435\u043c \u043d\u0430 \u0432\u044b\u0432\u043e\u0434 mm2s_introut \u0438 \u043d\u0435 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0443 \u043c\u044b\u0448\u0438 \u0442\u044f\u043d\u0435\u043c \u043b\u0438\u043d\u0438\u044e \u043a \u0432\u0445\u043e\u0434\u0443 In0 \u0431\u043b\u043e\u043a\u0430 Concat. \u0414\u043e\u0432\u043e\u0434\u0438\u043c \u0434\u043e \u0431\u043b\u043e\u043a\u0430, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0435\u043b\u0435\u043d\u043e\u0439 \u0433\u0430\u043b\u043e\u0447\u043a\u0438, \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u0435\u043c. <a href=\"https:\/\/habrastorage.org\/webt\/vf\/5y\/b8\/vf5yb8ifagbl6xk2amdho5sdzji.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vf\/5y\/b8\/vf5yb8ifagbl6xk2amdho5sdzji.png\"><\/a><\/li>\n<li>\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 s2mm_introut, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a \u0432\u0445\u043e\u0434\u0443 In1 \u0431\u043b\u043e\u043a\u0430 Concat. <\/li>\n<li>\u0412\u044b\u0445\u043e\u0434 dout \u0431\u043b\u043e\u043a\u0430 Concat \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a \u0432\u0445\u043e\u0434\u0443 IRQ_F2P \u044f\u0434\u0440\u0430 Zynq7 Processing System. <\/li>\n<li>DMA \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0445\u043e\u0434 \u0438 \u0432\u044b\u0445\u043e\u0434 DMA \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 Block Design, \u0432\u044b\u0442\u0430\u0449\u0438\u043c \u043d\u0430\u0440\u0443\u0436\u0443 \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. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u044b\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u043b\u044f \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Create Port \u0438\u043b\u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl + K. \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0438\u043c\u044f \u043f\u043e\u0440\u0442\u0430, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0442\u0438\u043f =&gt; OK. <a href=\"https:\/\/habrastorage.org\/webt\/2q\/db\/uq\/2qdbuq-kovws8zxmssbxbjjy7ni.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2q\/db\/uq\/2qdbuq-kovws8zxmssbxbjjy7ni.png\"><\/a><\/li>\n<li>\u041d\u0430\u0432\u0435\u0434\u0435\u043c \u043a\u0443\u0440\u0441\u043e\u0440 \u043c\u044b\u0448\u0438 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0430\u043d\u0434\u0430\u0448\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u043e\u0440\u0442 \u043a \u0432\u044b\u0432\u043e\u0434\u0443 FCLK_CLK0 \u044f\u0434\u0440\u0430 Zynq7 Processing System. <\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0432\u044b\u0432\u043e\u0434 peripheral_reset \u044f\u0434\u0440\u0430 Processor System Reset =&gt; \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 =&gt; Make External. <\/li>\n<li>\u041a\u043b\u0438\u043a \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u0440\u0442\u0430 \u0438 \u0443\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. <a href=\"https:\/\/habrastorage.org\/webt\/rz\/kz\/hg\/rzkzhgkj-rdh4_8pcfzyae65yqa.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rz\/kz\/hg\/rzkzhgkj-rdh4_8pcfzyae65yqa.png\"><\/a> <\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0432\u0445\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0445 DMA. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u043f\u043e\u0440\u0442 S_AXIS_S2MM \u0431\u043b\u043e\u043a\u0430 AXI Direct Memory Access =&gt; \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 =&gt; Make External. <\/li>\n<li>\u041a\u043b\u0438\u043a \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u0440\u0442\u0430 \u0438 \u0443\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. <a href=\"https:\/\/habrastorage.org\/webt\/pe\/wr\/jk\/pewrjknowvafx7oki78bnzl1ia8.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pe\/wr\/jk\/pewrjknowvafx7oki78bnzl1ia8.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0432\u044b\u0445\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0445 DMA. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u043f\u043e\u0440\u0442 M_AXIS_MM2S \u0431\u043b\u043e\u043a\u0430 AXI Direct Memory Access =&gt; \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 =&gt; Make External. <\/li>\n<li>\u041a\u043b\u0438\u043a \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u0440\u0442\u0430 \u0438 \u0443\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. <a href=\"https:\/\/habrastorage.org\/webt\/cx\/qp\/ua\/cxqpua60jksjpz9bavlx0j83u3g.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cx\/qp\/ua\/cxqpua60jksjpz9bavlx0j83u3g.png\"><\/a><\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0432\u0445\u043e\u0434\u044b \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u043f\u043e\u0440\u0442\u043e\u0432 S_AXIS_S2MM \u0438 M_AXIS_MM2S \u0443 \u0431\u043b\u043e\u043a\u0430 AXI Direct Memory Access. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abRun Connection Automation\u00bb =&gt; \u0413\u0430\u043b\u043a\u0443 \u043d\u0430 m_axi_mm2s_aclk \u0438 m_axi_s2mm_aclk =&gt; OK <\/li>\n<li>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0431\u043b\u043e\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043e\u0442 \u0431\u043b\u043e\u043a\u0430 DMA \u0430\u0434\u0440\u0435\u0441\u0430 \u0431\u044b\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b. \u0417\u0430\u043e\u0434\u043d\u043e \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432. \u0412\u043a\u043b\u0430\u0434\u043a\u0430 Address Editor =&gt; processing_system7_0 \/ Data \/ axi_bram_ctrl_0 =&gt; Offset Address 0x4000_0000 =&gt; Range 32K. \u0414\u0430\u043b\u0435\u0435 axi_dma_0 \/ Data_SG \/ axi_bram_ctrl_1 =&gt; Offset Address 0x4000_0000 =&gt; Range 32K. <a href=\"https:\/\/habrastorage.org\/webt\/qf\/yq\/gn\/qfyqgn8t2siv0cgz_g_ukzxidlw.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qf\/yq\/gn\/qfyqgn8t2siv0cgz_g_ukzxidlw.png\"><\/a><\/li>\n<li>Tools =&gt; Validate Design =&gt; OK. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430: <a href=\"https:\/\/habrastorage.org\/webt\/bf\/uw\/cv\/bfuwcve6_cfckwn8x1vz2jr-n-q.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bf\/uw\/cv\/bfuwcve6_cfckwn8x1vz2jr-n-q.png\"><\/a><\/li>\n<li>File =&gt; Save Block Design. <\/li>\n<li>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u0438\u0437 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 block design \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u043d\u0430\u0436\u0430\u0432 \u0432\u043e Flow Navigator =&gt; Project Manager. <\/li>\n<li>\u0421\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0440\u0442\u044b \u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e block design\u2019a. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0440\u0430\u0435\u043c \u0444\u0430\u0439\u043b ProcessingSystem.bd, \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 =&gt; View Instantiation Template. <\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0435\u043c vhd \u0444\u0430\u0439\u043b top-\u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 \u043d\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 block design. File =&gt; Add Sources =&gt; Add or create design sources =&gt; Next =&gt; Create File =&gt; \u0432\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 =&gt; OK =&gt; Finish =&gt; OK =&gt; Yes.<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/xl\/wh\/b2\/xlwhb25simeteqrjzzwa5shixhc.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xl\/wh\/b2\/xlwhb25simeteqrjzzwa5shixhc.png\"><\/a>   <\/li>\n<li>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b: <br \/> \n<pre><code class=\"vhdl\">entity DmaTransfer is port\t(\tDDR_addr\t\t: inout std_logic_vector(14 downto 0); \t\tDDR_ba\t\t\t: inout std_logic_vector( 2 downto 0); \t\tDDR_cas_n\t\t: inout std_logic; \t\tDDR_ck_n\t\t: inout std_logic; \t\tDDR_ck_p\t\t: inout std_logic; \t\tDDR_cke\t\t\t: inout std_logic; \t\tDDR_cs_n\t\t: inout std_logic; \t\tDDR_dm\t\t\t: inout std_logic_vector( 3 downto 0); \t\tDDR_dq\t\t\t: inout std_logic_vector(31 downto 0); \t\tDDR_dqs_n\t\t: inout std_logic_vector( 3 downto 0); \t\tDDR_dqs_p\t\t: inout std_logic_vector( 3 downto 0); \t\tDDR_odt\t\t\t: inout std_logic; \t\tDDR_ras_n\t\t: inout std_logic; \t\tDDR_reset_n\t\t: inout std_logic; \t\tDDR_we_n\t\t: inout std_logic; \t\tFIXED_IO_ddr_vrn\t: inout std_logic; \t\tFIXED_IO_ddr_vrp\t: inout std_logic; \t\tFIXED_IO_mio\t\t: inout std_logic_vector(53 downto 0); \t\tFIXED_IO_ps_clk\t\t: inout std_logic; \t\tFIXED_IO_ps_porb\t: inout std_logic; \t\tFIXED_IO_ps_srstb\t: inout std_logic ); end DmaTransfer;  architecture Behavioral of DmaTransfer is  \tsignal\tRxData\t\t\t: std_logic_vector(31 downto 0); \tsignal\tRxKeep\t\t\t: std_logic_vector( 3 downto 0); \tsignal\tRxLast\t\t\t: std_logic; \tsignal\tRxValid\t\t\t: std_logic; \tsignal\tRxReady\t\t\t: std_logic; \tsignal\tTxData\t\t\t: std_logic_vector(31 downto 0); \tsignal\tTxKeep\t\t\t: std_logic_vector( 3 downto 0); \tsignal\tTxLast\t\t\t: std_logic; \tsignal\tTxValid\t\t\t: std_logic; \tsignal\tTxReady\t\t\t: std_logic; \tsignal\tclk\t\t\t: std_logic; \tsignal\trst\t\t\t: std_logic; \tsignal\tFifoDataW\t\t: std_logic_vector(36 downto 0); \tsignal\tFifoWrite\t\t: std_logic; \tsignal\tFifoRead\t\t: std_logic; \tsignal\tFifoDataR\t\t: std_logic_vector(36 downto 0); \tsignal\tFifoEmpty\t\t: std_logic; \tsignal\tFifoFull\t\t: std_logic;  begin  \tPS : entity WORK.ProcessingSystem \tport map\t(\tDDR_addr\t\t=&gt; DDR_addr, \t\t\t\tDDR_ba\t\t\t=&gt; DDR_ba, \t\t\t\tDDR_cas_n\t\t=&gt; DDR_cas_n, \t\t\t\tDDR_ck_n\t\t=&gt; DDR_ck_n, \t\t\t\tDDR_ck_p\t\t=&gt; DDR_ck_p, \t\t\t\tDDR_cke\t\t\t=&gt; DDR_cke, \t\t\t\tDDR_cs_n\t\t=&gt; DDR_cs_n, \t\t\t\tDDR_dm\t\t\t=&gt; DDR_dm, \t\t\t\tDDR_dq\t\t\t=&gt; DDR_dq, \t\t\t\tDDR_dqs_n\t\t=&gt; DDR_dqs_n, \t\t\t\tDDR_dqs_p\t\t=&gt; DDR_dqs_p, \t\t\t\tDDR_odt\t\t\t=&gt; DDR_odt, \t\t\t\tDDR_ras_n\t\t=&gt; DDR_ras_n, \t\t\t\tDDR_reset_n\t\t=&gt; DDR_reset_n, \t\t\t\tDDR_we_n\t\t=&gt; DDR_we_n, \t\t\t\tFIXED_IO_ddr_vrn\t=&gt; FIXED_IO_ddr_vrn, \t\t\t\tFIXED_IO_ddr_vrp\t=&gt; FIXED_IO_ddr_vrp, \t\t\t\tFIXED_IO_mio\t\t=&gt; FIXED_IO_mio, \t\t\t\tFIXED_IO_ps_clk\t\t=&gt; FIXED_IO_ps_clk, \t\t\t\tFIXED_IO_ps_porb\t=&gt; FIXED_IO_ps_porb, \t\t\t\tFIXED_IO_ps_srstb\t=&gt; FIXED_IO_ps_srstb, \t\t\t\t-- Dma Channel \t\t\t\tiDmaRx_tdata\t\t=&gt; RxData, \t\t\t\tiDmaRx_tkeep\t\t=&gt; RxKeep, \t\t\t\tiDmaRx_tlast\t\t=&gt; RxLast, \t\t\t\tiDmaRx_tready\t\t=&gt; RxReady, \t\t\t\tiDmaRx_tvalid\t\t=&gt; RxValid, \t\t\t\toDmaTx_tdata\t\t=&gt; TxData, \t\t\t\toDmaTx_tkeep\t\t=&gt; TxKeep, \t\t\t\toDmaTx_tlast\t\t=&gt; TxLast, \t\t\t\toDmaTx_tready\t\t=&gt; TxReady, \t\t\t\toDmaTx_tvalid\t\t=&gt; TxValid, \t\t\t\t-- System \t\t\t\toZynqClk\t\t=&gt; clk, \t\t\t\toZynqRst(0)\t\t=&gt; rst ); \t \tFifoDataW(31 downto  0) &lt;= not TxData; \tFifoDataW(35 downto 32) &lt;= TxKeep; \tFifoDataW(\t    36) &lt;= TxLast; \t \tFifoWrite &lt;= TxValid and not FifoFull; \t \tTxReady &lt;= not FifoFull; \t \tEchFifo : entity WORK.SyncFifoBram37x1024 \tport map\t(\tclk\t\t=&gt; clk, \t\t\t\tsrst\t\t=&gt; rst, \t\t\t\tdin\t\t=&gt; FifoDataW, \t\t\t\twr_en\t\t=&gt; FifoWrite, \t\t\t\trd_en\t\t=&gt; FifoRead, \t\t\t\tdout\t\t=&gt; FifoDataR, \t\t\t\tfull\t\t=&gt; open, \t\t\t\tempty\t\t=&gt; FifoEmpty, \t\t\t\tprog_full\t=&gt; FifoFull );  \tRxData &lt;= FifoDataR(31 downto  0); \tRxKeep &lt;= FifoDataR(35 downto 32); \tRxLast &lt;= FifoDataR(36); \t \tRxValid &lt;= not FifoEmpty; \t \tFifoRead &lt;= RxReady;  end Behavioral; <\/code><\/pre>\n<\/li>\n<li>\u0421\u043e\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e Flow Navigator =&gt; Generate Bitstream =&gt; OK. \u041f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043e\u043a\u043d\u043e, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c. <\/li>\n<li>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c File =&gt; Export =&gt; Export Hardware =&gt; \u0432\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 =&gt; OK. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0444\u0430\u0439\u043b .xsa<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/kg\/zp\/40\/kgzp40b8uo9z_xsodgzay6pb40s.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kg\/zp\/40\/kgzp40b8uo9z_xsodgzay6pb40s.png\"><\/a>   <\/li>\n<\/ol>\n<p>  <a name=\"SoftDMA\"><\/a><\/p>\n<h3>3.2 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0435 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Vitis \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443 Hello World, \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<br \/>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f Axi DMA \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u043d\u0430 \u044f\u0434\u0440\u043e [2]. \u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 52 \u0431\u0430\u0439\u0442\u0430, \u043e\u0434\u043d\u0430\u043a\u043e, \u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d \u043d\u0430 64 \u0431\u0430\u0439\u0442\u0430. <\/p>\n<p>  \u041a\u0440\u0430\u0442\u043a\u043e \u043f\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430:  <\/p>\n<ul>\n<li>NXTDESC \u2014 \u0430\u0434\u0440\u0435\u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430; <\/li>\n<li>NXTDESC_MSB \u2014 \u0441\u0442\u0430\u0440\u0448\u0438\u0435 32 \u0431\u0438\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430;<\/li>\n<li>BUFFER_ADDRESS \u2014 \u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0444\u0435\u0440\u0430;<\/li>\n<li>BUFFER_ADDRESS_MSB \u2014 \u0441\u0442\u0430\u0440\u0448\u0438\u0435 32 \u0431\u0438\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0431\u0443\u0444\u0435\u0440\u0430;<\/li>\n<li>RESERVED \u2014 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f; <\/li>\n<li>RESERVED \u2014 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f;<\/li>\n<li>CONTROL \u2014 \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430, \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u043f\u0430\u043a\u0435\u0442\u0430; <\/li>\n<li>STATUS \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\/\u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\/\u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d;<\/li>\n<li>APP0 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u043d\u0430\u043b\u043e\u043c \u00abControl\/Status Stream\u00bb;<\/li>\n<li>APP1 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u043d\u0430\u043b\u043e\u043c \u00abControl\/Status Stream\u00bb; <\/li>\n<li>APP2 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u043d\u0430\u043b\u043e\u043c \u00abControl\/Status Stream\u00bb; <\/li>\n<li>APP3 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u043d\u0430\u043b\u043e\u043c \u00abControl\/Status Stream\u00bb; <\/li>\n<li>APP4 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u043d\u0430\u043b\u043e\u043c \u00abControl\/Status Stream\u00bb. <\/li>\n<\/ul>\n<p>  \u0410\u0434\u0440\u0435\u0441\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 Vivado. \u0412 Flow Navigator =&gt; Open Block Design =&gt; \u0412\u043a\u043b\u0430\u0434\u043a\u0430 Address Editor. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u0434\u0440\u0435\u0441 DMA \u0440\u0430\u0432\u0435\u043d 0x4040_0000. \u0410\u0434\u0440\u0435\u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0440\u0430\u0432\u0435\u043d 0x4000_0000.<\/p>\n<ol>\n<li>\u0412 Vitis \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0444\u0430\u0439\u043b helloworld.c \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438<br \/> \n<pre><code class=\"cpp\">#include &lt;xil_io.h&gt; #include &quot;sleep.h&quot; #include &quot;xil_cache.h&quot; #include &quot;xil_mem.h&quot; <\/code><\/pre>\n<\/li>\n<li>\u041a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0430\u0434\u0440\u0435\u0441\u0430, \u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e 64 \u0431\u0430\u0439\u0442\u0430\u043c. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432 32\u041a\u0431\u0430\u0439\u0442\u0430 \u043f\u043e\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f 32 768 \/ 64 = 512 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432. \u041f\u043e 256 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c \u0438 256 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443.<br \/> \n<pre><code class=\"cpp\">#define DESC_COUNT 256 ...  \/** Descriptors for receive *\/ struct SGDesc RxDesc[DESC_COUNT];  \/** Descriptors for transmit *\/ struct SGDesc TxDesc[DESC_COUNT]; <\/code><\/pre>\n<\/li>\n<li>\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u044d\u0448\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c.<br \/> \n<pre><code class=\"cpp\">\/** Flush Cache *\/ Xil_DCacheFlush();  \/** Disable Cache *\/ Xil_DCacheDisable(); <\/code><\/pre>\n<p>   <\/li>\n<li> \u0417\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0431\u0443\u0444\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443.<br \/> \n<pre><code class=\"cpp\">for (u16 desc = 0; desc &lt; DESC_COUNT; desc++) { \tfor (u32 i = 0; i &lt; BUFFER_SIZE; i++) \t{ \t\tTxBuffer[desc][i] = desc + i; \t} } <\/code><\/pre>\n<\/li>\n<li>\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438.<br \/> \n<pre><code class=\"cpp\">for (u16 i = 0; i &lt; DESC_COUNT; i++) { \tTxDesc[i].NXTDESC = &amp;TxDesc[i]; \tTxDesc[i].NXTDESC_MSB = 0x0; \tTxDesc[i].BUFFER_ADDRESS = &amp;TxBuffer[i][0]; \tTxDesc[i].BUFFER_ADDRESS_MSB = 0x0; \tTxDesc[i].RESERVED0 = 0x0; \tTxDesc[i].RESERVED1 = 0x0; \tTxDesc[i].CONTROL = 0xC000000 + sizeof(TxBuffer[i]); \tTxDesc[i].STATUS = 0x0; \tTxDesc[i].APP0 = 0x0; \tTxDesc[i].APP1 = 0x0; \tTxDesc[i].APP2 = 0x0; \tTxDesc[i].APP3 = 0x0; \tTxDesc[i].APP4 = 0x0; } <\/code><\/pre>\n<\/li>\n<li>\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435.<br \/> \n<pre><code class=\"cpp\">DescAddr = 0x40000000; for (u16 i = 0; i &lt; DESC_COUNT; i++) { \tXil_MemCpy(DescAddr, &amp;TxDesc[i], sizeof(TxDesc[i])); \tDescAddr += 0x40; } <\/code><\/pre>\n<\/li>\n<li>\u0417\u0430\u043f\u0438\u0448\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432.<br \/> \n<pre><code class=\"cpp\">\/** Write pointer to next pointer *\/ DescAddr = 0x40000000; for (u16 i = 0; i &lt; DESC_COUNT - 1; i++) { \tXil_Out32(DescAddr, DescAddr + 0x40); \tDescAddr += 0x40; }  \/** Write pointer for last descriptor *\/ Xil_Out32(DescAddr, DescAddr); <\/code><\/pre>\n<\/li>\n<li>\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0438\u0435\u043c\u0430.<br \/> \n<pre><code class=\"cpp\">\/** Fill descriptor to receive *\/ for (u16 i = 0; i &lt; DESC_COUNT; i++) { \tRxDesc[i].NXTDESC = &amp;RxDesc[i]; \tRxDesc[i].NXTDESC_MSB = 0x0; \tRxDesc[i].BUFFER_ADDRESS = &amp;RxBuffer[i][0]; \tRxDesc[i].BUFFER_ADDRESS_MSB = 0x0; \tRxDesc[i].RESERVED0 = 0x0; \tRxDesc[i].RESERVED1 = 0x0; \tRxDesc[i].CONTROL = sizeof(RxBuffer[i]); \tRxDesc[i].STATUS = 0x0; \tRxDesc[i].APP0 = 0x0; \tRxDesc[i].APP1 = 0x0; \tRxDesc[i].APP2 = 0x0; \tRxDesc[i].APP3 = 0x0; \tRxDesc[i].APP4 = 0x0; }  \/** Copy receive descriptor for memory of descriptors *\/ DescAddr = 0x40000000 + 0x4000; for (u16 i = 0; i &lt; DESC_COUNT; i++) { \tXil_MemCpy(DescAddr, &amp;RxDesc[i], sizeof(RxDesc[i])); \tDescAddr += 0x40; }  \/** Write pointer to next pointer *\/ DescAddr = 0x40000000 + 0x4000; for (u16 i = 0; i &lt; DESC_COUNT - 1; i++) { \tXil_Out32(DescAddr, DescAddr + 0x40); \tDescAddr += 0x40; }  \/** Write pointer for last descriptor *\/ Xil_Out32(DescAddr, DescAddr);  <\/code><\/pre>\n<\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c DMA \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443. DMA \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0445\u0432\u043e\u0441\u0442\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432.<br \/> \n<pre><code class=\"cpp\">\/** Reset DMA and setup *\/ \/** MM2S *\/ Xil_Out32(0x40400000, 0x0001dfe6); Xil_Out32(0x40400000, 0x0001dfe2);  \/** S2MM *\/ Xil_Out32(0x40400030, 0x0001dfe6); Xil_Out32(0x40400030, 0x0001dfe2);  \/** PL =&gt; PS *\/ Xil_Out32(0x4040003c, 0x00000000); Xil_Out32(0x40400038, 0x40004000); Xil_Out32(0x40400030, 0x0001dfe3); Xil_Out32(0x40400044, 0x00000000); Xil_Out32(0x40400040, 0x40007FC0);  \/** PS =&gt; PL *\/ Xil_Out32(0x4040000C, 0x00000000); Xil_Out32(0x40400008, 0x40000000); Xil_Out32(0x40400000, 0x0001dfe3); Xil_Out32(0x40400014, 0x00000000); Xil_Out32(0x40400010, 0x40003FC0);  <\/code><\/pre>\n<\/li>\n<li>\u041f\u043e\u0434\u043e\u0436\u0434\u0435\u043c, \u043f\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u0435 \u0438 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e \u0438\u0437\u043b\u0438\u0448\u043d\u0435.<br \/> \n<pre><code class=\"cpp\">\/** Wait ready in last descriptor *\/ while (1) { \tstatus = Xil_In32(0x40003FDC); \tif ((status &amp; 0x80000000) == 0x80000000) \t{ \t\tbreak; \t} \telse \t{ \t\tcountWait++; \t\tusleep(100); \t} }  xil_printf(&quot;Time %x \\n\\r&quot;, countWait); <\/code><\/pre>\n<\/li>\n<\/ol>\n<p>  <a name=\"ResDMA\"><\/a><\/p>\n<h3>3.3 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h3>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438 \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0432 \u043f\u043b\u0430\u0442\u0443. \u041e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435[1].<br \/>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 com-\u043f\u043e\u0440\u0442\u0430:<br \/>  <code>Xilinx First Stage Boot Loader<br \/>  Release 2019.2 Dec 16 2020-15:11:44<br \/>  Silicon Version 3.1<br \/>  Boot mode is QSPI<br \/>  SUCCESSFUL_HANDOFF<br \/>  FSBL Status = 0x1<br \/>  Hello World<br \/>  Time 10F<br \/>  <\/code><br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c, \u0433\u0434\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430. \u0422\u0430\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u0440\u0442\u0430\u043c\u0438 GP, HP, ACP. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 [1] \u043e\u043d\u0438 \u0432\u0441\u0435 \u0431\u044b\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b.<\/p>\n<p>  \u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445: (256 \u0440\u0430\u0437 * 102400 \u0431\u0430\u0439\u0442) \/ (271 * 100 \u043c\u043a\u0441) \u2248 967 321 033 \u0431\u0430\u0439\u0442\/\u0441 \u2248 944 649 \u041a\u0431\u0430\u0439\u0442\/\u0441 \u2248 922 \u041c\u0431\u0430\u0439\u0442\/\u0441.<br \/>  \u0411\u0438\u0442\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c 7 738 568 264 \u0431\u0438\u0442\/\u0441.<br \/>  \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 32 \u0431\u0438\u0442\u0430 * 250 \u041c\u0413\u0446 = 8 000 000 000 \u0431\u0438\u0442\/\u0441.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043d\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u0430 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0440\u0442 M_AXI_SG \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u043e\u0440\u0442\u0443 HP Zynq. <br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 DMA \u043a \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043a \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b HP. \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430:<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/v2\/5p\/k2\/v25pk2x3qlf6v_7k4pxrbfiggvc.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v2\/5p\/k2\/v25pk2x3qlf6v_7k4pxrbfiggvc.png\"><\/a><br \/>  <sub>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b<\/sub><\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u041e\u0442\u043b\u0438\u0447\u0438\u044f \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0447\u0435\u0441\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0430\u0434\u0440\u0435\u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u0431\u044b\u043b \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d \u043d\u0430 64 \u0431\u0430\u0439\u0442\u0430.<br \/>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 com-\u043f\u043e\u0440\u0442\u0430 \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c, \u0442\u0430\u043a\u0436\u0435 271 * 100 \u043c\u043a\u0441.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a DMA \u0438 \u043a \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u0442. \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430:<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/6h\/jc\/ws\/6hjcwsrrqcu_hnep76d6tchkdly.png\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6h\/jc\/ws\/6hjcwsrrqcu_hnep76d6tchkdly.png\"><\/a><br \/>  <sub>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u0442<\/sub><\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. <br \/>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 com-\u043f\u043e\u0440\u0442\u0430 \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u043e\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u0430: 398 * 100 \u043c\u043a\u0441.<br \/>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442: (256 \u0440\u0430\u0437 * 102400 \u0431\u0430\u0439\u0442) \/ (398 * 100 \u043c\u043a\u0441) \u2248 658\u00a0653\u00a0266 \u0431\u0430\u0439\u0442\/\u0441 \u2248 643\u00a0216 \u041a\u0431\u0430\u0439\u0442\/\u0441 \u2248 628 \u041c\u0431\u0430\u0439\u0442\/\u0441.<br \/>  \u0411\u0438\u0442\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c 5\u00a0269\u00a0226\u00a0128 \u0431\u0438\u0442\/\u0441.<\/p>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442: <a href=\"https:\/\/github.com\/Finnetrib\/DmaTransfer\" rel=\"nofollow\">github.com\/Finnetrib\/DmaTransfer<\/a><\/p>\n<p>  <a name=\"Conclusion\"><\/a><\/p>\n<h2>4 \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439. \u0420\u0435\u0436\u0438\u043c PIO \u043f\u0440\u043e\u0441\u0442 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u043e 184 \u041c\u0431\u0430\u0439\u0442\/\u0441, \u0440\u0435\u0436\u0438\u043c DMA \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u043e \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0448\u0435 \u2014 \u0434\u043e 628 \u041c\u0431\u0430\u0439\u0442\/\u0441.<\/p>\n<p>  <a name=\"SourcesUsed\"><\/a><\/p>\n<h2>5 \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h2>\n<p>  <\/p>\n<ol>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/508292\/\">habr.com\/ru\/post\/508292<\/a> <\/li>\n<li><a href=\"https:\/\/www.xilinx.com\/support\/documentation\/ip_documentation\/axi_dma\/v7_1\/pg021_axi_dma.pdf\" rel=\"nofollow\">www.xilinx.com\/support\/documentation\/ip_documentation\/axi_dma\/v7_1\/pg021_axi_dma.pdf<\/a> <\/li>\n<\/ol>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/535226\/\"> https:\/\/habr.com\/ru\/post\/535226\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 (<a href=\"https:\/\/habr.com\/ru\/post\/508292\/\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Zynq? \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440<\/a>), \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0448\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c. \u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a!  <\/p>\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-315610","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315610","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=315610"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315610\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=315610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=315610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=315610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}