Native FPGA рд╕реЙрдлреНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рд╕рдВрдХрд▓рдХ рдпрд╛ рдорд╛рдЙрд╕ рдХреЗ рдЧреАрдд рдХреЗ рд╕рд╛рде

рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдпрд╛ рд╕реЙрдиреНрдЧ рдСрдл рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЗ FPGA рд╕реЙрдлреНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ - рд╕реНрдЯреИрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдореЗрдВ рдЕрдиреБрднрд╡ред

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

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

рдПрдХ рдПрдкрд┐рдЧреНрд░рд╛рдл рдХреЗ рдмрдЬрд╛рдп:

рдпрджрд┐ рдЖрдк рдПрдХ рд╡рдпрд╕реНрдХ рдорд╛рдЙрд╕ рд▓реЗрддреЗ рд╣реИрдВ
рдФрд░, рдзреНрдпрд╛рди рд╕реЗ рдЗрд╕реЗ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ,
рддреЛ рд╕реБрдЗрдпреЛрдВ рдХреЛ рд░рдЧрдбрд╝реЗрдВ,
рдЖрдкрдХреЛ рдПрдХ рд╣рд╛рдереА рдорд┐рд▓реЗрдЧрд╛ред

рдпрджрд┐ рдпрд╣ рд╣реЗрдЬрд╣реЛрдЧ,
рдирд╛рдХ рдкреНрд▓рдЧ, рддреЛ рд╕рд╛рдБрд╕ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХреЗ рд░реВрдк рдореЗрдВ,
рдЬрд╣рд╛рдВ рдЧрд╣рд░рд╛рдИ рдореЗрдВ, рдирджреА рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВ
рдЖрдкрдХреЛ рдПрдХ рд░рдл рдорд┐рд▓реЗрдЧрд╛ред

рдпрджрд┐ рдпрд╣ рд░рдл,
рдПрдХ рд╡рд╛рдЗрд╕ рдореЗрдВ
рдЕрдкрдирд╛ рд╕рд┐рд░ рдкрдХрдбрд╝реЗ рд╣реБрдП, рдкреВрдВрдЫ рд╕реЗ рдХрдард┐рди рдЦреАрдВрдЪреЛ рддреЛ
рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдВрдк рдорд┐рд▓реЗрдЧрд╛ред

рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рддреЛ
рджреЛ рдЪрд╛рдХреВ рддреИрдпрд╛рд░ рдХрд┐рдП ...
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╣ рд╢рд╛рдпрдж рдорд░ рдЬрд╛рдПрдЧрд╛,
рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рд╣реИ!


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


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

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

рдареЗрда рдЗрдЪреНрдЫрд╛ рд╕реВрдЪреА


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

рдирд░рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдп рд╣реИрдВ:

  • рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдХреА рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рд╕рдВрднрд╡рддрдГ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд;
  • , .. ;
  • тАУ , .

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

рд╕реНрд░реЛрдд рдШрдЯрдХ


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

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдХрд░реАрдм рдореЛрдб рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рд╕реЗрдВрд╕рд░ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдХрд╛рд░реНрдп рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдлреЛрд░реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реЙрдлреНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рдВрджрд░реНрдн рд╕рдорд╛рдзрд╛рди (рддрдерд╛рдХрдерд┐рдд рд╕рдВрджрд░реНрдн рдбрд┐рдЬрд╛рдЗрди) рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, [ 1 ] рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рд╣реЛрдЧрд╛) рдХрднреА-рдХрднреА рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЙрдкрдирд╛рдо рд╕реЗ рд╡реНрд╣рд╛рдЗрдЯ рдЯрд╛рдЗрдЧрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдЗрд╕рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдФрд░ рд╡рд╛рдкрд╕реА рдХреЗ рдвреЗрд░
  • рд╣рд╛рд░реНрд╡рд░реНрдб рдореЗрдореЛрд░реА рд╕рдВрдЧрдарди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдкрддрд╛ рд╕реНрдерд╛рди рд╕рд╣рд┐рдд рдЕрд▓рдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА);
  • рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╛рдирд╛рдВрддрд░ рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ред
  • рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреБрд╢-рдкреБрд▓ рд╣реИ:

    1. рдЖрджреЗрд╢ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП;
    2. рдЖрджреЗрд╢ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдмрдЪрддред

рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЗ рдПрдХ UART- рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ FPGAs рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

FPGA рдореЗрдВ рдмреНрд▓реЙрдХ рдореЗрдореЛрд░реА рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдХреНрд╖рдорддрд╛ 9 рдмрд┐рдЯреНрд╕ рдкрд░ рд╕реЗрдЯ рд╣реИред рдбреЗрдЯрд╛ рдХреА рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ 32 рдмрд┐рдЯреНрд╕ рдкрд░ рд╕реЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрдб рдХрд┐рд╕реА рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ VHDL рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╕рд╛рде FPGAs рдкрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

рдХрдИ рдХрд╛рд░рдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдЬрд╛рд╡рд╛ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдЗрдВрдЬрди рдХреЛ "рдмрд╛рдЗрдВрдб" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рднрд╛рд╖рд╛ (рдкрд╛рдпрдерди) рдХреЛ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╕рд╛рдорд╛рдиреНрдп-рдкреНрд░рдпреЛрдЬрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдФрд░ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рд╕рдВрд░рдЪрдирд╛рддреНрдордХ, рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ, рдЕрдирд┐рд╡рд╛рд░реНрдп рдФрд░ рдкрд╣рд▓реВ-рдЙрдиреНрдореБрдЦ рд╕рд╣рд┐рдд рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди [ 2]]ред

рдиреМрд╕рд┐рдЦрд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ MyHDL [ 3 , 4 ] рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ , рдЬреЛ рдЕрдЬрдЧрд░ рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддрддреНрд╡реЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ VHDL рдпрд╛ рд╡реЗрд░рд┐рд▓реЙрдЧ рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, Uzh рд╕рдВрдХрд▓рдХ [ 5 ] рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рдереА - Zmey FPGA рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрдХрд▓рдХ (рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде 32-рдмрд┐рдЯ рд╕реНрдЯреИрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ - рдпрджрд┐ рдЖрдк рд╕рдВрд╕реНрдХрд░рдгреЛрдВ / рд╕рдВрд╢реЛрдзрдиреЛрдВ / рд╕рддреНрдпрд╛рдкрди рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ - Zmey рд╡реНрд╣рд╛рдЗрдЯрдЯрд╛рдЗрдЧрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рджреВрд░ рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ)ред
Uzh рднреА рдкрд╛рдпрдерди рдХреЗ рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдЙрдкрд╕рдореБрдЪреНрдЪрдп рд╣реИ, рдЬреЛ рдЖрд╢рд╛рдЬрдирдХ рд░реЗрдбреНрд╕рд▓ рдЯреВрд▓рдХрд┐рдЯ (рдбреАрдПрд╕рдПрд▓ рд╕рдВрдХрд▓рдХ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ [ 6 , 7 ]ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рдо рдХреА рджрд┐рд╢рд╛ рдХреА рдкрд╕рдВрдж рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░рдХреЛрдВ рдХреЛ рд▓рдЧрднрдЧ рдЗрд╕ рддрд░рд╣ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • FPGAs рдкрд░ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдиреМрд╕рд┐рдЦрд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП "рдПрдВрдЯреНрд░реА рдереНрд░реЗрд╢реЛрд▓реНрдб" рдХреЛ рдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ (рд╕рд┐рдВрдЯреИрдХреНрдЯрд▓реА рдкрд╛рдпрдерди рд╡реАрдПрдЪрдбреАрдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП "рдбрд░рд╛рд╡рдирд╛" рдирд╣реАрдВ рд╣реИ);
  • рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рджреНрднрд╛рд╡ рдФрд░ рдПрдХрд▓ рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ (рдкрд╛рдпрдерди рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмреНрд▓реЙрдХ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ);
  • рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдпреЛрдЧред

рдЫреЛрдЯреА, "рд▓рдЧрднрдЧ" рдЕрд░реНрдерд╣реАрди рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ


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

  • рдвреЗрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИрдВ - рдЕрд░реНрдерд╛рдд рд╕рдВрдХреЗрдд рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрддреЗ рдкрд░ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦрд╛;
  • , - ;
  • ;
  • , .

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

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

рд╕рдВрдХрд▓рдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реЙрдлреНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ; src рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдХрд▓рдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдкрд╛рда рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ (рдПрдХреНрд╕рдЯреЗрдВрд╢рди .cmd) рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: c.py C:\D\My_Docs\Documents\uzh-master\tests\abc.py рдЬрд╣рд╛рдВ рд╕реЙрдлреНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдПрдмреАрд╕реАрдбреАрдУ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИред

рдПрдХ рд╕рд╛рдВрдк рдЕрдкрдиреА рдкреВрдВрдЫ рдпрд╛ рд▓реЛрд╣реЗ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ


Uzh рдХреЛ рд╡реНрд╣рд╛рдЗрдЯрдЯрд╛рдЗрдЧрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╕рд╛рде рд╣реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рднреА рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдВрдХрд▓рдХ рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИрдВред рдореБрдЦреНрдп "рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рдирд┐рд░реНрднрд░" рдлрд╛рдЗрд▓реЗрдВ:

  • asm.py - рдХреЛрдбрд╛рдВрддрд░рдХ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЧрдарди (рд╢рд╛рдмреНрджрд┐рдХ);
  • gen.py - low-level code generation rules (рдХрд╛рд░реНрдп, рдЪрд░, рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рд╕реНрдерд┐рддрд┐рдпрд╛рдБ);
  • stream.py - рдПрдХ рдмреВрдЯ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ;
  • рдореИрдХреНрд░реЛ-рдереНрд░реЗрдб - рдореИрдХреНрд░реЛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдзрд╛рд░ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ред

рдореВрд▓ рд╡реНрд╣рд╛рдЗрдЯрдЯрд╛рдЗрдЧрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ, UART рд▓реЛрдбрд░ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред рдмреВрдЯрд▓реЛрдбрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ:

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

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

рдЪреВрдВрдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рддрд░реНрдХ рдореЗрдВ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдЧреНрдирд▓ DataDinBtemp, LoaderAddrB, DataWeBtemp рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╣реИрдВ - рдкреЛрд░реНрдЯ рдЗрди рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛, рдкрддрд╛ рдФрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рдиред

рдмреВрдЯрд▓реЛрдбрд░ рдХреЛрдб рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

uart_unit: entity work.uart
--uart_unit: entity uart
  Generic map(
    ClkFreq => 50_000_000,
    Baudrate => 115200)
  port map(
    clk => clk,
    rxd => rx,
    txd => tx,
    dout => receivedByte,
    received => received,
    din => transmitByte,
    transmit => transmit);
    
process(clk)
begin
  if rising_edge(clk) then
    if received = '1' then
      case conv_integer(receivedByte) is
      -- 0-F   - 0-3 bits
        when 0 to 15 => CodeDinA(3 downto 0) <= receivedByte(3 downto 0);
		                  DataDinBtemp(3 downto 0) <= receivedByte(3 downto 0);
      -- 10-1F -4-7bits
        when 16 to 31 => CodeDinA(7 downto 4) <= receivedByte(3 downto 0);
		                   DataDinBtemp(7 downto 4) <= receivedByte(3 downto 0); 
      -- 20-2F -8bit 
        when 32 to 47 => CodeDinA(8) <= receivedByte(0);
	                   DataDinBtemp(11 downto 8) <= receivedByte(3 downto 0);
	  when 48 to 63 => DataDinBtemp(15 downto 12) <= receivedByte(3 downto 0);
	  when 64 to 79 => DataDinBtemp(19 downto 16) <= receivedByte(3 downto 0);
	  when 80 to 95 => DataDinBtemp(23 downto 20) <= receivedByte(3 downto 0);
	  when 96 to 111 => DataDinBtemp(27 downto 24) <= receivedByte(3 downto 0);
        when 112 to 127 => DataDinBtemp(31 downto 28) <= receivedByte(3 downto 0);

      -- F0 addr=0
        when 240 => CodeAddrA <= (others => '0');
      -- F1 - WE=1
        when 241 => CodeWeA <= '1';
      -- F2 WE=0 addr++
        when 242 => CodeWeA <= '0'; CodeAddrA <= CodeAddrA + 1;
      -- F3 RESET=1
        when 243 => int_reset <= '1';
      -- F4 RESET=0
        when 244 => int_reset <= '0';

      -- F5 addr=0
        when 245 => LoaderAddrB <= (others => '0');
      -- F6 - WE=1
        when 246 => DataWeBtemp <= '1';
      -- F7 WE=0 addr++
        when 247 => DataWeBtemp <= '0'; LoaderAddrB <= LoaderAddrB + 1;
		  
		  
        when others => null;
      end case;
    end if;
  end if;
end process;

---- end of loader


рдПрдХ рд╕рдХреНрд░рд┐рдп рд░реАрд╕реЗрдЯ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде, DataDinBtemp, LoaderAddrB, DataWeBtemp рд╕рд┐рдЧреНрдирд▓ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред

тАж
    if reset = '1' or int_reset = '1' then
      DSAddrA <= (others => '0');      
      
      RSAddrA <= (others => '0');
      RSAddrB <= (others => '0');
      RSWeA <= '0';
      
      DataAddrB <= LoaderAddrB;
		DataDinB<=DataDinBtemp;
		DataWeB<=DataWeBtemp;
      DataWeA <= '0';
тАж

рдмреВрдЯрд▓реЛрдбрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реНрдЯреНрд░реАрдорд╣реЛрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдм рдЗрд╕рдХреЗ рджреЛ рдХрд╛рд░реНрдп рд╣реИрдВред рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп - get_val () - рдЗрдирдкреБрдЯ рд╢рдмреНрдж рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реНрд╣рд╛рдЗрдЯрдЯрд╛рдЗрдЧрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ 9-рдмрд┐рдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рддреАрди рдЯреЗрдЯреНрд░реИрдб рдХреЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдФрд░ 32-рдмрд┐рдЯ рдбреЗрдЯрд╛ рдХреЛ рдЖрда рдЯреЗрдЯреНрд░рд╛рдб рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░рд╛ рдлрдВрдХреНрд╢рди рдореЗрдХ () рд╕реАрдзреЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдмрдирд╛рддрд╛ рд╣реИред
рд╕реНрдЯреНрд░реАрдо рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рд░реВрдк:

def get_val(x, by_4):
  r = []
  for i in range(by_4):
    r.append((x & 0xf) | (i << 4))
    x >>= 4
  return r

def make(code, data, core=0):
  #        0  
  stream = [243,245] 
  for x in data:
    #    32- 
    #         
    stream += get_val(x, 8) + [246, 247]
  #       0
  stream += [240]
  for x in code:
    #    9-  
    #         
    stream += get_val(x, 3) + [241, 242]
  #  
  stream.append(244)

  return bytearray(stream)


рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди asm.py рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо (рдХрдорд╛рдВрдб mnemonics рдФрд░ рдХрдорд╛рдВрдб рдСрдкрдХреЛрдб рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдиреЛрдВ - рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ / рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рддрд╛ рд╣реИред

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

рдпрджрд┐ рдХрд┐рд╕реА рд╢рдмреНрдж рдХрд╛ рдЙрдЪреНрдЪрддрдо (9 рд╡рд╛рдВ) рдмрд┐рдЯ 1 рд╣реИ, рддреЛ рдУрдкрдХреЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рддреА рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рдЪрд╛рд░ рдСрдкрдХреЛрдб рдПрдХ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ 32-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдВрдд рдХрд╛ рдПрдХ рд╕рдВрдХреЗрдд рдХрдорд╛рдВрдб рдУрдкрдХреЛрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ - рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХрд░реВрдкрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд╛ рдЕрдВрдд рдПрдирдУрдкреА рдХрдорд╛рдВрдб ("рдХреЛрдИ рд╕рдВрдЪрд╛рд▓рди рдирд╣реАрдВ") рдХрд╛ рдСрдкрдХреЛрдб рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдВрд╢реЛрдзрд┐рдд рд░реЛрд╢рдиреА () рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


def lit(x):
  x &= 0xffffffff
  r = [] 
  if (x>>24) & 255 :
    r.append(int((x>>24) & 255) | 256)
  if (x>>16) & 255:
    r.append(int((x>>16) & 255) | 256)
  if (x>>8) & 255:
    r.append(int((x>>8) & 255) | 256)
  r.append(int(x & 255) | 256)
  r += asm("NOP")
  return list(r)


рдореБрдЦреНрдп рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди / рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдЬреЗрдиреЛрдореЗрдбреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИрдВред рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреЛрдбрд╛рдВрддрд░рдХ рд╕реНрддрд░ рдкрд░ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдХреЛрдб рдХреЗ рдХрд╛рд░реНрдп / рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдореВрд▓ рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  • рд╕рд╢рд░реНрдд рдФрд░ рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреВрджрддрд╛ рд╣реИ;
  • рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдЙрди рдкрд░ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛;
  • рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕реЗ рд▓реМрдЯрдирд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрдирд╛;
  • рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА, рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрди;
  • рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдХреНрд░рдоред

рдЬрд╛рд╡рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реНрдореГрддрд┐ рдФрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдорд░реНрдкрд┐рдд LocalReg рд░рдЬрд┐рд╕реНрдЯрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рд╕реНрдерд╛рдиреАрдп рдЪрд░ (рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдвреЗрд░) рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рднреА рдЬреЛрдбрд╝реЗ (cpu.vhd рдлрд╝рд╛рдЗрд▓ - рдХрдорд╛рдВрдб рдбреЗрдлрд┐рдирд┐рд╢рди рдПрд░рд┐рдпрд╛):


          -- group 1; pop 0; push 1;
          when cmdLOCAL => DSDinA <= LocalReg;
			 when cmdLOCALadd => DSDinA <= LocalReg; LocalReg <= LocalReg+1;
			 when cmdLOCALsubb => DSDinA <= LocalReg; LocalReg <= LocalReg-1;
тАж
          -- group 2; pop 1; push 0;
          when cmdSETLOCAL => LocalReg <= DSDinA;
тАж

LOCAL - рдбреЗрдЯрд╛ рдкрд░ рд▓реМрдЯреЗрдВ LocalReg рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рд╕реНрдЯреИрдХ рдХрд░рддрд╛ рд╣реИ;
SETLOCAL - рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирдпрд╛ рдкреЙрдЗрдВрдЯрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ;
LOCALadd - рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдкрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рдЫреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ 1 рд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ;
LOCALsubb - рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдкрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ 1 рд╕реЗ
рдШрдЯрд╛рддрд╛ рд╣реИред LOCALadd рдФрд░ LOCALsubb рдХреЛ рдлрдВрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдЯрд┐рдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

-- ++
DataAddrB <= DSDoutA(DataAddrB'range);
DataDinB <= DSDoutB;

STORE рдФрд░ FETCH рдХрдорд╛рдВрдб рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЛ рднреА рдереЛрдбрд╝рд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - FETCH рдкреЛрд░реНрдЯ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдореЗрдореЛрд░реА рдореЗрдВ, рдФрд░ STORE рдмрд╕ рд▓рд┐рдЦрдиреЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдкреЛрд░реНрдЯ B рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:

тАж
          -- group 3; pop 1; push 1;
          when cmdFETCH => DSDinA <= DataDoutB;
тАж
          when cmdSTORE =>            
            DataWeB <= '1';
тАж

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рднрд╛рдЧ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдо рд╕реНрддрд░ рдкрд░ (рдФрд░ рдХрд┐рд▓реЗ рдХреА рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрдХрд▓рдХ рд╕реНрддрд░ рдкрд░) рд▓реВрдк рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП, рд▓реВрдк рдХрд╛рдЙрдВрдЯрд░реНрд╕ рдХрд╛ рдПрдХ рд╕реНрдЯреИрдХ рд╡реНрд╣рд╛рдЗрдЯрдЯрд╛рдЗрдЧрд░ рдХреЛрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ (рдЬрдм рдбреЗрдЯрд╛ рдФрд░ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЬрд╛рддреА рд╣реИ рддреЛ рдпрд╣ рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИ):

тАж
--  
type TCycleStack is array(0 to LocalSize-1) of DataSignal;
signal CycleStack: TCycleStack;
signal CSAddrA, CSAddrB: StackAddrSignal;
signal CSDoutA, CSDoutB: DataSignal;
signal CSDinA, CSDinB: DataSignal;
signal CSWeA, CSWeB: std_logic;
тАж
--  
process(clk)
begin
  if rising_edge(clk) then
    if CSWeA = '1' then
      CycleStack(conv_integer(CSAddrA)) <= CSDinA;
      CSDoutA <= CSDinA;
    else
      CSDoutA <= CycleStack(conv_integer(CSAddrA));
    end if;
  end if;
end process;


рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛рдЙрдВрдЯрд░ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред

рдбреАрдУ - рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рд╕реЗ рдХрд╛рдЙрдВрдЯрд░ рд╕реНрдЯреИрдХ рддрдХ рдЪрдХреНрд░ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕реА рдХрд╛рдЙрдВрдЯрд░ рдкрд░ рдЕрдиреБрджреЗрд╢ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдмрдврд╝реЗ рд╣реБрдП рдореВрд▓реНрдп рдХреЛ рд░рдЦрддрд╛ рд╣реИред

LOOP - рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдпрд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд╛рдЙрдВрдЯрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рдкрддреЗ рдкрд░ рд╕рдВрдХреНрд░рдордг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрд╛рдЙрдВрдЯрд░ рд╕реНрдЯреИрдХ рдХрд╛ рд╢реАрд░реНрд╖ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рд╢реАрд░реНрд╖ рддрддреНрд╡ рд░реАрд╕реЗрдЯ рд╣реИ, рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рдЪрдХреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рднреА рд░реАрд╕реЗрдЯ рд╣реИред


	when cmdDO => -- DO - 
               RSAddrA <= RSAddrA + 1; -- 
               RSDinA <= ip + 1;
               RSWeA <= '1';
				
               CSAddrA <= CSAddrA + 1; --
         		CSDinA <= DSDoutA;
 		         CSWeA <= '1';
		         DSAddrA <= DSAddrA - 1; --
		         ip <= ip + 1;	-- 

      when cmdLOOP => --            
           if conv_integer(CSDoutA) = 0 then
	          ip <= ip + 1;	-- 
		         RSAddrA <= RSAddrA - 1; -- 
		         CSAddrA <= CSAddrA - 1; -- 
            else
		         CSDinA <= CSDoutA - 1;
		         CSWeA <= '1';
		         ip <= RSDoutA(ip'range);
            end if;
			 

рдЕрдм рдЖрдк gen.py рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

* _SIZE рдЪрд░ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

STUB рд╕реВрдЪреА рд╕рдВрдХреНрд░рдордг рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдмрдирд╛рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕реНрдЯрдм рд╣реИ (рд╡рд░реНрддрдорд╛рди рдорд╛рди рдХреЛрдб рдореЗрдореЛрд░реА рдХреЗ 24-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ)ред

STARTUP рд╕реВрдЪреА - рдПрдХ рд░реАрд╕реЗрдЯ рдХреЗ рдмрд╛рдж рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХреНрд░рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреА рд╕реНрдореГрддрд┐ рдХрд╛ рд╢реБрд░реБрдЖрддреА рдкрддрд╛ 900 рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдкреНрд░рд╛рд░рдВрдн рдмрд┐рдВрджреБ рдкрд░ рд╕рдВрдХреНрд░рдордг (рдпрджрд┐ рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн / рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдкрддреЗ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред 2):

STARTUP = asm("""
900  SETLOCAL
2 NOP FETCH JMP
""")

Func () рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдмрддрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрдиред

@act
def func(t, X):
  t.c.entry = t.c.globs[X]
  t.c.entry["offs"] = len(t.c.code) # - 1
  args = t.c.entry["args"]
  temps_size = len(t.c.entry["locs"]) - args
#      
  t.out = asm("LOCALadd STORE " * args)
  if temps_size:
#      
    t.out += asm("LOCAL %d PLUS SETLOCAL" % temps_size)
  return True

рдПрдкрд┐рд▓реЙрдЧ () рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрддреЗ рд╕рдордп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреА рд╕реНрдореГрддрд┐ рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИ, рдХреЙрд▓ рдмрд┐рдВрджреБ рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИред

def epilog(t, X):
  locs_size = len(t.c.entry["locs"])
#    
  t.out = asm("RET")
  if locs_size:
#    ()  
    t.out = asm("LOCAL %d MINUS SETLOCAL" % locs_size) + t.out
  return True


рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЙрдирдХреЗ рдкрддреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рднрд╛рд╖рд╛ push_local () рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдкрд░ "рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп" рдЪрд░ рдХрд╛ рдкрддрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

def push_local(t, X):
#          
#  
  t.out = asm("LOCAL %d MINUS" % get_loc_offset(t, X))
  return True

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

@act
def goto_if_0(t, X):
  push_label(t, X)
  t.out += asm("IF")
  return True

@act
def goto(t, X):
  push_label(t, X)
  t.out += asm("JMP")
  return True


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

@act
def shl_const(t, X):
  t.out = asm("%d DO SHL LOOP" %(X-1))
  return True

@act
def shr_const(t, X):
  t.out = asm("%d DO SHR LOOP" %(X-1))
  return True

рдФрд░ рдХрдо рд╕реНрддрд░ рдкрд░ рд╕рдВрдХрд▓рдХ рдХреА рдореБрдЦреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рднрд╛рд╖рд╛ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ:

stmt = rule(alt(
  seq(Push(Int(X)), to(lambda v: asm("%d" % v.X))),
  seq(Push(Local(X)), push_local),
  seq(Push(Global(X)), push_global),
  seq(Load(), to(lambda v: asm("NOP FETCH"))),
  seq(Store(), to(lambda v: asm("STORE"))),
  seq(Call(), to(lambda v: asm("CALL"))),
  seq(BinOp("+"), to(lambda v: asm("PLUS"))),
  seq(BinOp("-"), to(lambda v: asm("MINUS"))),
  seq(BinOp("&"), to(lambda v: asm("AND"))),
  seq(BinOp("|"), to(lambda v: asm("OR"))),
  seq(BinOp("^"), to(lambda v: asm("XOR"))),
  seq(BinOp("*"), to(lambda v: asm("MUL"))),
  seq(BinOp("<"), to(lambda v: asm("LESS"))),
  seq(BinOp(">"), to(lambda v: asm("GREATER"))),
  seq(BinOp("=="), to(lambda v: asm("EQUAL"))),
  seq(BinOp("~"), to(lambda v: asm("NOT"))),
  seq(ShlConst(X), shl_const),
  seq(ShrConst(X), shr_const),
  seq(Func(X), func),
  seq(Label(X), label),
  seq(Return(X), epilog),
  seq(GotoIf0(X), goto_if_0),
  seq(Goto(X), goto),
  seq(Nop(), to(lambda v: asm("NOP"))),
  seq(Asm(X), to(lambda v: asm(v.X)))
))

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

@macro(1,0)
def testasm(c,x):
  return Asm("1 1 OUTPORT 0 1 OUTPORT 11 10 STORE 10 FETCH 1 OUTPORT  15 100 STORE 100  FETCH 1 OUTPORT")

@macro(1,0)
def testlocal(c,x):
   return Asm("1 100 STORE 2 101 STORE 100 SETLOCAL LOCAL NOP FETCH 1 OUTPORT LOCAL 1 PLUS NOP FETCH 1 OUTPORT")

@prim(1, 0)
def delay(c, val):
  return [val, Asm("DO LOOP")]


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


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

def fact(n):
  r = 1
  while n > 1:
    r *= n
    n -= 1
  return r


def main():
  n=1
  while True:
     digital_write(1, fact(n))
     delay(10)
     n=(n+1)&0x7


рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдпрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛: рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдмреВрдЯ рдлрд╛рдЗрд▓ рд╕реНрдЯреНрд░реАрдо.рдмрд┐рдирд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ FPGA рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЛ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдЖрдзреБрдирд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдУрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЪреБрдЕрд▓ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ USB- UART рдЗрдВрдЯрд░рдлреЗрд╕)ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо 146 рдореЗрдореЛрд░реА (9-рдмрд┐рдЯ) рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдФрд░ 3 рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд╡реНрдпрд╛рдкреНрдд рд╣реИред
c.py C:\D\My_Docs\Documents\uzh-master\tests\fact2.py




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


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

FPGA Altera Cyclone V рд╕реАрд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рд┐рдВрдереЗрд╕рд┐рд╕ (32-рдмрд┐рдЯ рдХреНрд╖рдорддрд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдХреЗ 4K рд╢рдмреНрдж рдФрд░ 1K RAM) рдХреЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрди рд╣реИрдВ:

Family	Cyclone V
Device	5CEBA4F23C7
Logic utilization (in ALMs)	694 / 18,480 ( 4 % )
Total registers	447
Total pins	83 / 224 ( 37 % )
Total virtual pins	0
Total block memory bits	72,192 / 3,153,920 ( 2 % )
Total DSP Blocks	2 / 66 ( 3 % )

рд╕рд╛рд╣рд┐рддреНрдп

  1. VHDL // m.habr.com/en/post/149686 рдкрд░ рдлреЛрд░реНрде рдкреНрд░реЛрд╕реЗрд╕рд░
  2. рдкрд╛рдпрдерди - рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ // en.wikipedia.org/wiki/Python
  3. рд╣рдо FPGA рдХреЛ Python _ Habr // m.habr.com/en/post/439638 рдкрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
  4. MyHDL // www.myhdl.org
  5. рдЧрд┐рдЯрд╣рдм - рд╕рдЪреНрдЪрд╛-рдЧреНрд░реБ_рд╣реБрдЬ_ рдЙрдЬрд╝ рдХрдВрдкрд╛рдЗрд▓рд░ // github.com/true-grue/uzh
  6. GitHub - DSL рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рддреЗрдЬреА рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП true-grue_raddsl_ рдЯреВрд▓ // github.com/true-grue/raddsl
  7. sovietov.com/txt/dsl_python_conf.pdf

рд▓реЗрдЦрдХ рдкрд░рд╛рдорд░реНрд╢ рдФрд░ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП Zmey рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ Uzh рд╕рдВрдХрд▓рдХ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд╣реИред

All Articles