{"id":278432,"date":"2016-04-16T19:15:07","date_gmt":"2016-04-16T15:15:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=278432"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=278432","title":{"rendered":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0433\u0440\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 FPGA"},"content":{"rendered":"<p>       <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/eed\/61d\/fe6\/eed61dfe603ea04a9a9e56c433f31de2.jpg\" rel=\"attachment wp-att-932\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/eed\/61d\/fe6\/eed61dfe603ea04a9a9e56c433f31de2.jpg\" alt=\"1\" width=\"604\" height=\"403\" \/><\/div>\n<p><\/a><br \/>  \u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440. \u00a0\u0418\u0437\u0443\u0447\u0435\u043d\u0438\u0435 FPGA \u044f \u043d\u0430\u0447\u0430\u043b \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 PS\/2 \u0438 VGA \u0431\u044b\u043b\u0430 \u0438\u0433\u0440\u0430 \u0432 \u041f\u0438\u043d-\u041f\u043e\u043d\u0433 \u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u041e\u0434\u043d\u0430 \u0438\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 DE0-CV \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043d\u0435 \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Silicon Russia, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u0430 (<a href=\"http:\/\/www.silicon-russia.com\/2015\/12\/11\/board-giveaway-for-mipsfpga\/\">http:\/\/www.silicon-russia.com\/2015\/12\/11\/board-giveaway-for-mipsfpga\/<\/a>).<a name=\"habracut\"><\/a><\/p>\n<p>  \u0421\u0443\u0442\u044c \u0438\u0433\u0440\u044b \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0437\u0443\u043d\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0431\u0438\u0432\u0430\u0442\u044c \u043c\u044f\u0447\u0438\u043a \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d VGA \u0434\u0438\u0441\u043f\u043b\u0435\u0439, \u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0441 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c PS\/2, \u0441\u0447\u0435\u0442 \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435.<br \/>  <strong>\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430<\/strong><br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e8f\/d2b\/9d7\/e8fd2b9d78d1bb35222b057256bdf672.jpg\" rel=\"attachment wp-att-933\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e8f\/d2b\/9d7\/e8fd2b9d78d1bb35222b057256bdf672.jpg\" alt=\"2\" width=\"604\" height=\"403\" \/><\/div>\n<p><\/a><br \/>  DE0-CV \u044d\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u0430\u044f Alter\u2019\u043e\u0439, \u0435\u0435 \u0446\u0435\u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 150$, \u0430 \u043f\u043e \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 99$. \u041d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0438\u043c\u0435\u0435\u043c:<\/p>\n<p>   \u2014 \u0448\u0435\u0441\u0442\u044c \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0445 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432, 10 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432, 10 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u0439, 4 \u043a\u043d\u043e\u043f\u043a\u0438<\/p>\n<p>   \u2014 VGA \u0440\u0430\u0437\u044a\u0435\u043c, PS\/2 \u0440\u0430\u0437\u044a\u0435\u043c, \u0441\u043b\u043e\u0442 \u043f\u043e\u0434 micro SD \u043a\u0430\u0440\u0442\u0443<\/p>\n<p>   \u2014 SDRAM \u043f\u0430\u043c\u044f\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u043e\u043c 64\u041c\u0431\u0430\u0439\u0442\u0430<\/p>\n<p>   \u2014 \u0434\u0432\u0430 GPIO \u0440\u0430\u0437\u044a\u0435\u043c\u0430 \u043d\u0430 35 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043a\u0430\u0436\u0434\u044b\u0439.<br \/>  <strong>\u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b<\/strong><br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3c0\/f2b\/678\/3c0f2b67882ed17e5a331fa8020db50e.jpg\" rel=\"attachment wp-att-934\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3c0\/f2b\/678\/3c0f2b67882ed17e5a331fa8020db50e.jpg\" alt=\"3\" width=\"604\" height=\"403\" \/><\/div>\n<p><\/a><br \/>  \u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c 4 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.  <\/p>\n<ul>\n<li>PLL \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 ip \u0431\u043b\u043e\u043a \u043d\u0443\u0436\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/li>\n<li>PS\/2 \u2013 \u0431\u043b\u043e\u043a \u043d\u0430 \u0432\u0445\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441 PS\/2 \u043f\u043e\u0440\u0442\u0430 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u044b \u043d\u0430\u0436\u0430\u0442\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448.<\/li>\n<li>vga \u2013 \u0431\u043b\u043e\u043a \u2014 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 VGA \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u043c<\/li>\n<li>game \u2013 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u0430\u043c\u0443 \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u0433\u0440\u044b, \u043d\u0430 \u0432\u0445\u043e\u0434\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441 vga, ps2 \u0438 pll \u0431\u043b\u043e\u043a\u043e\u0432 .<\/li>\n<\/ul>\n<p>  \u0421\u0435\u0440\u0434\u0446\u0435\u043c \u0432\u0441\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f PLL, \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 VGA \u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0431\u043b\u043e\u043a\u0438.<br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d96\/b6a\/1b4\/d96b6a1b40791b612eb0cfddc13aa4be.jpg\" rel=\"attachment wp-att-935\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d96\/b6a\/1b4\/d96b6a1b40791b612eb0cfddc13aa4be.jpg\" alt=\"4\" width=\"1523\" height=\"699\" \/><\/div>\n<p><\/a><br \/>  <strong>\u041a\u043e\u0442\u0440\u043e\u043b\u043b\u0435\u0440 <\/strong><strong>PS\/2 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b<\/strong><br \/>  \u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u043a\u0435\u0442\u043a\u043e\u0439 \u0432 \u0438\u0433\u0440\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u0441 PS\/2 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u043b\u043e\u043a\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 PS\/2.<br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c05\/e46\/93c\/c05e4693c7918d358c93995e32e4bb22.gif\" rel=\"attachment wp-att-936\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c05\/e46\/93c\/c05e4693c7918d358c93995e32e4bb22.gif\" alt=\"5\" width=\"400\" height=\"128\" \/><\/div>\n<p><\/a><br \/>  \u0412\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u0441\u043b\u0443\u0436\u0430\u0449\u0438\u043c\u0438 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 PS\/2 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u044b\u0432\u043e\u0434 Data \u0438 Clock.\u00a0\u041f\u043e\u0441\u044b\u043b\u043a\u0430 \u0431\u0438\u0442\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0433\u043e \u0431\u0438\u0442\u0430, 8 \u0431\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u0438\u0442\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0442\u043e\u043f \u0431\u0438\u0442\u0430.\u00a0\u0412\u044b\u0432\u043e\u0434 Clock \u0441\u043b\u0443\u0436\u0438\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u043c.<\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0438\u0442\u043e\u0432 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 Clock, \u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u041a\u043e\u0433\u0434\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 Clock \u0438 Data \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044b \u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044e. \u0417\u0430\u0442\u0435\u043c \u0448\u0438\u043d\u0430 Data \u0438 Clock \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u043d\u043e\u043b\u044c, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u043c \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u0447\u0442\u0435\u043d\u0438\u044f 8 \u0431\u0438\u0442, \u0438\u0434\u0435\u0442 \u0431\u0438\u0442 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0442\u043e\u043f \u0431\u0438\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u0435\u043d \u0435\u0434\u0438\u043d\u0438\u0446\u0435.<\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442, \u0435\u0441\u043b\u0438 \u00a0PS2_CLK_in \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 52500000 \u0442\u0430\u043a\u0442\u043e\u0432 \u0442\u043e \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u0430. \u0422\u0430\u043a \u0436\u0435 \u0442\u0443\u0442 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0434\u044b \u043d\u0430\u0436\u0430\u0442\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043a\u043e\u0434\u043e\u043c \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u00ab\u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u0432\u0432\u0435\u0440\u0445\u00bb \u0442\u043e \u0432\u044b\u0445\u043e\u0434 up \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 1, \u0435\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u00ab\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043d\u0438\u0437\u00bb \u0442\u043e \u0432\u044b\u0445\u043e\u0434 down \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 1.  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;always @(negedge clock)  begin \tif(PS2_CLK_in == 1) \t\tcount_clk = count_clk + 1; \telse  \t\tcount_clk = 0; \tif(count_clk&gt;=52500000) \tbegin \t\tled_out = 0; \tend \telse \t\tled_out = bit; \t\tif(led_out == 8'b01110010) \t\tbegin \t\t\tdown = 1; \t\t\tup = 0; \t\tend \t\telse  \t\t\tif(led_out == 8'b01110101) \t\t\tbegin \t\t\t\tup = 1; \t\t\t\tdown = 0; \t\t\tend \t\t\telse \t\t\tbegin \t\t\t\tdown = 0; \t\t\t\tup = 0; \t\t\tend\t\t end &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 PS2_CLK_in \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043a \u043d\u0438\u0437\u043a\u043e\u043c\u0443, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 \u0432\u0445\u043e\u0434\u0430 PS2_DAT_in.  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;always @(negedge PS2_CLK_in) begin   \tif(s == 0) begin \t\tif(count&lt;=7) \t\tbegin \t\t\tbit = bit|(PS2_DAT_in&lt;&lt;count); \t\tend \t\tif(count == 9) \t\tbegin \t\t\t\ts = 1; \t\tend \t\telse  \t\tbegin \t\t\tcount = count + 1; \t\tend\t\t \tend \t\tif(s == 1) \t\t\tif(PS2_DAT_in == 0) \t\t\tbegin \t\t\t\ts = 0; \t\t\t\tcount = 0; \t\t\t\tbit = 0; \t\t\tend end endmodule &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u041a\u043e\u0434 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0440\u0435\u0434\u0435 ModelSim \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435:  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;initial begin   #0 clock_r=1;   #275 clock_r = 1; \/\/s   repeat( 22 )    begin     #25 clock_r=~clock_r;   end   #100 clock_r = 1;     repeat( 22 )    begin     #25 clock_r=~clock_r;   end   #300 clock_r = 1;    repeat( 22 )    begin     #25 clock_r=~clock_r;   end   #50 clock_r = 1;    repeat( 22 )    begin     #25 clock_r=~clock_r;   end end  initial begin     #250 PS2_CLK_r = 1; \/\/s     #50 PS2_CLK_r = 0; \/\/start     #50 PS2_CLK_r = 0; \/\/0     #50 PS2_CLK_r = 1; \/\/1     #50 PS2_CLK_r = 1; \/\/2     #50 PS2_CLK_r = 0; \/\/3     #50 PS2_CLK_r = 1; \/\/4     #50 PS2_CLK_r = 0; \/\/5     #50 PS2_CLK_r = 1; \/\/6     #50 PS2_CLK_r = 1; \/\/7     #50 PS2_CLK_r = 1; \/\/parity bit     #50 PS2_CLK_r = 0; \/\/stop     #50 PS2_CLK_r = 1; \/\/s     #50 PS2_CLK_r = 1; \/\/s          #50 PS2_CLK_r = 0; \/\/start     #50 PS2_CLK_r = 1; \/\/0     #50 PS2_CLK_r = 1; \/\/1     #50 PS2_CLK_r = 0; \/\/2     #50 PS2_CLK_r = 0; \/\/3     #50 PS2_CLK_r = 1; \/\/4     #50 PS2_CLK_r = 0; \/\/5     #50 PS2_CLK_r = 1; \/\/6     #50 PS2_CLK_r = 1; \/\/7     #50 PS2_CLK_r = 1; \/\/parity bit     #50 PS2_CLK_r = 0; \/\/stop     #50 PS2_CLK_r = 1; \/\/s         #250 PS2_CLK_r = 1; \/\/s      #50 PS2_CLK_r = 0; \/\/start     #50 PS2_CLK_r = 0; \/\/0     #50 PS2_CLK_r = 1; \/\/1     #50 PS2_CLK_r = 1; \/\/2     #50 PS2_CLK_r = 1; \/\/3     #50 PS2_CLK_r = 1; \/\/4     #50 PS2_CLK_r = 1; \/\/5     #50 PS2_CLK_r = 1; \/\/6     #50 PS2_CLK_r = 1; \/\/7     #50 PS2_CLK_r = 1; \/\/parity bit     #50 PS2_CLK_r = 0; \/\/stop     #50 PS2_CLK_r = 1; \/\/s      #50 PS2_CLK_r = 0; \/\/start     #50 PS2_CLK_r = 0; \/\/0     #50 PS2_CLK_r = 1; \/\/1     #50 PS2_CLK_r = 1; \/\/2     #50 PS2_CLK_r = 0; \/\/3     #50 PS2_CLK_r = 1; \/\/4     #50 PS2_CLK_r = 0; \/\/5     #50 PS2_CLK_r = 1; \/\/6     #50 PS2_CLK_r = 1; \/\/7     #50 PS2_CLK_r = 1; \/\/parity bit     #50 PS2_CLK_r = 0; \/\/stop     #50 PS2_CLK_r = 1; \/\/s     #50 PS2_CLK_r = 1; \/\/s     #50 PS2_CLK_r = 1; \/\/s end  assign clock = clock_r; assign PS2_DAT_in = PS2_CLK_r; &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u0414\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0430:<br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d73\/be9\/8ce\/d73be98ce3e9e4a3bf479ac9eb0c41b1.jpg\" rel=\"attachment wp-att-937\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d73\/be9\/8ce\/d73be98ce3e9e4a3bf479ac9eb0c41b1.jpg\" alt=\"6\" width=\"1258\" height=\"240\" \/><\/div>\n<p><\/a><br \/>  <strong>\u0420\u0430\u0431\u043e\u0442\u0430 VGA-\u0431\u043b\u043e\u043a\u0430.<\/strong><br \/>  &nbsp;<\/p>\n<p>  \u041f\u043b\u0430\u0442\u0430 DE0 \u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0430 VGA \u0432\u044b\u0445\u043e\u0434\u043e\u043c, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0426\u0410\u041f \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u043e\u0432 RGB \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043d\u0430 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430\u0445.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 VGA \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e VESA(http:\/\/tinyvga.com\/vga-timing) \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b.\u00a0 \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438. \u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0432\u0438\u0434\u043e\u0440\u0435\u0436\u0438\u043c 1440&#215;900 60Hz. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 106,5\u041c\u0433\u0446.<\/p>\n<p>  \u041d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043a\u0432\u0430\u0440\u0446 \u043d\u0430 50\u041c\u0413\u0446, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 PLL \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 50\u041c\u0413\u0446 \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c 106,5. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443.<br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0db\/9df\/0b7\/0db9df0b7ae023255ec65f14346a6ae6.jpg\" rel=\"attachment wp-att-938\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0db\/9df\/0b7\/0db9df0b7ae023255ec65f14346a6ae6.jpg\" alt=\"7\" width=\"855\" height=\"676\" \/><\/div>\n<p><\/a><br \/>  \u0418\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0431\u0435\u0440\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432:<br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/889\/a88\/62a\/889a8862a87a7e46a37d23438a4594e1.jpg\" rel=\"attachment wp-att-939\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/889\/a88\/62a\/889a8862a87a7e46a37d23438a4594e1.jpg\" alt=\"8\" width=\"622\" height=\"361\" \/><\/div>\n<p><\/a>  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;\tparameter h_front_porch = 80; \tparameter h_sync = 152; \tparameter h_back_porch = 232; \tparameter h_active_pixels = 1440; \t \tparameter v_front_porch = 3; \tparameter v_sync = 6; \tparameter v_back_porch = 25; \tparameter v_active_scanilines = 900;  &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0432\u0448\u0435\u043c \u043d\u0430 \u0432\u0445\u043e\u0434 pixel_clock, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0441\u0447\u0435\u0442\u0447\u0438\u043a pixel_count \u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 hsync.  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;wire w_hsync = (pixel_count &lt; h_sync); always @(posedge pixel_clock) begin \thsync &lt;= (pixel_count &lt; h_sync); \thvisible &lt;= (pixel_count &gt;= (h_sync+h_back_porch)) &amp;&amp; (pixel_count &lt; (h_sync+h_back_porch+h_active_pixels)); \t \tif(pixel_count &lt; (h_sync+h_back_porch+h_active_pixels+h_front_porch) ) begin \t\tpixel_count &lt;= pixel_count + 1'b1; \t\tchar_count &lt;= pixel_count; \tend\t \telse \tbegin \t\tpixel_count &lt;= 0; \tend end &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a pixel_count \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0441\u0442\u0440\u043e\u043a line_count \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u0435\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 vsync.  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;wire w_hsync_buf = w_hsync&amp;~hsync;  always @(posedge pixel_clock) begin \tif(w_hsync_buf)begin \t\tvsync &lt;= (line_count &lt; v_sync); \t\tvvisible &lt;= (line_count &gt;= (v_sync+v_back_porch)) &amp;&amp; (line_count &lt; (v_sync+v_back_porch+v_active_scanilines)); \t\t \t\tif(line_count &lt; (v_sync+v_back_porch+v_active_scanilines+v_front_porch) )begin \t\t\tline_count &lt;= line_count + 1'b1; \t\t\tline_count_out &lt;= line_count; \t\tend \t\telse \t\tbegin \t\t\tline_state &lt;= 0; \t\t\tline_count &lt;= 0; \t\tend \tend end  &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 pixel_count \u0438 line_count \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0442\u043e visible \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044f \u0431\u043b\u043e\u043a\u0443 game \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f:  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;always @* begin \tvisible &lt;= hvisible &amp; vvisible; end &lt;\/pre&gt; <\/code><\/pre>\n<p>  <strong>\u0420\u0430\u0431\u043e\u0442\u0430 game \u0431\u043b\u043e\u043a\u0430.<\/strong><br \/>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 pixel_state \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043e\u0442 vga-\u0431\u043b\u043e\u043a\u0430.\u00a0 \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b char_count \u0438 line_count \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u043d\u0430\u0441 \u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u0442\u043e\u0447\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043c\u044f\u0447\u0438\u043a\u0430 \u0438 \u0440\u0430\u043a\u0435\u0442\u043a\u0438 \u0437\u0430\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0437\u043e\u043d\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u043c.  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;always @(pixel_state) begin \t\tif((char_count&gt;=start_horz) &amp;&amp; (char_count&lt;=start_horz+50))begin if((line_count&gt;=i) &amp;&amp; (line_count&lt;=i+100)) begin \t\t\t\t\tVGA_BLUE&lt;=6'b111110; \t\t\tend \t\t\telse \t\t\t\tVGA_BLUE&lt;=6'b000000; \t\t\tend \t\telse \t\t\tVGA_BLUE&lt;=6'b000000; \tif((ball_x-char_count)*(ball_x-char_count)+(ball_y-line_count)*(ball_y-line_count)&lt;400) \t\tVGA_RED&lt;=5'b11110; \telse \t\tVGA_RED&lt;=5'b00000; end &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0440\u0430\u0441\u0447\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043c\u044f\u0447\u0438\u043a\u0430 \u0438 \u0440\u0430\u043a\u0435\u0442\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 clk. \u00a0\u0422\u0430\u043a \u0436\u0435 \u0435\u0441\u043b\u0438 \u043c\u044f\u0447\u0438\u043a \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441\u043e \u0441\u0442\u0435\u043d\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;always @(posedge clk) begin\t\t \tif(key_2==0) \tbegin \t\tif(i&lt;vert_sync+vert_back_porch+vert_addr_time) i=i+1; else i=0; end if(key_0==0) begin if(i&gt;vert_sync+vert_back_porch) \t\t\ti=i-1; \t\telse \t\t\ti=vert_sync+vert_back_porch+vert_addr_time; \tend \tif(flag == 2'b00) \tbegin \t\tball_x=ball_x-1; \t\tball_y=ball_y-1; \tend \tif(flag == 2'b01) \tbegin \t\tball_x=ball_x+1; \t\tball_y=ball_y+1; \tend \tif(flag == 2'b10) \tbegin \t\tball_x=ball_x-1; \t\tball_y=ball_y+1; \tend \tif(flag == 2'b11) \tbegin \t\tball_x=ball_x+1; \t\tball_y=ball_y-1; \tend \tif(ball_y&lt;=vert_sync+vert_back_porch) \tif(flag==2'b00) \t\tflag=2'b10; \telse \t\tflag=2'b01; \tif(ball_x&lt;=horz_sync+horz_back_porch) if(flag==2'b10) flag = 2'b01; else flag = 2'b11; if(ball_y&gt;=vert_sync+vert_back_porch+vert_addr_time) \t\tif(flag==2'b01) \t\t\tflag=2'b11; \t\telse \t\t\tflag=2'b00; \tif(ball_x&gt;=start_horz &amp;&amp; ball_y&gt;=i &amp;&amp; ball_y&lt;=i+100) if(flag==2'b11) flag=2'b00; else flag=2'b10; if(ball_x&gt;=horz_sync+horz_back_porch+horz_addr_time) \t\tbegin \t\t\tif(goal_2==9) \t\t\tbegin \t\t\t\tgoal_2&lt;=0; \t\t\t\tgoal&lt;=goal+1; \t\t\tend \t\t\telse  \t\t\tgoal_2&lt;=goal_2+1; \t\t\tif(flag==2'b11) \t\t\t\tflag&lt;=2'b00; \t\t\telse \t\t\t\tflag&lt;=2'b10; \t\tend end &lt;\/pre&gt; <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0448\u0430\u0440\u0438\u043a \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u0441 \u0440\u0430\u043a\u0435\u0442\u043a\u043e\u0439 \u043f\u0440\u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 \u043a \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0442\u043e \u0441\u0447\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0445 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u0445 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0442\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 goal, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f goal\u00a0 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 goal_2 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u044f\u0434\u0430.  <\/p>\n<pre><code class=\"vhdl\">&lt;pre&gt;always @(clk) begin  case(goal)  0: HEX_1 = 7'b1000000;  1: HEX_1 = 7'b1111001;  2: HEX_1 = 7'b0100100;  3: HEX_1 = 7'b0110000;  4: HEX_1 = 7'b0011001;  5: HEX_1 = 7'b0010010;  6: HEX_1 = 7'b0000010;  7: HEX_1 = 7'b1111000;  8: HEX_1 = 7'b0000000;  9: HEX_1 = 7'b0010000;  default: HEX_1 = 7'b1111111;  endcase end  always @(clk) begin  case(goal_2)  0: HEX_2 = 7'b1000000;  1: HEX_2 = 7'b1111001;  2: HEX_2 = 7'b0100100;  3: HEX_2 = 7'b0110000;  4: HEX_2 = 7'b0011001;  5: HEX_2 = 7'b0010010;  6: HEX_2 = 7'b0000010;  7: HEX_2 = 7'b1111000;  8: HEX_2 = 7'b0000000;  9: HEX_2 = 7'b0010000;  default: HEX_2 = 7'b1111111;  endcase  end &lt;\/pre&gt; <\/code><\/pre>\n<p>  <strong>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/strong><br \/>  \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0437\u0430\u043d\u044f\u0442\u044b\u043c \u0432 \u041f\u041b\u0418\u0421 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c:<br \/>  <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/78c\/6dd\/e26\/78c6dde267f62c24de9768614a69aa59.jpg\" rel=\"attachment wp-att-940\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/78c\/6dd\/e26\/78c6dde267f62c24de9768614a69aa59.jpg\" alt=\"9\" width=\"408\" height=\"368\" \/><\/div>\n<p><\/a><br \/>  \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e FPGA \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a VGA, \u0441 \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0443\u0434\u043d\u043e \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u041c\u041a. \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442:\u00a0<a href=\"https:\/\/github.com\/MIPSfpga\/pre-mipsfpga\/tree\/master\/pinpong\">https:\/\/github.com\/MIPSfpga\/pre-mipsfpga\/tree\/master\/pinpong<\/a>               <\/p>\n<div class=\"clear\"><\/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:\/\/habrahabr.ru\/post\/281549\/\"> https:\/\/habrahabr.ru\/post\/281549\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/eed\/61d\/fe6\/eed61dfe603ea04a9a9e56c433f31de2.jpg\" rel=\"attachment wp-att-932\"><\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/eed\/61d\/fe6\/eed61dfe603ea04a9a9e56c433f31de2.jpg\" alt=\"1\" width=\"604\" height=\"403\" \/><\/div>\n<p><\/a><br \/>  \u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440. \u00a0\u0418\u0437\u0443\u0447\u0435\u043d\u0438\u0435 FPGA \u044f \u043d\u0430\u0447\u0430\u043b \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 PS\/2 \u0438 VGA \u0431\u044b\u043b\u0430 \u0438\u0433\u0440\u0430 \u0432 \u041f\u0438\u043d-\u041f\u043e\u043d\u0433 \u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u041e\u0434\u043d\u0430 \u0438\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 DE0-CV \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043d\u0435 \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Silicon Russia, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u0430 (<a href=\"http:\/\/www.silicon-russia.com\/2015\/12\/11\/board-giveaway-for-mipsfpga\/\">http:\/\/www.silicon-russia.com\/2015\/12\/11\/board-giveaway-for-mipsfpga\/<\/a>).<\/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-278432","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/278432","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=278432"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/278432\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=278432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=278432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=278432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}