DPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ FPGA рдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ HDMI рдореЙрдирд┐рдЯрд░


рдпрд╣ рд╡реАрдбрд┐рдпреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ: рдПрдХ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдмреЛрд░реНрдб, рдЬреЛ GPIO рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдПрдХ FPGA рдмреЛрд░реНрдб рдорд╛рд░реНрд╕ рд░реЛрд╡рд░2rpi (рд╕рд╛рдЗрдХреНрд▓реЛрди IV) рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ HDMI рдореЙрдирд┐рдЯрд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рджреВрд╕рд░рд╛ рдореЙрдирд┐рдЯрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рдорд╛рдирдХ рдПрдЪрдбреАрдПрдордЖрдИ рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд╕рдм рдХреБрдЫ рдПрдХ рджреЛрд╣рд░реА рдореЙрдирд┐рдЯрд░ рдкреНрд░рдгрд╛рд▓реА рдХреА рддрд░рд╣ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдЧреЗ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдмреЛрд░реНрдб рдореЗрдВ рдПрдХ GPIO рдХрдиреЗрдХреНрдЯрд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛рд░реНрдб рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реЗрдВрд╕рд░, рдПрд▓рдИрдбреА, рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдХрдиреЗрдХреНрдЯрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рди рдХрд╛ рд╕рдЯреАрдХ рдХрд╛рд░реНрдп рдкреЛрд░реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред GPIO ALT2 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯрд░ рдХреЛ DPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЛрдб, рдбрд┐рд╕реНрдкреНрд▓реЗ рдкреИрд░реЗрд▓рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбреАрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛рд░реНрдб рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдЕрдм рдПрдЪрдбреАрдПрдордЖрдИ рдЬрд┐рддрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдбрд┐рдЬрд┐рдЯрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдирд╛рд▓реЙрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реЗ рд╡реАрдЬреАрдП рд╡рд┐рд╕реНрддрд╛рд░ рдмреЛрд░реНрдбреЛрдВ рдкрд░ рдбреАрдПрд╕реА рдЖрдорддреМрд░ рдкрд░ рдЖрд░-2-рдЖрд░ рдЪреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдкреНрд░рддрд┐ рд░рдВрдЧ 6 рдмрд┐рдЯ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

ALT2 рдореЛрдб рдореЗрдВ, GPIO рдХрдиреЗрдХреНрдЯрд░ рдкрд┐рди рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрд░реНрде рд╣реЛрддрд╛ рд╣реИ:

DPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ FPGA рдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ HDMI рдореЙрдирд┐рдЯрд░

рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рдЖрд░рдЬреАрдмреА рдкрд┐рди рдХреЛ рдХреНрд░рдорд╢рдГ рд▓рд╛рд▓, рд╣рд░рд╛ рдФрд░ рдиреАрд▓рд╛ рд░рдВрдЧ рджрд┐рдпрд╛ рд╣реИред рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд┐рдЧреНрдирд▓ V-SYNC рдФрд░ H-SYNC рд╕рд┐рдЧреНрдирд▓, рд╕рд╛рде рд╣реА CLK рд╣реИрдВред рд╕реАрдПрд▓рдХреЗ рдШрдбрд╝реА рдЖрд╡реГрддреНрддрд┐ рд╡рд╣ рдЖрд╡реГрддреНрддрд┐ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддреЗ рд╣реИрдВ; рдпрд╣ рдЪрдпрдирд┐рдд рд╡реАрдбрд┐рдпреЛ рдореЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

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

DPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ FPGA рдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ HDMI рдореЙрдирд┐рдЯрд░

рдЗрд╕ рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ GPIO рдкреЛрд░реНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде 4 GPIO рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ JTAG рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо FPGA рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ FPGA рдореЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХреЗред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдпрд╣ рдорд╛рдирдХ рдХрдиреЗрдХреНрд╢рди рдореЗрд░реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ; 4 рдбреАрдкреАрдЖрдИ рд╕рд┐рдЧреНрдирд▓ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдмреЛрд░реНрдб рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдШрд┐рдпреЛрдВ рдореЗрдВ рд░рд╛рд╕реНрдкрдмреЗрд░реА-рд╕рдВрдЧрдд рдкрд┐рдирдЖрдЙрдЯ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмреЛрд░реНрдб рдХреЛ 90 рдбрд┐рдЧреНрд░реА рддрдХ рдШреБрдорд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рднреА рдЗрд╕реЗ рдЕрдкрдиреЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ:

DPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ FPGA рдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ HDMI рдореЙрдирд┐рдЯрд░

рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА JTAG рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдЕрднреА рднреА рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ. рдкреНрд░рддреНрдпреЗрдХ FPGA рдкрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд▓реЙрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рдорд░реНрдкрд┐рдд рдкрд┐рди рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдпрд╣рд╛рдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ GPIO_0 CLK рд╕рд┐рдЧреНрдирд▓ FPGA рдЗрдирдкреБрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ FPGA рдХреНрд▓реЙрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрднреА рднреА рджреБрдкрдЯреНрдЯреЗ рдкрд░ рдПрдХ рддрд╛рд░ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рд╛ред рдореИрдВ GPIO_0 рдФрд░ рдмреЛрд░реНрдб рдХреЗ KEY[1] рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ:

DPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ FPGA рдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ HDMI рдореЙрдирд┐рдЯрд░

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

DPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ FPGA рдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ HDMI рдореЙрдирд┐рдЯрд░

рдбрд┐рдлрд░реЗрдВрд╢рд┐рдпрд▓ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд▓рд╛рдЗрди рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдХреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдореВрд▓ рдЖрда-рдмрд┐рдЯ рдХреЛрдб 10-рдмрд┐рдЯ рдЯреАрдПрдордбреАрдПрд╕ (рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди-рдорд┐рдирд┐рдорд╛рдЗрдЬреНрдб рдбрд┐рдлрд░реЗрдВрд╢рд┐рдпрд▓ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рдЧреНрдирд▓ рд╕реЗ рдбреАрд╕реА рдШрдЯрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдПрдХ рдЕрдВрддрд░ рд▓рд╛рдЗрди рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐ рд╣реИред рдЪреВрдВрдХрд┐ рд░рдВрдЧ рдХреА рдПрдХ рдмрд╛рдЗрдЯ рдХреЛ рдЕрдм рд╕реАрд░рд┐рдпрд▓ рд▓рд╛рдЗрди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 10 рдмрд┐рдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдШрдбрд╝реА рдЖрд╡реГрддреНрддрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдШрдбрд╝реА рдЖрд╡реГрддреНрддрд┐ рд╕реЗ 10 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рдореЛрдб 1280x720 60Hz рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдореЛрдб рдХреА рдкрд┐рдХреНрд╕реЗрд▓ рдЖрд╡реГрддреНрддрд┐ 74,25 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╣реИред рд╕реАрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝рд░ 742,5 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдирд┐рдпрдорд┐рдд рдПрдлрдкреАрдЬреАрдП рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП, FPGA рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд DDIO рдкрд┐рди рд╣реИрдВред рдпреЗ рдРрд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2-рдЯреВ-1 рдХреНрд░рдордмрджреНрдз рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рд╡реЗ рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдмрдврд╝рддреЗ рдФрд░ рдЧрд┐рд░рддреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд┐рдЯреНрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдлрдкреАрдЬреАрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдк 740 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 370 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдлрдкреАрдЬреАрдП рдореЗрдВ рдбреАрдбреАрдЖрдИрдУ рдЖрдЙрдЯрдкреБрдЯ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм 370 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЖрд╡реГрддреНрддрд┐ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, 1280x720 рдореЛрдб рд╣реА рд╕реАрдорд╛ рд╣реИред рдорд╛рд░реНрд╕ рд░реЛрд╡рд░2рдЖрд░рдкреАрдЖрдИ рдмреЛрд░реНрдб рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣рдорд╛рд░реЗ рд╕рд╛рдЗрдХреНрд▓реЛрди IV рдПрдлрдкреАрдЬреАрдП рдореЗрдВ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ, рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ, рдЗрдирдкреБрдЯ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрд╡реГрддреНрддрд┐ рд╕реАрдПрд▓рдХреЗ рдкреАрдПрд▓рдПрд▓ рдореЗрдВ рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ 5 рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЖрд╡реГрддреНрддрд┐ рдкрд░, рдЖрд░, рдЬреА, рдмреА рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдмрд┐рдЯ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреАрдПрдордбреАрдПрд╕ рдПрдирдХреЛрдбрд░ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред рд╡реЗрд░рд┐рд▓реЙрдЧ рдПрдЪрдбреАрдПрд▓ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

module hdmi(
	input wire pixclk,		// 74MHz
	input wire clk_TMDS2,	// 370MHz
	input wire hsync,
	input wire vsync,
	input wire active,
	input wire [7:0]red,
	input wire [7:0]green,
	input wire [7:0]blue,
	output wire TMDS_bh,
	output wire TMDS_bl,
	output wire TMDS_gh,
	output wire TMDS_gl,
	output wire TMDS_rh,
	output wire TMDS_rl
);

wire [9:0] TMDS_red, TMDS_green, TMDS_blue;
TMDS_encoder encode_R(.clk(pixclk), .VD(red  ), .CD({vsync,hsync}), .VDE(active), .TMDS(TMDS_red));
TMDS_encoder encode_G(.clk(pixclk), .VD(green), .CD({vsync,hsync}), .VDE(active), .TMDS(TMDS_green));
TMDS_encoder encode_B(.clk(pixclk), .VD(blue ), .CD({vsync,hsync}), .VDE(active), .TMDS(TMDS_blue));

reg [2:0] TMDS_mod5=0;  // modulus 5 counter
reg [4:0] TMDS_shift_bh=0, TMDS_shift_bl=0;
reg [4:0] TMDS_shift_gh=0, TMDS_shift_gl=0;
reg [4:0] TMDS_shift_rh=0, TMDS_shift_rl=0;

wire [4:0] TMDS_blue_l  = {TMDS_blue[9],TMDS_blue[7],TMDS_blue[5],TMDS_blue[3],TMDS_blue[1]};
wire [4:0] TMDS_blue_h  = {TMDS_blue[8],TMDS_blue[6],TMDS_blue[4],TMDS_blue[2],TMDS_blue[0]};
wire [4:0] TMDS_green_l = {TMDS_green[9],TMDS_green[7],TMDS_green[5],TMDS_green[3],TMDS_green[1]};
wire [4:0] TMDS_green_h = {TMDS_green[8],TMDS_green[6],TMDS_green[4],TMDS_green[2],TMDS_green[0]};
wire [4:0] TMDS_red_l   = {TMDS_red[9],TMDS_red[7],TMDS_red[5],TMDS_red[3],TMDS_red[1]};
wire [4:0] TMDS_red_h   = {TMDS_red[8],TMDS_red[6],TMDS_red[4],TMDS_red[2],TMDS_red[0]};

always @(posedge clk_TMDS2)
begin
	TMDS_shift_bh <= TMDS_mod5[2] ? TMDS_blue_h  : TMDS_shift_bh  [4:1];
	TMDS_shift_bl <= TMDS_mod5[2] ? TMDS_blue_l  : TMDS_shift_bl  [4:1];
	TMDS_shift_gh <= TMDS_mod5[2] ? TMDS_green_h : TMDS_shift_gh  [4:1];
	TMDS_shift_gl <= TMDS_mod5[2] ? TMDS_green_l : TMDS_shift_gl  [4:1];
	TMDS_shift_rh <= TMDS_mod5[2] ? TMDS_red_h   : TMDS_shift_rh  [4:1];
	TMDS_shift_rl <= TMDS_mod5[2] ? TMDS_red_l   : TMDS_shift_rl  [4:1];
	TMDS_mod5 <= (TMDS_mod5[2]) ? 3'd0 : TMDS_mod5+3'd1;
end

assign TMDS_bh = TMDS_shift_bh[0];
assign TMDS_bl = TMDS_shift_bl[0];
assign TMDS_gh = TMDS_shift_gh[0];
assign TMDS_gl = TMDS_shift_gl[0];
assign TMDS_rh = TMDS_shift_rh[0];
assign TMDS_rl = TMDS_shift_rl[0];

endmodule

module TMDS_encoder(
	input clk,
	input [7:0] VD,	// video data (red, green or blue)
	input [1:0] CD,	// control data
	input VDE,  	// video data enable, to choose between CD (when VDE=0) and VD (when VDE=1)
	output reg [9:0] TMDS = 0
);

wire [3:0] Nb1s = VD[0] + VD[1] + VD[2] + VD[3] + VD[4] + VD[5] + VD[6] + VD[7];
wire XNOR = (Nb1s>4'd4) || (Nb1s==4'd4 && VD[0]==1'b0);
wire [8:0] q_m = {~XNOR, q_m[6:0] ^ VD[7:1] ^ {7{XNOR}}, VD[0]};

reg [3:0] balance_acc = 0;
wire [3:0] balance = q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7] - 4'd4;
wire balance_sign_eq = (balance[3] == balance_acc[3]);
wire invert_q_m = (balance==0 || balance_acc==0) ? ~q_m[8] : balance_sign_eq;
wire [3:0] balance_acc_inc = balance - ({q_m[8] ^ ~balance_sign_eq} & ~(balance==0 || balance_acc==0));
wire [3:0] balance_acc_new = invert_q_m ? balance_acc-balance_acc_inc : balance_acc+balance_acc_inc;
wire [9:0] TMDS_data = {invert_q_m, q_m[8], q_m[7:0] ^ {8{invert_q_m}}};
wire [9:0] TMDS_code = CD[1] ? (CD[0] ? 10'b1010101011 : 10'b0101010100) : (CD[0] ? 10'b0010101011 : 10'b1101010100);

always @(posedge clk) TMDS <= VDE ? TMDS_data : TMDS_code;
always @(posedge clk) balance_acc <= VDE ? balance_acc_new : 4'h0;

endmodule

рдлрд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝реЗ рдХреЛ рдбреАрдбреАрдЖрдИрдУ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдлреАрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝рддреЗ рдФрд░ рдЧрд┐рд░рддреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдПрдХ-рдмрд┐рдЯ рд╕рд┐рдЧреНрдирд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдбреАрдбреАрдЖрдИрдУ рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реЗрд░рд┐рд▓реЙрдЧ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

module ddio(
	input wire d0,
	input wire d1,
	input wire clk,
	output wire out
	);

reg r_d0;
reg r_d1;
always @(posedge clk)
begin
	r_d0 <= d0;
	r_d1 <= d1;
end
assign out = clk ? r_d0 : r_d1;
endmodule

рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдпрд╣ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ DDIO рдЖрдЙрдЯрдкреБрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ Alter рдХреЗ рдореЗрдЧрд╛рдлрдВрдХреНрд╢рди ALTDDIO_OUT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ ALTDDIO_OUT рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдм рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдк рд╡реЗрд░рд┐рд▓реЙрдЧ рдПрдЪрдбреАрдПрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдБ github рдкрд░.

рдПрдлрдкреАрдЬреАрдП рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдорд╛рд░реНрд╕ рд░реЛрд╡рд░2рдЖрд░рдкреАрдЖрдИ рдмреЛрд░реНрдб рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдИрдкреАрд╕реАрдПрд╕ рдЪрд┐рдк рдореЗрдВ рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдПрдлрдкреАрдЬреАрдП рдмреЛрд░реНрдб рдкрд░ рдмрд┐рдЬрд▓реА рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдПрдлрдкреАрдЬреАрдП рдХреЛ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рд╣рдореЗрдВ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдореИрдВ рдбреЗрдмрд┐рдпрди рдмрд╕реНрдЯрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкреАрдЖрдИ рдУрдПрд╕ (32 рдмрд┐рдЯ) рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╕рдВрд╕реНрдХрд░рдг: рдЕрдЧрд╕реНрдд 2020,
рд░рд┐рд▓реАрдЬрд╝ рджрд┐рдирд╛рдВрдХ:2020-08-20, рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг:5.4.

рджреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

  • config.txt рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ;
  • рджреЛ рдореЙрдирд┐рдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ X рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдВред

/boot/config.txt рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдпрд╣ рдЪрд╛рд╣рд┐рдП:

  1. i2c, i2s, spi рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ;
  2. рдУрд╡рд░рд▓реЗ dtoverlay=dpi24 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DPI рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░реЗрдВ;
  3. рд╡реАрдбрд┐рдпреЛ рдореЛрдб 1280├Ч720 60Hz, DPI рдкрд░ 24 рдмрд┐рдЯ рдкреНрд░рддрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ;
  4. рдлрд╝реНрд░реЗрдордмрдлрд╝рд░реНрд╕ 2 рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ (max_framebuffers=2, рддрднреА рджреВрд╕рд░рд╛ рдбрд┐рд╡рд╛рдЗрд╕ /dev/fb1 рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛)

config.txt рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

dtparam=i2c_arm=off
dtparam=spi=off
dtparam=i2s=off

dtoverlay=dpi24
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0
framebuffer_width=1280
framebuffer_height=720
display_default_lcd=0
enable_dpi_lcd=1
dpi_group=2
dpi_mode=87
#dpi_group=1
#dpi_mode=4
dpi_output_format=0x6f027
dpi_timings=1280 1 110 40 220 720 1 5 5 20 0 0 0 60 0 74000000 3

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
#dtoverlay=vc4-fkms-v3d
max_framebuffers=2

[all]
#dtoverlay=vc4-fkms-v3d
max_framebuffers=2

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рджреЛ рдлрд╝реНрд░реЗрдордмрдлрд╝рд░реНрд╕ /dev/fb0 рдФрд░ /dev/fb1 рдкрд░ рджреЛ рдореЙрдирд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП X рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ /usr/share/x11/xorg.conf.d/60-dualscreen.conf рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ

Section "Device"
        Identifier      "LCD"
        Driver          "fbturbo"
        Option          "fbdev" "/dev/fb0"
        Option          "ShadowFB" "off"
        Option          "SwapbuffersWait" "true"
EndSection

Section "Device"
        Identifier      "HDMI"
        Driver          "fbturbo"
        Option          "fbdev" "/dev/fb1"
        Option          "ShadowFB" "off"
        Option          "SwapbuffersWait" "true"
EndSection

Section "Monitor"
        Identifier      "LCD-monitor"
        Option          "Primary" "true"
EndSection

Section "Monitor"
        Identifier      "HDMI-monitor"
        Option          "RightOf" "LCD-monitor"
EndSection

Section "Screen"
        Identifier      "screen0"
        Device          "LCD"
        Monitor         "LCD-monitor"
EndSection

Section "Screen"
        Identifier      "screen1"
        Device          "HDMI" 
	Monitor         "HDMI-monitor"
EndSection

Section "ServerLayout"
        Identifier      "default"
        Option          "Xinerama" "on"
        Option          "Clone" "off"
        Screen 0        "screen0"
        Screen 1        "screen1" RightOf "screen0"
EndSection

рдЦреИрд░, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ Xinerama рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реНрдерд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЛ рдореЙрдирд┐рдЯрд░реЛрдВ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдбреЗрдореЛ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╢рд╛рдпрдж рдмрд╕ рдЗрддрдирд╛ рд╣реА. рдЕрдм, рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi3 рдХреЗ рдорд╛рд▓рд┐рдХ рджреЛ рдореЙрдирд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВрдЧреЗред

рдорд╛рд░реНрд╕ рд░реЛрд╡рд░2рдЖрд░рдкреАрдЖрдИ рдмреЛрд░реНрдб рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣рд╛рдБ рджреЗрдЦреЛ.

рд╕реНрд░реЛрдд: www.habr.com