FPGA рд╕рд░рд▓ рд╣реИ рдпрд╛ рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдЕрд▓реБ рд╣реИ

Habr├й рдкрд░ рдЙрди рдкрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ, рд▓реЗрдХрд┐рди FPGA рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВред FPGAs рдХреЗ рд▓рд┐рдП рдлрд╝рд░реНрдорд╡реЗрдпрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ FPGAs рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдлрд░реНрдореЛрдВ рдХреЗ CAD рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрд░реЗрдЦ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЬ рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдорд╡реЗрд▓ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╡рд░рдг рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХреНрдЯрд▓ рдП 3 рдкреА 250 (рд╕рдорддреБрд▓реНрдп рдЧреЗрдЯреНрд╕ 250 000 рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде) рдХреЗ рдПрдлрдкреАрдЬреАрдП рдкрд░ рдПрдПрд▓рдпреВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ FPGA рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо ASIC рдпрд╛ BMK рдЪрд┐рдкреНрд╕ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ FPGA рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдлрд░реНрдорд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдХреЛ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

1. рд╣рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХрд╛рдЧрдЬ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдкрд░, рд╕рд┐рд░ рдореЗрдВ рдпрд╛ рд╡рд┐рдЬрд╝рд┐рдпреЛ рдореЗрдВ, рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдХрд░рдг рдХрд╛ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЖрд░реЗрдЦред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ ALU рд╣реИ, рдЗрд╕рдореЗрдВ рдЗрдирдкреБрдЯреНрд╕ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдХреЗ 4 рдмрд┐рдЯреНрд╕ рдХреЗ рджреЛ рдСрдкрд░реЗрдВрдб, рдПрдХ рд░реАрд╕реЗрдЯ рдЗрдирдкреБрдЯ, рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдЗрдирдкреБрдЯ, 2 рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЛрдб рдЗрдирдкреБрдЯ (00 - рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 01 - рдШрдЯрд╛рд╡, 10 - рдЧреБрдгрди, 11 - рдкрд░рд┐рдгрд╛рдо 0 рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 8 рдЕрдВрдХреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдоред
2. рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЙрдбрд▓ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреБрдЫ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЬреИрд╕реЗ рдХрд┐ C #, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЗрд╕ рдЖрдЗрдЯрдо рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ C рдпрд╛ C / рдореЙрдбрд▓ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореБрдЭрд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред
3. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦреЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡реАрд░рд┐рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдПрдирдкреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдпрд╛ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рдЗрдХреНрд░реЛрдХреНрд░реЗрд╕реАрдЯ рдХреЛ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдпрд╛ рдЯреНрд░реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХред
рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб рдореИрдВ рддрд╛рд░реНрдХрд┐рдХ рдореЙрдбрд▓ рдХреЛ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
4. рд╣рдо рдЕрдкрдиреЗ рддрд╛рд░реНрдХрд┐рдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░ рднреА рд╣рдо рдкрд░реАрдХреНрд╖рдг рдФрд░ рдореЙрдбрд▓ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
5. рд╕рд┐рдореБрд▓реЗрд╢рди рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЛ рдЪрд▓рд╛рдПрдВред рдореИрдВ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП QuestaSim рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ Mentor рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗ ModelSim рдХрд╛ рдПрдХ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
6. рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдореЗрдВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗ рдкреНрд░реЗрд╕рд┐рдЬрди рд╕рд┐рдВрдереЗрд╕рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЖрдк рдЙрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪрд┐рдк рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ * .edf рдФрд░ рд╡реЗрд░рд┐рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдпрд╣ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдореЙрдбрд▓ рд╣реИ рдЬреЛ CAD рдХреЗ рд╕рдВрд╢реНрд▓реЗрд╖рдг рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХ FPGA рдореЗрдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдореИрдВ рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдиреЗрдЯ-рд╢реАрдЯ рдХрд╣реВрдВрдЧрд╛ред
7. рд╡реЗрд░рд┐рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдиреЛ-рд╢реАрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рдореЙрдбрд▓ рдХреЗ рдмрдЬрд╛рдп рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрд╢реНрд▓реЗрд╖рдг рд╕рдлрд▓ рд╣реИ рдФрд░ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХреБрдЫ рднреА рдЕрддрд┐рд░реЗрдХ рдирд╣реАрдВ рдлреЗрдВрдХрддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░ рднреА, рдЖрдк рдФрдкрдЪрд╛рд░рд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рддрд╛рд░реНрдХрд┐рдХ рдореЙрдбрд▓ рдХреА рдкреНрд░рд╛рдкреНрдд рдиреЗрдЯ-рд╕реВрдЪреА рдХреА рдЕрдиреБрд░реВрдкрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред
8. рдпрджрд┐ рдиреЗрдЯрд▓рд┐рд╕реНрдЯ рдиреЗ рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдХрд░ рд▓реА рд╣реИ, рддреЛ рдЖрдк FPGA рдореЗрдВ рдиреЗрдЯрд▓рд┐рд╕реНрдЯ рдХреЛ рд░рдЦрдирд╛ рдФрд░ рдЯреНрд░реЗрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХреНрдЯрд▓ рдбрд┐рдЬрд╛рдЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдПрдХреНрдЯреЗрд▓ рд▓рд┐рдмрд░реЛ рдЖрдИрдбреАрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рд╕рдорд╛рдкреНрдд FPGA рдлрд░реНрдорд╡реЗрдпрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╕рд░реНрдХрд┐рдЯ рдФрд░ рдЗрд╕рдХреЗ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рд╕рдордп рджреЗрд░реА, рдиреЗрдЯ-рд╕реВрдЪреА рдлрд┐рд░ рд╕реЗ Verilog рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдФрд░ рджреЗрд░реА * .sdf рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
9. рдЕрдм рдЖрдкрдХреЛ рд╕рдордп рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЗрдЦрдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдиреЗрдЯ-рд╕реВрдЪреА рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
10. рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдлреНрд▓реИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рд╡рд╛рдкрд╕ ALU рдореЗрдВред
SystemVerilog рдХреЗ рдХреЛрдб рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рднрд╛рдЧ рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдХреНрд▓рд╛рд╕ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреАрд╡рд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдпрд╣ рджреБрдЦрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди SystemVerilog рдпрд╛ рдХрдо рд╕реЗ рдХрдо Verilog рдХрд╛ рдХреЛрдИ рдЯреИрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди VHDL рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреИрдЧ рд╣реИ, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ ...

рдЖрдЗрдП рднрд╛рдЧреЛрдВ рдореЗрдВ ALU рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдирд╛рдо рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред
module ALU ( input rst, clk, //    input [1:0] cmd, //  input [3:0] a,b, // output logic [7:0] res // ); 

рдлрд┐рд░ рд╣рдо рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдкрд╛рд░реНрдЯ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рднрд╛рдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЖрдВрддрд░рд┐рдХ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред
  logic [3:0] A, B; logic [1:0] Cmd; logic [7:0] outpRes; 


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

  always_comb begin unique case(Cmd) 2'b00: begin:add outpRes = A+B; end:add 2'b01: begin:sub outpRes = AB; end:sub 2'b10: begin:mul outpRes = A*B; end:mul 2'b11: begin:div outpRes = 0; end:div endcase end 


рдФрд░ рдЕрдВрдд рдореЗрдВ, ALU рдХрд╛ рдЯреНрд░рд┐рдЧрд░ рдпрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╣рд┐рд╕реНрд╕рд╛, рдХреНрдпреЛрдВрдХрд┐ ALU рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╣реЛрдЧрд╛
  always_ff @(posedge clk, posedge rst) if (rst) begin res <= '0; A <='0; B <='0; Cmd <='0; end else begin A[3:0] <= a; B[3:0] <= b; Cmd <=cmd; res <= outpRes; end 

рд╣рдо рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ:
 endmodule 


рдЕрдм рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд▓рд╛рдПрдВрдЧреЗ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдордп рдЖрд░реЗрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:



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



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

рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд┐рдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ, рдлрд┐рд░ рдореИрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ FPGA рдирд┐рд╖реНрдХрд░реНрд╖ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░реВрдВрдЧрд╛:



рдиреАрдЪреЗ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ рдЕрдиреБрд░реЗрдЦрдХ (рдХреНрд░рд┐рд╕реНрдЯрд▓ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХрд╛ рд╕реНрдерд╛рди) рдХрд╛ рдкрд░рд┐рдгрд╛рдо, рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЖрдк рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдкреАрд▓рд╛ рдШрдбрд╝реА рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдкрд░ рдореИрдВ рдЕрдкрдиреА рдХрд╣рд╛рдиреА рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡реАрдбрд┐рдпреЛ рдмрд╛рдж рдореЗрдВ рд╣реЛрдЧрд╛ред

рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдкрд╛рда рдореЗрдВ рд╢реИрд▓реА рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд▓реЗрдЦрдХ рдирд╣реАрдВ рд╣реВрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВред

PS рдЬреЛ 3 рд╡рд░реНрд╖реЛрдВ рд╕реЗ FPGAs рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ ALU рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдкреВрд░реА рд╣реБрдИ, рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдХрдиреАрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд▓реЗрдЖрдЙрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

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


All Articles