{"id":287082,"date":"2017-05-30T17:20:04","date_gmt":"2017-05-30T13:20:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=287082"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=287082","title":{"rendered":"\u041f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 MIPSfpga \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0427\u0430\u0441\u0442\u044c 1"},"content":{"rendered":"<p>MIPSfpga \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MIPS32 microAptiv \u0444\u0438\u0440\u043c\u044b Imagination, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043a\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u041a\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 FPGA \u043f\u043b\u0430\u0442\u0435. <\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Digilent cmodA7 \u043a\u0430\u043a \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MIPSfpga-plus \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0442\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/2e8\/3b4\/cc1\/2e83b4cc177149f6ba7f5afc2640e63f.JPG\"\/><\/p>\n<p>  \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c MIPSFPGA \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b \u0442\u0430\u043a\u0438\u0445 \u0444\u0438\u0440\u043c \u043a\u0430\u043a ALTERA \u0438 Xilinx, \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 Basys 3, Nexys4 ddr, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 (\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <a href=\"https:\/\/github.com\/MIPSfpga\/mipsfpga-plus\">github<\/a>). \u0422\u0430\u043a\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u0441\u0440\u0435\u0434\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 FPGA. \u0426\u0435\u043d\u0430 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f, \u0434\u0430 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u044f\u0434\u0440\u043e MIPSfpga \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 EJTAG \u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 Bus Blaster \u0446\u0435\u043d\u043e\u0439 \u043e\u043a\u043e\u043b\u043e 50$. \u0410\u0434\u0430\u043f\u0442\u0435\u0440 Bus Blaster \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u043c\u0443 \u043a\u0430\u0431\u0435\u043b\u044e USB 2.0 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0438\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b EJTAG, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u044f\u0434\u0440\u043e MIPSfpga \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043d\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u0438\u043c Bus Blaster \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 MIPSfpga \u0440\u044f\u0434\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439. \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 MIPSfpga, \u043d\u0430\u0437\u0432\u0430\u043d\u044b\u0439 MIPSfpga-plus \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0442\u0430\u043a\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p>   \u2014 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c USB-to-UART \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430 \u0446\u0435\u043d\u043e\u0439 \u0432 $ 5 FTDI \u0432\u043c\u0435\u0441\u0442\u043e $ 50 Bus Blaster, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u044c.<\/p>\n<p>   \u2014 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0430\u043a\u0442\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043d\u0430 \u043b\u0435\u0442\u0443 \u0441 50 \u0438\u043b\u0438 25 \u041c\u0413\u0446 \u0434\u043e 1 \u0413\u0446 (\u043e\u0434\u0438\u043d \u0446\u0438\u043a\u043b \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443) \u0434\u043b\u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u0432 \u043a\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0435\u0440\u0430.<\/p>\n<p>   \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c SPI.<\/p>\n<p>   \u2014 \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 1 \u041a\u0411 \u0432\u043c\u0435\u0441\u0442\u043e 32 \u041a\u0411 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c MIPSfpga \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u043b\u0430\u0442 FPGA \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f UART \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: <a href=\"https:\/\/habrahabr.ru\/post\/325168\/\">MIPSfpga \u0438 UART<\/a>.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Xilinx Vivado \u0441 MIPSfpga-plus<\/h3>\n<p>  \u041a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 MIPSFPGA-plus \u043d\u0430 \u043f\u043b\u0430\u0442\u0430\u0445 \u0444\u0438\u0440\u043c\u044b Xilinx, \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u0442\u0430\u043f. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 FPGA \u043f\u043b\u0430\u0442 \u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0449\u0438\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u043e\u0432 (\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 MIPS microAptiv UP). \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0442\u0443\u0442: <a href=\"https:\/\/habrahabr.ru\/post\/256223\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0441\u0442\u0430\u043d\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u043e\u0432<\/a>?, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b MIPSfpga+ \u0432 \u043d\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u0430\u0432\u0442\u043e\u0440\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u043d\u0435\u0439: <\/p>\n<p>  1. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 c \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 MIPSFPGA. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c: <\/p>\n<p>  \u2192 <a href=\"http:\/\/www.silicon-russia.com\/2015\/12\/11\/mipsfpga-download-instruction\/\">mipsfpga-download-instruction<\/a><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c MIPSfpga \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 usb-to-uart \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0432 \u043f\u043b\u0430\u0442\u0435 cmodA7, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0430\u0445 \u0444\u0438\u0440\u043c\u044b Xilinx \u0435\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 uart), \u0442\u043e \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f MIPSfpga-plus: <\/p>\n<p>  \u2192 <a href=\"https:\/\/github.com\/zhelnio\/mipsfpga-plus\">Mipsfpga-plus<\/a><\/p>\n<p>  2. \u0414\u043b\u044f \u043f\u043b\u0430\u0442 \u0444\u0438\u0440\u043c\u044b Xilinx \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 Vivado, \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:<\/p>\n<p>  \u2192 <a href=\"https:\/\/www.xilinx.com\/support\/download.html\">Download Vivado<\/a><\/p>\n<p>  3. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 Vivado: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/d22\/b17\/34f\/d22b1734fdc8428b8d040ae955fb8fd5.png\"\/><\/p>\n<p>  \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/111\/fe7\/060\/111fe70609144ea186d5102dbfff5dbc.png\"\/><\/p>\n<p>  \u0416\u043c\u0435\u043c \u0434\u0430\u043b\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/8ed\/3f9\/330\/8ed3f9330c214536aa20a7265e3f81eb.png\"\/><\/p>\n<p>  \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c RTL \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0436\u043c\u0435\u043c \u0434\u0430\u043b\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/74c\/86d\/881\/74c86d881d02468c80634234482a550d.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0430\u0439\u043b\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e MIPSfpga:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/f49\/860\/dde\/f49860ddedc8444c9c94313eab08a3bb.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/d35\/a44\/5b3\/d35a445b39a04551befe186ada813ac4.png\"\/><\/p>\n<p>  \u0410 \u0442\u0430\u043a \u0436\u0435 MIPSfpga-plus \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u0441\u043a\u0430\u0447\u0430\u043d\u043e\u043c \u0441 <a href=\"https:\/\/github.com\/zhelnio\/mipsfpga-plus\">mipsfpga-plus<\/a>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/04b\/e96\/2c9\/04be962c9db74aec97d2cee53cb76d72.png\"\/><\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0434\u0443\u043b\u044c uart \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u043d\u0435\u0435 \u0448\u043b\u0430 \u0440\u0435\u0447\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/663\/c57\/2e4\/663c572e410c40f79adc0d9084529c3e.png\"\/><\/p>\n<p>  \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 IP \u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0435\u0439\u043d\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0438\u0445 \u043f\u043e\u0437\u0436\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/e4f\/f4c\/107\/e4ff4c1072744a8f9daadd0a1fc4b2b9.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/77c\/ae9\/4d6\/77cae94d6b1943268efb3fb18c302776.png\"\/><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0443 \u043f\u043b\u0430\u0442\u0443.<\/p>\n<p>  \u041f\u043b\u0430\u0442\u0430 Digilent <a href=\"http:\/\/store.digilentinc.com\/cmod-a7-breadboardable-artix-7-fpga-module\/\">cmod A7<\/a> \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0435\u0435 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0446\u0435\u043d\u043e\u0439 \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0435\u043c \u0410\u0426\u041f \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c FPGA \u0441\u0445\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0443 \u043f\u043b\u0430\u0442\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u043d\u0430 cmodA7 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d \u0447\u0438\u043f xc7a35tcpg236-1:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/8a8\/cf0\/09c\/8a8cf009cfa94e52ba5e19b8b70576e1.png\"\/><\/p>\n<p>  \u0414\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Vivado, \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043b\u0443\u0447\u0448\u0435 \u0442\u0435\u043c \u0447\u0442\u043e, \u0432\u043e \u043f\u0435\u0440\u0432\u044b\u0445, \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u0443\u0434\u043e\u0431\u043d\u0435\u0439 \u0447\u0435\u043c \u0447\u0438\u043f\u0430, \u0432\u043e \u0432\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c block designer \u0432 Vivado, \u0442\u043e \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u044b, IP \u044f\u0434\u0440\u0430\u043c\u0438, \u0438 \u0442.\u0434. \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 <a href=\"https:\/\/github.com\/Digilent\/vivado-boards\">GitHub<\/a>, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0443\u0436\u043d\u043e \u0432 ~\\Vivado\\2015.1\\data\\boards\\ (\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f Vivado 2015.1 \u0438 \u043d\u043e\u0432\u0435\u0435). <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/c32\/796\/5ed\/c327965ed685422f826a15023aa7e3af.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/de6\/72c\/422\/de672c42288c4a01ba59cc6754d2f8f9.png\"\/><\/p>\n<p>  \u0412\u043e\u0442 \u043c\u044b \u0438 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 MIPSfpga-plus.<\/p>\n<h3>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043b\u0430\u0442\u044b Digilent CmodA7 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b Artix-7<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u0442\u043e \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u043f\u043b\u0430\u0442\u044b cmodA7 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0438\u043f \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Artix-7, \u0438\u043c\u0435\u0435\u0442 20800 LUT, 41600 FF, 225 KB \u0431\u043b\u043e\u0447\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u043c\u0435\u0435\u0442\u0441\u044f 48 \u043f\u0438\u043d\u043e\u0432, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 2 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438 \u0410\u0426\u041f, \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f usb-uart \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, Quad-SPI Flash, \u0438 JTAG, 2 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 5 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 3 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u0442\u043e RGB (<a href=\"https:\/\/reference.digilentinc.com\/_media\/cmod_a7\/cmod_a7_rm.pdf\">\u0434\u0430\u0442\u0430\u0448\u0438\u0442<\/a>).<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 MIPSfpga \u043d\u0430 \u043f\u043b\u0430\u0442\u0443 cmodA7, \u0441\u043b\u0435\u0434\u0443\u0435\u0442:<\/p>\n<p>  \u0428\u0430\u0433 1. \u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c-\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0432\u0432\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 MIPSfpga \u0438 \u0432\u0432\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u044b Basys3<br \/>  \u0428\u0430\u0433 2. \u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b MIPSfpga \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u043b\u0430\u0442\u0435 Basys3<br \/>  \u0428\u0430\u0433 3. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0432\u0432\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u044b \u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 FPGA.<\/p>\n<h4>\u0428\u0430\u0433 1. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 cmoda7.v<\/h4>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/0a1\/997\/da2\/0a1997da2f834f58bbe2305b35d213f8.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/768\/7ee\/233\/7687ee233e5643a5b7dabb53c1810b94.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/b97\/39a\/1a3\/b9739a1a31214f229bfc1c7423a771eb.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/55c\/7e6\/8f5\/55c7e68f5b5c4dbf9fc36a57a9ec19ea.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/793\/dfd\/fa5\/793dfdfa51b94b4ab1d9f4437237c69d.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/140\/1db\/0bf\/1401db0bf4a641b1bd7f0465d28ce8f8.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/458\/c06\/f62\/458c06f623c04c4f8e0d0effa904c2fa.png\"\/><\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c cmoda7.v \u0442\u043e\u043f \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/30c\/e94\/d37\/30ce94d37f2443b29155bf867c7b7f35.png\"\/><\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 cmoda7 \u043d\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (\u044d\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 MIPSfpga-plus), \u044d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443. \u0422\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434 EJTAG \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f BUS Blaster.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0448\u0438\u043d\u044b AHB_lite. <\/p>\n<pre><code>`include &quot;mfp_ahb_lite_matrix_config.vh&quot;<\/code><\/pre>\n<p>  \u0423\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u043d\u0430 (Advanced High-performance Bus, AHB) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445. \u0428\u0438\u043d\u0430 AHB \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. AHB-Lite \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 AHB \u0441 \u043e\u0434\u043d\u0438\u043c \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/427\/597\/ecd\/427597ecd9bc468f93c061592f3dbeb1.png\"\/><\/p>\n<p>  \u042d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u043d\u043e \u0432\u0435\u0434\u0443\u0449\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MIPSfpga, \u0438 \u0442\u0440\u0438 \u0432\u0435\u0434\u043e\u043c\u044b\u0445: RAM0, RAM1 \u0438 GPIO, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e) \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u041e\u0417\u0423 \u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043b\u0430\u0442\u044b. \u041c\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u043b\u043e\u043a\u043e\u043c GPIO \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439.<\/p>\n<p>  \u041f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<pre><code>module cmoda7               (                   input               i_clk,                   input               i_btn0,                    input               i_btn1,                   input               RsRx,                    output [ 6:0]       seg,                      output              dp,                   output [ 3:0]       an,                   output              led0_r,                   output              led0_g,                   output              led0_b,                    inout  [ 7:0]       JA                                   );<\/code><\/pre>\n<p>  i_clk \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043b\u0430\u0442\u044b \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (\u0434\u043b\u044f cmodA7 12 \u041c\u0413\u0446).<br \/>  i_btn0 \u2014 \u043a\u043d\u043e\u043f\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<br \/>  i_btn1 \u2014 n\/c.<br \/>  RsRx \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0440\u0438\u0435\u043c\u0430 \u043f\u043e uart.<br \/>  seg, dp, an, \u2014 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e 4 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430.<br \/>  led_r, led_g, led_b, \u2014 \u0432\u044b\u0432\u043e\u0434\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 RGB Led.<br \/>  JA \u2014 Pmod \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0438 reset (i_btn0) \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/5f6\/41c\/b73\/5f641cb730674e60832399772f7cb0b7.png\"\/><\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u043c\u043e\u0434\u0443\u043b\u044f cmoda7.v \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b MIPSfpga-plus (mipsfpga_sys) \u0438 \u0435\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0432\u0432\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u044b.<\/p>\n<pre><code>     wire clock;     wire reset = i_btn0;          wire display_clock;     wire [7:0] anodes;      wire [`MFP_N_BUTTONS           - 1:0] IO_Buttons;     wire [`MFP_7_SEGMENT_HEX_WIDTH - 1:0] IO_7_SegmentHEX;          assign IO_Buttons  = { { `MFP_N_BUTTONS  -  2 { 1'b0 } } , i_btn0, i_btn1 };  mfp_system mfp_system     (         .SI_ClkIn         ( clock            ),          .SI_Reset         ( reset            ),                       .HADDR            (                  ),         .HRDATA           (                  ),         .HWDATA           (                  ),         .HWRITE           (                  ),          .EJ_TRST_N_probe  (                  ),         .EJ_TDI           (                  ),         .EJ_TDO           (                  ),         .EJ_TMS           (                  ),         .EJ_TCK           (                  ),         .SI_ColdReset     (                  ),         .EJ_DINT          (   1'b0           ),          .IO_Switches      (                  ),         .IO_Buttons       ( IO_Buttons       ),         .IO_RedLEDs       (                  ),         .IO_GreenLEDs     (                  ),          .IO_7_SegmentHEX  ( IO_7_SegmentHEX  ),                  `ifdef MFP_DEMO_LIGHT_SENSOR         .SPI_CS           (   JA [0]         ),         .SPI_SCK          (   JA [3]         ),         .SPI_SDO          (   JA [2]         ),         `endif                  .UART_RX          ( RsRx             ),         .UART_TX          (                  )     );  `ifdef MFP_DEMO_LIGHT_SENSOR     assign JA [1] = 1'b0; `endif<\/code><\/pre>\n<p>  MFP_DEMO_LIGHT_SENSOR \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b mfp_system \u0431\u0443\u0434\u0435\u0442 32-\u0445 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u0430\u044f \u0448\u0438\u043d\u0430 IO_7_SegmentHEX \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0432 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u0430 4-\u0445 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0433\u043e 7 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0432 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u043c\u043e\u0434\u0443\u043b\u044c \u0435\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u00abmfp_multi_digit_display\u00bb:<\/p>\n<pre><code>mfp_multi_digit_display multi_digit_display     (         .clock          (   display_clock   ),         .resetn         ( ~ reset           ),         .number         (   IO_7_SegmentHEX ),          .seven_segments (   seg             ),         .dot            (   dp              ),         .anodes         (   an              )     );<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u0442\u043e\u0438\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u043e\u0431\u0449\u0438\u043c \u0430\u043d\u043e\u0434\u043e\u043c \u0438\u043b\u0438 \u043a\u0430\u0442\u043e\u0434\u043e\u043c.<br \/>  \u041a\u043e\u0434 \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0441 \u043e\u0431\u0449\u0438\u043c \u0430\u043d\u043e\u0434\u043e\u043c \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code>module mfp_single_digit_seven_segment_display (     input      [3:0] digit,     output reg [6:0] seven_segments );      always @*         case (digit)         'h0: seven_segments = 'b1000000;  \/\/ a b c d e f g         'h1: seven_segments = 'b1111001;         'h2: seven_segments = 'b0100100;  \/\/   --a--         'h3: seven_segments = 'b0110000;  \/\/  |     |         'h4: seven_segments = 'b0011001;  \/\/  f     b         'h5: seven_segments = 'b0010010;  \/\/  |     |         'h6: seven_segments = 'b0000010;  \/\/   --g--         'h7: seven_segments = 'b1111000;  \/\/  |     |         'h8: seven_segments = 'b0000000;  \/\/  e     c         'h9: seven_segments = 'b0011000;  \/\/  |     |         'ha: seven_segments = 'b0001000;  \/\/   --d--          'hb: seven_segments = 'b0000011;         'hc: seven_segments = 'b1000110;         'hd: seven_segments = 'b0100001;         'he: seven_segments = 'b0000110;         'hf: seven_segments = 'b0001110;         endcase  endmodule  \/\/--------------------------------------------------------------------  module mfp_multi_digit_display (     input             clock,     input             resetn,     input      [31:0] number,      output reg [ 6:0] seven_segments,     output reg        dot,     output reg [ 7:0] anodes );      function [6:0] bcd_to_seg (input [3:0] bcd);          case (bcd)         'h0: bcd_to_seg = 'b1000000;  \/\/ a b c d e f g         'h1: bcd_to_seg = 'b1111001;         'h2: bcd_to_seg = 'b0100100;  \/\/   --a--         'h3: bcd_to_seg = 'b0110000;  \/\/  |     |         'h4: bcd_to_seg = 'b0011001;  \/\/  f     b         'h5: bcd_to_seg = 'b0010010;  \/\/  |     |         'h6: bcd_to_seg = 'b0000010;  \/\/   --g--         'h7: bcd_to_seg = 'b1111000;  \/\/  |     |         'h8: bcd_to_seg = 'b0000000;  \/\/  e     c         'h9: bcd_to_seg = 'b0010000;  \/\/  |     |         'ha: bcd_to_seg = 'b0001000;  \/\/   --d--          'hb: bcd_to_seg = 'b0000011;         'hc: bcd_to_seg = 'b1000110;         'hd: bcd_to_seg = 'b0100001;         'he: bcd_to_seg = 'b0000110;         'hf: bcd_to_seg = 'b0001110;         endcase      endfunction      reg [2:0] i;      always @ (posedge clock or negedge resetn)     begin         if (! resetn)         begin             seven_segments &lt;=   bcd_to_seg (0);             dot            &lt;= 0;             anodes         &lt;= 8'b00000001;              i &lt;= 0;         end         else         begin             seven_segments &lt;=  bcd_to_seg (number [i * 4 +: 4]);             dot            &lt;= 0;             anodes         &lt;= (1 &lt;&lt; i);              i &lt;= i + 1;         end     end  endmodule <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 clock \u0432 seven_segments \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b bcd_to_seg, \u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u0440\u044f\u0434\u0430\u043c\u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0430\u043d\u043e\u0434\u0430\u0445 (\u043b\u0438\u0431\u043e \u043a\u0430\u0442\u043e\u0434\u0430\u0445).<\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0432 50 \u041c\u0413\u0446 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0430\u043b\u0435\u0435, \u0435\u0441\u043b\u0438 \u043c\u0438 \u0431\u0443\u0434\u0435\u043c \u0441 \u0442\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435 \u043d\u0430\u0448 \u0433\u043b\u0430\u0437 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f(\u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 7 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 763 \u0413\u0446). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b:<\/p>\n<pre><code>   mfp_clock_divider_50_MHz_to_763_Hz mfp_clock_divider_50_MHz_to_763_Hz         (clock, display_clock);<\/code><\/pre>\n<p>  \u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0441 50 M\u0413\u0446 \u0432 763 \u0413\u0446 \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 \u0444\u0430\u0439\u043b mfp_clock_dividers.v:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/47a\/1f7\/047\/47a1f70475464466a378db304aecbc0e.png\"\/><\/p>\n<pre><code>module mfp_clock_divider_50_MHz_to_763_Hz (     input  clki,     output clko );      mfp_clock_divider     # (.DIV_POW_SLOWEST (16))     mfp_clock_divider     (         .clki    ( clki ),         .sel_lo  ( 1'b1 ),         .sel_mid ( 1'b0 ),         .clko    ( clko )     );  endmodule <\/code><\/pre>\n<p>  \u041d\u0430 \u0432\u0445\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b reset \u0438 clock, RsRx, IO_Buttons. \u041d\u043e \u0443 \u043d\u0430\u0441 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0442\u043e\u043f \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b i_clk, \u0430 \u043d\u0435 clock. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 12 \u041c\u0413\u0446, \u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432 FPGA \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u0445 50 \u041c\u0413\u0446 \u0438 \u0432\u044b\u0448\u0435, \u0430 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Nexys 4 DDR \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u0442\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 100 \u041c\u0413\u0446). \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c IP \u044f\u0434\u0440\u0430 Clocking Wizard (PLL), \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u043e\u0435\u043c IP \u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/6a0\/ad4\/96a\/6a0ad496a26642bfb5d12f0ef33a5ce6.png\"\/><\/p>\n<p>  \u041e\u0442\u043a\u0440\u043e\u0435\u043c Clocking Wizard:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/8fb\/b63\/9cd\/8fbb639cdc0947d6b446e9c6e0bd21c1.png\"\/><\/p>\n<p>  \u0412\u043a\u043b\u0430\u0434\u043a\u0443 board \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0432\u0445\u043e\u0434\u044b \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 clocking options \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u0438\u0431\u043e MMCM \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u043e\u0442 10&#8230;800\u041c\u0413\u0446, \u0447\u0435\u043c PLL 19&#8230;800\u041c\u0413\u0446, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 cmoda7 \u0432\u0441\u0435\u0433\u043e 12 \u041c\u0413\u0446 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c MMCM, \u043d\u043e \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/535\/344\/de4\/535344de4828450fa83155aa686882e7.png\"\/><\/p>\n<p>  \u0412\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 output clocks \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 50 \u041c\u0413\u0446 (\u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 FPGA \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/535\/05b\/454\/53505b4547034a14bf669703eb2dea4c.png\"\/><\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0443\u0431\u0438\u0440\u0430\u0435\u043c reset \u0438 locked:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/134\/950\/2bd\/1349502bda0a43499a2e0aa667eb00f7.png\"\/><\/p>\n<p>  Port renaming, MMCM setting \u0438 Summary \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0436\u043c\u0435\u043c \u041e\u041a, \u041e\u041a, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c generate:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/8f9\/df2\/541\/8f9df2541c87486aa2dd66e0662f9d46.png\" alt=\"image\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0448\u0442\u0440\u0438\u0445\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f RGB Led, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u0445\u0435\u043c\u044b \u0432 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0443\u0441\u043a\u043b\u043e \u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f, \u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0447\u0442\u043e \u0431\u044b \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/510\/221\/04c\/51022104c240462a9af3a251eda355d9.png\" alt=\"image\"\/> <\/p>\n<pre><code>assign led0_r = 1'b1; assign led0_g = 1'b1; assign led0_b = 1'b1;<\/code><\/pre>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c:<\/p>\n<pre><code>endmodule<\/code><\/pre>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<h4>\u0428\u0430\u0433 2. \u0423\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b MIPSfpga \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u043b\u0430\u0442\u0435 cmoda7<\/h4>\n<p>  \u041f\u043b\u0430\u0442\u0430 cmoda7 \u0438\u043c\u0435\u0435\u0442 225 \u041a\u0431\u0430\u0439\u0442 \u0431\u043b\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 (128 \u041a\u0431\u0430\u0439\u0442 \u041e\u0417\u0423 \u0441\u0431\u0440\u043e\u0441\u0430 \u0438 256 \u041a\u0431\u0430\u0439\u0442 \u041e\u0417\u0423 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c) \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 cmoda7. \u0422\u0430\u043a \u043a\u0430\u043a, \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0432 32 \u041a\u0431\u0430\u0439\u0442, \u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043e\u0431\u044a\u0435\u043c\u043e\u043c 64 \u041a\u0431\u0430\u0439\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0431\u0449\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c (32 K\u0431\u0430\u0439\u0442 + 64 K\u0431\u0430\u0439\u0442 = 96 K\u0431\u0430\u0439\u0442) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043c\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043b\u0430\u0442\u044b cmoda7. \u041e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f 225-96 = 129 K\u0431\u0430\u0439\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0443\u0436\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b MIPSfpga, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u043d\u043e, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 Verilog \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u00abmfp_ahb_lite_matrix_config.vh\u00bb. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b mipsfpga_ahb_const.vh. \u0410\u0434\u0440\u0435\u0441\u0430 \u041e\u0417\u0423 \u0441\u0431\u0440\u043e\u0441\u0430 (\u0438\u043b\u0438 \u041e\u0417\u0423 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438) \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 13 \u0431\u0438\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0431\u044a\u0435\u043c \u041e\u0417\u0423 \u0441\u0431\u0440\u043e\u0441\u0430 \u0440\u0430\u0432\u0435\u043d 213 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 = 215 \u0431\u0430\u0439\u0442 = 32 K\u0431\u0430\u0439\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/f03\/111\/8af\/f031118af812419fab60f53e1c0e5ce9.png\"\/><\/p>\n<pre><code>`define H_RAM_RESET_ADDR_WIDTH  13 <\/code><\/pre>\n<p>  \u0410\u0434\u0440\u0435\u0441\u0430 \u041e\u0417\u0423 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 14 \u0431\u0438\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0431\u044a\u0435\u043c \u041e\u0417\u0423 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0440\u0430\u0432\u0435\u043d 214 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 = 216 \u0431\u0430\u0439\u0442 = 64 K\u0431\u0430\u0439\u0442.<\/p>\n<pre><code>`define H_RAM_ADDR_WIDTH  14<\/code><\/pre>\n<p>  <\/p>\n<h4>\u0428\u0430\u0433 3. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 cmoda7<\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u00abcmoda7.xdc\u00bb \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f-\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 FPGA \u043f\u043b\u0430\u0442\u044b cmoda7 (<a href=\"https:\/\/github.com\/Digilent\/CmodA7\/blob\/master\/Resources\/XDC\/CmodA7_Master.xdc\">xdc \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043b\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0434\u043b\u044f cmoda7<\/a>):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/f34\/9be\/af3\/f349beaf300140809f3dd3546f998a34.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/51a\/045\/60b\/51a04560b71d4252a00d0711efd0c357.png\"\/><\/p>\n<pre><code> ## Clock signal 12 MHz set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS33} [get_ports i_clk] create_clock -period 83.330 -name sys_clk_pin -waveform {0.000 41.660} -add [get_ports i_clk]  ## Buttons set_property -dict {PACKAGE_PIN A18 IOSTANDARD LVCMOS33} [get_ports i_btn0] set_property -dict {PACKAGE_PIN B18 IOSTANDARD LVCMOS33} [get_ports i_btn1]  ## LEDs set_property -dict {PACKAGE_PIN B17 IOSTANDARD LVCMOS33} [get_ports led0_b] set_property -dict {PACKAGE_PIN B16 IOSTANDARD LVCMOS33} [get_ports led0_g] set_property -dict {PACKAGE_PIN C17 IOSTANDARD LVCMOS33} [get_ports led0_r]  ## Pmod Header JA set_property -dict {PACKAGE_PIN G17 IOSTANDARD LVCMOS33} [get_ports {JA[0]}] set_property -dict {PACKAGE_PIN G19 IOSTANDARD LVCMOS33} [get_ports {JA[1]}] set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports {JA[2]}] set_property -dict {PACKAGE_PIN L18 IOSTANDARD LVCMOS33} [get_ports {JA[3]}] set_property -dict {PACKAGE_PIN H17 IOSTANDARD LVCMOS33} [get_ports {JA[4]}] set_property -dict {PACKAGE_PIN H19 IOSTANDARD LVCMOS33} [get_ports {JA[5]}] set_property -dict {PACKAGE_PIN J19 IOSTANDARD LVCMOS33} [get_ports {JA[6]}] set_property -dict {PACKAGE_PIN K18 IOSTANDARD LVCMOS33} [get_ports {JA[7]}]  ## GPIO Pins 1 - 6   7_segment_ind set_property -dict {PACKAGE_PIN M3 IOSTANDARD LVCMOS33} [get_ports {seg[1]}] set_property -dict {PACKAGE_PIN L3 IOSTANDARD LVCMOS33} [get_ports {an[1]} ] set_property -dict {PACKAGE_PIN A16 IOSTANDARD LVCMOS33}[get_ports {an[2]} ] set_property -dict {PACKAGE_PIN K3 IOSTANDARD LVCMOS33} [get_ports {seg[5]}] set_property -dict {PACKAGE_PIN C15 IOSTANDARD LVCMOS33}[get_ports {seg[0]}] set_property -dict {PACKAGE_PIN H1 IOSTANDARD LVCMOS33} [get_ports {an[3]} ]  ## GPIO Pins 43 - 48  7_segment_ind set_property -dict {PACKAGE_PIN U3 IOSTANDARD LVCMOS33} [get_ports {seg[3]}] set_property -dict {PACKAGE_PIN W6 IOSTANDARD LVCMOS33} [get_ports {seg[4]}] set_property -dict {PACKAGE_PIN U7 IOSTANDARD LVCMOS33} [get_ports dp    ] set_property -dict {PACKAGE_PIN W7 IOSTANDARD LVCMOS33} [get_ports {seg[2]}] set_property -dict {PACKAGE_PIN U8 IOSTANDARD LVCMOS33} [get_ports {seg[6]}] set_property -dict {PACKAGE_PIN V8 IOSTANDARD LVCMOS33} [get_ports {an[0]} ]  ## UART #set_property -dict { PACKAGE_PIN J18   IOSTANDARD LVCMOS33 } [get_ports { uart_rxd_out }]; #IO_L7N_T1_D10_14 Sch=uart_rxd_out set_property -dict {PACKAGE_PIN J17 IOSTANDARD LVCMOS33} [get_ports RsRx] <\/code><\/pre>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0432\u0445\u043e\u0434\u043e\u043c i_clk \u0438 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0430 FPGA L17, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 12 \u041c\u0413\u0446 \u0441 \u043f\u043b\u0430\u0442\u044b cmoda7.<\/p>\n<pre><code>set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS33} [get_ports i_clk] create_clock -period 83.330 -name sys_clk_pin -waveform {0.000 41.660} -add [get_ports i_clk]<\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0432 \u0444\u0430\u0439\u043b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<pre><code># I\/O virtual clock create_clock -period 83.330 -name &quot;clk_virt&quot;  # tsu\/th constraints set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports i_btn0] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports i_btn0] set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports i_btn1] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports i_btn1] set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports led0_b] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports led0_b] set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports led0_g] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports led0_g] set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports led0_r] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports led0_r]  ## PMOD ALS set_output_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports {JA[0]}] set_output_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports {JA[0]}] set_output_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports {JA[1]}] set_output_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports {JA[1]}] set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports {JA[2]}] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports {JA[2]}] set_output_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports {JA[3]}] set_output_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports {JA[3]}]  set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports {seg[*]}] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports {seg[*]}] set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports {an[*]}] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports {an[*]}] set_input_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports dp] set_input_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports dp] set_output_delay -clock &quot;clk_virt&quot; -min -add_delay 0.000 [get_ports RsRx] set_output_delay -clock &quot;clk_virt&quot; -max -add_delay 10.000 [get_ports RsRx]<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0422\u0435\u0441\u0442 MIPSfpga<\/h3>\n<p>  \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b\u0439 \u043d\u0430 \u043d\u0430\u0448\u0443 \u043f\u043b\u0430\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u00abmfp_ahb_lite_matrix_config.vh\u00bb \u0438 \u0440\u0430\u0441\u0441\u043a\u043e\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<pre><code>`define MFP_DEMO_LIGHT_SENSOR<\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/776\/24b\/52a\/77624b52aa6c45d0b44fa51ef392234d.png\"\/><\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Verilog \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 SPI \u043a \u0448\u0438\u043d\u0435 AHB Lite \u0434\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c \u043e\u0441\u0432\u0435\u0449\u0451\u043d\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/reference.digilentinc.com\/_media\/reference\/pmod\/pmodals\/pmodals_rm.pdf\">PmodALS<\/a> \u0444\u0438\u0440\u043c\u044b Digilent. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u043e\u0434\u0443\u043b\u044c SPI<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>module mfp_pmod_als_spi_receiver (     input             clock,     input             reset_n,     output            cs,     output            sck,     input             sdo,     output reg [15:0] value );      reg [21:0] cnt;     reg [15:0] shift;      always @ (posedge clock or negedge reset_n)     begin                if (! reset_n)             cnt &lt;= 22'b100;         else             cnt &lt;= cnt + 22'b1;     end      assign sck = ~ cnt [3];     assign cs  =   cnt [8];      wire sample_bit = ( cs == 1'b0 && cnt [3:0] == 4'b1111 );     wire value_done = ( cnt [21:0] == 22'b0 );      always @ (posedge clock or negedge reset_n)     begin                if (! reset_n)         begin                    shift &lt;= 16'h0000;             value &lt;= 16'h0000;         end         else if (sample_bit)         begin                    shift &lt;= (shift &lt;&lt; 1) | sdo;         end         else if (value_done)         begin                    value &lt;= shift;         end     end  endmodule <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/b48\/d4e\/8e1\/b48d4e8e1dfb409faa4272d6b989694a.png\"\/><\/p>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/b32\/b6d\/6b9\/b32b6d6b929d4e0080872802d725b32c.png\"\/><\/p>\n<p>  \u0414\u0430\u0442\u0447\u0438\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u043f\u043e\u0440\u0442\u0443 Pmod, \u0432\u044b\u0445\u043e\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u00abcmoda7.xdc\u00bb \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043a\u0430\u043a JA[7..0].<\/p>\n<pre><code>## Pmod Header JA set_property -dict {PACKAGE_PIN G17 IOSTANDARD LVCMOS33} [get_ports {JA[0]}] ... set_property -dict {PACKAGE_PIN K18 IOSTANDARD LVCMOS33} [get_ports {JA[7]}]<\/code><\/pre>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0443\u044e RTL \u0441\u0445\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 RTL Analisys \u2192 Schematic, \u0433\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 SPI \u00abmfp_pmod_als_spi_receiver\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u00abmfp_system\u00bb:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/661\/a01\/6fe\/661a016fe8fa47649b9ab8dcf1f07772.png\"\/><\/p>\n<p>  \u0427\u0442\u043e \u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 FPGA \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0443\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c bitstream \u0444\u0430\u0439\u043b \u00abcmoda7.bit\u00bb, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Program and Debug \u2192 Generate Bitstream \u0438 \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/0a1\/69b\/586\/0a169b5866da4cb895f6545350f270b7.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f bitstream \u0444\u0430\u0439\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043f\u043b\u0430\u0442\u0443, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Program and Debug \u2192 \u043e\u0442\u043a\u0440\u043e\u0435\u043c Open Hardware Manager \u2192 Open Target \u2192 Auto Connect \u2192 Program Device \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/ac4\/a44\/7e3\/ac4a447e38244b2b810968eb0fd8f875.png\"\/><\/p>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c<\/h4>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0431\u043b\u043e\u043a RAM1 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u043a \u0448\u0438\u043d\u0435 AHB Lite.<\/p>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MIPSfpga \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <a href=\"https:\/\/community.imgtec.com\/developers\/mips\/tools\/codescape-mips-sdk\/download-codescape-mips-sdk-essentials\/\">Codescape <\/a> \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Imagination. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 Codescape SDK \u0438 OpenOCD. Codescape \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C, \u0442\u0430\u043a \u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441\u043a\u0430\u0447\u0430\u043d\u043e\u0433\u043e mipsfpga plus \u2192 github \u2192 mipsfpga-plus \u2192 programs\u2192 01_light_sensor \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u00abmfp_memory_mapped_registers.h\u00bb.<\/p>\n<pre><code class=\"cpp\">#define MFP_LIGHT_SENSOR_ADDR   0xBF800014  \u0438  #define MFP_LIGHT_SENSOR        (* (volatile unsigned *) MFP_LIGHT_SENSOR_ADDR  ) <\/code><\/pre>\n<p>  \u0434\u0430\u043b\u0435\u0435 \u043e\u0442\u043a\u0440\u043e\u0435\u043c main.c \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a:<\/p>\n<pre><code class=\"cpp\">#include &quot;mfp_memory_mapped_registers.h&quot;  int main () {     int n = 0;      for (;;)     {         MFP_7_SEGMENT_HEX = MFP_LIGHT_SENSOR;     }      return 0; } <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">02_compile_and_link<\/code><\/pre>\n<p>  \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c motorola_s_record \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"cpp\">08_generate_motorola_s_record_file<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u0421\u041e\u041c \u043f\u043e\u0440\u0442\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d USB UART \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c:<\/p>\n<pre><code class=\"cpp\">11_check_which_com_port_is_used<\/code><\/pre>\n<p>  \u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b 12_upload_to_the_board_using_uart:<\/p>\n<pre><code class=\"cpp\">set a=7  mode com%a% baud=115200 parity=n data=8 stop=1 to=off xon=off odsr=off octs=off dtr=off rts=off idsr=off type program.rec &gt;\\.\\COM%a%<\/code><\/pre>\n<p>  \u0433\u0434\u0435 \u0430 \u2013 \u043d\u043e\u043c\u0435\u0440 \u0421\u041e\u041c \u043f\u043e\u0440\u0442\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d USB UART \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u0418 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443:<\/p>\n<pre><code class=\"cpp\">12_upload_to_the_board_using_uart<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u0438\u0434\u0435\u043e:<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/k3K7kR8y6ks?rel=0&amp;showinfo=1\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b (Verilog, VHDL), \u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0438, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b (\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430) \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u0438 \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0447\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0432\u0437\u044f\u0442\u044c \u0441\u0442\u0430\u0440\u0442 \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u043e\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043d\u0438\u0433\u0443 \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: <a href=\"https:\/\/habrahabr.ru\/post\/259505\/\">\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0443\u0447\u0435\u0431\u043d\u0438\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/a>.<\/p>\n<p>  \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 MIPSfpga \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b <a href=\"http:\/\/store.digilentinc.com\/pmod-kypd-16-button-keypad\/\">Digilent Pmod KYPD<\/a>, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0410\u0426\u041f, \u0438 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u043e\u0442 Nokia.<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/329808\/\"> https:\/\/habrahabr.ru\/post\/329808\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MIPSfpga \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MIPS32 microAptiv \u0444\u0438\u0440\u043c\u044b Imagination, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043a\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u041a\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 FPGA \u043f\u043b\u0430\u0442\u0435. <\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Digilent cmodA7 \u043a\u0430\u043a \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MIPSfpga-plus \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0442\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/2e8\/3b4\/cc1\/2e83b4cc177149f6ba7f5afc2640e63f.JPG\"\/><\/p>\n<p>  \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c MIPSFPGA \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b \u0442\u0430\u043a\u0438\u0445 \u0444\u0438\u0440\u043c \u043a\u0430\u043a ALTERA \u0438 Xilinx, \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 Basys 3, Nexys4 ddr, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 (\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <a href=\"https:\/\/github.com\/MIPSfpga\/mipsfpga-plus\">github<\/a>). \u0422\u0430\u043a\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u0441\u0440\u0435\u0434\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 FPGA. \u0426\u0435\u043d\u0430 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f, \u0434\u0430 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u044f\u0434\u0440\u043e MIPSfpga \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 EJTAG \u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 Bus Blaster \u0446\u0435\u043d\u043e\u0439 \u043e\u043a\u043e\u043b\u043e 50$. \u0410\u0434\u0430\u043f\u0442\u0435\u0440 Bus Blaster \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u043c\u0443 \u043a\u0430\u0431\u0435\u043b\u044e USB 2.0 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0438\u0445 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b EJTAG, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u044f\u0434\u0440\u043e MIPSfpga \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043d\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u0438\u043c Bus Blaster \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 MIPSfpga \u0440\u044f\u0434\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439. \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 MIPSfpga, \u043d\u0430\u0437\u0432\u0430\u043d\u044b\u0439 MIPSfpga-plus \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0442\u0430\u043a\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p>   \u2014 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c USB-to-UART \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430 \u0446\u0435\u043d\u043e\u0439 \u0432 $ 5 FTDI \u0432\u043c\u0435\u0441\u0442\u043e $ 50 Bus Blaster, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u044c.<\/p>\n<p>   \u2014 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0430\u043a\u0442\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043d\u0430 \u043b\u0435\u0442\u0443 \u0441 50 \u0438\u043b\u0438 25 \u041c\u0413\u0446 \u0434\u043e 1 \u0413\u0446 (\u043e\u0434\u0438\u043d \u0446\u0438\u043a\u043b \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443) \u0434\u043b\u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u0432 \u043a\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0435\u0440\u0430.<\/p>\n<p>   \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c SPI.<\/p>\n<p>   \u2014 \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 1 \u041a\u0411 \u0432\u043c\u0435\u0441\u0442\u043e 32 \u041a\u0411 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c MIPSfpga \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u043b\u0430\u0442 FPGA \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f UART \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: <a href=\"https:\/\/habrahabr.ru\/post\/325168\/\">MIPSfpga \u0438 UART<\/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-287082","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287082","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=287082"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287082\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=287082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=287082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=287082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}