рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдЖрд▓реЗрдЦ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ FPGAs рдкрд░ рд╡рд┐рдВрдбреЛ рд╕рд┐рдЧреНрдирд▓ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧред рд▓реЗрдЦ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдорд╛рдирдХ рд▓рдВрдмрд╛рдИ рдХреА рдХреНрд▓рд╛рд╕рд┐рдХ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдФрд░ 64K рд╕реЗ 16M + рдирдореВрдиреЛрдВ рдореЗрдВ "рд▓рдВрдмреА" рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВред рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛ VHDL рд╣реИ, рддрддреНрд╡ рдЖрдзрд╛рд░ рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЗ рдирд╡реАрдирддрдо Xilinx FPGA рдХреНрд░рд┐рд╕реНрдЯрд▓ рд╣реИрдВ: рдпреЗ Ultrascale, Ultrascale +, 7-Series рд╣реИрдВред рд▓реЗрдЦ CORDIC рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ - рдХрд┐рд╕реА рднреА рдЕрд╡рдзрд┐ рдХреЗ рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдХрд░реНрдиреЗрд▓, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдиред рд▓реЗрдЦ рд╡рд┐рд╡рд╛рдбреЛ HLS рдореЗрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ C / C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдЧрд╛ред
KDPV: рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП DSP рдиреЛрдбреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреЛрдЬрдирд╛ред

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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВрдиреЗ рдХреЗрдбреАрдкреАрд╡реА рдбрд╛рд▓рд╛, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдЧреБрдгрди рдХрд╛ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЖрд░реЗрдЦ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, FPGA рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореЗрдореЛрд░реА (рдмреНрд▓реЙрдХ
рд░реИрдордмреА рдпрд╛ рд╡рд┐рддрд░рд┐рдд
рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯреЗрдб - рдпрд╣ рдЬреНрдпрд╛рджрд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ) рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдЗрдирдкреБрдЯ рдирдореВрдиреЗ рдЖрдиреЗ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдзреБрдирд┐рдХ FPGAs рдореЗрдВ, рдЖрдВрддрд░рд┐рдХ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреЗ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ рддрдм рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЗрдирдкреБрдЯ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рдЧреБрдгрд╛ рд╣реЛрддреА рд╣реИрдВред рдЫреЛрдЯреЗ рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдХрд╛рд░реНрдп 64K рдирдореВрдиреЛрдВ рддрдХ рд▓рдВрдмреЗ рд╣реЛрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1M рд░реАрдбрд┐рдВрдЧред рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ 32-рдмрд┐рдЯ рдмрд┐рдЯ рдЧреНрд░рд┐рдб рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдРрд╕реЗ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, NRAMB = 1024 * 1024 * 32/32768 = RAMB36K рдкреНрд░рдХрд╛рд░ FPGA Xilinx рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреА рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдФрд░ 16M рдирдореВрдиреЛрдВ рдХреЗ рд▓рд┐рдП? 16 рд╣рдЬрд╛рд░ рдореЗрдореЛрд░реА рд╕реЗрд▓! рдПрдХ рднреА рдЖрдзреБрдирд┐рдХ FPGA рдореЗрдВ рдЗрддрдиреА рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реИред рдХрдИ FPGAs рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ FPGA рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдмреЗрдХрд╛рд░ рдЙрдкрдпреЛрдЧ рд╣реИ (рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдкреИрд╕рд╛)ред
рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЖрдкрдХреЛ рджреВрд░рд╕реНрде рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдмреНрд▓реЙрдХ рдореЗрдореЛрд░реА рдореЗрдВ рдЧреБрдгрд╛рдВрдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдЙрдбрд╝рд╛рди рдкрд░ рд╕реАрдзреЗ FPGA рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдирдореВрдиреЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬреЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреА рдЧрдИ рд╣реИрдВред
рдХреЙрд░реНрдбрд┐рдХ (
рдЕрдВрдХ-рджрд░-рдЕрдВрдХ рдкрджреНрдзрддрд┐) рдЬреИрд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХрдИ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рдирдХреЗ рд╕реВрддреНрд░ рд╣рд╛рд░реНрдореЛрдирд┐рдХ рд╕рд┐рдЧреНрдирд▓ (рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕, рд╣реИрди, рд╣реИрдорд┐рдВрдЧ, рдирдЯрд╛рд▓, рдЖрджрд┐) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдХреЙрд░рдбрд┐рдХ
рдХреЙрд░реНрдбрд┐рдХ рдПрдХ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЖрджрд┐рдо рдЬреЛрдбрд╝ рдФрд░ рдмрджрд▓рд╛рд╡ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред CORDIC рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХреЛрдИ рд╣рд╛рд░реНрдореЛрдирд┐рдХ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдкрд╛рдк (x), cos (x), рдЪрд░рдг рдЦреЛрдЬреЗрдВ - atan (x) рдФрд░ atan2 (x, y), рд╣рд╛рдЗрдкрд░рдмреЛрд▓рд┐рдХ рдЯреНрд░рд┐рдХреЛрдиреЛрдореЗрдЯреНрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕, рд╕рджрд┐рд╢ рдХреЛ рдШреБрдорд╛рдПрдВ, рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрдбрд╝ рдирд┐рдХрд╛рд▓реЗрдВ, рдЖрджрд┐ред
рдкрд╣рд▓реЗ рддреЛ рдореИрдВ рд╕рдорд╛рдкреНрдд рдХреЙрд░реНрдбрд┐рдХ рдХрд░реНрдиреЗрд▓ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдХрд╛рдо рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХреНрд╕рд┐рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмрд╛ рдЕрд░реБрдЪрд┐ рд╣реИред рдЧрд┐рддреБрдм рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рдХрд░реНрдиреЗрд▓ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИрдВ (рдЦрд░рд╛рдм рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рдЕрдкрдардиреАрдп, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдирд╣реАрдВ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдпрд╛ рддрддреНрд╡ рдЖрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ,
рдЬреЛ рд╡реЗрд░рд┐рд▓реЛрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ , рдЖрджрд┐)ред рдлрд┐рд░ рдореИрдВрдиреЗ рдХреЙрдорд░реЗрдб
рд▓рд╛рдЬрд╝рд┐рдлреЛ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдХрд╣рд╛ред рдмреЗрд╢рдХ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ CORDIC рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди DSP рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореИрдВ рдЕрдзреАрд░ рд╣реЛ рдЧрдпрд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░, рдореИрдВрдиреЗ
рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХреЛ рдЕрдкрдиреЗ
рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрд░рд╛рдбреНрд░рд╛рдЗрдЬреНрдб рдХреЛрд░ рдХреЗ
рд╕рд╛рде рд▓рд┐рдЦрд╛ред рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
DATA_WIDTH рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдФрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЗрдирдкреБрдЯ рдЪрд░рдг
PHASE_WIDTH рдХреА рд╡рд┐рдиреНрдпрд╛рд╕ рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ -1 рд╕реЗ 1 рддрдХ, рдФрд░
рд╕рдЯреАрдХ рдЧрдгрдирд╛ рдХреА рд╕рдЯреАрдХрддрд╛ рд╣реИрдВред CORDIC рдХреЛрд░ рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдШрдбрд╝реА рдЪрдХреНрд░ рдкрд░ рдХреЛрд░ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдФрд░ рдЗрдирдкреБрдЯ рдирдореВрдиреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдХрд░реНрдиреЗрд▓ рдЖрдЙрдЯрдкреБрдЯ рдирдореВрдиреЗ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрди рдЪрдХреНрд░реЛрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдирдореВрдиреЛрдВ рдХреА рдХреНрд╖рдорддрд╛ (рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛, рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рд╕рднреА рдЧрдгрдирд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, CORDIC рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЛрд░ рд╣реИред
рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдЬреЛ рд╣рд╛рд░реНрдореЛрдирд┐рдХ рд╕рд┐рдЧреНрдирд▓ (рд╣реИрдо, рд╣реИрдорд┐рдВрдЧ, рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЖрджреЗрд╢реЛрдВ, рдЖрджрд┐) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЦрд┐рдбрд╝рдХреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕реВрддреНрд░ рдкрд░рд┐рдорд┐рдд рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ
k рдФрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рджрд╕реНрдп рд╡рд┐рдВрдбреЛ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдЕрдХреНрд╕рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рд╡рд┐рдВрдбреЛ рд╣реИ: рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрд░реНрдбрд░ (3 рд╕реЗ 11 рддрдХ)ред рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреБрдгрд╛рдВрдХ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рд╡рд┐рдВрдбреЛ рд╕реЗрдЯ рдХрдИ рд╡рд░реНрдгрдХреНрд░рдореАрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реИ, рдФрд░ рдЧреЙрд╕ рдпрд╛ рдХреИрд╕рд░ рдЬреИрд╕реА рдЬрдЯрд┐рд▓ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдирдЯрд╛рд▓ рдпрд╛ рдлреНрд▓реИрдЯ-рдЯреЙрдк рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рд░ рд╡рд╛рд▓реА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреА рдПрдХ рдХрд┐рд╕реНрдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рдХреЗ рд╕рдорд╛рди рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рд╕рджрд╕реНрдп рд╣реИрдВ, рд╕рд╛рдЗрдб рд▓реЙрдмреНрд╕ рдХреЗ рд╕реНрддрд░ рдХрд╛ рдордЬрдмреВрдд рджрдорди (рдЦрд┐рдбрд╝рдХреА рдХреЗ рдХрд╛рд░реНрдп рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрдзреАрди)ред рдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред
FPGA рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди - рдкрд╛рд░рдВрдкрд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг
FPGAs рдореЗрдВ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рд╕реНрддреНрд░реАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рднреА рд╡рд┐рдВрдбреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ VHDL рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ:
- bh_win_7term - рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ 7 рдСрд░реНрдбрд░, рд╕рд╛рдЗрдб рд╕реНрдХреИрдлреЛрд▓реНрдб рдХреЗ рдЕрдзрд┐рдХрддрдо рджрдорди рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд┐рдбрд╝рдХреАред
- bh_win_5term - рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ 5 рдСрд░реНрдбрд░ рдореЗрдВ рдПрдХ рдлреНрд▓реИрдЯ рдЯреЙрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рд╢рд╛рдорд┐рд▓ рд╣реИред
- bh_win_4term - рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ 4 рдХреЗ рдЖрджреЗрд╢ рдореЗрдВ рдирдЯрд╛рд▓ рдФрд░ рдмреНрд▓реИрдХрдореИрди-рдирдЯрд╛рд▓ рд╡рд┐рдВрдбреЛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- bh_win_3term - рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ 3 рдЖрджреЗрд╢,
- рд╣рдорд┐рдВрдЧ_рд╡рд┐рди - рд╣реЗрдорд┐рдВрдЧ рдФрд░ рд╣рдиреНрди рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВред
рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рд╡рд┐рдВрдбреЛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░рд┐рдорд╛рдг рдХреЗ 3 рдЖрджреЗрд╢ рд╣реИрдВ:
entity bh_win_3term is generic ( TD : time:=0.5ns;
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ
DSP48E1 рдФрд░ DSP48E2 рдиреЛрдбреНрд╕ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
UNISIM рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдЕрдВрддрддрдГ
рдореБрдЭреЗ рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЧрдгрдирд╛ рдХреА рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛
рд╣реИ , рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдпрд╣ рдореБрдлреНрдд рд▓рдЧрд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬ рдФрд░ рдЖрд╕рд╛рди рд╣реИ рдЬреИрд╕реЗ
P = A * B + C рдФрд░ рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:
attribute USE_DSP of <signal_name>: signal is "YES";
рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдареЛрд░рддрд╛ рд╕реЗ рддрддреНрд╡ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рддреАрдп рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рд╡рд╛рдбреЛ hls
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ
рд╡рд┐рд╡рдбреЛ рдПрдЪрдПрд▓рдПрд╕ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдХреЛрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдореИрдВ рд╡рд┐рд╡рд╛рдбреЛ рдПрдЪрдПрд▓рдПрд╕ рдХреЗ рдореБрдЦреНрдп
рд▓рд╛рднреЛрдВ рдХреА рд╕реВрдЪреА рджреВрдВрдЧрд╛: рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХреА рдЙрдЪреНрдЪ рдЧрддрд┐ (
рд╕рдордп-рд╕реЗ-рдмрд╛рдЬрд╝рд╛рд░ ) C рдпрд╛ C ++, рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдХрд╕рд┐рдд рдиреЛрдбреНрд╕ рдХрд╛ рддреНрд╡рд░рд┐рдд рдореЙрдбрд▓рд┐рдВрдЧ, рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рдЪреАрд▓реЗ рд╡рд┐рдиреНрдпрд╛рд╕ (рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) рдХреЛ рдкреЗрд╢ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рдЧрддрд┐ рдФрд░ рдирд┐рд░реНрджреЗрд╢рди, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реАрдорд╛ред рд╢рд╛рд╕реНрддреНрд░реАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдПрдлрдкреАрдЬреАрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЙрдк-рдЕрдкрдирд╛рдиреЗ рдХреА рд▓рд╛рдЧрдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрди рдЧрддрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреБрд░рд╛рдиреЗ рдЖрд░рдЯреАрдПрд▓ рддрд░реАрдХреЛрдВ (рд╡реАрдПрдЪрдбреАрдПрд▓, рд╡реЗрд░рд┐рд▓реЛрдЧ, рдПрд╕рд╡реА) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВред рдареАрдХ рд╣реИ, рд╕рдмрд╕реЗ рдмрдбрд╝реА
рдЦрд╛рдореА рдПрдХ рдирдЦрд░реЗ рдХреЗ рд╕рд╛рде рдирд╛рдЪ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ Xilinx рд╕реЗ рд╕рднреА CAD рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред (рдиреЛрдЯ: рд╡рд┐рд╡рд╛рдбреЛ рдПрдЪрдПрд▓рдПрд╕ рдбреАрдмрдЧрд░ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реА ++ рдореЙрдбрд▓ рдореЗрдВ, рдЕрдХреНрд╕рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╡рд╛рдбреЛ рдПрдЪрдПрд▓рдПрд╕
рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреЗ рдлрд╛рдпрджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЯрд┐рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЫрд╡рд┐ рд╡рд┐рд╡рд╛рдбреЛ HLS рдореЗрдВ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд CORDIC рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓реЙрдЧ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИред рдпрд╣ рдХрд╛рдлреА рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕реА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдорд╛рддреНрд░рд╛, рдХрд░реНрдиреЗрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рд▓реВрдкреНрд╕ рдФрд░ рдЙрдирдХреЗ рдЧреБрдг, рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдореЗрдВ рджреЗрд░реА, рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓ (рд╕реАрд░рд┐рдпрд▓ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рд░реНрдХрд┐рдЯ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдорд╣рддреНрд╡рдкреВрд░реНрдг):

рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ (рдХрд╛рд░реНрдпреЛрдВ) рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЪрд░рдг рд╢реВрдиреНрдп рдкрд░, рдЪрд░рдг рдбреЗрдЯрд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЪрд░рдг 7 рдФрд░ 8 рдкрд░, CORDIC рдиреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рд╡рд┐рд╡рд╛рдбреЛ HLS рдХрд╛ рдкрд░рд┐рдгрд╛рдо: C рдХреЛрдб рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд RTL рдХрд░реНрдиреЗрд▓ред рд▓реЙрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдордп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ:

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП, рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдзрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ - VHDL рдпрд╛ C ++ рдореЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдСрдкрд░реЗрд╢рди рдХреА рдЕрдзрд┐рдХ рдЖрд╡реГрддреНрддрд┐ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдзрд┐рдХрддрдо рдбрд┐рдЬрд╝рд╛рдЗрди рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред
рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдХреА рдХрд┐ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдХрд┐рддрдирд╛ рд╕рдордп рдЦрд░реНрдЪ рдХрд░реВрдВрдЧрд╛ред рдореИрдВрдиреЗ VHDL рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡рд┐рд╡рд╛рдбреЛ HLS ~ 12 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред
рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддреБрд▓рдирд╛
CORDIC рдХреЛрд░ рдХреЗ рд▓рд┐рдП HDL рдФрд░ C ++ рдХреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛрдбрд╝, рдШрдЯрд╛рд╡ рдФрд░ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╡реАрдПрдЪрдбреАрдПрд▓ рдкрд░, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рддреАрди рдбреЗрдЯрд╛ рд╡реИрдХреНрдЯрд░ рд╣реИрдВ - рдПрдХ рдХреЛрдг рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рдЕрдиреНрдп рджреЛ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╛рдк рдФрд░ рдХреЙрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (рд╡рд┐рдХреА рд╕реЗ рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ):

Z рдорд╛рди рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рдХреЗ, X рдФрд░ Y рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред HDL рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрдХреНрд░реАрдп рдЦреЛрдЬ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛:
constant ROM_LUT : rom_array := ( x"400000000000", x"25C80A3B3BE6", x"13F670B6BDC7", x"0A2223A83BBB", x"05161A861CB1", x"028BAFC2B209", x"0145EC3CB850", x"00A2F8AA23A9", x"00517CA68DA2", x"0028BE5D7661", x"00145F300123", x"000A2F982950", x"000517CC19C0", x"00028BE60D83", x"000145F306D6", x"0000A2F9836D", x"0000517CC1B7", x"000028BE60DC", x"0000145F306E", x"00000A2F9837", x"00000517CC1B", x"0000028BE60E", x"00000145F307", x"000000A2F983", x"000000517CC2", x"00000028BE61", x"000000145F30", x"0000000A2F98", x"0000000517CC", x"000000028BE6", x"0000000145F3", x"00000000A2FA", x"00000000517D", x"0000000028BE", x"00000000145F", x"000000000A30", x"000000000518", x"00000000028C", x"000000000146", x"0000000000A3", x"000000000051", x"000000000029", x"000000000014", x"00000000000A", x"000000000005", x"000000000003", x"000000000001", x"000000000000" ); pr_crd: process(clk, reset) begin if (reset = '1') then
рд╕реА ++ рдореЗрдВ, рд╡рд┐рд╡рд╛рдбреЛ рдПрдЪрдПрд▓рдПрд╕ рдореЗрдВ, рдХреЛрдб рд▓рдЧрднрдЧ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рдХреЙрд░реНрдб рдХрдИ рдмрд╛рд░ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ:
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкрд╛рд░реА рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЪрдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡рд┐рд╡рд╛рдбреЛ HLS рдореЗрдВ рд╕рднреА рд▓реВрдкреНрд╕ "рдврд╣ рдЧрдП" рд╣реИрдВ рдФрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ C ++ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╣реИред
HLS UNROLL рдпрд╛
HLS PIPELINE рдкреНрд░рд╛рдЧреНрдо рдХреА рд╢реБрд░реВрдЖрдд рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдЧрдгрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣ FPGA рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдШрдбрд╝реА рдЪрдХреНрд░ рдореЗрдВ рдХреЛрд░ рдХреЗ рдирдП рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдФрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╡реАрдПрдЪрдбреАрдПрд▓ рдФрд░ рд╕реА ++ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдВрддрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рджреЛ рдЧреБрдирд╛ рд╣реИред рдЕрдиреНрдп FPGA рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╕рдВрдЧрддрд┐ рдирдЧрдгреНрдп рд╣реИред рдореИрдВ C ++ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдпрд╛ рдХреЛрдб рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓рдХрд░, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЯрд╛рдЗрдорд┐рдВрдЧ 350 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ рджрд┐рдП рдЧрдП рдХреЛрд░ рдлреНрд░рд┐рдХреНрд╡реЗрдВрд╕реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдЪреВрдВрдХрд┐ рдЧрдгрдирд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд-рдмрд┐рдВрджреБ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ FPGAs рдкрд░ DSP рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛ рдХреА рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рд╣реЛрдЧреА, рд╡рд┐рдВрдбреЛ рдУрд╡рд░рд▓реЗ рдХреА рд╕рдЯреАрдХрддрд╛ рдЙрддрдиреА рд╣реА рдмреЗрд╣рддрд░ рд╣реЛрдЧреАред рджреВрд╕рд░реА рдУрд░, рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЕрдкрд░реНрдпрд╛рдкреНрдд рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕рд╛рде, рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддрд░рдВрдЧ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╡рд░реНрдгрдХреНрд░рдореАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрдо рд╕реЗ рдХрдо 20 рдмрд┐рдЯреНрд╕ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬрдм 2 ^ 20 = 1M рдирдореВрдиреЛрдВ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдХреЗрдд рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рд▓реЗрдЦ рдмрд╛рд╣рд░реА рдореЗрдореЛрд░реА рдпрд╛ FPGA рдмреНрд▓реЙрдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред FPGAs (рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдбреАрдПрд╕рдкреА рдмреНрд▓реЙрдХреЛрдВ) рдХреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рджреА рдЧрдИ рд╣реИред CORDIC рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХрд┐рд╕реА рднреА рд▓рдВрдмрд╛рдИ рдФрд░ рдХреНрд░рдо рдХреЗ рдХрд┐рд╕реА рднреА рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ (рдХрд╛рд░рдг рдХреЗ рднреАрддрд░) рдХреЗ рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рд╡рд░реНрдгрдХреНрд░рдореАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред
рдПрдХ рдЕрдзреНрдпрдпрди рдХреЗ рдПрдХ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ ~ 375 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ 1M рдирдореВрдиреЛрдВ рдкрд░ 5 рдФрд░ 7 рдХреЗ рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреНрд▓реИрдХрдореИрди-рд╣реИрд░рд┐рд╕ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХ рдХрдбрд╝рд╛рдИ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд░реНрдиреЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдФрд░ ~ 400 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ CORDIC рдкрд░ рдЖрдзрд╛рд░рд┐рдд FFT рдХреЗ рд▓рд┐рдП рд░реЛрдЯрд░реА рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рдЬрдирд░реЗрдЯрд░ рднреА рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдкреНрд░рдпреБрдХреНрдд FPGA рдХреНрд░рд┐рд╕реНрдЯрд▓: рдХрд┐рдирдЯреЗрдХреНрд╕ рдЕрд▓реНрдЯреНрд░рд╛рд╕реНрдХреЗрд▓ + (xcku11p-ffva1156-2-e)ред
рдЧреАрдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ
рдХрд░реЗрдВ ред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ Matlab рдореЗрдВ рдПрдХ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓, рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ VHDL рдореЗрдВ CORDIC, рд╕рд╛рде рд╣реА Vivado HLS рдХреЗ рд▓рд┐рдП C ++ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореЙрдбрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЙрдкрдпреЛрдЧреА рд▓реЗрдЦ
рдореИрдВ рдбреАрдПрд╕рдкреА рдкрд░ рдПрдХ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ -
рдЖрдпрдлрд┐рдЪрд░ рдИред, рдЬрд░реНрд╡рд┐рд╕ рдмреАред рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!