рд░реЗрдб рдХреЗ рд╕реЗрдЯ рдореЗрдВ FPGAs рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рдоред рдПрд╡рд▓реЙрди-рдПрд╕рдЯреА рдмрд╕ рдХреЗ рд▓рд┐рдП рдбреАрдПрдордЖрд░рдП рдФрд░ рдПрд╡рд▓реЙрди-рдПрдордПрдо рдмрд╕реЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛

рд╣рдо Redd FPGA рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдУрд░ рдмрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рдСрд▓-рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рд╕рд░рд▓ рддрд░реНрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред рд▓рдХреА - рдФрд░ рдпреВрдПрд╕рдмреА рдмрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдУ (рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╣реИ)ред рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рджрд┐рд▓ рд░реИрдо рдФрд░ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдЙрд╕ рдкрд░ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЖрдЬ рд╣рдо рдЗрд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░реЗрдВрдЧреЗред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдХрд░реЗрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдбреАрдПрдордП рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рд╖рдп рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдПрдЖрд░рдПрдо рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░ рдбреАрдПрдордП рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд▓реЗрдЦ рднреА рдХрд┐рдпрд╛ ред рдЙрд╕ рд▓реЗрдЦ рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдбреАрдПрдордП рдмрд╕ рд╕реЗ рдШрдбрд╝реА рдЪрдХреНрд░ рд▓реЗрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдЪреАрдЬреЗрдВ FPGA рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдЬрд╛ рд░рд╣реА рд╣реИрдВред




рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдирд┐рд░реНрдорд╛рдг


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



рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдФрд░ рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдореЗрдВ 8 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдЬреЛрдбрд╝реЗрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореЗрдореЛрд░реА рдбреНрдпреВрд▓-рдкреЛрд░реНрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реЗрдВрдЬ рдореЗрдВ рдПрдХ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕реЗ рдХреВрджрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд▓реЙрдХ рдХрд░реЗрдВ, рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ )ред



рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рд╣рдЬрд╛рд░ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ (рдпрджрд┐ рдХреБрдЫ рднреА рд╣реЛ, рддреЛ рд╕реГрдЬрди рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ )ред

рдЖрдзрд╛рд░ рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдореЗрдореЛрд░реА рдореЗрдВ рдбрд╛рд▓реЗрдВрдЧреЗред рдЖрджрд░реНрд╢ рдЪреАрдЬ рд▓рдЧрд╛рддрд╛рд░ рдЯрд┐рдХрдиреЗ рд╡рд╛рд▓рд╛ рдЯрд╛рдЗрдорд░ рд╣реИред рдпрджрд┐ рдХреБрдЫ рдЙрдкрд╛рдп рдХреЗ рджреМрд░рд╛рди рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛, рддреЛ рд╣рдо рддреБрд░рдВрдд рдЗрд╕реЗ рд▓рд╛рдкрддрд╛ рдореВрд▓реНрдп рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗред рдареАрдХ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЕрдЧрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ 1234 рдФрд░ 1236 рдорд╛рди рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдШрдбрд╝реА рдкрд░, рдЬрдм рдЯрд╛рдЗрдорд░ рдиреЗ 1235 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдерд╛, рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдиреЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБрдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╕рд╛рде Timer_ST.sv :

module Timer_ST (
  input              clk,
  input              reset,
	
  input  logic       source_ready,
  output logic       source_valid,
  output logic[31:0] source_data
	
);
    logic [31:0] counter;
    always @ (posedge clk, posedge reset)
    if (reset == 1)
    begin
        counter <= 0;
    end else
    begin
        counter <= counter + 1;
    end

    assign source_valid = 1;
    assign source_data [31:24] = counter [7:0];
    assign source_data [23:16] = counter [15:8];
    assign source_data [15:8] = counter [23:16];
    assign source_data [7:0] = counter [31:24];

endmodule

рдпрд╣ рдХрд╛рдЙрдВрдЯрд░ рдПрдХ рдЕрдЧреНрд░рдгреА рдХреА рддрд░рд╣ рд╣реИ: рдпрд╣ рд╣рдореЗрд╢рд╛ рддреИрдпрд╛рд░ рд░рд╣рддрд╛ рд╣реИ (рдЖрдЙрдЯрдкреБрдЯ source_valid рдкрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реЛрддрд╛ рд╣реИ) рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ (рд░реАрд╕реЗрдЯ рд╕реНрдерд┐рддрд┐ рдХреЗ рдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрди рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдХреНрдпреЛрдВ рд╣реИрдВ - рд╣рдордиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА ред

рдЕрдм рд╣рдо рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╣ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реИ )ред рд╕реНрд╡рдЪрд╛рд▓рди рдиреЗ рдЧрд▓рддреА рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрд╡рд▓реЙрди_рдПрдордПрдо рдмрд╕ рдХреЛ рдЪреБрдирд╛ред рдЗрд╕реЗ avalon_streaming_source рд╕реЗ рдмрджрд▓реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдореИрдк рдХрд░реЗрдВ:



рдорд╣рд╛рдиред рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЕрдм рд╣рдо рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ... рдФрд░ рд╣рдореЗрдВ рдПрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рддреАрди рдорд┐рд▓реЗрдВрдЧреЗред рдЗрди рд╕рднреА рдХрд╛ рд╡рд░реНрдгрди рдПрд▓реНрдЯрд░реЗ рд╕реЗ рдПрдВрдмреЗрдбреЗрдб рдкреЗрд░рд┐рдлреЗрд░рд▓ рдЖрдИрдкреА рдпреВрдЬрд░ рдЧрд╛рдЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдореИрдВ рдирд╛рдо рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓рд┐рдВрдХ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рдВрдХ рд╣рдореЗрд╢рд╛ рдмрджрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВ)ред



рдХреМрди рд╕рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ? рдореИрдВ рд╡рд┐рд╖рд╛рдж рдХрд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред 2012 рдореЗрдВ рд╡рд╛рдкрд╕, рдореИрдВрдиреЗ PCIe рдмрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдИред рдСрд▓реНрдЯрд░ рдХреЗ рд╕рднреА рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдерд╛ред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ PCIe рдШрдЯрдХ рдХреЗ рд╕рд╛рде 4 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЧрддрд┐ рджреАред рдЙрди рджрд┐рдиреЛрдВ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдбреАрдПрдордП рдмреНрд▓реЙрдХ рд▓рд┐рдЦрд╛ рдФрд░ рд▓рд┐рдЦрд╛ред рдЕрдм рдореБрдЭреЗ рдЙрд╕рдХреА рдЧрддрд┐ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдиреЗ SATA рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдбреЗрдЯрд╛ рдФрд░ рдЙрд╕ рд╕рдордп рдХреЗ SSDs рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рд╕реАрдорд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдпрд╣реА рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рдмреНрд▓реЙрдХ рдкрд░ рдПрдХ рджрд╛рдВрдд рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рддреАрдиреЛрдВ рдмреНрд▓реЙрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдлрд┐рд╕рд▓реВрдВрдЧрд╛ рдирд╣реАрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдЬ рд╣рдореЗрдВ рдПрд╡рд▓реЙрди-рдПрд╕рдЯреА (рдПрд╡рд▓реЙрди рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓рд░ рд╕реНрдХреИрдЯрд░-рдЧреИрджрд░ рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдРрд╕реЗ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред рдпрд╣рд╛рдВ рд╣рдордиреЗ рдЗрд╕реЗ рдЖрд░реЗрдЦ рдкрд░ рд░рдЦрд╛ рд╣реИред

рдмреНрд▓реЙрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рдореЛрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдореЗрдореЛрд░реА рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ ред рдкреНрд▓рд╕ - рдореИрдВ рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рд╕реЗ рдбреЗрдЯрд╛ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдзрд┐рдХрддрдо рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдпреВрдирд┐рдЯ рдХреЛ 1 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╕реЗ 4 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рддрдХ рдмрджрд▓ рджрд┐рдпрд╛ред рдпрд╣ рд╕рдЪ рд╣реИ, рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдиреА рджреА рдЧрдИ рдереА рдХрд┐ рдЕрдВрдд рдореЗрдВ, FMax рдкреИрд░рд╛рдореАрдЯрд░ рдЗрддрдирд╛ рдЧрд░реНрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рднрд▓реЗ рд╣реА рдЖрдк рдЕрдзрд┐рдХрддрдо рдмреНрд▓реЙрдХ рдХреЛ 2 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╕реЗ рдмрджрд▓ рджреЗрдВ)ред рд▓реЗрдХрд┐рди рдЖрдЬ рдХреЗ рд▓рд┐рдП, FMax рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ (104 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ), рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред рдореИрдВрдиреЗ рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдЖрдк рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдореЛрдб рдХреЛ рдлреБрд▓ рд╡рд░реНрдб рдПрдХреНрд╕реЗрд╕ рдУрдирд▓реА рдкрд░ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ FMax рдХреЛ 109 MHz рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдЖрдЬ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рдбрд╝реЗрдВрдЧреЗред



рдЗрд╕рд▓рд┐рдПред рд╕реНрд░реЛрдд рд╣реИ, рдбреАрдПрдордП рд╣реИред рд░рд┐рд╕реАрд╡рд░ ... SDRAM? рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╣рд╛рдБред рд▓реЗрдХрд┐рди рдЖрдЬ рд╣рдореЗрдВ рдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдореГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдХрдИ рдШрдбрд╝реА рдЪрдХреНрд░ рд▓реЗрдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рдЙрддреНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЕрдм рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд FPGA рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╕рдм рдХреБрдЫ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдмрд┐рдирд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рджреЗрд░реА рдХреЗред

рдЪреВрдВрдХрд┐ SDRAM рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рд┐рдВрдЧрд▓-рдкреЛрд░реНрдЯ рд╣реИ, рдмрд┐рд▓реНрдЯ-рдЗрди рдореЗрдореЛрд░реА рдХреЛ рднреА рд╕рд┐рдВрдЧрд▓-рдкреЛрд░реНрдЯ рдореЛрдб рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдорд╛рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл, рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдпрд╛ рдЕрд▓реНрдЯрд░ рдЬреЗрдЯрд╛-рдЯреВ-рдПрд╡рд▓реЙрди-рдПрдордПрдо рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдореЗрдореЛрд░реА рд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рд╛рде рдмрд╛рд╣рд░ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдЦрдиреЗ рдФрд░ рдмреНрд▓реЙрдХ рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ! рдмрд▓реНрдХрд┐, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЖрдЬ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд▓ рд╣рдо рдореЗрдореЛрд░реА рдХреЛ рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡ рд╕рд┐рдВрдЧрд▓-рдкреЛрд░реНрдЯ рд╡рди рд╕реЗ рдмрджрд▓ рджреЗрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдореЗрдВ рддреАрди рдШрдЯрдХреЛрдВ (рдЯрд╛рдЗрдорд░, рдбреАрдПрдордП рдФрд░ рдореЗрдореЛрд░реА) рдХрд╛ рдРрд╕рд╛ рдмреНрд▓реЙрдХ рдорд┐рд▓рддрд╛ рд╣реИ:



рдЦреИрд░, рдФрд░ рд╕рд┐рд░реНрдл рдкреНрд░реЛрдлрд╛рд░реНрдорд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ JTAG рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ UT рдФрд░ sysid рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреВрд╕рд░рд╛ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдлрд┐рд░ рднреА рдореБрдЭреЗ JTAG рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдерд╛)ред рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдХреИрд╕реЗ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЯрд╛рдпрд░реЛрдВ рдХреЛ рдЯрд┐рдВрдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЙрдирдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдмрд╕ рдпрд╣ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рдпрд╣ рд╕рдм рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: рдмрд╕



рдЗрддрдирд╛ рд╣реАред рд╕рд┐рд╕реНрдЯрдо рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдкрддреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡реИрдХреНрдЯрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдПрдЧрд╛), рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рд░реАрд╕реЗрдЯ рдкреИрд░ рдХреЛ рдЖрднрд╛рд╕реА рдмрдирд╛рдПрдВ , clk рдХреЛ pin_25 рдкреИрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдбрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ ... рдХреБрд▓ рджреВрд░рд╕реНрде рд╕реНрдерд╛рди рдХреЗ рдХрд╛рд░рдг рдЦрд╛рд▓реА рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдпрд╣ рдХреИрд╕рд╛ рд╣реИ, рдЦрд░рд╛рдм рдмрд╛рдд рд╣реИ; .. рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЕрдХреЗрд▓рд╛ рдФрд░ рдбрд░рд╛рд╡рдирд╛ рд╣реИ, рд╢рд╛рдпрдж, рдЕрдХреЗрд▓реЗ ... рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рдЪрд▓рд┐рдд рдерд╛ред

рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд╛рд░реНрдЯ рдмрдирд╛рдирд╛


рдкреНрд░рд╢рд┐рдХреНрд╖рдг


рдмреАрдПрд╕рдкреА рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╣рд╛рде рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЖрдВрджреЛрд▓рди рдХреЗ рд╕рд╛рде рдореИрдВ рд╕реА ++ рд╕рдорд░реНрдерди рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдбрд╛рд▓рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреВрдВред рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдЕрднреА рднреА рдЗрддрдирд╛ рдЖрдо рд╣реИред рддреЛ рдЪрд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдореЛрд░реА рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдРрд╕рд╛ рдмрдлрд░ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рдм рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ :



рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рдпреЛрдЧ


рд╣рдо рдПрдХ рдХреЛрдб рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╕ рд╕реНрд░реЛрдд рдХреА рд╕рд╛рдордЧреНрд░реА (рдХрд╛рдЙрдВрдЯрд░ рдХреА рднреВрдорд┐рдХрд╛ рдореЗрдВ) рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреЛ рднрд░рддрд╛ рд╣реИред

рдХреЛрдб рджреЗрдЦреЗрдВ
#include "sys/alt_stdio.h"
#include <altera_msgdma.h>
#include <altera_msgdma_descriptor_regs.h>
#include <system.h>
#include <string.h>

int main()
{ 
  alt_putstr("Hello from Nios II!\n");

  memset (BUFFER_BASE,0,BUFFER_SIZE_VALUE);

  //  ,   
  IOWR_ALTERA_MSGDMA_CSR_CONTROL(MSGDMA_0_CSR_BASE,
      ALTERA_MSGDMA_CSR_STOP_DESCRIPTORS_MASK);

  //   ,      ,
  //    ,   .  .

  //    FIFO
  IOWR_ALTERA_MSGDMA_DESCRIPTOR_READ_ADDRESS(MSGDMA_0_DESCRIPTOR_SLAVE_BASE,
      (alt_u32)0);
  IOWR_ALTERA_MSGDMA_DESCRIPTOR_WRITE_ADDRESS(MSGDMA_0_DESCRIPTOR_SLAVE_BASE,
      (alt_u32)BUFFER_BASE);
  IOWR_ALTERA_MSGDMA_DESCRIPTOR_LENGTH(MSGDMA_0_DESCRIPTOR_SLAVE_BASE,
      BUFFER_SIZE_VALUE);
  IOWR_ALTERA_MSGDMA_DESCRIPTOR_CONTROL_STANDARD(MSGDMA_0_DESCRIPTOR_SLAVE_BASE,
      ALTERA_MSGDMA_DESCRIPTOR_CONTROL_GO_MASK);

   //  ,    
   IOWR_ALTERA_MSGDMA_CSR_CONTROL(MSGDMA_0_CSR_BASE,
       ALTERA_MSGDMA_CSR_STOP_ON_ERROR_MASK
       & (~ALTERA_MSGDMA_CSR_STOP_DESCRIPTORS_MASK)
       &(~ALTERA_MSGDMA_CSR_GLOBAL_INTERRUPT_MASK)) ;


   //   
   static const alt_u32 errMask = ALTERA_MSGDMA_CSR_STOPPED_ON_ERROR_MASK |
           ALTERA_MSGDMA_CSR_STOPPED_ON_EARLY_TERMINATION_MASK |
           ALTERA_MSGDMA_CSR_STOP_STATE_MASK |
           ALTERA_MSGDMA_CSR_RESET_STATE_MASK;

  volatile alt_u32 status;
  do
  {
     status = IORD_ALTERA_MSGDMA_CSR_STATUS(MSGDMA_0_CSR_BASE);
  } while (!(status & errMask) &&(status & ALTERA_MSGDMA_CSR_BUSY_MASK));     

  alt_putstr("You can play with memory!\n");

  /* Event loop never exits. */
  while (1);

  return 0;
}


рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕рдВрджреЗрд╢ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ "рдЖрдк рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ!" , рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╡рд┐рд░рд╛рдо рдкрд░ рд░рдЦреЗрдВ рдФрд░ рд╕реНрдореГрддрд┐ рдХреЛ рджреЗрдЦреЗрдВ, рдкрддреЗ рд╕реЗ рд╢реБрд░реВред 0. рдкрд╣рд▓реЗ рдореИрдВ рдмрд╣реБрдд рдбрд░ рдЧрдпрд╛ рдерд╛:



рдкрддреЗ 0x80 рд╕реЗ, рдХрд╛рдЙрдВрдЯрд░ рддреЗрдЬреА рд╕реЗ рдЕрдкрдирд╛ рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рд░рд╛рд╢рд┐ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рди рдкрд░, рдХрд╛рдЙрдВрдЯрд░ рдХрднреА рднреА рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рддреИрдпрд╛рд░ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рдбреАрдПрдордП рдХреА рдЕрдкрдиреА рдЖрдЧреЗ-рдЖрдЧреЗ рдХреА рдХрддрд╛рд░ рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЛ DMA рдмреНрд▓реЙрдХ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ:



0x80 рдмрд╛рдЗрдЯреНрд╕ 0x20 рдмрддреНрддреАрд╕-рдмрд┐рдЯ рд╢рдмреНрдж рд╣реИрдВред рд╕рд┐рд░реНрдл 32 рджрд╢рдорд▓рд╡ред рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдпреБрджреНрдз рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╕реНрд░реЛрдд рдЕрдзрд┐рдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ (рдЗрд╕рдХреА рддрддреНрдкрд░рддрд╛ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧреА)ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ, рдореАрдЯрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдбрдВрдк рдЯреБрдХрдбрд╝реЗ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рдПрдХ рд╢рдмреНрдж рд▓реЗрдВ рдЬреЛ рдореИрдВрдиреЗ рдЗрд╕рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдореЗрдВ рдЬрд╛рдВрдЪ рдХреАред



рдореЗрд░реА рдЖрдБрдЦреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рди рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдПрдХ рдХреЛрдб рд▓рд┐рдЦрд╛ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ:

  volatile alt_u32* pData = (alt_u32*)BUFFER_BASE;
  volatile alt_u32 cur = pData[0x10];
  int nLine = 0;
  for (volatile int i=0x11;i<BUFFER_SIZE_VALUE/4;i++)
  {
	  if (pData[i]!=cur+1)
	  {
		  alt_printf("Problem at 0x%x\n",i*4);
		  if (nLine++ > 10)
		  {
			  break;
		  }
	  }
	  cur = pData[i];
  }

рд╡рд╣ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд▓реЗрдЦ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдФрд░ рдлрд┐рд░ рджрд┐рдЦрд╛рдУ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдПрдХ рд╡реНрдпрд╕реНрдд рдмрд╕ рдмрд┐рдирд╛ рджреЗрд░реА рдХреЗ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ! рджреЗрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП! рд▓реЗрдХрд┐рди рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрддрдиреА рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реА рдЪреАрдЬ рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдХреЗ рдлреАрдлреЛ рдореЗрдВ рд╣реИред рдЙрдирдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░реЗрдВ:



рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗ! рдЕрдЪреНрдЫрд╛ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдо FIFO рдЖрдпрд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рдмрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рднрдбрд╝рдХрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╣рд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдЬреЛрдбрд╝реЗрдВ:



рдПрдХ рд╣реА рдкрд╛рда:
  volatile alt_u32 status;
  volatile int n = 0;
  do
  {
	  status = IORD_ALTERA_MSGDMA_CSR_STATUS(MSGDMA_0_CSR_BASE);
	  n += 1;
  } while (!(status & errMask) &&(status & ALTERA_MSGDMA_CSR_BUSY_MASK));  


рдХрд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ, рдпрд╣ 29 рд╣реИред рдпрд╣ 16 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣реА рд╣реИ, рдлреАрдлреЛ рдХреЛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрд▓реЛ рдЕрдзрд┐рдХ рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рд░реАрдбрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВред рд╕рд╣рд╛рдпрддрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рджреБрдГрдЦ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рд░рд┐рдореЛрдЯ рд░реЗрдб рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджрд┐рдпрд╛, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдореЗрд░реЗ рдореМрдЬреВрджрд╛ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рд░рд┐рдбреНрдпреВрд╕ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрднреА рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ (рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ, рдХреЛрдИ рднреА рджреВрд░реА рдкрд░ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдСрд╕рд┐рд▓реЛрд╕реНрдХреЛрдк рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛) рдЯрд╛рдЗрдорд░ рдореЗрдВ рджреЛ рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝реЗ рдЧрдП:

   output    clk_copy,
   output    ready_copy

рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд┐рдпреБрдХреНрдд рдХрд┐рдпрд╛:

    assign clk_copy = clk;
    assign ready_copy = source_ready;

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореЙрдбреНрдпреВрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рд▓рдЧрд╛:

module Timer_ST (
   input           clk,
   input           reset,
	
   input logic     source_ready,
   output logic    source_valid,
   output logic[31:0] source_data,

   output    clk_copy,
   output    ready_copy
	
);
    logic [31:0] counter;
    always @ (posedge clk, posedge reset)
    if (reset == 1)
    begin
        counter <= 0;
    end else
    begin
        counter <= counter + 1;
    end

    assign source_valid = 1;
    assign source_data [31:24] = counter [7:0];
    assign source_data [23:16] = counter [15:8];
    assign source_data [15:8] = counter [23:16];
    assign source_data [7:0] = counter [31:24];

    assign clk_copy = clk;
    assign ready_copy = source_ready;

endmodule

рдШрд░ рдкрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕реНрдореГрддрд┐ рдХреА рднреВрдЦ рдХреЛ рдХрдо рдХрд░рдирд╛ рдерд╛ред рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ рдЖрджрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо 4 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдЦрдВрдб рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рддреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╡рд┐рд╖рдп рд╣реИ, рдУрд╣, рдХрд┐рддрдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореЗрдореЛрд░реА - рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ!

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



рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 40960 рдиреИрдиреЛрд╕реЗрдХрдВрдб рдкрд░ рдПрдХ рдЦреВрдмрд╕реВрд░рдд рддрд╕реНрд╡реАрд░ рд╣реИ, рдпрд╛рдиреА 2048 рдЪрдХреНрд░ (рдПрдХ рд╣реЛрдо рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреЗ рд╕рд╛рде, рдмрдлрд░ рдХреЛ 8 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рддрдХ рдХрдо рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╛рдиреА 2048 рдмрддреНрддреАрд╕-рдмрд┐рдЯ рд╢рдмреНрдж)ред рдпрд╣рд╛рдБ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рд╣реИ:



рдпрд╣рд╛рдБ рдЕрдВрдд рд╣реИ:



рдЦреИрд░, рдФрд░ рднрд░ рдореЗрдВ - рдПрдХ рднреА рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВред рдирд╣реАрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдРрд╕рд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЙрдореНрдореАрдж рдереА ...

рд╢рд╛рдпрдж рд╣рдореЗрдВ рдмрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рди рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╕реЗ? рдореИрдВрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ GPIO рдмреНрд▓реЙрдХ



рдЬреЛрдбрд╝рд╛: рддрддреНрдкрд░рддрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реА:



рдПрдХ рд╣реА рдкрд╛рда
  volatile alt_u32 status;
  volatile int n = 0;
  do
  {
	status = IORD_ALTERA_MSGDMA_CSR_STATUS(MSGDMA_0_CSR_BASE);
       IOWR_ALTERA_AVALON_PIO_DATA (PIO_0_BASE,0x01);
       IOWR_ALTERA_AVALON_PIO_DATA (PIO_0_BASE,0x00);

       n += 1;
  } while (!(status & errMask) &&(status & ALTERA_MSGDMA_CSR_BUSY_MASK));  


рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИ! рдХрд┐рд╕реЗ рджреЛрд╖ рджрд┐рдпрд╛ рдЬрд╛рдПрдВ?

рдХреЛрдИ рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд╕реНрдкрд╖реНрдЯреАрдХреГрдд рдЪреАрдЬреЗрдВ рд╣реИрдВ


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

рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдХреАрд╡рд░реНрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВ:



рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рд╣реИрдВ: рдпрд╣ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреЗрди рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреАрдЬреЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред рдЖрдк рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдм рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ? рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдореЗрдВ рддреИрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рдЪреБрдирдХрд░ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдЦреБрд▓реА рд╣реБрдИ рддрд╕реНрд╡реАрд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рджрд┐рдпрд╛ред рдФрд░ рддреБрд░рдВрдд



рдореИрдВ рдЗрд╕ рдЯреИрдм рдХрд╛ рдЪрдпрди рдХрд░реВрдВрдЧрд╛ : рдФрд░ рд╡рд╣рд╛рдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВ: рдореИрдВ



рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛:



рдЯрд╛рдпрд░реНрд╕ рд╕рдВрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ! рд╡реЗ рдЦрдВрдбрд┐рдд рд╣реИрдВ! рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рдард╣рд░рд╛ рд╕рдХрддрд╛ (рд╢рд╛рдпрдж рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рдХрд░реЗрдВрдЧреЗ), рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдбрд╛рд▓рд╛! рдпрд╣ рдпреЗ рд╕реНрд╡рд┐рдЪ рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдбреАрдПрдордП рдЗрдХрд╛рдИ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдЗрд╕ рд╕рдордп рдмрд┐рдирд╛ рд╕рдВрдШрд░реНрд╖ рдХреЗ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИ!

рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рднрдбрд╝рдХрд╛рддреЗ рд╣реИрдВ


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



рдПрдХ рд╣реА рдкрд╛рда
  volatile alt_u32 status;
  volatile int n = 0;
  volatile alt_u32* pBuf = (alt_u32*)BUFFER_BASE;
  volatile alt_u32 sum = 0;
  do
  {
	  status = IORD_ALTERA_MSGDMA_CSR_STATUS(MSGDMA_0_CSR_BASE);
	  sum += pBuf[n];

	  n += 1;
  } while (!(status & errMask) &&(status & ALTERA_MSGDMA_CSR_BUSY_MASK));


рдФрд░ рдЕрдВрдд рдореЗрдВ, рддрд░рдВрдЧреЛрдВ рдкрд░ рдбрд┐рдкреНрд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдП!



рдореЗрдореЛрд░реА рдЪреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЪреВрдХ рдкрд╛рдП рдЧрдП:



рд╣рд╛рдБ, рдФрд░ рд╣рдо рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкрдВрдХреНрддрд┐ рд╕реЗ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрд░рд╛рдм рд╕реНрдкреЙрдЯ (6CCE488F рдЧрд╛рдпрдм рд╣реИ) рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:



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

рдирд┐рд╖реНрдХрд░реНрд╖


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

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд░реИрдо рдХреЛ рдПрдХ рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВрдЧреЗ, рдФрд░ рдЯрд╛рдЗрдорд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ "рд╕рд┐рд░" рдХреЗ рд╕рд╛рде рдФрд░ рдкрд╣рд▓реЗ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрдирд╛ рджреЗрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдореБрдЭреЗ рдЕрднреА рддрдХ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖрдПрдВрдЧреАред

All Articles