FPGA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдмрдврд╝рдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ

рдкрд░рд┐рдЪрдп


рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ OV7670 рдХреИрдорд░реЗ рд╕реЗ рдЫрд╡рд┐ рдлреНрд░реЗрдо рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдлрд┐рд▓реНрдЯрд░ рдФрд░ рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдкрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред рд╣рдорд╛рд░рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдПрдХ рдЪрдХреНрд░рд╡рд╛рдд IV FPGA рдмреЛрд░реНрдб рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдЧрдгрдирд╛рдУрдВ рдХреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред


рд╣рдордиреЗ ZEOWAA FPGA рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдмреЛрд░реНрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ Cyclone IV (EP4CE6E22C8N) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдХреНрд╡рд╛рд░реНрдЯрд╕ рдкреНрд░рд╛рдЗрдо рд▓рд╛рдЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрд░рд┐рд▓реЙрдЧ рдПрдЪрдбреАрдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдЕрдкрдиреЗ рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░, рдФрд░ GPIO (рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкрд┐рди) рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реАрдЬреАрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред


ZEOWAA FPGA рд╡рд┐рдХрд╛рд╕ рдмреЛрд░реНрдб


рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░


рд╣рдорд╛рд░реЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ 3 рдореБрдЦреНрдп рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


  1. рдХреИрдорд░реЗ рд╕реЗ рдбреЗрдЯрд╛ рдкрд┐рдХреНрд╕рд▓ рдкрдврд╝рдирд╛ред
  2. рд╣рдорд╛рд░реЗ рдПрдЬ рдбрд┐рдЯреЗрдХреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо (рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдХрдирд╡рд░реНрдЯрд░ рдФрд░ рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред
  3. рдПрдХ рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░рдХреЗ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдореЗрдореЛрд░реА рд╕реНрдЯреЛрд░реЗрдЬ рд╣реИред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рджреЛ рдмрдлрд╝рд░реНрд╕ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреИрдорд░реЗ рд╕реЗ рдкрд┐рдХреНрд╕реЗрд▓ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЗрд╕реЗ рд╕реАрдзреЗ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдореЗрдореЛрд░реА рдмрдлрд░ рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдордиреЗ рдЗрд╕реЗ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдлрд┐рд░ рд╣рдордиреЗ рдЗрд╕реЗ рдмрдлрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 8-рдмрд┐рдЯ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдкрд┐рдХреНрд╕рд▓ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рд╕реЗ рд░рдВрдЧреАрди рдкрд┐рдХреНрд╕рд▓ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдореЗрдореЛрд░реА рд▓рдЧрддреА рд╣реИ рдЬреЛ рдХрд┐ 16-рдмрд┐рдЯреНрд╕ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдмрдлрд░ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ рд╕реЛрдмрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдореЙрдирд┐рдЯрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред


рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╣реИрдВ:


рдХреИрдорд░рд╛

рд╣рдордиреЗ OV7670 рдХреИрдорд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд╕реНрддреЗ рдХреИрдорд░рд╛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдорд┐рд▓рд╛ред рд╕рд╛рде рд╣реА, рдпрд╣ рдХреИрдорд░рд╛ 3.3V рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЫрд╡рд┐ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП I2c рдпрд╛ SPI рдЬреИрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╕рдВрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ SCCB рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд░рдВрдЧ рдкреНрд░рд╛рд░реВрдк (RGB565, RGB555, YUV, YCbCr 4: 2: 2), рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди (VGA, QVGA, QQVGA, CIF, QCIF) рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрдорд░реЗ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП I2c рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИред рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред


OV7670 рдХреИрдорд░рд╛ рдореЙрдбреНрдпреВрд▓


рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдлрд╝реНрд░реЗрдо рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджрд░ рдкрд░ рдмрджрд▓реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдлреНрд░реЗрдо рдПрдХ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рд╕реНрддрдВрдн рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рд░рдВрдЧ рдорд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдордиреЗ рдХреИрдорд░реЗ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдлреНрд░реЗрдо рдХрд╛ рдЖрдХрд╛рд░ рд╡реАрдЬреАрдП рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди 640 x 480 (0.3 рдореЗрдЧрд╛рдкрд┐рдХреНрд╕реЗрд▓) рд╣реИ, рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рд░рдВрдЧ рдкреНрд░рд╛рд░реВрдк RGB565 (рд▓рд╛рд▓ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП 5 рдмрд┐рдЯреНрд╕, рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП 6 рдмрд┐рдЯреНрд╕, рдЧреНрд░реАрди рдХреЗ рд▓рд┐рдП 5 рдмрд┐рдЯреНрд╕) ) рдФрд░ рдлреНрд░реЗрдо рдмрджрд▓рдиреЗ рдХреА рджрд░ 30 рдПрдлрдкреАрдПрд╕ рд╣реИред


рдиреАрдЪреЗ, GPIO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ FPGA рдХреЗ рд▓рд┐рдП рдХреИрдорд░реЗ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдмреЛрд░реНрдб рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ:


рдХреИрдорд░реЗ рдореЗрдВ рдкрд┐рди рдХрд░реЗрдВFPGA рдореЗрдВ рдкрд┐рди рдХрд░реЗрдВрд╡рд┐рд╡рд░рдгрдХреИрдорд░реЗ рдореЗрдВ рдкрд┐рди рдХрд░реЗрдВFPGA рдореЗрдВ рдкрд┐рди рдХрд░реЗрдВрд╡рд┐рд╡рд░рдг
3.33.3рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ (+)GNDGNDрднреВрдорд┐ рдЖрдкреВрд░реНрддрд┐ рд╕реНрддрд░ (-)
SDIOCGNDSCCB рдШрдбрд╝реАSDIODGNDSCCB рдбреЗрдЯрд╛
VSYNCP31рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рддреБрд▓реНрдпрдХрд╛рд▓рдиHREFP55рдХреНрд╖реИрддрд┐рдЬ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди
PCLKp23рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдШрдбрд╝реАXCLKP54рдЗрдирдкреБрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓реЙрдХ (25 MHz)
D7P468 рдмрд┐рдЯ рдХрд╛ рдбреЗрдЯрд╛D6P447 рдмрд┐рдЯ рдХрд╛ рдбреЗрдЯрд╛
D5P436 рдмрд┐рдЯ рдХрд╛ рдбреЗрдЯрд╛D4P425 рдмрд┐рдЯ рдбреЗрдЯрд╛
рдбреА 3P394 рдмрд┐рдЯ рдбреЗрдЯрд╛рдбреА 2P383 рдмрд┐рдЯ рдбреЗрдЯрд╛
рдбреА 1P342 рдмрд┐рдЯ рдбреЗрдЯрд╛D0P331 рдмрд┐рдЯ рдбреЗрдЯрд╛
RESET (рд╕рдХреНрд░рд┐рдп рдХрдо)3.3рдкрд┐рди рд░реАрд╕реЗрдЯ рдХрд░реЗрдВPWDNGNDрдкрд╛рд╡рд░ рдбрд╛рдЙрди рдкрд┐рди

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП SCCB рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд┐рд╕реА рднреА рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд░реЛрдВ рдХреЛ рдЬрдореАрди рдкрд░ рд░рдЦ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП 25 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдШрдбрд╝реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдлреЗрдЬ-рд▓реЙрдХреНрдб рд▓реВрдк (рдкреАрдПрд▓рдПрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдмреЛрд░реНрдб рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ 50 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдШрдбрд╝реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдж рд▓реВрдк рдЖрд╡реГрддреНрддрд┐-рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдкреАрдПрд▓рдПрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХреНрд╡рд╛рд░реНрдЯрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдЕрдВрджрд░ рдЖрдВрддрд░рд┐рдХ рдЖрдИрдкреА рдХреИрдЯрд▓реЙрдЧ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред


рдпрд╣ рдХреИрдорд░рд╛ рдлреНрд░реЗрдо рдХреА рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди (VSYNC) рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлреНрд░реЗрдо рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖реИрддрд┐рдЬ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди (HREF) рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреИрдорд░рд╛ рдмрд┐рдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 8 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдбреЗрдЯрд╛ (D0-D7) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреИрдорд░рд╛ 16-рдмрд┐рдЯ RGB рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди рдХреЛ 2 (8-рдмрд┐рдЯ) рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднреЗрдЬрддрд╛ рд╣реИред


OV7670 рдХреИрдорд░рд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдбреЗрдЯрд╛ рдкрддреНрд░рдХ рд╕реЗ рдиреАрдЪреЗ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред


рд╡реАрдЬреАрдП рдлреНрд░реЗрдо рдЯрд╛рдЗрдорд┐рдВрдЧ


рдХреНрд╖реИрддрд┐рдЬ рд╕рдордп


RGB565 рдЖрдЙрдЯрдкреБрдЯ рдЯрд╛рдЗрдорд┐рдВрдЧ рдЖрд░реЗрдЦ


рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдХрдирд╡рд░реНрдЯрд░

рдЕрдкрдиреА рдореВрд▓ рд░рдВрдЧреАрди рдЫрд╡рд┐ рд╕реЗ рдПрдХ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рдХрд╛рд░рдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЫрд╡рд┐ рд╡рд┐рдкрд░реАрдд, рддреАрдХреНрд╖реНрдгрддрд╛, рдЫрд╛рдпрд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдЦреЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЫрд╡рд┐ рдХреЛ рд░рдВрдЧ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЪрдордХ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд░рдВрдЧреАрди рдЫрд╡рд┐ рдХреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд░реИрдЦрд┐рдХ рдФрд░ рдЧреИрд░-рд░реИрдЦрд┐рдХ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рд╡рд░реНрдгрдХреНрд░рдореАрдп (рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд▓реНрдпреВрдорд┐рдиреЗрдВрд╕-рд╕рдВрд░рдХреНрд╖рдг) рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдореАрдХрд░рдг рдореЗрдВ рджрд░реНрд╢рд╛рдП рдЧрдП рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:



рдЕрднрд┐рдХрд▓рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддреЗрдЬрд╝ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рд╕рдореАрдХрд░рдг рдХреЛ рдирд┐рдореНрди рддрдХ рдШрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреИрдорд░реЗ рд╕реЗ (565 RGB) рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рддреБрд░рдВрдд рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд╕реВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ 8-рдмрд┐рдЯ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдкрд┐рдХреНрд╕реЗрд▓ рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Grayscaled рдЫрд╡рд┐ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓реА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рддреЗрдЬрд╝ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд▓рдЧрднрдЧ рд▓рдШреБрдЧрдгрдХреАрдп рд╣реИ рдФрд░ FPGA рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪрдХрд░ рдЗрд╕реЗ рдФрд░ рднреА рддреЗрдЬрд╝ рдмрдирд╛ рд╕рдХрддреА рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХрд┐рдирд╛рд░реЗ рдХреА рдкрд╣рдЪрд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдЫрд╡рд┐ рддреИрдпрд╛рд░ рд╣реИред


рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдореЗрдореЛрд░реА (рдмрдлрд░)

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдмрдлрд╝рд░ рд╣реИрдВ, рдкрд╣рд▓реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдХреНрд╕рд▓реНрд╕ рдХреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдФрд░ рдЙрд╕рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (8-рдмрд┐рдЯ x 150 x 150) рдФрд░ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдереНрд░реЗрд╢реЛрд▓реНрдб рдХреЗ рд▓рд┐рдП рдкрд┐рдХреНрд╕рд▓ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдФрд░ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ (1-рдмрд┐рдЯ x 150 x 150)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, 150 x 150 рдмрдлрд╝рд░реНрд╕ рдХреИрдорд░реЗ рд╕реЗ рдкреВрд░реА рдЫрд╡рд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред


рд╣рдордиреЗ рдЪрдХреНрд░рд╡рд╛рдд IV рдореЗрдореЛрд░реА рдХреА рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг рдЕрдкрдиреЗ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдЖрдХрд╛рд░ 150 x 150 рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ 276.480 Kbit рд╣реИ рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рджреЛ рдмрдлрд╝рд░ 202.500 Kbit (150 x 150 x 9) рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдореВрд▓ рдореЗрдореЛрд░реА рд╕реЗ 73.2% рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЪрдХреНрд░рд╡рд╛рдд IV рдФрд░ рд╢реЗрд╖ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдЕрдкрдиреЗ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ (170 x 170) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдореЗрдореЛрд░реА рд╕реЗ 94.07% рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред


рд╣рдорд╛рд░реЗ рдмрдлрд╝рд░ рдЯреНрд░реВ рдбреНрдпреВрд▓-рдкреЛрд░реНрдЯ рд░реИрдо рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдШрдбрд╝реА рдЪрдХреНрд░реЛрдВ рдореЗрдВ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ, рд╣рдордиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡рд╛рд░реНрдЯрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЕрдВрджрд░ рдЖрдИрдкреА рдХреИрдЯрд▓реЙрдЧ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рджреЛрдиреЛрдВ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ред


рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░

рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдмрдврд╝рдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЬреЛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрд░рд┐рдпрд╛ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдСрдкрд░реЗрдЯрд░ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдмреАрдЪ рд▓реНрдпреВрдорд┐рдиреЗрдиреНрд╕ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рд╕реАрдзрд╛ рдФрд░ рдХреБрд╢рд▓ рддрд░реАрдХрд╛ рд╣реИ, рд╣рдордиреЗ рд╕реЛрдмреЗрд▓ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐рдирд╛рд░реЗ рдХреА рддрд╛рдХрдд рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдиреЗ рдЧрдП рдкрд┐рдХреНрд╕реЗрд▓ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд 3x3 рдХрд░реНрдиреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдврд╛рд▓ рдХрд╛ рдкрд░рд┐рдорд╛рдг рд╣реИ:


рдЬреА рд╕рдореАрдХрд░рдг


рдЬрд╣рд╛рдВ Gx рдФрд░ Gy рдХреЛ рдХрдирд╡рд▓реНрд╢рди рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


Gx рдФрд░ Gy рдХрдиреНрд╡реЗрдВрд╢рди рдореИрдЯреНрд░рд┐рд╕реЗрд╕


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рд╕реНрдХ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдХрд░реАрдм рдкрд┐рдХреНрд╕рд▓ рдХреЛ рдЕрдзрд┐рдХ рд╡рдЬрди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреА рдПрдХреНрд╕ рдФрд░ рдЬреА рд╡рд╛рдИ рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:


Gx рдФрд░ gy рд╕рдореАрдХрд░рдг


рдЬрд╣рд╛рдБ p i рдирд┐рдореНрди рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИ, рдФрд░ p i рдХрд╛ рдорд╛рди 8-рдмрд┐рдЯ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдорд╛рди рд╣реИ:


рдкрд┐рдХреНрд╕реЗрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕


рдкреВрд░реНрдг рдореВрд▓реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдврд╛рд▓ рдкрд░рд┐рдорд╛рдг рдХреЛ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░рдирд╛ рдПрдХ рдЖрдо рдмрд╛рдд рд╣реИ:


рд╕рдореАрдХрд░рдг


рдЗрд╕ рдЕрдиреБрдорд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рд╣реИ рдХрд┐ рд╕рдордп рдФрд░ рд╕реНрдореГрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╣рдорд╛рд░реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреНрдпрд╛ рд╣реИред


рдпрд╣рд╛рдБ Sobel рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдмреНрд▓реЙрдХ рдЖрд░реЗрдЦ рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ 9 (8-рдмрд┐рдЯ) рдкрд┐рдХреНрд╕реЗрд▓ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдореВрд▓реНрдп (8 рдмрд┐рдЯ) рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ:


рд╕реЛрдмреЗрд▓ рдХреЛрд░


рдФрд░ рдпрд╣рд╛рдБ Sobel рдСрдкрд░реЗрдЯрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рдмреНрд▓реЙрдХ рдЖрд░реЗрдЦ рд╣реИред


рд╡рд┐рд╕реНрддреГрдд рд╕реЛрдмреЗрд▓ рдХреЛрд░


Vga рдореЙрдирд┐рдЯрд░

рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд╛рд╕ рдмреЛрд░реНрдб рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реАрдЬреАрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдкрд░ рдХреЗрд╡рд▓ 8 рд░рдВрдЧреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд▓рд╛рд▓ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 3-рдмрд┐рдЯреНрд╕ рд╣реИрдВред рдЗрд╕рдиреЗ рд╣рдорд╛рд░реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдХрдард┐рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдХреИрдорд░реЗ рд╕реЗ рдЫрд╡рд┐ рдХреЛ рд╕реАрдзреЗ рдореЙрдирд┐рдЯрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ 1-рдмрд┐рдЯ рдорд╛рди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛред


рд╡реАрдЬреАрдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреИрдорд░реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдКрдкрд░реА-рдмрд╛рдПрдБ рдХреЛрдиреЗ рд╕реЗ рдирд┐рдЪрд▓реЗ-рджрд╛рдПрдВ рдХреЛрдиреЗ рддрдХ рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкрд┐рдХреНрд╕реЗрд▓ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЙрди рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдХреНрд╖реИрддрд┐рдЬ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрд▓рдо рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛрдиреЛрдВ рд╕рд┐рдЧреНрдирд▓ рдлреНрд░рдВрдЯ рдкреЛрд░реНрдЪ, рд╕рд┐рдВрдХ рдкрд▓реНрд╕ рдФрд░ рдмреИрдХ рдкреЛрд░реНрдЪ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдкреБрд░рд╛рдиреА рдкрдВрдХреНрддрд┐ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рдирдИ рдкрдВрдХреНрддрд┐ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдФрд░ рд╡рд░реНрдЯрд┐рдХрд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдлреНрд░реЗрдо рдХреЛ рдирдП рдлреНрд░реЗрдо рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред


рд╡реАрдЬреАрдП рд╕рд┐рдЧреНрдирд▓ рдЯрд╛рдЗрдорд┐рдВрдЧ рдЖрд░реЗрдЦ


рд╣рдордиреЗ рдорд╛рдирдХ рд╡реАрдЬреАрдП рд╕рд┐рдЧреНрдирд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (640 x 480 @ 60 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рднреА рдорд╛рдирдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ ред


рдкрд░реАрдХреНрд╖рдг


рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдерд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдХреБрдЫ рдкрд┐рдХреНрд╕реЗрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рдХреИрдорд░реЗ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдФрд░ рд╕рдВрдХреЗрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреАред рдлрд┐рд░, рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдУрдкрдирд╕реАрд╡реА рдХреА рдорджрдж рд╕реЗ, рд╣рдо рдЕрдкрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рд╕реЛрдмреЗрд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рд╕реЛрдмрд▓ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдереНрд░реЙрд▓реНрдбрд┐рдВрдЧ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдкрд░ рдХрдИ рд╕реНрдерд┐рд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдмрдлрд╝рд░реНрд╕ рдФрд░ рд╡реАрдЬреАрдП рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджрд╣рд▓реАрдЬ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ, рдЫрд╡рд┐ рдХреА рд╕рдЯреАрдХрддрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИред


рдЕрдЬрдЧрд░ рдХреЛрдб рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:


# This code is made to test the accuracy of our algorithm on FPGA import cv2 #import opencv library f = open("sample.txt",'w') # Open file to write on it the static image initialization lines img = cv2.imread('us.jpg') # Read the image which has our faces and its size 150x150 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #convert to grayscale sobelx = cv2.Sobel(gray,cv2.CV_64F,1,0,ksize=3) #x-axis sobel operator sobely = cv2.Sobel(gray,cv2.CV_64F,0,1,ksize=3) #y-axis sobel operator abs_grad_x = cv2.convertScaleAbs(sobelx) abs_grad_y = cv2.convertScaleAbs(sobely) grad = abs_grad_x + abs_grad_y for i in range(0,150): for x in range(0,150): #read the pixels of the grayscaled image and Store them into file with specific format to initialize the buffer in FPGA code f.write("data_a[{:d}]<=8'd{:d};\n".format(i*150+x,gray[i][x])) #apply threshold to be exactly like the code on FPGA if(grad[i][x] < 100): grad[i][x] = 255 else: grad[i][x] = 0 cv2.imshow("rgb", img) #Show the real img cv2.imshow("gray",gray) #Show the grayscale img cv2.imshow("sobel",grad)#Show the result img cv2.waitKey(0) #Stop the img to see it 

рдкрд░рд┐рдгрд╛рдо


рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд┐рд╕реНрдЯрдо рдорд┐рд▓рд╛ рдЬреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдлрд┐рд▓реНрдЯрд░ рдФрд░ рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж 150x150 рдХреА рдЫрд╡рд┐ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдкреНрд░рдгрд╛рд▓реА 30 рдПрдлрдкреАрдПрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдХреИрдорд░рд╛ 25MHz рдХреА рдШрдбрд╝реА рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд┐рдирд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕реАрдорд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реАрдорд╛ рдореВрд▓реНрдп рд╡рд┐рд╡рд░рдг рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдореЗрдВ рд╢реЛрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдпрд╣рд╛рдБ FPGA рдкрд░ Sobel рдСрдкрд░реЗрдЯрд░ рдФрд░ OpenCV sobel рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмреАрдЪ рддреБрд▓рдирд╛ рд╣реИ:


рддреБрд▓рдирд╛


рдиреАрдЪреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдПрдХ рдЖрдХрд░реНрд╖рдХ рд╡реАрдбрд┐рдпреЛ рд╣реИ:


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡реАрдбрд┐рдпреЛ


рдпрд╣рд╛рдБ Github рдкрд░ рднрдВрдбрд╛рд░ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИрдВред


рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реБрдзрд╛рд░


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо FPGA рдЪрдХреНрд░рд╡рд╛рдд IV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЗрд╕рдХреА рдореЗрдореЛрд░реА рдХреНрд╖рдорддрд╛ рдФрд░ рд▓реЙрдЬрд┐рдХ рдЧреЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдмрд╛рд╣рд░реА рдореЗрдореЛрд░реА рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдо рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рджреВрд╕рд░реЗ рдмреЛрд░реНрдб рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рдХреИрдорд░реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐ рд╕реЗ рд╕рднреА рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХреЗрдВред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реЛрдмреЗрд▓ рдСрдкрд░реЗрдЯрд░ рддреЗрдЬ рдФрд░ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╢реЛрд░ рдХреЗ рдкреНрд░рддрд┐ рдХрд╛рдлреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред рдЙрддреНрдкрд╛рджрд┐рдд рд╢реЛрд░ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдиреЙрди-рд▓реАрдирд┐рдпрд░ рдореАрдбрд┐рдпрди рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рддрд░рд╣ рдПрдХ рд╢реЛрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрд╕рд░рд╛ рдмрдлрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдереАред рдпрд╣ рддреЗрдЬ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд┐рдХрдиреА рдЫрд╡рд┐ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред


рддрджрдиреБрд╕рд╛рд░, рд╣рдордиреЗ FPGA рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд VGA рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреЛ рдХреЗрд╡рд▓ 3-рдмрд┐рдЯреНрд╕ рдЫрд╡рд┐ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо grayscaled рдЫрд╡рд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 8 рдмрд┐рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдирддреАрдЬрддрди, рдПрдХ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдпрд╛ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЫрд╡рд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ред


рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рдо рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдФрд░ рд╕рдордЭ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ, рдЬреИрд╕реЗ рдХрд┐ рд░рд╛рдЬреНрдп-рдорд╢реАрди, рдХрдореНрдкреНрдпреВрдЯреЗрд╢рди рд╕рдорд╛рдирддрд╛, рдФрд░ рдПрдХ рдХреБрд╢рд▓ рдПрдЬ рдбрд┐рдЯреЗрдХреНрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлреЗрд╕рд┐рдВрдЧ рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред


рд░рд╕реАрдж


рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреЛ рдЫрд╛рддреНрд░реЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ: рд░реВрд╕ рдореЗрдВ рдЗрдиреЛрдкреЛрд▓рд┐рд╕ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╛рдЗрдВрд╕ рдХреЗ рдкрд╣рд▓реЗ рд╡рд░реНрд╖ рдореЗрдВ рд╣реБрд╕реИрди рдпреВрдиреБрд╕ рдФрд░ рд╣рдиреА рд╣реИрдореЗрдб ред


рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдиреЛрдкреЛрд▓рд┐рд╕ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛрд░реНрд╕ рдлреЙрд▓ 2018 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ ред


Source: https://habr.com/ru/post/hi431326/


All Articles