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

рдХрдорд╛рди рдкреНрд░рдгрд╛рд▓реА
рд╣рдордиреЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЕрдм "рдЗрд╕ рд╕рдм рдХреЗ рд╕рд╛рде рдЙрддрд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред" рдЕрдм рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдорд╛рдВрдб рдХреЛ рдХрдИ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рд╕реНрдЯреИрдХ рдкрд░ рд╢рд╛рдмреНрджрд┐рдХ (рд╕рдВрдЦреНрдпрд╛) рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ
- рд╕рдВрдХреНрд░рдордг (рд╕рд╢рд░реНрдд рд╢рд╛рдЦрд╛, рд╕рдмрд░реВрдЯреАрди рдХреЙрд▓, рд░рд┐рдЯрд░реНрди)
- рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪ (рдкрдврд╝реЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ)
- рдмрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ (рдЕрд░реНрде рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ)ред
- ALU рдХреА рдЯреАрдореЗрдВред
- рдЕрдиреНрдп рдЯреАрдореЗрдВ
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреАрдо рдХреА 9 рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рд╛рд╣рд┐рддреНрдп рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдХрдорд╛рдВрдб рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдбреЗрдЯрд╛ рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдХрдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕реНрдЯреИрдХ рдкрд░ рд╢рд╛рдмреНрджрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХрдорд╛рдВрдб рдкреНрд░рд╛рд░реВрдк рдЪреБрдирд╛:
рд╕реНрдореГрддреА-рд╡рд┐рдЬреНрдЮрд╛рди | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
рдЬрдЧрдордЧрд╛рддрд╛ | 1 | рдЬрдЧрдордЧрд╛рддрд╛ |
---|
рд╡рд░рд┐рд╖реНрда, 8 рдмрд┐рдЯреНрд╕ рдХрдорд╛рдВрдб рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реЛрдЧрд╛ред рд╢реЗрд╖ 8 рдмрд┐рдЯреНрд╕ рд╕реАрдзреЗ рд╕реНрдЯреИрдХ рдкрд░ рд▓реЛрдб рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдХреНрд╖рдорддрд╛ 32 рдмрд┐рдЯреНрд╕ рд╣реИ, рдФрд░ рдЕрдм рддрдХ рдХреЗрд╡рд▓ 8 рдмрд┐рдЯреНрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдП рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдИ LIT рдХрдорд╛рдВрдб рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ (рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реБрдП), рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдХ рдкрд░ рд╢реАрд░реНрд╖ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ 8 рдмрд┐рдЯреНрд╕ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рд╕реЗ рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдорд╛рди рд▓рд┐рдЦрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдХрдИ рдПрд▓рдЖрдИрдЯреА рдХрдорд╛рдВрдб рдХреЗ рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рднреА рдмрд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдХрдИ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдирдУрдкреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЯреАрдо рдЧреНрд░реБрдкрд┐рдВрдЧ
рдореИрдВрдиреЗ рдЖрд╕рд╛рди рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рднреА рдХрдорд╛рдВрдб рдХреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рдо рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡реЗ рд╕реНрдЯреИрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдореВрд╣ рдмрдирд╛рдПрдВрдЧреЗред
рд╕реНрдореГрддреА-рд╡рд┐рдЬреНрдЮрд╛рди | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
рдЬрдЧрдордЧрд╛рддрд╛ | 0 | рд╕рдореВрд╣ | рдЯреАрдо |
---|
рдЯреАрдореЛрдВ рдХреЗ рд╕рдореВрд╣:
рд╕рдореВрд╣ | рдвреЗрд░ рд╕реЗ рд▓реЗрддрд╛ рд╣реИ | рдвреЗрд░ рдкрд░ рдзрдХреНрдХрд╛ | рдЙрджрд╛рд╣рд░рдг |
---|
0 | 0 | 0 | рдПрдирдУрдкреА |
---|
1 | 0 | 1 | DEPTH |
---|
2 | 1 | 0 | рдбреНрд░реЙрдк |
---|
3 | 1 | 1 | DUP @ |
---|
4 | 2 | 0 | , OUTPORT |
---|
5 | 2 | 1 | рдЕрдВрдХрдЧрдгрд┐рдд (+, -,) |
---|
рдмрджрд▓рд╛рд╡:
рд╕реНрдореГрддреА-рд╡рд┐рдЬреНрдЮрд╛рди | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
рдЬреЗрдПрдордкреА | 0 | 2 | 0 |
---|
рдХреЙрд▓ | 0 | 2 | 1 |
---|
рдпрджрд┐ | 0 | 4 | 0 |
---|
рдЖрд░рдИрдЯреА | 0 | 0 | 1 |
---|
JMP рдФрд░ CALL рдХрдорд╛рдВрдб, рд╕реНрдЯреИрдХ рд╕реЗ рдПрдбреНрд░реЗрд╕ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ (рдХреЙрд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдЯреИрдХ рдкрд░ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдбрд╛рд▓рддрд╛ рд╣реИ)ред
рдЖрдИрдПрдл рдХрдорд╛рдВрдб рд╕рдВрдХреНрд░рдордг рдкрддрд╛ (рд╕реНрдЯреИрдХ рдкрд░ рд╢реАрд░реНрд╖ рд╕рдВрдЦреНрдпрд╛) рдФрд░ рд╕рдВрдХреНрд░рдордг рдзреНрд╡рдЬ (рдЕрдЧрд▓реА рд╕рдВрдЦреНрдпрд╛) рд▓реЗрддрд╛ рд╣реИред рдпрджрд┐ рд╕рдВрдХреЗрдд рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдкрддреЗ рдкрд░ рд╕рдВрдХреНрд░рдордг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд░рдИрдЯреА рдЯреАрдо рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд╢реАрд░реНрд╖ рдирдВрдмрд░ рдЙрдард╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдКрдкрд░ рдЬрд╛рддреА рд╣реИред
рдпрджрд┐ рдХрдорд╛рдВрдб рдПрдХ рд╕рдВрдХреНрд░рдордг рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ рдПрдХ рд╕реЗ рдмрдврд╝ рдХрд░ рд╣реИред
рдХрдорд╛рдВрдб рдЯреЗрдмрд▓
рдХрдорд╛рдВрдб
рд╕рдВрдХреЗрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рд╢рдмреНрдж рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдЯреИрдХ рд╕реНрдерд┐рддрд┐> - рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рд╕реНрдЯреИрдХ рд╕реНрдерд┐рддрд┐
рд╢рдмреНрдж>рд╕реНрдЯреИрдХ рдХрд╛ рд╢реАрд░реНрд╖ рджрд╛рдИрдВ рдУрд░ рд╣реИ, рдЕрд░реНрдерд╛рдд 2 3 - 5 рд▓рд┐рдЦрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╢рдмреНрдж рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирдВрдмрд░ 3 рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рдиреАрдЪреЗ рдирдВрдмрд░ 2 рдерд╛; рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓реЗ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ 5 рдирдВрдмрд░ рдерд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
DUP (a - aa)
DROP (ab - a)
рдХрдорд╛рдВрдб рдХрд╛ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рд▓реЗрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣ \ рд▓ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|
0 | рдПрдирдУрдкреА | рдЖрд░рдИрдЯреА | | | | | | | | |
---|
1 | рдЕрд╕реНрдерд╛рдпреА> | DEPTH | RDEPTH | DUP | рд╕реЗ рдЕрдзрд┐рдХ | | | | | |
---|
2 | рдЬреЗрдПрдордкреА | рдХреЙрд▓ | рдбреНрд░реЙрдк | | | | | | | |
---|
3 | @ | INPORT | рдирд╣реАрдВ | SHL | SHR | SHRA | | | | |
---|
4 | рдпрджрд┐ | ! | OUTPORT | | | | | | | |
---|
5 | рдЬрд╛рдкрд╛рдиреА | + | - | рдФрд░ | рдпрд╛ | XOR | = | > | < | * |
---|
рдЯреАрдо | рд╕реНрдЯреИрдХ рд╕рдВрдХреЗрддрди | рд╡рд┐рд╡рд░рдг |
---|
рдПрдирдУрдкреА | | рдХреЛрдИ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВред рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд┐рд▓рдВрдмрддрд╛ |
DEPTH | - рдбреА | рдЗрд╕ рд╢рдмреНрдж рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд░реЛрдХрдирд╛ |
RDEPTH | - рдбреА | рдЗрд╕ рд╢рдмреНрдж рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд░реЛрдХрдирд╛ |
DUP | рдП - рдПрдП | рдбреБрдкреНрд▓реАрдХреЗрдЯ рдЯреЙрдк рдирдВрдмрд░ |
рд╕реЗ рдЕрдзрд┐рдХ | рдПрдмреА - рдПрдмреАрдП | рд╢реАрд░реНрд╖ рдкрд░ рджреВрд╕рд░реЗ рдирдВрдмрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ |
рдбреНрд░реЙрдк | рдП - | рд╢реАрд░реНрд╖ рдирдВрдмрд░ рд╣рдЯрд╛рдПрдВ |
@ | рдП - рдбреА | рдкрддрд╛ A рдкрд░ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдкрдврд╝рдирд╛ |
INPORT | рдП - рдбреА | рдкрддреЗ рдкрд░ рдмрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ |
рдирд╣реАрдВ | A - 0 | -1 | | рд▓реЙрдЬрд┐рдХрд▓ рдиреЙрдЯ рдЯреЙрдк рдирдВрдмрд░ (0 рдХреЛ -1 рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рдЕрдиреНрдп рдирдВрдмрд░ рдХреЛ 0 рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) |
SHL | рдП - рдмреА | рд╢реАрд░реНрд╖ рдирдВрдмрд░ 1 рдХреЛ рдмрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ рдХрд░реЗрдВ |
SHR | рдП - рдмреА | рд╢реАрд░реНрд╖ рдирдВрдмрд░ рдХреЛ рджрд╛рдИрдВ рдУрд░ 1 рдЕрдВрдХ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ |
SHRA | рдП - рдмреА | рджрд╛рдИрдВ рдУрд░ рд╢реАрд░реНрд╖ рд╕рдВрдЦреНрдпрд╛ 1 рдЕрдВрдХ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдмрджрд▓рд╛рд╡ (рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ) |
! | DA - | рдбреЗрдЯрд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдкрддреЗ рдкрд░ рдбреЗрдЯрд╛ рдбреА рд▓рд┐рдЦрдирд╛ |
OUTPORT | DA - | рдкрддреЗ рдкрд░ рдбреЗрдЯрд╛ рдбреА рдХреЛ "рдмрд╕" рдореЗрдВ рд▓рд┐рдЦрдирд╛ (рдПрдХ рдШрдбрд╝реА рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП рдЖрдИрдУрд╡рд░ рд╕рд┐рдЧреНрдирд▓ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкрд░рд┐рдзрд┐ рдХреЛ рдЗрд╕ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдкрддрд╛ "рдкрдХрдбрд╝рдирд╛" рдЪрд╛рд╣рд┐рдП) |
рдЬрд╛рдкрд╛рдиреА | рдПрдмреА - рдмреА | рджреВрд╕рд░реЗ рдирдВрдмрд░ рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдКрдкрд░ рд╕реЗ рд╣рдЯрд╛рдХрд░ (рдирдВрдмрд░ TempReg рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЬрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ) |
рдЕрд╕реНрдерд╛рдпреА> | - рдП | TempReg рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
+ | рдПрдмреА - рдП + рдмреА | рдвреЗрд░ рдирдВрдмрд░ |
- | рдПрдмреА - рдПрдмреА | рд╢реАрд░реНрд╖ рдирдВрдмрд░ рд╕реЗ рджреВрд╕рд░реЗ рдирдВрдмрд░ рд╕реЗ рдШрдЯрд╛рд╡ |
рдФрд░ | рдПрдмреА - рдП рдФрд░ рдмреА | рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдПрдВрдб рдУрд╡рд░ рд╣рд╛рдЗрдЯреНрд╕ |
рдпрд╛ | рдПрдмреА - рдП рдпрд╛ рдмреА | рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдпрд╛ рдКрдкрд░реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░ |
XOR | рдПрдмреА - рдПрдХ рдПрдХреНрд╕реЛрд░ рдмреА | рдКрдкрд░реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ XOR |
= | рдПрдмреА - 0 | -1 | | рдКрдкрд░реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрдиред рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рд╕реНрдЯреИрдХ рдкрд░ -1 рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ 0 |
> | рдПрдмреА - 0 | -1 | | рдКрдкрд░реА рдирдВрдмрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ред рдпрджрд┐ рдП> рдмреА, рдпрд╣ рд╕реНрдЯреИрдХ рдкрд░ -1 рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ 0. рд╕рд╛рдЗрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рддреБрд▓рдирд╛ |
< | рдПрдмреА - 0 | -1 | | рдКрдкрд░реА рдирдВрдмрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ред рдпрджрд┐ рдП <рдмреА, рд╕реНрдЯреИрдХ рдкрд░ -1 рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ 0. рд╕рд╛рдЗрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рддреБрд▓рдирд╛ |
* | рдПрдмреА - рдП * рдмреА | рдКрдкрд░реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЧреБрдгрди |
рдЖрдк рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдбрд╝реА рдЪрдХреНрд░ рдореЗрдВ рд╕реНрдЯреИрдХ рдкрд░ 1 рдирдВрдмрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ; рдХрд┐рд▓реЗ рдореЗрдВ рдПрдХ
SWAP рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рд╕реНрдЯреИрдХ рдкрд░ рд╢реАрд░реНрд╖ 2 рдирдВрдмрд░реЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ 2 рдЯреАрдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб,
NIP (ab - b), рд╢реАрд░реНрд╖ рд╕реЗ рджреВрд╕рд░рд╛ рдирдВрдмрд░ "a" рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдХрдорд╛рдВрдб
TEMP> (- a) рдЗрд╕ рдирдВрдмрд░ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрддрд╛ рд╣реИред
рдХреЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдирд╛
рд╕реНрдореГрддрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:
process(clk) if rising_edge(clk) then if WeA = '1' then Ram(AddrA) <= DinA; end if; DoutA <= Ram(AddrA); DoutB <= Ram(AddrB); end if; end process;
рд░рд╛рдо рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
subtype RamSignal is std_logic_vector(RamWidth-1 downto 0); type TRam is array(0 to RamSize-1) of RamSignal; signal Ram: TRam;
рдореЗрдореЛрд░реА рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
signal Ram: TRam := (0 => conv_std_logic_vector(0, RamWidth), 1 => conv_std_logic_vector(1, RamWidth), 2 => conv_std_logic_vector(2, RamWidth),
рдПрдХ рд╕рдорд╛рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреИрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
process(clk) if rising_edge(clk) then if WeA = '1' then Stack(AddrA) <= DinA; DoutA <= DinA; else DoutA <= Stack(AddrA); end if; DoutB <= Stack(AddrB); end if; end process;
рдореЗрдореЛрд░реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рдорд╛рди рдХреЛ "рдЖрдЧреЗ" рдХрд░рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде, рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рдорд╛рди рдХреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ, рдорд╛рдк рдХреЗ рдмрд╛рдж, рдЕрдЧрд▓реЗ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрди рдкреИрдЯрд░реНрдиреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
----------------------------------------------------------------------- | ram_type | Distributed | | ----------------------------------------------------------------------- | Port A | | aspect ratio | 16-word x 32-bit | | | clkA | connected to signal <clk> | rise | | weA | connected to signal <DSWeA> | high | | addrA | connected to signal <DSAddrA> | | | diA | connected to signal <DSDinA> | | | doA | connected to internal node | | ----------------------------------------------------------------------- | Port B | | aspect ratio | 16-word x 32-bit | | | addrB | connected to signal <DSAddrB> | | | doB | connected to internal node | | -----------------------------------------------------------------------
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реНрдг рдореЗрдореЛрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╣реИред
рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдореБрдЦреНрдп рдЪрдХреНрд░ - рдкрд╣рд▓реЗ рдШрдбрд╝реА рдЪрдХреНрд░ рдкрд░, рдЯреАрдо рдХрд╛ рдирдореВрдирд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдкрд░ - рдирд┐рд╖реНрдкрд╛рджрдиред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд┐рд╕ рдШрдбрд╝реА рдкрд░ рд╣реИ, рдПрдХ рд▓рд╛рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИред
process(clk) begin if rising_edge(clk) then if reset = '1' then
рдЖрджреЗрд╢ рдХреЛ рдбреАрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ "рдХреЗрд╕" рд╣реИред рд▓реЗрдЦрди рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ 3 рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджрд┐рдпрд╛:
- рдПрдХ рдорд╛рдорд▓рд╛, рдЬреЛ рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХреЗ рдкрддреЗ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛;
- рдЯреАрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдорд╛рдорд▓рд╛;
- рдПрдХ рдирдпрд╛ рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ (рдЖрдИрдкреА) рдмрдирд╛рдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ред
рдирдореВрдирд╛ рдЯреАрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдирд┐рдЪрд▓реЗ 4 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рднреА рдШреЛрд╖рд┐рдд рдЯреАрдо рд╕рдореВрд╣ рдЪрд┐рддреНрд░рд┐рдд рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдЯреАрдореЛрдВ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдореВрд╣ рджрд┐рдЦрд╛рдИ рджреЗред
рдЕрдЧрд▓рд╛ рдорд╛рдорд▓рд╛ рдЯреАрдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред рдпрд╣ рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдмрдирд╛рддрд╛ рд╣реИ (рдЯреЙрдЯреЛрд▓реЙрдЬреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ), рдСрдЙрдЯрдкреЛрд░реНрдЯ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЖрдИрдУрдЖрд░рд╡реА рд╕рд┐рдЧреНрдирд▓ рдЖрджрд┐ред
рдЕрдм рддрдХ, рдХреЗрд╡рд▓ 2 рдЯреАрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрдЯреИрдХ рдкрд░ рдирдВрдмрд░ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рд╢реАрд░реНрд╖ рджреЛ рдирдВрдмрд░ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рдпрд╣ "рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдпрджрд┐ рдпреЗ 2 рдЯреАрдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рддреЛ рдмрд╛рдХреА рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ "рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░" рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдФрд░ рдЖрдЦрд┐рд░реА рдорд╛рдорд▓рд╛ рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрддреЗ рдХрд╛ рдЧрдарди рд╣реИ:
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдХреНрд░рдордг рдЖрджреЗрд╢ред рд╕рдВрдХреНрд░рдордг рдХрд╛ рдкрддрд╛ рд╕реНрдЯреИрдХ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг
рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред рдореИрдВрдиреЗ рдПрдХ TestBench рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ 100 ns рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХреЗрд╡рд▓ рд░реАрд╕реЗрдЯ рд╕рд┐рдЧреНрдирд▓ рджрд┐рдпрд╛ред
рдХреЛрдб рдореЗрдореЛрд░реА рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
signal CodeMemory: TCodeMemory := ( 0 => "000000000",
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рдирдВрдмрд░реЛрдВ рдХреЛ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рдбреАрдЖрд░рдУрдкреА рдХрдорд╛рдВрдб рд╕реЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╕рдВрдХреНрд░рдордг, рд╕рдмрд░реВрдЯреАрди рдХреЙрд▓, рдФрд░ рд░рд┐рдЯрд░реНрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреБрдХрд╛рд░ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрди рдЪрд┐рддреНрд░реЛрдВ (рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп) рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдкреВрд░реА рдкрд░реАрдХреНрд╖рд╛:

рд╕рдВрдЦреНрдпрд╛ рд▓реЛрдбрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг:

рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЛрдбрд┐рдВрдЧ рдирдВрдмрд░

рдЖрдВрдХрдбрд╝рд╛ рд▓рд┐рдЯ 0 рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд░реАрд╕реЗрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп (рдЖрдИрдкреА = 0) рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдорд╛рдВрдб рдлрд╝рд┐рдВрдЪ рдЪрд░рдг (fetching = '1') рдореЗрдВ рд╣реИред рдкрд╣рд▓реЗ рдЙрдкрд╛рдп рдкрд░, рдирдореВрдирд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдПрдирдУрдкреА рдХрдорд╛рдВрдб, рдЬреЛ рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рднреА рдЕрдЬреНрдЮрд╛рдд рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛, рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рд╕рдореВрд╣ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рдд рд╣реИ)ред
рдХрдорд╛рдВрдб # 1 рд╕реНрдЯреИрдХ рдкрд░ 0 рдирдВрдмрд░ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдЪрд░рдг рдореЗрдВ 3 рд╕рд┐рдЧреНрдирд▓ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХрд╛ рдкрддрд╛ 1 рд╕реЗ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╕рд┐рдЧреНрдирд▓ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред
рдЕрдЧрд▓реЗ рдирдореВрдиреЗ рдЪрдХреНрд░ рдореЗрдВ, рдорд╛рди "0" рдХрд╛ рдкрддрд╛ "1" рд╕реНрдЯреИрдХ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓реНрдп, рднреА, рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд "рдЕрдЧреНрд░реЗрд╖рд┐рдд" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рддрд╛рдХрд┐ рдЕрдЧрд▓рд╛ рдХрдорд╛рдВрдб рдПрдХ рдирдП рдореВрд▓реНрдп рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛ)ред рд░рд╛рдЗрдЯ рд╕рдХреНрд╖рдо рд╕рд┐рдЧреНрдирд▓ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХрдорд╛рдВрдб # 2 рднреА рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ LIT рдХрдорд╛рдВрдб рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдирдП рдирдВрдмрд░ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╢реАрд░реНрд╖ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ 8 рдмрд┐рдЯреНрд╕ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрдорд╛рдВрдб рд╕реЗ рдорд╛рди рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдЬреЛ 0x01 рд╣реИ)ред
рдХрдорд╛рдВрдб # 3 рдХрдорд╛рдВрдб # 2 рдХреЗ рд╕рдорд╛рди рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИред рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЦреНрдпрд╛, рдЗрд╕рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж 0x0102 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд╣рд▓реЗ рдЯреАрдореЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рдЧрднрдЧ рд╕рднреА рд╢реЗрд╖ рдЖрджреЗрд╢ рдПрдХ рд╕реНрдЯрд┐рд░рд┐рдпреЛрдЯрд╛рдЗрдк рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ ("рд╣рд▓рдХреЛрдВ рдХреЛ рдбреНрд░рд╛ рдХрд░реЗрдВ, рдмрд╛рдХреА рдЙрд▓реНрд▓реВ рдХреЛ рдбреНрд░рд╛ рдХрд░реЗрдВ")ред
рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдерд╛ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╣рдж рддрдХ рдХрд┐рдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдХрджрдо рдмреВрдЯрд▓реЛрдбрд░ рдФрд░ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдЖрд▓реЗрдЦ рд░реВрдЪрд┐ рдХреЗ рд╣рд┐рдд рдХреЗ рд▓рд┐рдП рд╣реИред
рдЧрд┐рдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ:
github.com/whiteTigr/vhdl_cpuрд╕реАрдкреАрдпреВ рдХреЛрдб:
github.com/whiteTigr/vhdl_cpu/blob/master/cpu.vhdрдЯреЗрд╕реНрдЯрдмреЗрдВрдЪ рдХреЛрдб (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ):
github.com/whiteTigr/vhdl_cpu/blob/master/cpu_tb.vhd