VHDLред рдкреБрдирдГ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбрд┐рдЬрд╝рд╛рдЗрди

рд╢реБрдн рджрд┐рди

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

рд╕рдорд╕реНрдпрд╛


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЧреБрдгрд╛рдВрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд-рдмрд┐рдВрджреБ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ; рдореИрдВ рднреА рдЧреБрдгрд╛рдВрдХ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХреНрд╖рдорддрд╛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реЛ:
рдШрдЯрдХ FIRCustomizeDesign рд╣реИ
рд╕рд╛рдорд╛рдиреНрдп (
SizeD : рдкреВрд░реНрдгрд╛рдВрдХ : = 16 ; - рдЗрдирдкреБрдЯ рд╡реИрдХреНрдЯрд░ рдХрд╛ рдЖрдпрд╛рдоред
- рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рд░реВрдк рдкреВрд░реНрдгрд╛рдВрдХ рднрд╛рдЧ рдХреЗ рдкреНрд░рддрд┐ 1 рдмрд┐рдЯ рдФрд░ рдЖрдВрд╢рд┐рдХ рдХреЗ рд▓рд┐рдП SizeD-1 рдорд╛рдирддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЕрдВрддрд░рд╛рд▓ [-1; 1]ред

- рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реИред
P01 : рдкреВрд░реНрдгрд╛рдВрдХ : = - 32768 ; - = (-0.5) * 2 ^ SizeD - (рдмрд┐рдЯ рд╕рд╛рдЗрдЬ SizeD рдХреЗ рдЖрдзрд╛рд░ рдкрд░)
- рд╣рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ,
- рдЗрд╕рд╕реЗ рдЖрдЧреЗ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛрдВрдЧреЗред рдпрд╣ рдХреНрд░рдо рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ
- рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
P02 : рдкреВрд░реНрдгрд╛рдВрдХ : = 22016 ; - = (43/64) * 2 ^ SizeD
P03 : рдкреВрд░реНрдгрд╛рдВрдХ : = - 4352 ; - = -0.0664
- рдФрд░ рдЗрддрдиреЗ рдкрд░ ...
) ;
рдмрдВрджрд░рдЧрд╛рд╣ (
rst, sclk : std_logic рдореЗрдВ ;
data_ready : std_logic рдореЗрдВ ; - рдЗрдирдкреБрдЯ рддрддреНрдкрд░рддрд╛

- рд╣рдо 0 рдмрд┐рдЯ рдХреЛ рд╕рдмрд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдирддреЗ рд╣реИрдВред
i_data : std_logic_vector рдореЗрдВ ( SizeD- 1 downto 0 ) ;

рдкрд╛рдЗрдкрд▓рд╛рдЗрди_ рдкрд╣рд▓реЗ рд╕реЗ : рдмрд╛рд╣рд░ std_logic ;
рддреИрдпрд╛рд░ : рдмрд╛рд╣рд░ std_logic ; - рдЖрдЙрдЯрдкреБрдЯ рддрддреНрдкрд░рддрд╛

o_data : std_logic_vector ( SizeD- 1 рдиреАрдЪреЗ 0 ) ;
) ;
рдЬрд╣рд╛рдВ рдкреИрд░рд╛рдореАрдЯрд░ P0 (0-n) рдЙрди рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ (рдпрджрд┐ рдЗрд╕рдХрд╛ рдЖрдпрд╛рдо рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ) рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдореЙрдбреНрдпреВрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд / рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рд╡реИрд▓ <= to_signed ( P0, SizeD ) + to_signed ( P1, SizeD ) ; - рд╕рд╣реА рдЧрдгрдирд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдЪрдпрдирд┐рдд рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ рдореЗрдВ,
рдЖрдЙрдЯрдбреЗрдЯрд╛ <= std_logic_vector ( рд╡реИрд▓ ) ; - рд╕рд╛рде рд╣реА рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдирд┐рд╖реНрдХрд░реНрд╖ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рд╣рдо рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ SizeD рдирдВрдмрд░ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХреЛрдВ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рд╕рд╣рдордд рд╣реВрдВ, рдХрдИ рдмрд╛рд░ рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рдПрдХ рдмрд╛рд╣рд░реА рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдорд╛рдзрд╛рди рд╣рд▓реНрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдорд╛рдирдХ VHDL рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЬрдм SizeD рдмрджрд▓рддреЗ рд╕рдордп рд╕рднреА P0 (1-n) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдЧрдгрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдирд┐рд░реНрдгрдп


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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд╢реАрд░реНрд╖ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреЛрдИ рдореВрд▓рднреВрдд рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИрдВред
рд▓рд┐рдмреНрд░рд░реА рдпрд╛рдиреА ;
рдЖрдИрдИрдИрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред std_logic_1164 ред рд╕рднреА ;
рдЖрдИрдИрдИрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред numeric_stdред рд╕рднреА ;
ieee .std_logic_textio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рд╕рднреА ;
Iee .math_real рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рд╕рднреА ;
рд▓рд┐рдмреНрд░рд░реА рдлреНрд▓реЛрдЯрд┐рдлрд╝рд┐рдХреНрд╕рд▓рд┐рдм ;
рдлрд╝реНрд▓реЛрдЯрдлрд╝рд┐рдХреНрд╕рд▓рд┐рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╕рднреА ;
LIBRARY std ;
std.textio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╕рднреА ;

рд╕рдВрд╕реНрдерд╛ FIRCustomizeDesign_tb рд╣реИ
- рдЦрд╛рд▓реА
рдЕрдВрдд FIRCustomizeDesign_tb ;

рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ DUT FIRCustomizeDesign_tb рд╣реИ

- рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдкреНрд░рдХрд╛рд░ sfixed (рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдлрд┐рдХреНрд╕реНрдб рдкреНрд╡рд╛рдЗрдВрдЯ) рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп
рдлрд╝рдВрдХреНрд╢рди sFix2Int ( r : UNRESOLVED_sfixed )
рд░рд┐рдЯрд░реНрди рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ
рд╢реБрд░реВ рдХрд░рдирд╛
- рдорд╛рди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП UNRESOLVED_sfixed рдкреНрд░рдХрд╛рд░ рдЪреБрдирдХрд░ рдЙрдкрд╕рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ,
- рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ std_logic_vector рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ,
- рд╡рд╛рдВрдЫрд┐рдд рдореВрд▓реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реНрдгрд╛рдВрдХ рддрдХ рдбрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╡рд╛рдкрд╕реА ( to_integer ( SIGNED ( to_Std_Logic_Vector ( r ) ) ) ) ;
рдЕрдВрдд рд╕рдорд╛рд░реЛрд╣ sFix2Int ;

рдирд┐рд░рдВрддрд░ рдЖрдХрд╛рд░ : рдкреВрд░реНрдгрд╛рдВрдХ : = 16 ;
рдирд┐рд░рдВрддрд░ clk_period : рд╕рдордп : = 100 рдПрдирдПрд╕ ;
- рдлрд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред

- рдЙрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
- рдпрд╣ рдХреИрд╕реЗ VHDL рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдирд┐рд░рдВрддрд░ P01 : рд╡рд╛рд╕реНрддрд╡рд┐рдХ : = - рд╡рд╛рд╕реНрддрд╡рд┐рдХ ( 17 ) / рд╡рд╛рд╕реНрддрд╡рд┐рдХ ( 128 ) ;
рдирд┐рд░рдВрддрд░ P02 : рд╡рд╛рд╕реНрддрд╡рд┐рдХ : = sqrt ( рд╡рд╛рд╕реНрддрд╡рд┐рдХ ( 0.675 ) ) ; - рд╣рдо рдХреЛрдИ рднреА рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВ
- рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рдиред
рдирд┐рд░рдВрддрд░ P03 : рд╡рд╛рд╕реНрддрд╡рд┐рдХ : = рд╡рд╛рд╕реНрддрд╡рд┐рдХ ( 0 ) ; - рд╕рдм рдХреБрдЫ рд╕рдЦреНрддреА рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдЖрджрд┐ред
- рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛
рд╕реНрдерд┐рд░рд╛рдВрдХ Decimal_Length : рдкреВрд░реНрдгрд╛рдВрдХ : = 1 ; - рдкреВрд░реНрдгрд╛рдВрдХ рднрд╛рдЧ рдХреА рд▓рдВрдмрд╛рдИред
- рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рд╛рд░реВрдк рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ:
рдирд┐рд░рдВрддрд░ Fractional_Length : рдкреВрд░реНрдгрд╛рдВрдХ : = SizeD-Decimal_Length ;
- рд╣рдо to_sfixed рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рд▓рд╛рддреЗ рд╣реИрдВред
рдирд┐рд░рдВрддрд░ fx_left : рдкреВрд░реНрдгрд╛рдВрдХ : = рджрд╢рдорд▓рд╡_рдШрдЯрдирд╛- 1 ;
рдирд┐рд░рдВрддрд░ fx_right : рдкреВрд░реНрдгрд╛рдВрдХ : = - ( рднрд┐рдиреНрдирд╛рддреНрдордХ_Length ) ;
- рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
рдЙрдкрдкреНрд░рдХрд╛рд░ qfixed sfixed рд╣реИ ( fx_left downto fx_right ) ;
- рдЕрдм рд╕рдм рдХреБрдЫ рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдирд┐рд░рдВрддрд░ fP01 : qfixed : = to_sfixed ( aP21, fx_left, fx_right ) ;
рдирд┐рд░рдВрддрд░ fP02 : qfixed : = to_sfixed ( aP22, fx_left, fx_right ) ;
рдирд┐рд░рдВрддрд░ fP03 : рдЙрдкрд╕рд░реНрдЧ : = to_sfixed ( aP23, fx_left, fx_right ) ;
рд╢реБрд░реВ рдХрд░рдирд╛

FIRDUT : FIRCustomizeDesign рдЬреЗрдиреЗрд░рд┐рдХ рдореИрдк (
SizeD => SizeD,
P01 => sFix2Int ( fP01 ) , - рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд▓рд┐рдП sfixed рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ
P02 => sFix2Int ( fP02 ) ,
P03 => sFix2Int ( fP03 )
)
рдкреЛрд░реНрдЯ рдореИрдк (
rst => rst, clk => clk, data_ready => data_ready,
i_data => i_data, рддреИрдпрд╛рд░ => рддреИрдпрд╛рд░, рдкрд╛рдЗрдкрд▓рд╛рдЗрди_ рдкрд╣рд▓реЗ рд╕реЗ => рдкрд╛рдЗрдкрд▓рд╛рдЗрди_ рдкрд╣рд▓реЗ рд╕реЗ,
o_data0 => o_data0
) ;

- рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рд╣реИред
test_reactor :
рдкреНрд░рдХреНрд░рд┐рдпрд╛ ...

рдЕрдВрдд DUT ;

рд▓рд╛рдн:


рдиреБрдХрд╕рд╛рди:


рдЬреЗрдиреЗрд░рд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ рдХрд╛рдлреА рд╕рдВрдХреАрд░реНрдг рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рднреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдХреНрд╖рдорддрд╛ рд╣реИред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles