VHDL рдореЗрдВ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХреНрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг

рдпрд╣ рдЖрд▓реЗрдЦ VHDL рдореЗрдВ ROM рдФрд░ RAM рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЦ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп VHDL рднрд╛рд╖рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рджреЗрдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЪрд┐рддреНрд░ рдХреНрд╡рд╛рд░реНрдЯреНрд╕ II v рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╣реИрдВред 9.1ред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреНрд╡рд╛рд░реНрдЯрд╕ II рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдП, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВред

рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рд╡рдзрд╛рди


VHDL рдореЗрдореЛрд░реА рдХреЛ рд╡реИрдХреНрдЯрд░ array рдПрдХ array рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡реЗрдХреНрдЯрд░ рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдореЗрдореЛрд░реА рд╕реЗрд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ, рдФрд░ рд╡реИрдХреНрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 32 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдПрдХ рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 8 рдмрд┐рдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, 32 рд╕рд░рдгреА рд╡рд╛рд▓реЗ рдПрдХ рд╕рд░рдгреА рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрда-рдмрд┐рдЯ рд╣реИред

 type mem is array (0 to 31) of std_logic_vector (7 downto 0); 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдкрддрд╛ рдЗрдирдкреБрдЯ, рдбреЗрдЯрд╛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ, рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдбреЗрдЯрд╛ рдкреЛрд░реНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рд╕реЗрд▓ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ std_logic_vector (7 downto 0) ред

 data_in: in std_logic_vector (7 downto 0); data_out: out std_logic_vector (7 downto 0); 

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

 addr: in integer range 0 to 31; 

рдореЗрдореЛрд░реА рдХрд╛ рд╡рд┐рд╡рд░рдг рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ 32 ├Ч 8 рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕реНрдореГрддрд┐ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП addr_width рдФрд░ data_width рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреНрд░рдорд╢рдГ рдкрддреЗ рдФрд░ рдбреЗрдЯрд╛ рдмрд╕реЛрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 2**addr_width рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреА рдмрд┐рдЯ рдХреНрд╖рдорддрд╛ data_width рдмрд░рд╛рдмрд░ рд╣реИред

 generic (addr_width: natural:= 5; data_width: natural:=8); port ( addr: in integer range 0 to 2**addr_width - 1; data_in: in std_logic_vector (data_width-1 downto 0); data_out: out std_logic_vector (data_width-1 downto 0) ); type mem is array (2**addr_width-1 downto 0) of std_logic_vector (7 downto 0); 

VHDL рднрд╛рд╖рд╛ рдореЗрдВ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг

рд░реАрдб-рдУрдирд▓реА рдореЗрдореЛрд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╕рдордп рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  1. "рд╕рд░рдгреА" рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рд╕реНрдерд┐рд░ рдпрд╛ рд╕рдВрдХреЗрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
  2. case рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ;
  3. * .mif рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕рдВрд╢реНрд▓реЗрд╖рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧред

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

рдПрдХ рд╕реНрдерд┐рд░ рдпрд╛ рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ред

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

 type ROM is array (0 to 7) of std_logic_vector (7 downto 0); constant Content: ROM := ( 0 => "00000001", 1 => "00000010", 2 => "00000011", 3 => "00000100", 4 => "00000101", 5 => "00000110", 6 => "00000111", 7 => "00001000", ); 

рдРрд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдкрддрд╛ рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рдгреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд▓ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдкреЛрд░реНрдЯ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЗ рд╕реЗрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд░реЛрдд Data_out рдкреЛрд░реНрдЯ std_logic_vector (7 downto 0) рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:

 Data_out <= Content (Addr); 

рдЙрджрд╛рд╣рд░рдг 1. рдПрдХ рд╕реНрдерд┐рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЗ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕ рд╡рд┐рд╡рд░рдг рд╕реЗ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдЪрд┐рддреНрд░ 1 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЪрд┐рддреНрд░ 1 - рдЙрджрд╛рд╣рд░рдг 1 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ

рд▓рд╛рдЗрдиреНрд╕ 13 рдФрд░ 14 рдПрдХ рд╕рд░рдгреА рдкреНрд░рдХрд╛рд░ рдХреА 32 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 8 рдмрд┐рдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред
23 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ 15 рд╕рд░рдгреА рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдорд╛рди рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ 16 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рд░реЗрдЦрд╛рдПрдБ 16 22 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЕрдиреНрдп рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдПрдБ рд╕рдорд╛рди рдореВрд▓реНрдп "1111 1111" рд╕реЗ рднрд░реА рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ рдЕрдиреНрдп рд╢рдмреНрдж - 23 рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред
рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдореЗрдВ рдХреНрд░рдорд╢рдГ рд╕рдВрдХреЗрдд clk , cs - рдШрдбрд╝реА рдФрд░ рдХреНрд░рд┐рд╕реНрдЯрд▓ рдЪрдпрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рд╕рд┐рдЧреНрдирд▓ cs рдПрдХрддрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЙрдо рд▓рд╛рдЗрдиреЗрдВ рдЬреЗрдб-рд╕реНрдЯреЗрдЯ (рд▓рд╛рдЗрдиреЗрдВ 27 рдФрд░ 28) рдореЗрдВ рдЬрд╛рддреА рд╣реИрдВред рдпрджрд┐ рд╕рд┐рдЧреНрдирд▓ cs рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрд┐рд░рд┐рдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ clk рдХреЗ рдкреНрд░рдореБрдЦ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди 29 рдЪреЗрдХред
рд▓рд╛рдЗрдиреЗрдВ 30-35 рд░реЙрдо рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рд╕рд┐рдЧреНрдирд▓ rd рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓рд╛рдЗрдиреЗрдВ рдЬреЗрдб-рд░рд╛рдЬреНрдп (рд▓рд╛рдЗрди 32) рдореЗрдВ рдЬрд╛рддреА рд╣реИрдВред рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди 30 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдВрдЯреЗрдВрдЯ рд╕реНрдерд┐рд░рд╛рдВрдХ std_logic_vector рд╕реЗрд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореВрд▓ data_out рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдбреНрд░реЗрд╕ рд╕рд┐рдЧреНрдирд▓ рднреА std_logic_vector рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╕рд╛рдордЧреНрд░реА рд╕рд░рдгреА рдореЗрдВ рдПрдХ рд╕реЗрд▓ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рд░реВрдкрд╛рдВрддрд░рдг std_logic_vector рдкреНрд░рдХрд╛рд░ рд╕реЗ integer рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ to_integer (unsigned (address) рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ std_logic_vector рд╕рд┐рдЧреНрдирд▓ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИред рддрдм integer рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

 1 library ieee; 2 use ieee.std_logic_1164.all; 3 use ieee.numeric_std.all; 4 entity ROM is 5 port (clk : in std_logic; 6 cs : in std_logic; 7 rd : in std_logic; 8 address : in std_logic_vector(4 downto 0); 9 data_out: out std_logic_vector(7 downto 0)); 10 end ROM; 11 architecture behav of ROM is 12 type ROM_array is array (0 to 31) 13 of std_logic_vector(7 downto 0); 14 constant content: ROM_array := ( 15 0 => "00000001", 16 1 => "00000010", 17 2 => "00000011", 18 . . . 19 12 => "00001101", 20 13 => "00001110", 21 14 => "00001111", 22 others => "11111111"); 23 begin 24 process(clk, cs) 25 begin 26 if(cs = '1' ) then 27 data_out <= "ZZZZZZZZ"; 28 elsif (clk'event and clk = '1') then 29 if rd = '1' then 30 data_out <= content(to_integer (unsigned (address))); 31 else 32 data_out <= "ZZZZZZZZ"; 33 end if; 34 end if; 35 end process; 36 end behav; 

рд╕рд┐рдореБрд▓реЗрд╢рди рдкрд░рд┐рдгрд╛рдо рдЪрд┐рддреНрд░ 2 рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред

рдЪрд┐рддреНрд░ 2 - рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЗ рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо

case рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ред

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

 when  => _ <= _; 

рдЙрджрд╛рд╣рд░рдг 2. рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ 256 ├Ч 6 рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкрддрд╛ рдЯрд╛рдЗрдк std_logic рдЖрда-рдмрд┐рдЯ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ std_logic , рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ std_logic рдЫрд╣-рдмрд┐рдЯ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ std_logic ред рдХреЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреА рдкрд╣рд▓реА рджрд╕ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, when others рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рднреА рдЕрдиреНрдп рдХреЛ рдПрдХ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 library ieee; use ieee.std_logic_1164.all; entity mem is port ( clock : in std_logic; address : in std_logic_vector (7 downto 0); data_out : out std_logic_vector (5 downto 0)); end mem; architecture rtl of mem is begin process (clock) begin if rising_edge (clock) then case address is when "00000000" => data_out <= "000111"; when "00000001" => data_out <= "000110"; when "00000010" => data_out <= "000010"; when "00000011" => data_out <= "100000"; when "00000100" => data_out <= "100010"; when "00000101" => data_out <= "001110"; when "00000110" => data_out <= "111100"; when "00000111" => data_out <= "110111"; when "00001000" => data_out <= "111000"; when "00001001" => data_out <= "100110"; when others => data_out <= "101111"; end case; end if; end process; end rtl; 

рдЙрджрд╛рд╣рд░рдг 2 рд╕реЗ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЗ рд╕рд┐рдореБрд▓реЗрд╢рди рдкрд░рд┐рдгрд╛рдо рдЪрд┐рддреНрд░ 3 рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред

рдЪрд┐рддреНрд░ 3 - рдЙрджрд╛рд╣рд░рдг 2 рд╕реЗ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЛ рдореЙрдбрд▓рд┐рдВрдЧ рдХрд░рдирд╛

рдПрдХ рдорд┐рдлрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ред

рд╕реНрдореГрддрд┐ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рдПрд▓реНрдЯрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Altera altera_syn_attributes рд╕рд┐рдВрдереЗрд╕рд┐рд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ ram_init_file рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ram_init_file ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА _quartus\libraries\vhdl\altera рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдорд┐рдлрд╝ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрд╢реНрд▓реЗрд╖рдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 attribute ram_init_file : string; 

рд╕реНрдореГрддрд┐ рдмреНрд▓реЙрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП ram_init_file рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд┐рдВрдХ рдХрд░реЗрдВред рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди * .mif рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 attribute ram_init_file of rom : signal is "mem.mif"; 

рдЙрджрд╛рд╣рд░рдг 3. рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 256 ├Ч 8 рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рд▓рд╛рдЗрдиреНрд╕ 1-4 рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЗрдиреЗрдВ 1 рдФрд░ 4 рд╕рдВрд╢реНрд▓реЗрд╖рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВред
рд▓рд╛рдЗрдиреНрд╕ 5-9 рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднрд╛рдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
рд▓рд╛рдЗрдиреЗрдВ 11 рдФрд░ 12 рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ mem_t рдФрд░ рд╕рд┐рдЧреНрдирд▓ rom рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИрдВ, рдЬреЛ рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
рдкрдВрдХреНрддрд┐ 13 рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ ram_init_file рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ 14 рд▓рд╛рдЗрди рдореЗрдВ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ rom рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рддреА рд╣реИ рдФрд░ рдПрдХ рд▓рд┐рдВрдХ рдореЗрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреА рд╣реИред
рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд╛рдЗрди 19 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ рдФрд░ рд╕реЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕реНрд░реЛрдд рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрддрд╛ рд╕рд┐рдЧреНрдирд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 1 library ieee, altera; 2 use ieee.std_logic_1164.all; 3 use ieee.numeric_std.all; 4 use altera.altera_syn_attributes.all; 5 entity mem is 6 port (clk: in std_logic; 7 addr: in natural range 0 to 255; 8 q: out std_logic_vector (7 downto 0)); 9 end entity; 10 architecture rtl of mem is 11 type mem_t is array (255 downto 0) of std_logic_vector(7 downto 0); 12 signal rom: mem_t; 13 attribute ram_init_file: string; 14 attribute ram_init_file of rom: signal is "mem.mif"; 15 begin 16 process(clk) 17 begin 18 if(rising_edge(clk)) then 19 q <= rom(addr); 20 end if; 21 end process; 22 end rtl; 

Mif рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА mif рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рдХреЛ рдЪрд┐рддреНрд░ 4 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореЙрдбреНрдпреВрд▓реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЪрд┐рддреНрд░ 5 рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред


рдЪрд┐рддреНрд░рд╛ 4 - рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА


рдЪрд┐рддреНрд░ 5 - рдЙрджрд╛рд╣рд░рдг 3 рд╕реЗ рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдордп рдЖрд░реЗрдЦ

рд░реИрдВрдбрдо рдПрдХреНрд╕реЗрд╕ рдореЗрдореЛрд░реА рдХрд╛ рд╡рд┐рд╡рд░рдг

рд░реИрдВрдбрдо рдПрдХреНрд╕реЗрд╕ рдореЗрдореЛрд░реА (RAM) рдХрд╛ рд╡рд░реНрдгрди рд░реАрдб-рдУрдирд▓реА рдореЗрдореЛрд░реА рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдХрд┐ рд░реИрдо рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рдордХрд╛рд▓рд┐рдХ рд░реИрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЙрдирдХрд╛ рдХрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
Wn_RCSNрдХрд░реЛ [3..0]рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рддрд░реАрдХрд╛
00ZZZZрдЕрднрд┐рд▓реЗрдЦ
10рд╕реНрд░реЛрдд рдбреЗрдЯрд╛рдкрдврд╝рдирд╛
├Ч1ZZZZрдЬрд╛рдирдХрд╛рд░реА рд╕рд╣реЗрдЬрдирд╛

рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдо рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдпрд╛рдо рд╣реИрдВред

 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity mem is port (clk : in std_logic; Wn_R : in std_logic; CSn : in std_logic; addr : in std_logic_vector(4 downto 0); Di : in std_logic_vector(3 downto 0); Do : out std_logic_vector(3 downto 0)); end mem; architecture syn of mem is type ram_type is array (31 downto 0) of std_logic_vector (3 downto 0); signal RAM : ram_type; begin process (clk, CSn) begin if CSn = '0' then if (clk'event and clk = '1') then if (Wn_R = '0') then RAM(to_integer(unsigned(addr))) <= Di; Do <= "ZZZZ"; else Do <= RAM(to_integer(unsigned(addr))); end if; end if; else Do <= "ZZZZ"; end if; end process; end syn; 

рдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрддреНрддреЗрдЬрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЪрд┐рддреНрд░рд╛ 6 рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред рдпрд╣рд╛рдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рднреА рдореЗрдореЛрд░реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╢реВрдиреНрдп рд╣реИред 6-8 рдирдВрдмрд░ рд╡рд╛рд▓реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдкрд░ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдЪрд┐рддреНрд░ 6 - рд░реИрдо рдХреЗ рдЖрд░реЗрдЦ

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

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


All Articles