{"id":182152,"date":"2013-06-11T22:33:03","date_gmt":"2013-06-11T18:33:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=182152"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=182152","title":{"rendered":"<span class=\"post_title\">\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0430 \u0448\u0438\u043d\u0435 PCI. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 VHDL<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f <a href=\"http:\/\/habrahabr.ru\/qa\/24168\/\">\u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b<\/a> \u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u043e\u043f\u0440\u043e\u0441\u0430 PCI-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041f\u043e\u0441\u043b\u0435 \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443, \u0434\u043e\u0434\u0435\u043b\u0430\u043b \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435, \u0430 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b \u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043e \u043d\u0435\u043c, \u0438 \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e \u0437\u0430\u0431\u044b\u043b \u043e \u043d\u0435\u043c. \u041d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u044e\u0434\u0430.<\/p>\n<p>  \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0430 \u0448\u0438\u043d\u0435 PCI \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0442\u043e\u043f\u0438\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<ul>\n<li>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 <\/li>\n<li>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 <\/li>\n<li>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 <\/li>\n<\/ul>\n<p>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0440\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:  <\/p>\n<ul>\n<li> \u041a\u043e\u0433\u0434\u0430 \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044e\u0436\u043d\u044b\u0439 \u043c\u043e\u0441\u0442<\/li>\n<li> \u041a\u043e\u0433\u0434\u0430 \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u043a \u0448\u0438\u043d\u0435 PCI<\/li>\n<\/ul>\n<p>  \u041a\u0430\u043a \u0443\u0436\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c, \u043f\u0440\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0438 \u0448\u0438\u043d\u044b PCI, \u0432\u0435\u0434\u0443\u0449\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u044f \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c(Master), \u0432\u0435\u0434\u043e\u043c\u043e\u0435 \u2014 \u0442\u0430\u0440\u0433\u0435\u0442\u043e\u043c (Target).<br \/>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044e\u0436\u043d\u044b\u0439 \u043c\u043e\u0441\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u043a \u0448\u0438\u043d\u0435 PCI \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  \u0418 \u0442\u0430\u043a, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0448\u0438\u043d\u043e\u0439, \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b:  <\/p>\n<pre><code class=\"vhdl\">entity main is Port (\t \tclk\t    : in\tstd_logic; \tAD\t: inout\tstd_logic_vector(31 downto 0); \tIDSEL\t: in\tstd_logic; \tCBE\t: in\tstd_logic_vector(3 downto 0); \tFRAME\t: in\tstd_logic;\t\t\t   \tIRDY\t: in\tstd_logic; \tTRDY\t: inout\tstd_logic; \tSTOP\t: inout\tstd_logic; \tPAR\t: inout\tstd_logic; \tRST\t: in\tstd_logic; \tDEVSEL\t: inout\tstd_logic  ); end main; <\/code><\/pre>\n<p>  clk (Clock) \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0430 PCI, \u0430 \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e PCI \u2014 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<br \/>  AD (Address and Data) \u2014 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0448\u0438\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  IDSEL (Initialization Device Select) \u2014 \u0432\u044b\u0431\u043e\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430 \u043f\u0440\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0445 \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u0438.<br \/>  CBE (Bus Command and Byte Enables) \u2014 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0448\u0438\u043d\u044b \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u0430.<br \/>  FRAME (Frame) \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u044b\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0435\u0451 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<br \/>  IRDY (Initiator Ready) \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430. \u041e\u043d \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0444\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  TRDY (Target Ready) \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u0440\u0433\u0435\u0442\u0430, \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u0440\u0433\u0435\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0444\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  STOP (Stop) \u2014 \u044d\u0442\u043e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u044b\u0434\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u0440\u0433\u0435\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e.<br \/>  PAR (Parity) \u2014 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043b\u0438\u043d\u0438\u044f\u043c AD \u0438 CBE.<br \/>  RST(Reset) \u2014 c\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c.<br \/>  DEVSEL (Device Select) \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u044b\u0431\u043e\u0440\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043b\u044e\u0431\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439.<\/p>\n<h4>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438. \u041e\u0431\u0449\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/h4>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0438\u0434 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u041e\u0421<\/b><\/p>\n<div class=\"spoiler_text\">\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 PCI \u043d\u0430 \u041f\u041a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0434\u0432\u0443\u043c \u043f\u043e\u0440\u0442\u0430\u043c \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430, \u043d\u043e\u0441\u044f\u0449\u0438\u043c \u0438\u043c\u0435\u043d\u0430 CONFIG_ADDRESS \u0438 CONFIG_DATA, \u0438\u043c\u0435\u044e\u0449\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430 0CF8h \u0438 0CFCh \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043c\u043e\u0441\u0442\u0430 Host\u2013PCI, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0448\u0438\u043d\u0430 PCI \u043f\u0440\u044f\u043c\u043e \u0438\u043b\u0438 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c. <br \/>  \u041f\u043e\u0440\u0442 CONFIG_ADDRESS \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435. \u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u043c \u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0448\u0438\u043d\u0443 PCI \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430. \u042d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/3df\/165\/f45\/3df165f453d449433922a105a7c8e140.gif\"\/><br \/>  \u041a\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e, \u0432 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 PCI, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0448\u0438\u043d\u044b (\u0440\u0430\u0437\u0440\u044f\u0434\u044b 23\u201316), \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (15\u201311), \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (10\u20138) \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 (7\u20132). \u0411\u0438\u0442\u044b 1 \u0438 0 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0443\u043b\u0438, \u0430 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u0443, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044f \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438. \u0420\u0430\u0437\u0440\u044f\u0434\u044b 30\u201324 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0443\u043b\u0438. <\/p>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0440\u0442\u0430 CONFIG_DATA, \u043a\u043e\u0433\u0434\u0430 \u0432 CONFIG_ADDRESS \u0431\u044b\u043b \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0430\u0434\u0440\u0435\u0441 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u043c \u0431\u0438\u0442\u043e\u043c \u0438 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0448\u0438\u043d\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0448\u0438\u043d\u0435, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a \u043c\u043e\u0441\u0442\u0443 Host\u2013PCI, \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0448\u0438\u043d\u0435 PCI, \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u043d\u0438\u0436\u0435 \u044d\u0442\u043e\u0439 \u0448\u0438\u043d\u044b \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u043e\u0439 \u0441 \u043d\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0441\u0442\u043e\u0432 PCI\u2013PCI (\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0448\u0438\u043d \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u043e\u0441\u0442\u0443 Host\u2013PCI \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438). \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u0440\u0442\u0443 CONFIG_DATA \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440, \u0440\u0430\u0432\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 CONFIG_ADDRESS. <br \/>  \u0415\u0441\u043b\u0438 \u043d\u043e\u043c\u0435\u0440 \u0448\u0438\u043d\u044b, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 CONFIG_ADDRESS, \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0448\u0438\u043d\u044b, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0439 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u043c\u043e\u0441\u0442\u0443 Host\u2013PCI, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0442\u0438\u043f\u0430 0, \u043f\u0440\u0438\u0447\u0451\u043c \u043d\u043e\u043c\u0435\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0445\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u044f\u0434\u0430\u0445 15\u201311 \u043f\u043e\u0440\u0442\u0430 CONFIG_ADDRESS, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0434\u0430\u0447\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 IDSEL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u043e\u0434\u0438\u043d \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u0431\u0438\u0442\u044b) \u0432 \u0444\u0430\u0437\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u044f\u0434\u0430\u0445 31\u201311 \u0430\u0434\u0440\u0435\u0441\u0430. <br \/>  \u0415\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432 CONFIG_ADDRESS \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u0442\u0443 \u0448\u0438\u043d\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043a \u043c\u043e\u0441\u0442\u0443 Host\u2013PCI, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0442\u0438\u043f\u0430 1. \u041e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u043c\u043e\u0441\u0442\u043e\u043c PCI\u2013PCI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439\u0441\u044f \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u043d\u043e\u043c\u0435\u0440 \u0448\u0438\u043d\u044b. \u042d\u0442\u043e\u0442 \u043c\u043e\u0441\u0442 \u043b\u0438\u0431\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0442\u0438\u043f\u0430 0 (\u0435\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u043c\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043a \u0448\u0438\u043d\u0435, \u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0434\u0441\u043e\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u043e\u0439 \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0441\u0442\u0443), \u043b\u0438\u0431\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0442\u0438\u043f\u0430 1, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0435\u0451 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u043e\u0441\u0442. \u0414\u043b\u0438\u043d\u0430 \u044d\u0442\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043b\u044f, \u043e\u0442\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434 \u043d\u043e\u043c\u0435\u0440 \u0448\u0438\u043d\u044b (8 \u0431\u0438\u0442). <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 (\u0443\u043a\u0430\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0448\u0438\u043d\u044b, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430), \u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0432\u043e\u0437\u044b\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043d\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0440\u0430\u0437\u0440\u044f\u0434\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/29e\/e98\/13f\/29ee9813f072224ed3359b4591ae65b4.png\"\/><br \/>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0442\u0438\u043f\u0430 1.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/d37\/ed6\/7c5\/d37ed67c5c8c0e4f08912c9854d025cc.png\"\/><br \/>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0442\u0438\u043f\u0430 0.  <\/div>\n<\/div>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/917\/c11\/e54\/917c11e54860236010590141f463c6b9.png\"\/><br \/>  \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432:  <\/p>\n<ul>\n<li>Vendor ID \u2014 \u043f\u043e\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0xFFFF. <\/li>\n<li>Device ID \u2014 \u043f\u043e\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u0438\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/li>\n<li>Revision ID \u2014 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e. <\/li>\n<li>Header Type \u2014 \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0415\u0441\u043b\u0438 7\u043e\u0439 \u0431\u0438\u0442 \u0440\u0430\u0432\u0435\u043d 0, \u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0430\u043b\u044c\u043d\u044b\u043c, \u0438\u043d\u0430\u0447\u0435 \u2014 \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435. <\/li>\n<li>Class Code \u2014 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0421\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 (\u0430\u0434\u0440\u0435\u0441 0Bh) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u2014 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441, \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (\u0435\u0441\u043b\u0438 \u043e\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d).<\/li>\n<li>Subsystem ID, Subsystem Vendor ID \u2014 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c. \u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u0425\u0440\u0430\u043d\u044f\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0442\u043e\u0447\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u044b \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b<br \/>  \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442 \u0441 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f (Device ID \u0438 Vendor ID). <\/li>\n<li>BAR0 \u2014 BAR5 \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430.<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f:  <\/p>\n<ul>\n<li>\u0411\u0438\u0442 0 = 0 \u2014 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u0420\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 2 \u0413\u0431\u0430\u0439\u0442 <\/li>\n<li>\u0411\u0438\u0442 0 = 1 \u2014 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u043e\u0440\u0442\u043e\u0432. \u0420\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0434\u043e 256 \u0431\u0430\u0439\u0442.<\/li>\n<\/ul>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0412 BAR \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f 0xFFFFFFFF. \u0414\u0430\u043b\u0435\u0435, \u0438\u0437 BAR \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438 \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 0xFFFFFFFF. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432 \u043c\u043b\u0430\u0434\u0448\u0435\u043c \u0431\u0438\u0442\u0435 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<h4>\u041e\u0431\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/h4>\n<p>  \u041c\u0430\u0441\u0442\u0435\u0440 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0448\u0438\u043d\u0435 AD \u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0430 \u0448\u0438\u043d\u0435 CBE \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b FRAME \u0432 0 \u0438 \u0441\u0438\u0433\u043d\u0430\u043b IRDY \u0432 0. \u0414\u0430\u043b\u0435\u0435, \u043c\u0430\u0441\u0442\u0435\u0440 \u0436\u0434\u0435\u0442 \u043e\u0442 \u0442\u0430\u0440\u0433\u0435\u0442\u0430 \u2014 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 TRDY \u0438 DEVSEL. \u0422\u0430\u043a \u0436\u0435, \u0442\u0430\u0440\u0433\u0435\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0448\u0438\u043d\u0443 AD \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 FRAME, IRDY \u0438 DEVSEL \u0440\u0430\u0432\u043d\u044b \u0443\u0440\u043e\u0432\u043d\u044e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0443\u043b\u044f.<\/p>\n<h4>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p>  \u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0432\u044b\u0432\u043e\u0434\u0430\u043c \u041f\u041b\u0418\u0421 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b: \u0431\u0443\u0444\u0435\u0440\u044b \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430.<br \/>  \u0422\u0430\u043a, \u0434\u043b\u044f \u0448\u0438\u043d\u044b AD \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code class=\"vhdl\">signal AD_I:\t\t\tstd_logic_vector (AD'range); signal AD_O:\t\t\tstd_logic_vector (AD'range); signal AD_T:\t\t\tstd_logic;  AD_BUF: for iCount in AD'low to AD'high generate       begin          \tIOBUF_AD : IOBUF \tgeneric map  \t( \tDRIVE =&gt; 12, \tIOSTANDARD =&gt; &quot;PCI33_3&quot;, \tSLEW =&gt; &quot;SLOW&quot;) \tport map ( \t\tO =&gt; AD_I(iCount), \t\tIO =&gt; AD(iCount), \t\tI =&gt; AD_O(iCount), \t\tT =&gt; AD_T \t); end generate; <\/code><\/pre>\n<p>  \u0413\u0434\u0435,   <\/p>\n<ul>\n<li>O \u2014 \u0432\u044b\u0445\u043e\u0434 \u0431\u0443\u0444\u0435\u0440\u0430. <\/li>\n<li>IO \u2014 \u0432\u0445\u043e\u0434\/\u0432\u044b\u0445\u043e\u0434 \u0431\u0443\u0444\u0435\u0440\u0430, \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0432\u044b\u0432\u043e\u0434\u0443 \u041f\u041b\u0418\u0421. <\/li>\n<li>I \u2014 \u0432\u044b\u0445\u043e\u0434 \u0431\u0443\u0444\u0435\u0440\u0430. <\/li>\n<li>T \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043e\u043c, \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u2014 \u0432\u0445\u043e\u0434, \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0443\u043b\u044f \u2014 \u0432\u044b\u0445\u043e\u0434. <\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u0437\u0430\u0433\u0440\u043e\u043c\u043e\u0436\u0434\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e.<\/p>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u043f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0448\u0438\u043d\u0435 AD \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0430\u0434\u0440\u0435\u0441, \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b FRAME \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b AdrPhASE, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0449\u0435\u043b\u043a\u043d\u0443\u0442\u044c \u0448\u0438\u043d\u0443 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0448\u0438\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.  <\/p>\n<pre><code class=\"vhdl\">signal AdrPhASE:\t\tstd_logic; signal FRAME_D:\tstd_logic; signal Addres:\t\t\tstd_logic_vector(AD_I'range); signal Command:\tstd_logic_vector(CBE'range); signal bCfgTr:\t\t\tboolean;  process (clk_I, RST_I) begin \tif (RST_I = '1') then \t\tif (rising_edge(clk_I)) then \t\t\tFRAME_D &lt;= FRAME_I after cTCQ; \t\tend if; \telse FRAME_D &lt;= '1' after cTCQ; \tend if; end process;  AdrPhASE &lt;= not FRAME_I and FRAME_D;  process (clk_I, RST_I) begin \tif (RST_I = '0') then \t\tAddress\t&lt;= (others =&gt; '0') after cTCQ; \t\tCommand\t&lt;= (others =&gt; '0') after cTCQ; \t\tbCfgTr &lt;= false after cTCQ; \telsif (rising_edge(clk_I)) then \t\tif (AdrPhASE = '1') then \t\t\tAddress\t&lt;= AD_I\t after cTCQ; \t\t\tCommand\t&lt;= CBE_I after cTCQ; \t\t\tbCfgTr\t&lt;= (IDSEL_I = '1') after cTCQ; \t\tend if; \tend if; end process; <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0441\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vhdl\">type TSM_PCI_T is\t\t(sIDLE, sDECODE, sCFG_READ, sCFG_WRITE, sIO_READ, sIO_WRITE, sMEM_READ, sMEM_WRITE); signal smPCI_T: \t\tTSM_PCI_T;  process(clk_I, RST_I) begin \tif (RST_I = '0') then \t\tsmPCI_T &lt;= sIDLE after cTCQ; \telsif (rising_edge(clk_I)) then \t\tcase (smPCI_T) is \t\t\twhen sIDLE\t=&gt;\tif (AdrPhASE = '1') then smPCI_T &lt;= sDECODE after cTCQ;\tend if; \t\t\twhen sDECODE\t=&gt;\tif (bCfgTr and Address(10 downto 8) = b&quot;000&quot; and Command(3 downto 1) = b&quot;101&quot;)  then \t\t\t\t\t\t\tif (Command(0) = '0') then smPCI_T &lt;= sCFG_READ\tafter cTCQ; \t\t\t\t\t\t\t\telse smPCI_T &lt;= sCFG_WRITE after cTCQ; end if; \t\t\t\t\t\telsif (Command(3 downto 1)= b&quot;001&quot;) and (Addres(31 downto 8) = BAR0(31 downto 8))then\t \t\t\t\t\t\t\tif (Command(0) = '0') then smPCI_T &lt;= sIO_READ after cTCQ; \t\t\t\t\t\t\telse smPCI_T &lt;= sIO_WRITE after cTCQ;\tend if; \t\t\t\t\t\telsif (Command(3 downto 1) = b&quot;011&quot;) and (Addres(31 downto 16) = BAR1(31 downto 16)) then \t\t\t\t\t\t\tif (Command(0) = '0') then smPCI_T &lt;= sMEM_READ\tafter cTCQ; \t\t\t\t\t\t\t\telse smPCI_T &lt;= sMEM_WRITE after cTCQ; end if; \t\t\t\t\t\telse smPCI_T &lt;= sIDLE after cTCQ;  \t\t\t\t\t\tend if; \t\t\twhen sCFG_READ\t=&gt;\tif (IRDY_I = '0') then\tsmPCI_T &lt;= sIDLE after cTCQ;  end if;  \t \t\t\twhen sCFG_WRITE\t=&gt;\tif (IRDY_I = '0') then\tsmPCI_T &lt;= sIDLE after cTCQ;  end if;  \t \t\t\twhen sIO_WRITE\t=&gt;\tif (IRDY_I = '0') then\tsmPCI_T &lt;= sIDLE after cTCQ;  end if;  \t \t\t\twhen sIO_READ\t=&gt;\tif (IRDY_I = '0') then\tsmPCI_T &lt;= sIDLE after cTCQ;  end if;  \t \t\t\twhen sMEM_READ\t=&gt;\tif (IRDY_I = '0') then\tsmPCI_T &lt;= sIDLE after cTCQ;  end if; \t\t\twhen sMEM_WRITE\t=&gt;\tif (IRDY_I = '0') then\tsmPCI_T\t&lt;= sIDLE after cTCQ;  end if; \t\t\twhen others\t\t=&gt;\tsmPCI_T &lt;= sIDLE\t\tafter cTCQ; \t\tend case; \tend if; end process; <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0432\u044b\u0448\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043e \u0448\u0438\u043d\u0435 CBE.  <\/p>\n<ul>\n<li> 0010 I\/O Read<\/li>\n<li> 0011 I\/O Write<\/li>\n<li> 0110 Memory Read<\/li>\n<li> 0111 Memory Write<\/li>\n<li> 1010 Configuration Read<\/li>\n<li> 1011 Configuration Write<\/li>\n<\/ul>\n<p>  \u041a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043d\u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0448\u0438\u043d\u044b CBE \u0438 \u0448\u0438\u043d\u044b AD \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u043e\u0440\u0442\u0430\u043c \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430. \u0412\u044b\u0445\u043e\u0434 \u0432 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 IRDY \u043e\u0442 \u043c\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<h5>\u0427\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/h5>\n<p>  \u041a\u0430\u043a \u0431\u044b\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0442\u0438\u043f\u0430 0. \u0422\u0430\u043a \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0434\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435, \u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 000, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u0441\u044f \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0435. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 (\u0431\u0438\u0442\u044b 7..0 \u0448\u0438\u043d\u044b AD) \u043d\u0430 \u0448\u0438\u043d\u0443 AD \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u0438\u0441\u0443\u043d\u043a\u0443 \u0432\u044b\u0448\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vhdl\">signal CfgRData:\t\t\tstd_logic_vector(31 downto 0):=x&quot;00000000&quot;; signal CommandReg:\t\t\tstd_logic_vector(15 downto 0) := x&quot;0000&quot;; signal StatusReg:\t\t\tstd_logic_vector(15 downto 0) := x&quot;0200&quot;; signal LatencyTimer:\t\t\tstd_logic_vector(7 downto 0) := x&quot;00&quot;; signal CacheLineSize:\t\t\tstd_logic_vector(7 downto 0) := x&quot;00&quot;; signal BAR0:\t\t\t\t\tstd_logic_vector(31 downto 0) := x&quot;00000001&quot;; signal BAR1:\t\t\t\t\tstd_logic_vector(31 downto 0) := x&quot;00000000&quot;; signal InterruptLine:\t\t\tstd_logic_vector(7 downto 0); process (clk_I) begin \tif (rising_edge(clk_I)) then \t\tcase (Address(7 downto 0)) is  \t\t\twhen x&quot;00&quot;\t=&gt; CfgRData &lt;= x&quot;00017788&quot; ; --Device ID and Vendor ID \t\t\twhen x&quot;04&quot;\t=&gt; CfgRData &lt;= StatusReg & CommandReg; --Status Register, Command Register \t\t\twhen x&quot;08&quot;\t=&gt; CfgRData &lt;= x&quot;10000001&quot;; -- Class Code and Revision ID \t\t\twhen x&quot;0C&quot;\t=&gt; CfgRData &lt;= x&quot;0000&quot; & LatencyTimer & CacheLineSize; -- BIST, Header Type(bit 7 = 0, single, bits 6-0 = 0, type0), Latency Timer(for masters), Cache Line Size (bit 2 in 1) \t\t\twhen x&quot;10&quot;\t=&gt; CfgRData &lt;= BAR0; -- Base Adress 0 (Register IO address decoder) \t\t\twhen x&quot;14&quot;\t=&gt; CfgRData &lt;= BAR1; -- Base Adress 1 \t\t\twhen x&quot;28&quot;\t=&gt; CfgRData &lt;= x&quot;00000000&quot;; -- CarfdBus CIS Pointer \t\t\twhen x&quot;2C&quot;\t=&gt; CfgRData &lt;= x&quot;00017788&quot;; -- Subsystem ID, Subsystem Vendor ID \t\t\twhen x&quot;30&quot;\t=&gt; CfgRData &lt;= x&quot;00000000&quot;; -- Expanxion Rom Base Address \t\t\twhen x&quot;34&quot;\t=&gt; CfgRData &lt;= x&quot;00000000&quot;; -- Reserved, Capabilitis Pointer \t\t\twhen x&quot;38&quot;\t=&gt; CfgRData &lt;= x&quot;00000000&quot;;\t-- Reserved \t\t\twhen x&quot;3C&quot;\t=&gt; CfgRData &lt;= x&quot;004001&quot; & InterruptLine;\t-- Max_Lat(only bus master), Min_Gnt, Interrupt Pin, Interrupt Line \t\t\twhen others\t=&gt; CfgRData &lt;= (others =&gt; '0'); \t\tend case;\t \tend if; end process; <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  \u0422\u0430\u043a \u0432\u044b\u0433\u044f\u0434\u0438\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/d4f\/2ce\/33a\/d4f2ce33aff524b656d15d61d2b9fbf0.png\"\/><br \/>  <a href=\"http:\/\/rghost.ru\/46685703\/image.png\">\u041f\u043e\u043b\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/a><\/p>\n<h5>\u0417\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/h5>\n<p>  \u041d\u0430 \u0448\u0438\u043d\u0435 AD \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438, \u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u0412 BAR0 \u0431\u0438\u0442\u044b 7..0 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f read-only, \u0432 BAR1 \u0431\u0438\u0442\u044b 15..0 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f read-only. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 256, \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 4 294 967 296.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vhdl\">process(clk_I, RST_I) begin \tif(RST_I = '0')then \t\tCommandReg &lt;= x&quot;0000&quot; after cTCQ; \t\tStatusReg &lt;= x&quot;0200&quot; after cTCQ; \t\tLatencyTimer &lt;= x&quot;00&quot; after cTCQ; \t\tCacheLineSize &lt;= x&quot;00&quot; after cTCQ; \t\tBAR0 &lt;= x&quot;00000001&quot; after cTCQ; \t\tBAR1 &lt;= x&quot;00000000&quot; after cTCQ; \telsif(rising_edge(clk_I)) then \t\tif (smPCI_T = sCFG_WRITE) then \t\t\tcase(Address(7 downto 0)) is  \t\t\t\twhen x&quot;04&quot;\t=&gt;\tif (CBE_I(1) = '0') then\tCommandReg(15 downto 8) &lt;= AD_I(15 downto 8)\tafter cTCQ; end if; \t\t\t\t\t\t\t\tif (CBE_I(0) = '0') then\tCommandReg(7 downto 0) &lt;= AD_I(7 downto 0)\t\tafter cTCQ; end if; \t\t\t\twhen x&quot;0C&quot;\t=&gt;\tif (CBE_I(1) = '0') then\tLatencyTimer &lt;= AD_I(15 downto 8)\t\t\t\tafter cTCQ; end if; \t\t\t\t\t\t\t\tif (CBE_I(0) = '0') then\tCacheLineSize &lt;= AD_I(7 downto 0)\t\t\t\tafter cTCQ; end if; \t\t\t\twhen x&quot;10&quot;\t=&gt;\tif (CBE_I(3) = '0')\tthen \tBAR0(31 downto 24) &lt;= AD_I(31 downto 24)\t\tafter cTCQ; end if; \t\t\t\t\t\t\t\tif (CBE_I(2) = '0')\tthen \tBAR0(23 downto 16) &lt;= AD_I(23 downto 16)\t\tafter cTCQ; end if; \t\t\t\t\t\t\t\tif (CBE_I(1) = '0')\tthen \tBAR0(15 downto 8) &lt;= AD_I(15 downto 8)\t\t\tafter cTCQ; end if; \t\t\t\twhen x&quot;14&quot;\t=&gt;\tif (CBE_I(3) = '0')\tthen \tBAR1(31 downto 24) &lt;= AD_I(31 downto 24)\t\tafter cTCQ; end if; \t\t\t\t\t\t\t\tif (CBE_I(2) = '0')\tthen \tBAR1(23 downto 16) &lt;= AD_I(23 downto 16)\t\tafter cTCQ; end if; \t\t\t\twhen x&quot;3C&quot;\t=&gt;\tif (CBE_I(0) = '0') then\tInterruptLine &lt;= AD_I(7 downto 0)\t\t\t\tafter cTCQ; end if; \t\t\t\twhen others\t=&gt;\tnull; \t\t\tend case; \t\tend if; \tend if; end process; <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<h5>\u0417\u0430\u043f\u0438\u0441\u044c \u0432 \u043f\u043e\u0440\u0442<\/h5>\n<p>  \u041d\u0430 \u0448\u0438\u043d\u0435 AD \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c.<br \/>  \u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e.  <\/p>\n<pre><code class=\"vhdl\">signal IOReg0:\t\t\tstd_logic_vector (31 downto 0);  process(clk_I, RST_I) begin \tif(RST_I = '0') then \t\tIOReg0 &lt;= x&quot;00000000&quot; after cTCQ; \telsif (rising_edge(clk_I)) then \t\tif (smPCI_T = sIO_WRITE and Address(7 downto 0) = x&quot;00&quot;) then \t\t\tif (CBE_I(0) = '0') then\tIOReg0( 7 downto  0) &lt;= AD_I( 7 downto  0) after cTCQ; end if; \t\t\tif (CBE_I(1) = '0') then IOReg0(15 downto  8) &lt;= AD_I(15 downto  8) after cTCQ; end if; \t\t\tif (CBE_I(2) = '0') then IOReg0(23 downto 16) &lt;= AD_I(23 downto 16) after cTCQ; end if; \t\t\tif (CBE_I(3) = '0') then IOReg0(31 downto 24) &lt;= AD_I(31 downto 24) after cTCQ; end if; \t\tend if; \tend if; end process; <\/code><\/pre>\n<p>  <\/p>\n<h5>\u0427\u0442\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430<\/h5>\n<p>  \u041d\u0430 \u0448\u0438\u043d\u0435 AD \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c. \u0417\u0430\u0442\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430 \u0448\u0438\u043d\u0443 AD \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vhdl\">signal IORDate:\t\t\tstd_logic_vector (31 downto 0);  process (clk_I, RST_I) begin \tif (RST_I = '0') then \t\tIORDate &lt;= x&quot;00000000&quot;; \telsif (rising_edge(clk_I)) then \t\t\tcase (Address(7 downto 0)) is \t\t\t\twhen x&quot;00&quot; =&gt;\tIORDate &lt;= IOReg0 after cTCQ; \t\t\t\twhen x&quot;04&quot; =&gt;\tIORDate &lt;= IOReg1 after cTCQ; \t\t\t\twhen x&quot;08&quot; =&gt;\tIORDate &lt;= IOReg2 after cTCQ; \t\t\t\twhen x&quot;0C&quot; =&gt;\tIORDate &lt;= IOReg3 after cTCQ; \t\t\t\twhen x&quot;10&quot; =&gt;\tIORDate &lt;= IOReg4 after cTCQ; \t\t\t\twhen x&quot;14&quot; =&gt;\tIORDate &lt;= IOReg5 after cTCQ; \t\t\t\twhen x&quot;18&quot; =&gt;\tIORDate &lt;= IOReg6 after cTCQ; \t\t\t\twhen x&quot;1C&quot; =&gt;\tIORDate &lt;= IOReg7 after cTCQ; \t\t\t\twhen x&quot;20&quot; =&gt;\tIORDate &lt;= IOReg8 after cTCQ; \t\t\t\twhen x&quot;24&quot; =&gt;\tIORDate &lt;= IOReg9 after cTCQ; \t\t\t\twhen others =&gt;\tIORDate &lt;= (others =&gt; '0'); \t\t\tend case; \tend if; end process; <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  \u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/206\/582\/aa4\/206582aa4f6f90632cb17310bd1063bd.png\"\/><br \/>  <a href=\"http:\/\/rghost.ru\/46685755\/image.png\">\u041f\u043e\u043b\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/a><\/p>\n<h5>\u0417\u0430\u043f\u0438\u0441\u044c \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/h5>\n<p>  \u041d\u0430 \u0448\u0438\u043d\u0435 AD \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435 \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u041f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u043d\u0430 \u0448\u0438\u043d\u0443 AD \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u0448\u0438\u043d\u0443 AD \u0442\u0430\u0440\u0433\u0435\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435.<br \/>  \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0438\u0448\u0443\u0435\u0442\u0441\u044f \u0432 RAM \u0432 \u043f\u043e\u0440\u0442 \u0410, \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043f\u043e\u0440\u0442\u0430 B.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vhdl\">signal RamWrEn:\t\tstd_logic; signal RamOutputDate:\t\t\tstd_logic_vector (31 downto 0); signal RamInputDate:\t\t\tstd_logic_vector (31 downto 0); signal RamRst:\t\t\t\tstd_logic := '0';  RAMB16_S36_S36_inst : RAMB16_S36_S36 port map ( \tDOA\t=&gt; open,\t\t\t\t\t\t-- Port A 32-bit Data Output \tDOB\t=&gt; RamOutputDate,\t\t\t-- Port B 32-bit Data Output \tDOPA\t=&gt; open,\t\t\t\t\t-- Port A 4-bit Parity Output \tDOPB\t=&gt; open,\t\t\t\t\t-- Port B 4-bit Parity Output \tADDRA\t=&gt; Address(8 downto 0),\t-- Port A 9-bit Address Input \tADDRB\t=&gt; Address(8 downto 0),\t-- Port B 9-bit Address Input \tCLKA\t=&gt; clk_I,\t\t\t\t\t-- Port A Clock \tCLKB\t=&gt; clk_I,\t\t\t\t\t-- Port B Clock \tDIA\t=&gt; RamInputDate,\t\t\t-- Port A 32-bit Data Input \tDIB\t=&gt; x&quot;00000000&quot;,\t\t\t-- Port B 32-bit Data Input \tDIPA\t=&gt; x&quot;0&quot;,\t\t\t\t\t-- Port A 4-bit parity Input \tDIPB\t=&gt; x&quot;0&quot;,\t\t\t\t\t-- Port-B 4-bit parity Input \tENA\t=&gt; '1',\t\t\t\t\t-- Port A RAM Enable Input \tENB\t=&gt; '1',\t\t\t\t\t-- PortB RAM Enable Input \tSSRA\t=&gt; '0',\t\t\t\t\t-- Port A Synchronous Set\/Reset Input \tSSRB\t=&gt; '0',\t\t\t\t\t-- Port B Synchronous Set\/Reset Input \tWEA\t=&gt; RamWrEn,\t\t-- Port A Write Enable Input \tWEB\t=&gt; '0'\t\t\t\t\t-- Port B Write Enable Input );  process(clk_I) begin \tif (rising_edge(clk_I)) then \t\tif (RST_I = '1') then \t\t\tRamRst &lt;= '0'; \t\telse \t\t\tRamRst &lt;= '1'; \t\tend if; \tend if; end process;  process(clk_I, RST_I) begin \tif(RST_I = '0') then \t\tRamInputDate &lt;= (others =&gt; '0') after cTCQ; \t\tRamWrEn &lt;= '0' after cTCQ; \telsif (rising_edge(clk_I)) then \t\tif (smPCI_T = sMEM_WRITE) then \t\t\tif (CBE_I(0) = '0') then RamInputDate(7  downto  0) &lt;= AD_I( 7 downto  0) after cTCQ; end if; \t\t\tif (CBE_I(1) = '0') then RamInputDate(15 downto  8) &lt;= AD_I(15 downto  8) after cTCQ; end if; \t\t\tif (CBE_I(2) = '0') then RamInputDate(23 downto 16) &lt;= AD_I(23 downto 16) after cTCQ; end if; \t\t\tif (CBE_I(3) = '0') then RamInputDate(31 downto 24) &lt;= AD_I(31 downto 24) after cTCQ; end if; \t\t\tRamWrEn &lt;= '1' after cTCQ; \t\telse  \t\t\tRamWrEn &lt;= '0' after cTCQ; \t\tend if; \tend if; end process; <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  \u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/09e\/26e\/31d\/09e26e31d8a26a507fba81e527b8f829.png\"\/><br \/>  <a href=\"http:\/\/rghost.ru\/46685792\/image.png\">\u041f\u043e\u043b\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/a><\/p>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0448\u0438\u043d\u0443 AD \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430, \u043a \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440.  <\/p>\n<pre><code class=\"vhdl\">process (clk_I, RST_I) begin \tif (RST_I = '0') then \t\tAD_O &lt;= (others =&gt; '0') after cTCQ; \telsif (rising_edge(clk_I)) then \t\tif (smPCI_T = sCFG_READ) then \t\t\tAD_O &lt;= CfgRData after cTCQ; \t\telsif (smPCI_T = sIO_READ) then \t\t\tAD_O &lt;= IORDate after cTCQ; \t\telsif (smPCI_T = sMEM_READ) then \t\t\tAD_O &lt;= RamOutputDate after cTCQ; \t\tend if; \tend if; end process; <\/code><\/pre>\n<p>  \u0421\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0448\u0438\u043d\u0443 AD \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code class=\"vhdl\">process (clk_I, RST_I) begin \tif (RST_I = '0') then \t\tAD_T &lt;= '1' after cTCQ; \telsif (rising_edge(clk_I)) then \t\tAD_T &lt;= not b2l(smPCI_T = sCFG_READ or smPCI_T = sIO_READ or smPCI_T = sMEM_READ) after cTCQ; \tend if; end process; <\/code><\/pre>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u043e\u0447\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0430 \u0448\u0438\u043d\u0435 PCI \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0431\u044b\u043b\u0430 \u0437\u0430\u043b\u0438\u0442\u0430 \u0432 \u041f\u041b\u0418\u0421. \u041f\u043b\u0430\u0442\u0430 \u0441 \u041f\u041b\u0418\u0421 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 PCI \u0441\u043b\u043e\u0442 \u0438 \u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u0448\u043b\u0430 \u043f\u043b\u0430\u0442\u0443 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043d\u0430 \u043d\u0435\u0435.<br \/>  <a href=\"http:\/\/rghost.ru\/46686088.view\"><img decoding=\"async\" src=\"http:\/\/rghost.ru\/46686088\/thumb.png\"\/><\/a><br \/>  <a href=\"http:\/\/rghost.ru\/46686125.view\"><img decoding=\"async\" src=\"http:\/\/rghost.ru\/46686125\/thumb.png\"\/><\/a><br \/>  \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \ud83d\ude42<\/p>\n<p>  \u0421\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"http:\/\/rghost.ru\/46686218\">rghost.ru\/46686218<\/a>. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c xilinx ise 14.2.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/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=\"http:\/\/habrahabr.ru\/post\/182152\/\"> http:\/\/habrahabr.ru\/post\/182152\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f <a href=\"http:\/\/habrahabr.ru\/qa\/24168\/\">\u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b<\/a> \u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u043e\u043f\u0440\u043e\u0441\u0430 PCI-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041f\u043e\u0441\u043b\u0435 \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443, \u0434\u043e\u0434\u0435\u043b\u0430\u043b \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435, \u0430 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b \u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043e \u043d\u0435\u043c, \u0438 \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e \u0437\u0430\u0431\u044b\u043b \u043e \u043d\u0435\u043c. \u041d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u044e\u0434\u0430.<\/p>\n<p>  \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0430 \u0448\u0438\u043d\u0435 PCI \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0442\u043e\u043f\u0438\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<ul>\n<li>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 <\/li>\n<li>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 <\/li>\n<li>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 <\/li>\n<\/ul>\n<p>  <\/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-182152","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/182152","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=182152"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/182152\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=182152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=182152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=182152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}