{"id":318527,"date":"2021-02-24T15:00:25","date_gmt":"2021-02-24T15:00:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=318527"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=318527","title":{"rendered":"\u0414\u0435\u043b\u0430\u0435\u043c \u0431\u043b\u043e\u043a SPI to AVALON_MM \u0434\u043b\u044f USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 FX3"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u0412 <a href=\"https:\/\/habr.com\/ru\/post\/540164\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c Vendor \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e USB3.0 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 FX3 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u0448\u0438\u043d\u0443 SPI. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043d\u0430\u0447\u0430\u0442\u043e\u0435 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <b>SPI to Avalon_MM<\/b>. \u041c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u043c\u044b \u0436\u0435 \u0443\u0436\u0435 \u0443\u043c\u0435\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0448\u0438\u043d\u043e\u0439 Avalon_MM \u0447\u0435\u0440\u0435\u0437 JTAG \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 TCL-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451?<\/p>\n<p>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c TCL, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e <a href=\"https:\/\/habr.com\/ru\/post\/508138\/\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/525440\/\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0432\u0441\u0451 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u043e \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447, \u0433\u043e\u043d\u044f\u044e\u0449\u0438\u0445 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u043e\u0442\u043d\u0438 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442, \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u0421++, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0447\u0435\u0440\u0435\u0437 USB 3.0.<\/p>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 TCL-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u044e\u0441\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/496508\/\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435. \u041d\u0430\u0434\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0434\u043b\u044f Windows \u0438 Linux \u043e\u043d\u0438 \u0440\u0430\u0437\u043d\u044b\u0435), \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0430 \u0437\u0430\u0442\u0435\u043c \u2013 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e USB \u0438 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 TCP. \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041e\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0434 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043c\u044b \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c, \u0432\u043e\u0442 \u0438 \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0448\u0438\u043d\u0435 AVALON_MM \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e. \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bg\/od\/ay\/bgoday5y5dzh_mjhfqwthrfynpy.jpeg\"><br \/>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0446\u0438\u043a\u043b\u0430:<\/p>\n<ol>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/531494\/\">\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043e\u043f\u044b\u0442\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c USB 3.0 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 FX3 \u0444\u0438\u0440\u043c\u044b Cypress<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/534646\/\">\u0414\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 USB 3.0, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 SignalTap, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Quartus<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/535406\/\">\u0423\u0447\u0438\u043c\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0438 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u0431\u0430\u0437\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 FX3<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/538176\/\">\u0411\u043e\u0440\u0435\u043c\u0441\u044f \u0441 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430\u043c\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 USB 3.0 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 FX3, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/540164\/\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Vendor-\u043a\u043e\u043c\u0430\u043d\u0434 \u043a USB3.0 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 FX3<\/a><\/li>\n<\/ol>\n<p>  <\/p>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0432\u043e\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430, \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0447\u0442\u043e-\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0435. \u0414\u0430, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 TCL \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0442\u044c \u2013 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0440\u044f\u0434 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u043e JTAG-\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e? \u041d\u0443, \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a JTAG-\u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0448\u0442\u0430\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b? \u042f \u043c\u0443\u0447\u0438\u043b \u0413\u0443\u0433\u043b\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u0435\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043c\u0443\u0434\u0440\u0451\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438. \u0423\u0432\u044b. \u0415\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 (\u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0441 \u043f\u043b\u0430\u0442\u044b \u0432\u044b\u043a\u0438\u043d\u0443\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043d\u0435 \u043d\u0430 \u0447\u0435\u043c \u0435\u0433\u043e \u0442\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c), \u043d\u043e \u043d\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a JTAG-\u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 PC. \u0411\u044b\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u00ab\u041c\u0430\u0440\u0441\u043e\u0445\u043e\u0434\u00bb, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 \u00ab\u041c\u0430\u043b\u0438\u043d\u0435\u00bb, \u043d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u043f\u043e\u043d\u044f\u043b, \u0442\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0442\u044c DLL. \u0411\u044b\u043b\u043e \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u0441 \u044f\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b, \u0430 \u0432 \u043a\u044d\u0448\u0435 \u0413\u0443\u0433\u043b\u044f \u043b\u0435\u0436\u0430\u043b\u043e \u0447\u0442\u043e-\u0442\u043e, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435.<\/p>\n<p>  \u042f \u0434\u0430\u0436\u0435 \u0432\u044b\u0434\u0432\u0438\u043d\u0443\u043b \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443, \u0447\u0442\u043e \u0434\u0435\u043b\u043e \u0432 \u044f\u0434\u0440\u0430\u0445 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0435\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a PC \u0441 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u0442\u043e \u043f\u043e\u0439\u043c\u0451\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f JTAG-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0442\u043e\u0442 \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u0445 \u0432\u0441\u043a\u043e\u043b\u043e\u0442\u044c, \u0430 \u043f\u0440\u0430\u0432\u043e\u043e\u0431\u043b\u0430\u0434\u0430\u0442\u0435\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0445\u043e\u0442\u044f\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b. \u0423 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u043a\u043e\u043b\u043e\u0442\u044c, \u0430 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0434\u0430\u043b\u044f\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0431\u043b\u043e\u043a. \u041a\u0430\u043a\u043e\u0439? \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u0438\u0437 \u043c\u043e\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u042f \u0438\u0433\u0440\u0430\u044e \u0432 \u0441\u0440\u0435\u0434\u0443 Litex. \u0422\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0438\u043d\u0430 AXI-Lite \u0438\u043b\u0438 Wishbone. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0438 \u0432\u0438\u0436\u0443 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u0430\u0441\u0441\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u0438 SPI to Wishbone, \u0438 UART to Wishbone \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e to Wishbone. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438 \u0440\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a SPI to Avalon-MM.<\/p>\n<h2>\u0413\u0434\u0435 \u0447\u0435\u0440\u043f\u0430\u0435\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0431\u0438\u0442\u044c \u0413\u0443\u0433\u043b\u044e \u0437\u0430\u043f\u0440\u043e\u0441 <b>Avalon Memory-Mapped Master Templates<\/b>, \u0442\u043e \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0451\u043c \u0432\u043e\u0442 \u0441\u044e\u0434\u0430:<\/p>\n<p>  <a href=\"https:\/\/www.intel.com\/content\/www\/us\/en\/programmable\/support\/support-resources\/design-examples\/intellectual-property\/embedded\/nios-ii\/exm-avalon-mm.html\" rel=\"nofollow noopener noreferrer\">Avalon Memory-Mapped Master Templates (intel.com)<\/a><\/p>\n<p>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 zip-\u0444\u0430\u0439\u043b, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0448\u0438\u043d\u044b AVALON-MM \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438. \u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/di\/9-\/wt\/di9-wt42eheutkncuarc-fhz1ds.gif\"> <\/p>\n<p>  \u041c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043e\u043a Control Logic \u0438 FIFO, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0430\u043c\u043e. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0433\u0438\u043f\u043d\u043e\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u044d\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u043c\u0435\u0447\u0442\u0430\u044f \u043f\u043e\u0439\u0442\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u0443\u0442\u0438. \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0435 \u0434\u0430\u0432\u0430\u043b\u043e \u043f\u043e\u043a\u043e\u044f: \u043c\u0430\u0441\u0442\u0435\u0440 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0438 \u2013 \u0440\u0430\u0437\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0448\u0438\u043d\u0435 AVALON. \u0421\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0438\u0445 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0417\u0430\u0442\u0435\u043c, \u043d\u0430\u0447\u0430\u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u044b\u0442\u044b, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f. \u041c\u043d\u0435 \u0431\u044b \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u043d\u044b\u0445 \u0432\u0435\u0440\u0451\u0432\u043e\u043a. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0439, \u0430 \u0432\u044b\u0448\u0435 \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u043d\u0435 \u043b\u044e\u0431\u043b\u044e \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<p>  \u0422\u043e\u0433\u0434\u0430 \u044f \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0438 \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0443 \u0431\u043b\u043e\u043a\u043e\u0432 AVALON_MM Slave, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u043c, \u043a\u0430\u043a \u0441\u0435\u043c\u0435\u0447\u043a\u0438 \u0449\u0451\u043b\u043a\u0430\u0435\u043c. \u0422\u0430\u043c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e. \u041d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u043d\u0438\u0439 GNT, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u00ab\u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445\u00bb \u0448\u0438\u043d. \u0412\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442. \u0417\u043d\u0430\u0439 \u0441\u0435\u0431\u0435, \u0441\u0442\u0430\u0432\u044c \u0441\u0442\u0440\u043e\u0431\u044b \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439 \u0438\u0445, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u043a\u0430\u0447\u0430\u043b\u0438\u0441\u044c. \u0412\u0441\u0451! \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0430 \u043d\u0430\u0441 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0430, \u044f\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0431\u043b\u043e\u043a\u0443 (\u043e\u043d\u0430 \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u0430 \u043e\u0442 \u043d\u0430\u0441 \u0433\u0434\u0435-\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 System Interconnect Fabric).<\/p>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0431\u044b \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0447, \u043d\u043e \u044f \u0436\u0435 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0438\u0445 \u0433\u043e\u043d\u044f\u0442\u044c! \u0423 \u043c\u0435\u043d\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u0448\u0438\u043d\u0430 SPI (\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 4 \u041c\u0413\u0446, \u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043d\u0435\u0439 \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u0442 8 + 32 + 32 = 72 \u0431\u0438\u0442\u0430, \u0438\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 55,(5) \u041a\u0413\u0446). \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u2013 \u043f\u0440\u043e\u0433\u043d\u0430\u043b\u0438 \u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0432\u043e \u043f\u043e Avalon, \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0448\u0438\u043d\u0443. \u0416\u0434\u0451\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u041d\u0435 \u043d\u0443\u0436\u043d\u044b \u0442\u0443\u0442 \u043f\u0430\u043a\u0435\u0442\u044b!<\/p>\n<p>  \u0418\u0442\u043e\u0433\u043e. \u041f\u0438\u0448\u0435\u043c \u0441\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0441 \u043d\u0443\u043b\u044f, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e, \u0447\u0435\u0440\u043f\u0430\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u0430\u0445, \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0445 \u0441 \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0443-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c (\u043f\u0443\u0441\u0442\u044c \u0438 \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u043c), \u0430 \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e Avalon \u043d\u0430 \u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c.<\/p>\n<h2>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442<\/h2>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u043c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442. \u041f\u0440\u0438\u0447\u0451\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u0441\u0431\u0440\u043e\u0441\u0430 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u0438\u043d\u0438\u0438 SS. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0442\u0438\u043f\u0438\u0447\u043d\u0443\u044e \u043f\u043e\u0441\u044b\u043b\u043a\u0443 \u043f\u043e \u0448\u0438\u043d\u0435 SPI, \u0432\u0437\u044f\u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u043f\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u0432\u0440\u0435\u043c\u044f\u043d\u043a\u0443 \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u043e\u0432 \u0441\u0435\u0442\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/aw\/4i\/tz\/aw4itzdvs3ds9zl0slwnp_cites.png\"> <\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043b\u0438\u043d\u0438\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 SS (Slave Select), \u0430 CS (Chip Select). \u041d\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0435\u0451 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0431\u0440\u043e\u0441 \u0448\u0438\u043d\u044b. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e. \u041d\u0435 \u043d\u0430\u0434\u043e \u0431\u043e\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0440\u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f. \u041c\u044b \u043f\u043e\u0447\u0442\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0432\u044b\u043c \u0431\u0438\u0442\u043e\u043c \u044d\u0442\u043e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u0442 \u0438\u0437 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 \u043d\u043e\u043b\u044c. \u0412 \u0441\u0432\u043e\u0451\u043c \u043a\u043e\u0434\u0435 \u0434\u043b\u044f FX3 \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u043d\u0435 \u043f\u043e\u0447\u0442\u0438, \u0430 \u0441\u0442\u043e\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e.<\/p>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043d\u0430\u0447\u0435\u0440\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u0432\u043e\u0441\u044c\u043c\u0438\u0431\u0438\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0434\u0430\u043b\u044c\u0448\u0435 \u2013 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438\u0434\u0432\u0443\u0445\u0431\u0438\u0442\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0440\u043e\u043a\u0430\u0431\u0438\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u044b-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043a\u043e\u043f\u0438\u0442\u0441\u044f \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u043e\u0441\u044b\u043b\u043a\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/s9\/hx\/h7\/s9hxh70ft01icqtepb3u_dpl-ki.png\"> <\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 bit_cnt \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u043e \u0441\u043e\u0440\u043e\u043a\u0430 (\u0438\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u044f\u0437\u044b\u043a\u043e\u0432 Verilog, \u0434\u0430 \u0438 VHDL \u0442\u043e\u0436\u0435, \u0432 \u043a\u043e\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 39), \u043c\u044b \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a. \u041a\u043e\u043c\u0430\u043d\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0432\u0435: \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u0438\u0437-\u0437\u0430 \u0442\u043e\u0439 \u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0430 \u2013 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439). \u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430 SystemVerilog: <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0435\u0440\u0442\u044c \u0442\u0435\u043a\u0441\u0442.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">always_ff @(posedge master_clk, posedge spi_ss) begin       \/\/ \u042d\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0443 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b SPI       if (spi_ss == 1)       begin           bit_cnt &lt;= 0;           state &lt;= idle;       end else       begin           master_write &lt;= 0;           master_read &lt;= 0;           case (state)             idle: begin                  \/\/ \u0423\u0440\u0430! \u0423 \u043d\u0430\u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0430\u0434 SCK!                  if ((spi_sck_d == 0) &amp;&amp; (spi_sck_reg == 1))                  begin                     regCmdAndAddr &lt;= {spi_mosi_reg,regCmdAndAddr[39:1]};                     bit_cnt &lt;= bit_cnt + 1;                     \/\/ \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 - \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435 \u043d\u043e\u0432\u043e\u0435,                      \/\/ \u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435                     if (bit_cnt == 39)                     begin                        \/\/ \u041f\u0438\u0448\u0435\u043c                        if (regCmdAndAddr[1])                        begin                            state &lt;= write1;                        end else                        \/\/ \u0427\u0438\u0442\u0430\u0435\u043c                        begin                            state &lt;= read1;                        end                     end                  end             end <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u0442\u044c \u0432\u043e\u0441\u044c\u043c\u0438\u0431\u0438\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0442\u0430\u0440\u0448\u0438\u0435 4 \u0431\u0438\u0442\u0430 \u043a\u0430\u043a BYTE_ENABLE \u0434\u043b\u044f \u0448\u0438\u043d\u044b AVALON_MM, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e 32 \u0431\u0438\u0442\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430:<\/p>\n<pre><code class=\"plaintext\">assign master_byteenable = regCmdAndAddr [7:4]; assign master_address = regCmdAndAddr [39:8]; <\/code><\/pre>\n<p>  \u0412\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u0440\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0430\u0448 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a \u043b\u0438\u043d\u0438\u044f\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u0448\u0438\u043d\u044b AVALON_MM.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u043f\u043e \u0432\u0435\u0442\u0432\u0438 \u0447\u0442\u0435\u043d\u0438\u044f. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0448\u0438\u043d\u044b. \u042f \u0438\u0441\u0445\u043e\u0436\u0443 \u0438\u0437 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0448\u0438\u043d\u0430 SPI \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0432\u0432\u043e\u0436\u0443 \u043d\u0430 \u043d\u0435\u0451 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438. \u0421\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 AVALON_MM \u043f\u0440\u0438\u0434\u0443\u0442 \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e, \u0447\u0442\u043e \u0432 SPI \u043d\u0435 \u0443\u0441\u043f\u0435\u0435\u0442 \u0443\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0431\u0438\u0442\u0430. \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043c\u044b \u0432\u0437\u0432\u0435\u0434\u0451\u043c \u0441\u0442\u0440\u043e\u0431 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0431\u0443\u0434\u0435\u043c \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u043f\u043e\u043a\u0430 \u043d\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0448\u043b\u0438. \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u0430\u0449\u0451\u043b\u043a\u043d\u0435\u043c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 SPI \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438 \u0434\u0432\u0443\u0445 \u0442\u0430\u043a\u0442\u043e\u0432. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0451. \u041f\u043e\u0442\u043e\u043c \u043c\u044b \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441\u0431\u0440\u043e\u0441\u0438\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u0438\u0442\u043e\u0432 (\u0430 \u0432\u0434\u0440\u0443\u0433 \u043d\u0430\u0447\u043d\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0435\u0437 \u0441\u043d\u044f\u0442\u0438\u044f SS?) \u0438 \u0432\u043d\u043e\u0432\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 idle, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u043c \u043a\u043e\u043f\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 read1 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e \u043e\u0441\u043e\u0431\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u0430 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 SCK \u0448\u0438\u043d\u044b SPI. \u041e\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u0448\u0438\u043d\u044b AVALON_MM. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fw\/7a\/qq\/fw7aqqrfukvhxbqgz_jtfauzvoy.png\"> <\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u044d\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0435.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">            read1: begin                   master_read &lt;= 1;                   if (master_readdatavalid)                   begin                       state &lt;= read2;                       regData &lt;= master_readdata;                   end             end             read2: begin                  if ((spi_sck_d == 0) &amp;&amp; (spi_sck_reg == 1))                  begin                     regData &lt;= {1'b0,regData[31:1]};                     bit_cnt &lt;= bit_cnt + 1;                     \/\/ \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 - \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435 \u043d\u043e\u0432\u043e\u0435,                      \/\/ \u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435                     if (bit_cnt == 71)                     begin                        bit_cnt &lt;= 0;                        state &lt;= idle;                     end                  end             end <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0418 \u0432\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u0432\u044b\u0445\u043e\u0434 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u0434\u0432\u0438\u0433\u0430 \u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0443 MOSI \u0448\u0438\u043d\u044b SPI:<\/p>\n<pre><code class=\"plaintext\">assign spi_miso = regData [0]; <\/code><\/pre>\n<p>  \u0412\u0435\u0442\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u2013 \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 write1 \u043c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c 32 \u0431\u0438\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u0442\u0435\u043c \u2013 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u0431 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0432\u0438\u0441\u0438\u043c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 write2 (\u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u043a SCK, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043c\u0435\u044e\u0449\u0435\u043c \u043e\u0441\u043e\u0431\u044b\u0439 \u0446\u0432\u0435\u0442), \u043f\u043e\u043a\u0430 \u043d\u0430\u043c \u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u0442, \u0447\u0442\u043e \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0448\u043b\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/g4\/px\/yk\/g4pxykjgvtgx8ocq0kl-jbvgovy.png\"> <\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">            \/\/ \u041f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 SPI             write1: begin                  \/\/ \u0423\u0440\u0430! \u0423 \u043d\u0430\u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0430\u0434 SCK!                  if ((spi_sck_d == 0) &amp;&amp; (spi_sck_reg == 1))                  begin                     regData &lt;= {spi_mosi_reg,regData[31:1]};                     bit_cnt &lt;= bit_cnt + 1;                     \/\/ \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 - \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435 \u043d\u043e\u0432\u043e\u0435,                      \/\/ \u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435                     if (bit_cnt == 71)                     begin                        state &lt;= write2;                     end                  end             end             \/\/ \u0412\u0441\u0451 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e. \u0414\u0435\u0440\u0436\u0438\u043c \u0441\u0442\u0440\u043e\u0431 \u0437\u0430\u043f\u0438\u0441\u0438.              write2: begin                master_write &lt;= 1;                \/\/ \u0415\u0441\u043b\u0438 \u0448\u0438\u043d\u0430 \u043d\u0430\u0441 \u0443\u0441\u043b\u044b\u0448\u0430\u043b\u0430 - \u043d\u0443 \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u0412\u044b\u0448\u043b\u0438                if (master_waitrequest == 0)                begin                    bit_cnt &lt;= 0;                    state &lt;= idle;                end             end <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0438 \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 AVALON_MM:<\/p>\n<pre><code class=\"plaintext\">assign master_writedata = regData; <\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0434\u0443\u043b\u044f \u2013 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u0438\u0448\u0443\u0440\u0430. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u043d\u0438\u0438 SPI \u043f\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0448\u0438\u043d\u044b AVALON_MM, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0434\u0438\u043d \u0430\u0432\u0430\u043b\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0439 \u0442\u0430\u043a\u0442 \u0441\u0438\u0433\u043d\u0430\u043b SCK \u0448\u0438\u043d\u044b SPI, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0430\u0434. \u0412\u0441\u0435 \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043f\u0440\u0430\u0432\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0448\u0438\u043d\u0430 SPI \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e AVALON_MM. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u043d\u043e \u043d\u0435 \u0433\u043d\u0430\u043b\u0441\u044f \u0437\u0430 \u0431\u0435\u0448\u0435\u043d\u044b\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438.<\/p>\n<pre><code class=\"plaintext\">reg spi_sck_reg, spi_sck_d; reg spi_mosi_reg; always @ (posedge master_clk) begin      spi_sck_reg &lt;= spi_sck;      spi_mosi_reg &lt;= spi_mosi;       spi_sck_d &lt;= spi_sck_reg; end <\/code><\/pre>\n<p>  C\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0451. \u041c\u043e\u0434\u0443\u043b\u044c \u0433\u043e\u0442\u043e\u0432. \u0412\u043e\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0434\u0443\u043b\u044f.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">module spitoAvalon_mm ( input           master_clk, input           master_reset,  output  [31:0]    master_address, output  reg       master_write=0, output  [3:0]     master_byteenable, output  [31:0]    master_writedata,  output reg        master_read, input             master_readdatavalid, input \t[31:0]    master_readdata,  input             master_waitrequest,  input           spi_sck, input           spi_mosi, output          spi_miso, input           spi_ss );  \/\/ \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c SPI_SCK \u043d\u0430 \u043b\u0438\u043d\u0438\u044e GCK, \/\/ \u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0448\u0438\u043d\u0430 - \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \/\/ \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u043e\u0432\u0438\u043c \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u044b \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \/\/ \u0414\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u043e\u0442\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c SPI \u043f\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439. \u0412\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435...  reg spi_sck_reg, spi_sck_d; reg spi_mosi_reg; always @ (posedge master_clk) begin      spi_sck_reg &lt;= spi_sck;      spi_mosi_reg &lt;= spi_mosi;       spi_sck_d &lt;= spi_sck_reg; end  \/\/ \u0427\u0438\u0441\u043b\u043e \u0431\u0438\u0442\u043e\u0432, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u0438\u0437 SPI reg [7:0] bit_cnt;  \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\/\u0430\u0434\u0440\u0435\u0441\u0430. \u0418\u0442\u043e\u0433\u043e 8 + 32 = 40 \u0431\u0438\u0442 reg [39:0] regCmdAndAddr = 0; reg [31:0] regData = 0;  enum {idle,         read1, read2,        write1,write2      } state = idle;  always_ff @(posedge master_clk, posedge spi_ss) begin       \/\/ \u042d\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0443 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b SPI       if (spi_ss == 1)       begin           bit_cnt &lt;= 0;           state &lt;= idle;       end else       begin           master_write &lt;= 0;           master_read &lt;= 0;           case (state)             idle: begin                  \/\/ \u0423\u0440\u0430! \u0423 \u043d\u0430\u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0430\u0434 SCK!                  if ((spi_sck_d == 0) &amp;&amp; (spi_sck_reg == 1))                  begin                     regCmdAndAddr &lt;= {spi_mosi_reg,regCmdAndAddr[39:1]};                     bit_cnt &lt;= bit_cnt + 1;                     \/\/ \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 - \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435 \u043d\u043e\u0432\u043e\u0435,                      \/\/ \u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435                     if (bit_cnt == 39)                     begin                        \/\/ \u041f\u0438\u0448\u0435\u043c                        if (regCmdAndAddr[1])                        begin                            state &lt;= write1;                        end else                        \/\/ \u0427\u0438\u0442\u0430\u0435\u043c                        begin                            state &lt;= read1;                        end                     end                  end             end             \/\/ \u041f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 SPI             write1: begin                  \/\/ \u0423\u0440\u0430! \u0423 \u043d\u0430\u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0430\u0434 SCK!                  if ((spi_sck_d == 0) &amp;&amp; (spi_sck_reg == 1))                  begin                     regData &lt;= {spi_mosi_reg,regData[31:1]};                     bit_cnt &lt;= bit_cnt + 1;                     \/\/ \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 - \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435 \u043d\u043e\u0432\u043e\u0435,                      \/\/ \u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435                     if (bit_cnt == 71)                     begin                        state &lt;= write2;                     end                  end             end             \/\/ \u0412\u0441\u0451 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e. \u0414\u0435\u0440\u0436\u0438\u043c \u0441\u0442\u0440\u043e\u0431 \u0437\u0430\u043f\u0438\u0441\u0438.              write2: begin                master_write &lt;= 1;                \/\/ \u0415\u0441\u043b\u0438 \u0448\u0438\u043d\u0430 \u043d\u0430\u0441 \u0443\u0441\u043b\u044b\u0448\u0430\u043b\u0430 - \u043d\u0443 \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u0412\u044b\u0448\u043b\u0438                if (master_waitrequest == 0)                begin                    bit_cnt &lt;= 0;                    state &lt;= idle;                end             end             \/\/ \u041f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 - \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435             \/\/ \u0414\u043b\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0439 \u0448\u0438\u043d\u044b, \u043d\u0430\u0434\u043e \u0431\u044b \u0435\u0449\u0451 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c SPI \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c             \/\/ \u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043c\u044b \u0435\u044e \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0436\u0451\u043c             read1: begin                   master_read &lt;= 1;                   if (master_readdatavalid)                   begin                       state &lt;= read2;                       regData &lt;= master_readdata;                   end             end             read2: begin                  if ((spi_sck_d == 0) &amp;&amp; (spi_sck_reg == 1))                  begin                     regData &lt;= {1'b0,regData[31:1]};                     bit_cnt &lt;= bit_cnt + 1;                     \/\/ \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 - \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435 \u043d\u043e\u0432\u043e\u0435,                      \/\/ \u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435                     if (bit_cnt == 71)                     begin                        bit_cnt &lt;= 0;                        state &lt;= idle;                     end                  end             end             default:  begin               state &lt;= idle;             end           endcase                  end end  assign master_byteenable = regCmdAndAddr [7:4]; assign master_address = regCmdAndAddr [39:8]; assign master_writedata = regData; assign spi_miso = regData [0];  endmodule <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442. \u041a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u2013 \u043c\u044b <a href=\"https:\/\/habr.com\/ru\/post\/454938\/\">\u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0442\u0443\u0442<\/a> \u0438 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u044d\u0442\u0438\u043c \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e Redd. \u041d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0435\u0449\u0435\u0439, \u0447\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u043e.<\/p>\n<h2>\u0412\u043d\u0435\u0434\u0440\u044f\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442<\/h2>\n<p>  \u041e\u0431\u044b\u0447\u043d\u043e \u044f \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f. \u041d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u043b\u043a\u0438\u0445 \u043f\u0440\u0430\u0432\u043e\u043a, \u0447\u0442\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430. \u0412\u0441\u0435 \u0434\u043e\u0447\u0438\u0442\u0430\u044e\u0442 \u0434\u043e \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0430\u0431\u0437\u0430\u0446\u0430, \u0437\u0430\u0442\u0435\u043c \u2013 \u0437\u0435\u0432\u043d\u0443\u0442 \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0443\u0442 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0434\u0430\u043c TCL-\u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u043d\u0435\u0434\u0440\u044f\u044e\u0449\u0438\u0439 \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c. \u0411\u0443\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a \u0441\u043a\u0443\u0447\u043d\u043e, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2013 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f. \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0434\u0435\u043b\u0430\u043b \u041a\u0432\u0430\u0440\u0442\u0443\u0441 \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u043c\u043e\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u041a\u0432\u0430\u0440\u0442\u0443\u0441\u0430.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\"># TCL File Generated by Component Editor 17.1 # Wed Dec 30 02:23:32 MSK 2020 # DO NOT MODIFY   #  # SpiToAvalonMM &quot;SpiToAvalonMM&quot; v1.0 #  2020.12.30.02:23:32 #  #   #  # request TCL package from ACDS 16.1 #  package require -exact qsys 16.1   #  # module SpiToAvalonMM #  set_module_property DESCRIPTION &quot;&quot; set_module_property NAME SpiToAvalonMM set_module_property VERSION 1.0 set_module_property INTERNAL false set_module_property OPAQUE_ADDRESS_MAP true set_module_property AUTHOR &quot;&quot; set_module_property DISPLAY_NAME SpiToAvalonMM set_module_property INSTANTIATE_IN_SYSTEM_MODULE true set_module_property EDITABLE true set_module_property REPORT_TO_TALKBACK false set_module_property ALLOW_GREYBOX_GENERATION false set_module_property REPORT_HIERARCHY false   #  # file sets #  add_fileset QUARTUS_SYNTH QUARTUS_SYNTH &quot;&quot; &quot;&quot; set_fileset_property QUARTUS_SYNTH TOP_LEVEL spitoAvalon_mm set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false add_fileset_file spitoAvalon_mm.sv SYSTEM_VERILOG PATH MyCores\/spitoAvalon_mm.sv TOP_LEVEL_FILE   #  # parameters #    #  # display items #    #  # connection point conduit_end #  add_interface conduit_end conduit end set_interface_property conduit_end associatedClock &quot;&quot; set_interface_property conduit_end associatedReset &quot;&quot; set_interface_property conduit_end ENABLED true set_interface_property conduit_end EXPORT_OF &quot;&quot; set_interface_property conduit_end PORT_NAME_MAP &quot;&quot; set_interface_property conduit_end CMSIS_SVD_VARIABLES &quot;&quot; set_interface_property conduit_end SVD_ADDRESS_GROUP &quot;&quot;  add_interface_port conduit_end spi_ss spi_ss Input 1 add_interface_port conduit_end spi_sck spi_sck Input 1 add_interface_port conduit_end spi_mosi spi_mosi Input 1 add_interface_port conduit_end spi_miso spi_miso Output 1   #  # connection point avalon_master #  add_interface avalon_master avalon start set_interface_property avalon_master addressUnits SYMBOLS set_interface_property avalon_master associatedClock clock_sink set_interface_property avalon_master associatedReset reset_sink set_interface_property avalon_master bitsPerSymbol 8 set_interface_property avalon_master burstOnBurstBoundariesOnly false set_interface_property avalon_master burstcountUnits WORDS set_interface_property avalon_master doStreamReads false set_interface_property avalon_master doStreamWrites false set_interface_property avalon_master holdTime 0 set_interface_property avalon_master linewrapBursts false set_interface_property avalon_master maximumPendingReadTransactions 0 set_interface_property avalon_master maximumPendingWriteTransactions 0 set_interface_property avalon_master readLatency 0 set_interface_property avalon_master readWaitTime 0 set_interface_property avalon_master setupTime 0 set_interface_property avalon_master timingUnits Cycles set_interface_property avalon_master writeWaitTime 0 set_interface_property avalon_master ENABLED true set_interface_property avalon_master EXPORT_OF &quot;&quot; set_interface_property avalon_master PORT_NAME_MAP &quot;&quot; set_interface_property avalon_master CMSIS_SVD_VARIABLES &quot;&quot; set_interface_property avalon_master SVD_ADDRESS_GROUP &quot;&quot;  add_interface_port avalon_master master_address address Output 32 add_interface_port avalon_master master_write write Output 1 add_interface_port avalon_master master_byteenable byteenable Output 4 add_interface_port avalon_master master_writedata writedata Output 32 add_interface_port avalon_master master_read read Output 1 add_interface_port avalon_master master_readdatavalid readdatavalid Input 1 add_interface_port avalon_master master_readdata readdata Input 32 add_interface_port avalon_master master_waitrequest waitrequest Input 1   #  # connection point clock_sink #  add_interface clock_sink clock end set_interface_property clock_sink clockRate 0 set_interface_property clock_sink ENABLED true set_interface_property clock_sink EXPORT_OF &quot;&quot; set_interface_property clock_sink PORT_NAME_MAP &quot;&quot; set_interface_property clock_sink CMSIS_SVD_VARIABLES &quot;&quot; set_interface_property clock_sink SVD_ADDRESS_GROUP &quot;&quot;  add_interface_port clock_sink master_clk clk Input 1   #  # connection point reset_sink #  add_interface reset_sink reset end set_interface_property reset_sink associatedClock clock_sink set_interface_property reset_sink synchronousEdges DEASSERT set_interface_property reset_sink ENABLED true set_interface_property reset_sink EXPORT_OF &quot;&quot; set_interface_property reset_sink PORT_NAME_MAP &quot;&quot; set_interface_property reset_sink CMSIS_SVD_VARIABLES &quot;&quot; set_interface_property reset_sink SVD_ADDRESS_GROUP &quot;&quot;  add_interface_port reset_sink master_reset reset Input 1 <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0418\u0442\u0430\u043a. \u0423 \u043c\u0435\u043d\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433 MyCores. \u0422\u0443\u0434\u0430 \u044f \u043a\u043b\u0430\u0434\u0443 \u0421\u0438\u0441\u0442\u0435\u043c\u0412\u0435\u0440\u0438\u043b\u043e\u0433\u043e\u0432\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b spitoAvalon_mm.sv. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3t\/xa\/js\/3txajsdyefakpqkdpcbc6mdmvum.png\"> <\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043a\u043b\u0430\u0434\u0443 \u0444\u0430\u0439\u043b SpiToAvalonMM_hw.tcl.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lq\/pd\/uf\/lqpdufzrcxpuqi8h6dls3pw22ug.png\"><\/p>\n<p>  \u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c Platform Designer \u0438\u2026 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u0430\u043c \u0437\u0430\u043f\u0440\u044b\u0433\u043d\u0443\u043b \u0432 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ge\/44\/3b\/ge443biqjjbwkkyaxhgv46x9ihm.png\"> <\/p>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0447\u0438\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438 \u044f \u043f\u0440\u043e\u0431\u0435\u0433\u0443\u0441\u044c \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c. \u0412\u043e\u0442 \u0442\u0430\u043a \u044f \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u043b \u0432\u0441\u0451 \u043f\u043e \u0448\u0438\u043d\u0430\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2x\/9k\/ab\/2x9kab1bqc6larr0uff8cd3blxi.png\"> <\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0441\u0435\u043c \u043b\u0438\u043d\u0438\u044f\u043c \u0448\u0438\u043d\u044b SPI \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u0430\u0442\u044c \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0448\u0438\u043d\u044b AVALON_MM<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nc\/yg\/8z\/ncyg8zkmq_lad6ui0mprea7yq_q.png\"><\/p>\n<p>  \u042f \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044e \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u0431\u0430\u0439\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043e \u0441\u043b\u043e\u0432\u0430, \u043d\u043e \u0440\u0430\u0437 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043b\u0438\u043d\u0438\u0438 BYTE_ENABLE, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0438 WORD\u0430\u043c\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u0434\u043e \u0431\u0430\u0439\u0442\u0430. \u0418 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0438\u0437 \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0435\u0439, \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043d\u044e \u043a\u0430\u043a\u0430\u044f, \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443. \u042f \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u043d\u0430 \u043d\u043e\u043b\u044c. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0432\u044b\u0448\u0435 \u0432\u0441\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0432\u043d\u044b \u043d\u0443\u043b\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0435\u0442\u0435. \u0415\u0434\u0438\u043d\u0438\u0446\u0443 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u043e.<\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/h2>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0448\u0438\u043d\u0443? \u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0451 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u041e\u0417\u0423\u0448\u043a\u0443 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0434\u043e\u0441\u0442\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u043d\u0430\u043c \u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u043e \u043e\u0442 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430: \u043c\u043e\u0441\u0442 SpiToAvalonMM \u0438 On Chip Memory. \u041d\u043e \u041e\u0417\u0423 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u0447\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u043e. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u041d\u043e \u0435\u0441\u043b\u0438 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043e\u0431\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445, \u043e\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u0436\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0443\u0442 \u0441 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438, \u0438 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043b\u043e\u0436\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u041e\u0417\u0423 \u0431\u044b\u043b\u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0435\u0440\u043d\u043e, \u0430 \u0443\u0436\u0435 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0447\u043d\u0451\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u044c-\u0447\u0442\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u0447\u0442\u0435\u043d\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0432\u0437\u0432\u043e\u0434\u0438\u043c \u0444\u043b\u0430\u0436\u043e\u043a Enable non-default initialization file \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0438 \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u0430\u0439\u043b onchip_mem.hex.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4c\/4n\/u2\/4c4nu26tzob7ofy-w7dzxsu0ghq.png\"><\/p>\n<p>  \u041a\u043b\u0430\u0434\u0451\u043c \u0435\u0433\u043e \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, \u0433\u0434\u0435 \u0436\u0438\u0432\u0443\u0442 \u0444\u0430\u0439\u043b\u044b *.qpf \u0438 *.qsf. \u0410 \u0432\u043e\u0442 \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0441\u0435\u043b\u0438\u0442\u044c\u0441\u044f. \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 NIOS II EDS, \u0442\u043e \u0435\u0441\u0442\u044c, \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u041a\u0432\u0430\u0440\u0442\u0443\u0441\u0430. \u041d\u043e \u0443\u0432\u044b, \u044d\u0442\u043e elf2hex. \u0410 \u043d\u0430\u043c \u0431\u044b bin2hex. \u042f \u043d\u0430\u0448\u0451\u043b \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"http:\/\/srecord.sourceforge.net\/\" rel=\"nofollow noopener noreferrer\">SRecord 1.64 (sourceforge.net)<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043b\u044e\u0431\u044b\u0435. \u0417\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442! \u041e\u043d \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0437\u0430\u043f\u0438\u0441\u043d\u044b\u0435 \u043a\u043d\u0438\u0436\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0436\u0435\u043b\u0435\u0437\u0430\u2026 \u041d\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c HEX\u0435 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u0431\u0430\u0439\u0442\u0430\u043c\u0438, \u0430 \u041a\u0432\u0430\u0440\u0442\u0443\u0441 \u0445\u043e\u0447\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0448\u043b\u0430 DWORD-\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 hex \u0444\u0430\u0439\u043b\u0430 \u0441\u0430\u043c\u043e\u043c\u0443. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u0438\u043c.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">void SpiToAvalonDemo::on_m_btnCreateMemInitFile_clicked() {     \/\/ Create an output stream      QFile file (&quot;onchip_mem.hex&quot;);      if (!file.open(QIODevice::WriteOnly))     {      return;     }      QTextStream out (&amp;file);      uint32_t initData [4096\/sizeof(uint32_t)];     memset (initData,0,sizeof(initData));     initData [0x00] = 0x12345678;     initData [0x01] = 0x11111111;     initData [0x02] = 0x22222222;     initData [0x03] = 0x33333333;     initData [0x04] = 0x44444444;     initData [0x05] = 0x55555555;     initData [0x06] = 0x66666666;     initData [0x07] = 0x77777777;     initData [0x08] = 0xffffffff;      \/\/ \u0410\u0434\u0440\u0435\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0439     out &lt;&lt; &quot;:020000020000FC\\r\\n&quot;;      for (size_t i=0;i&lt;sizeof(initData)\/sizeof(initData[0]);i+=8)     {         uint8_t cs = 0x20;         out &lt;&lt;&quot;:20&quot;;          cs += (uint8_t) (i\/0x100);         cs += (uint8_t) (i\/0x1);         out &lt;&lt; QString (&quot;%1&quot;).arg(i,4,16,QChar('0'));          out &lt;&lt; &quot;00&quot;;          uint8_t* ptr = (uint8_t*)(initData+i);         for (int j=0;j&lt;32;j++)         {             cs += ptr[j];             out &lt;&lt; QString (&quot;%1&quot;).arg(ptr[j],2,16,QChar('0'));         }         cs = -1 * cs;         out &lt;&lt; QString (&quot;%1\\r\\n&quot;).arg(cs,2,16,QChar('0'));     }      \/\/ EOF     out &lt;&lt; &quot;:00000001FF\\r\\n&quot;;  \/\/    out.writeRawData((const char*)initData,sizeof(initData));     file.close(); } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438: \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0432\u043d\u043e\u0432\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/l4\/uz\/w-\/l4uzw-lwbkpksi_euw07eed-wp8.png\"> <\/p>\n<p>  Conduit \u0432\u044b\u0445\u043e\u0434 spi \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430\u0440\u0443\u0436\u0443, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0448\u0438\u043d\u0430 AVALON_MM \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043d\u0430\u0448 \u043c\u0430\u0441\u0442\u0435\u0440 \u0441\u043e slave-\u0432\u0445\u043e\u0434\u043e\u043c \u041e\u0417\u0423. \u0410 \u0431\u043e\u043b\u044c\u0448\u0435 \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c. \u041e\u0431\u044b\u0447\u043d\u043e \u0443 \u043d\u0430\u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u044b\u043b\u0438 \u043f\u043e\u0437\u0430\u0431\u043e\u0440\u0438\u0441\u0442\u0435\u0439. \u0422\u0443\u0442 \u2013 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. <\/p>\n<h2>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>  \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b (SPI). \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0432\u0438\u0433\u0438 \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0431\u044b\u043b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0438\u0432\u043b\u044f\u043b\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f FFFFFF, \u0445\u043e\u0442\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u043f\u0440\u0438 \u0447\u0435\u0440\u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0443\u0440\u0438\u0442\u044c. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c! \u0414\u043b\u044f \u043c\u043e\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/1k\/nv\/p8\/1knvp8zcsnb5ng3g8ogqncypnfg.png\"> <\/p>\n<h2>\u0414\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434 FX3<\/h2>\n<p>  \u0412 <a href=\"https:\/\/habr.com\/ru\/post\/540164\/\">\u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437<\/a> \u0432 \u00ab\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435\u00bb FX3 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0432 SPI. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u2013 \u0447\u0442\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0431\u0438\u0442\u0430\u043c\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u044f-\u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438-\u0437\u0430\u043f\u0438\u0441\u0438, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u0442\u043e \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u043d\u0435 \u0434\u0430\u0451\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430. \u0412\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043a\u0430\u043a-\u0442\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0431\u0438\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u043a\u0440\u043e\u0441:<\/p>\n<pre><code class=\"plaintext\">#define GET_IO_BIT(nBit) ((GPIO-&gt;lpp_gpio_invalue1 &gt;&gt; (nBit-32))&amp;1) <\/code><\/pre>\n<p>  \u0418\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0431\u0438\u0442\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 32-63, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0441\u044c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 GPIO-&gt;lpp_gpio_invalue1, \u043d\u0435 \u0442\u0440\u0430\u0442\u044f \u0442\u0430\u043a\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443.<\/p>\n<p>  \u0421\u0430\u043c\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u2013 \u0442\u043e\u0436\u0435 \u043e\u0441\u043e\u0431\u043e \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u0442\u043d\u043e. \u041d\u043e \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043a\u0441\u0442, \u0442\u043e\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u0441\u043e\u0431\u043e\u0439. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u0438 \u0432 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c, \u0438 \u0432 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u043b\u0443\u043f\u0435\u0440\u0438\u043e\u0434\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 SCK \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u043d\u043e\u0441\u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0411\u044b\u043b\u043e \u0431\u044b \u043e\u0431\u0438\u0434\u043d\u043e \u0432\u0441\u0451 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0435, \u0430 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 NOP\u043e\u0432. \u0418 \u0442\u0430\u043a \u0432\u0441\u0451 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">unsigned int SPI_Read (int nBits) {    unsigned int data = 0;    SET_IO_BIT (MY_BIT_MOSI);    while (nBits)    { \t   data &gt;&gt;= 1; \t   nBits -= 1; \t   CLR_IO_BIT (MY_BIT_CLK); \t   data |= (GET_IO_BIT (MY_BIT_MISO) &lt;&lt; 31); \t   SET_IO_BIT (MY_BIT_CLK);    }    CLR_IO_BIT (MY_BIT_CLK);    return data; } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Vendor-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u0430\u043b \u0442\u0430\u043a\u0438\u043c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">    if (bType == CY_U3P_USB_VENDOR_RQT)     {      \t\/\/ Cut size if need \t\tif (wLength &gt; sizeof(ep0_buffer)) \t\t{ \t\t\twLength = sizeof (ep0_buffer); \t\t}     \t\/\/ Need send data to PC     \tif (bReqType &amp; 0x80)     \t{             CLR_IO_BIT(MY_BIT_SS);              SPI_Write(bRequest,8);             SPI_Write(wValue,16);             SPI_Write(wIndex,16);             ep0_buffer [0] = SPI_Read (32);             SET_IO_BIT(MY_BIT_SS);     \t\tCyU3PUsbSendEP0Data (wLength, (uint8_t*)ep0_buffer);             isHandled = CyTrue;     \t} else     \t{     \t\tCyU3PUsbGetEP0Data (wLength, (uint8_t*)ep0_buffer, NULL);     \t\tep0_buffer [wLength] = 0;\t\t\/\/ Null terminated String             CyU3PDebugPrint (4, (char*)ep0_buffer);              CLR_IO_BIT(MY_BIT_SS);              SPI_Write(bRequest,8);             SPI_Write(wValue,16);             SPI_Write(wIndex,16);             SPI_Write(ep0_buffer[0],32);             SET_IO_BIT(MY_BIT_SS);     \t\tCyU3PUsbAckSetup();             isHandled = CyTrue;     \t}     } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<h2>\u0427\u0435\u0440\u043d\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/h2>\n<p>  \u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437, \u043d\u0430\u0447\u0435\u0440\u043d\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0434\u0430\u0432\u0430\u043b\u043a\u0443 USB-\u043a\u043e\u043c\u0430\u043d\u0434. \u041b\u0438\u0447\u043d\u043e \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e BusHound. \u041a\u0430\u043a \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0431\u044b\u043b\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u0412\u043e\u0442 \u044f <font color=\"blue\">\u0447\u0438\u0442\u0430\u044e<\/font> \u0430\u0434\u0440\u0435\u0441 <font color=\"red\">0<\/font>. \u0414\u043b\u0438\u043d\u0443 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u044e \u0440\u0430\u0432\u043d\u0443\u044e <font color=\"green\">\u0447\u0435\u0442\u044b\u0440\u0451\u043c<\/font>. \u0427\u0438\u0442\u0430\u0435\u0442\u0441\u044f <font color=\"purple\">12345678<\/font>, \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 onchip_mem.hex.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fz\/gt\/v8\/fzgtv8u7ctgxfcowyxsiwguwmcs.png\"><\/p>\n<p>  \u0421 \u0430\u0434\u0440\u0435\u0441\u0430 4 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f 11111111<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zf\/kf\/2l\/zfkf2lfi4k308frcvkbminzxuhk.png\"> <\/p>\n<p>  \u041d\u0443, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0431\u0443\u0435\u043c <font color=\"blue\">\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c<\/font>. \u0421\u043a\u0430\u0436\u0435\u043c, \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <font color=\"red\">0x40<\/font> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <font color=\"purple\">0x87654321<\/font>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/os\/kq\/jy\/oskqjyopj5jaxqyr6zcr6aa7vwe.png\"><\/p>\n<p>  \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u0441\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435. \u0414\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043c\u0435\u0441\u0442\u0430 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0438\u0441\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c, \u0430 \u0437\u0430\u0442\u0435\u043c \u2013 \u0447\u0438\u0442\u0430\u043b \u0438\u0445 \u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u043b\u0441\u044f, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0436\u043d\u0438\u043c. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043d\u0435 \u043d\u0430 \u0441\u043b\u043e\u0432\u043e, \u043b\u0438\u0431\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b<\/h2>\n<p>  \u0423\u0431\u0435\u0434\u0438\u0432\u0448\u0438\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0435\u0440\u043d\u043e, \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u043a\u043b\u0430\u0441\u0441, \u043e\u0431\u0449\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 LibUSB, \u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u043e\u0447\u043d\u044b\u043c, \u0442\u043e \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043a\u043b\u0430\u0441\u0441 CAvalonViaFX3, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0432 \u0435\u0433\u043e \u043e\u0442 \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 CUsbTester, \u0430 \u0443\u0436\u0435 \u0432 \u043d\u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u044d\u0442\u0438 \u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0434\u043b\u044f \u043d\u0430\u0441 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0430\u0436\u0435\u043d \u0441\u0430\u043c \u043a\u043e\u0434. \u0412\u043e\u0442 \u043e\u043d:<\/p>\n<pre><code class=\"plaintext\">bool CAvalonViaFX3::WriteDword(uint32_t addr, uint32_t data) {     int res = libusb_control_transfer(m_hUsb,                             0x40,0xf1,                             (uint16_t)addr,(uint16_t)(addr&gt;&gt;16),                             (unsigned char*)&amp;data,4,100);     return (res == 4); }  bool CAvalonViaFX3::ReadDword(uint32_t addr, uint32_t&amp; data) {     int res = libusb_control_transfer(m_hUsb,                             0xc0,0xf0,                             (uint16_t)addr,(uint16_t)(addr&gt;&gt;16),                             (unsigned char*)&amp;data,4,100);     return (res == 4); } <\/code><\/pre>\n<p>  \u041d\u0443, \u0438 \u043a\u043e\u0434, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043f\u0430\u043c\u044f\u0442\u044c, \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 4 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u0430, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"plaintext\">static const int memSize = 4096; void SpiToAvalonDemo::on_m_btnMemoryTest_clicked() {     QRandomGenerator genWrite (1234);     uint32_t data [memSize\/sizeof(uint32_t)];     for (size_t i=0;i&lt;memSize\/sizeof(uint32_t);i++)     {         data[i] = genWrite.generate();     }      for (int i=0;i&lt;memSize;i+=sizeof(uint32_t))     {         if (!m_tester.WriteDword(i,data[i\/sizeof(uint32_t)]))         {             QString msg = QString (&quot;Write Error at Addr: 0x%1\\n&quot;).arg(i,8,16,QChar('0'));             qDebug() &lt;&lt; msg;             return;         }     }     for (int i=0;i&lt;memSize;i+=sizeof(uint32_t))     {         uint32_t rd;         if (!m_tester.ReadDword(i,rd))         {             QString msg = QString (&quot;Read Error at Addr: 0x%1\\n&quot;).arg(i,8,16,QChar('0'));             qDebug() &lt;&lt; msg;             return;         }         if (rd!=data[i\/sizeof(uint32_t)])         {             QString msg = QString (&quot;Miscompare at Addr: 0x%1 Written: %2 Read: %3\\n&quot;).arg(i,8,16,QChar('0')).                     arg(data[i],8,16,QChar('0')).arg(rd,8,16,QChar('0'));             qDebug() &lt;&lt; msg;             return;         }     }     qDebug()&lt;&lt;&quot;Test Finished\\n&quot;; } <\/code><\/pre>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 data \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0430\u0432\u0434\u0430, \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0442\u0430\u043a. \u041d\u043e \u0435\u0441\u043b\u0438 \u0431\u044b \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u2013 \u044d\u0442\u043e \u0431\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u0443\u044e \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043e\u0448\u0438\u0431\u043a\u0438 (\u0441\u0431\u043e\u0439 \u0430\u0434\u0440\u0435\u0441\u0430, \u0441\u0431\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u043e\u0447\u0438\u0435 \u0441\u0431\u043e\u0438). \u0415\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0432\u0435\u043a\u0430, \u0442\u043e, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0431\u0443\u0444\u0435\u0440\u0430, \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043f\u043e\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0439 \u0436\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b \u043f\u043e\u0440\u043e\u0436\u0434\u0451\u043d \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0447\u0438\u0441\u0435\u043b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438. \u041d\u043e \u044d\u0442\u043e \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u043e \u0442\u0435\u043a\u0441\u0442 \u043c\u0435\u043d\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c, \u0430 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0434\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u00ab\u0438 \u0442\u0430\u043a \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u00bb \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u0430.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041c\u044b \u043e\u0441\u0432\u043e\u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432, \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u0438 \u043f\u0438\u0448\u0443\u0449\u0438\u0445 \u0432 \u0448\u0438\u043d\u0443 AVALON_MM. \u041d\u0430\u0431\u0438\u0432\u0430\u044f \u0440\u0443\u043a\u0443, \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a SPI \u0432 AVALON_MM \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c FX3 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f (\u0441 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e) \u043a \u0448\u0438\u043d\u0435 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 TCL-\u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438.<\/p>\n<p>  \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b, \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/disk.yandex.ru\/d\/uW84WNJW7LzkbA\" rel=\"nofollow noopener noreferrer\">\u0442\u0443\u0442<\/a>.<\/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\/543584\/\"> https:\/\/habr.com\/ru\/post\/543584\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u0412 <a href=\"https:\/\/habr.com\/ru\/post\/540164\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c Vendor \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e USB3.0 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 FX3 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u0448\u0438\u043d\u0443 SPI. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043d\u0430\u0447\u0430\u0442\u043e\u0435 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <b>SPI to Avalon_MM<\/b>. \u041c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u043c\u044b \u0436\u0435 \u0443\u0436\u0435 \u0443\u043c\u0435\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0448\u0438\u043d\u043e\u0439 Avalon_MM \u0447\u0435\u0440\u0435\u0437 JTAG \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 TCL-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451?<\/p>\n<p>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c TCL, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e <a href=\"https:\/\/habr.com\/ru\/post\/508138\/\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/525440\/\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0432\u0441\u0451 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u043e \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447, \u0433\u043e\u043d\u044f\u044e\u0449\u0438\u0445 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u043e\u0442\u043d\u0438 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442, \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u0421++, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0447\u0435\u0440\u0435\u0437 USB 3.0.<\/p>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 TCL-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u044e\u0441\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/496508\/\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435. \u041d\u0430\u0434\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0434\u043b\u044f Windows \u0438 Linux \u043e\u043d\u0438 \u0440\u0430\u0437\u043d\u044b\u0435), \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0430 \u0437\u0430\u0442\u0435\u043c \u2013 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e USB \u0438 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 TCP. \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041e\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0434 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043c\u044b \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c, \u0432\u043e\u0442 \u0438 \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0448\u0438\u043d\u0435 AVALON_MM \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e. \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bg\/od\/ay\/bgoday5y5dzh_mjhfqwthrfynpy.jpeg\">  <\/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-318527","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318527","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=318527"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318527\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=318527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=318527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}