Verilogред рд░реИрдо рдкрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдлрд┐рд▓реНрдЯрд░

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


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

рд╕рдВрдЪрдп рдЧреБрдгрди

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд┐рд▓реНрдЯрд░ рдХреЗ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреЗ рдЧреБрдгрд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рд╣реИрдВ, рд╣рдо рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдЧрддрд┐ рдЬрд╛рдирддреЗ рд╣реИрдВред рдФрд░ рднреА рдмреЗрд╣рддрд░ рдЕрдЧрд░ рдЖрдк рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдорд╛рдкрддреЗ рд╣реИрдВред рддреЛ рдЪрд▓рд┐рдП рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╕рдВрдЪрдп рдЧреБрдгрди рдХрд╛ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:
module mult #(parameter COEF_WIDTH = 24, parameter DATA_WIDTH = 16, parameter ADDR_WIDTH = 9, parameter MULT_WIDTH = COEF_WIDTH + DATA_WIDTH) ( input wire clk, input wire en, input wire [ (ADDR_WIDTH-1) : 0 ] ad, input wire signed [ (COEF_WIDTH-1) : 0 ] coe, input wire signed [ (DATA_WIDTH-1) : 0 ] pip, output wire signed [ (DATA_WIDTH-1) : 0 ] dout ); wire signed [(MULT_WIDTH-1) : 0 ] mu = coe * pip; reg signed [ (MULT_WIDTH-1) : 0 ] rac = {(MULT_WIDTH){1'b0}}; reg signed [ (DATA_WIDTH-1) : 0 ] ro = {DATA_WIDTH{1'b0}}; assign dout = ro; always @(posedge clk) if(en) if(ad == {ADDR_WIDTH{1'b0}}) begin rac <= mu; ro <= rac[ (MULT_WIDTH-2) -: (DATA_WIDTH) ]; end else rac <= rac + mu; endmodule 


ADDR_WIDTH = 9 рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдХреНрд░рдо 2 ^ 9 = 512 рдХреЗ рдмрд░рд╛рдмрд░ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рд╡рд┐рднрдХреНрдд рдпрд╛ рдкреАрдПрд▓рдПрд▓ рд╕реЗ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдЖрд╡реГрддреНрддрд┐ рдХреЛ 512 рдЧреБрдирд╛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдирдореВрдирд╛ рджрд░ 16 kHz рдереАред рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВред рдмреЗрд╢рдХ рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдкрдардиреАрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЧреБрдгрд╛рдВрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ

рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╕реЗ рд╡рд┐рд╖рдп рдкрдврд╝реЗрдВ? рдХреНрдпрд╛ рдХреЛрдИ рд░реИрдо рдкреИрдЯрд░реНрди рдерд╛? рдпрд╣ рдЦрд╛рдХрд╛ рдЕрдм рд╣рдорд╛рд░реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЙрд╕ рд░реИрдо рдХреЛ рдПрдХ рдШрдбрд╝реА рдЪрдХреНрд░ рдореЗрдВ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рдерд╛ред рд╢рд╛рдпрдж рд╕рдм рдХреБрдЫ рдЬреНрдЮрд╛рди рд╕реЗ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ рдЕрдм рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ:

 module coef #(parameter DATA_WIDTH=24, parameter ADDR_WIDTH=9) ( input wire [(DATA_WIDTH-1):0] data, input wire [(ADDR_WIDTH-1):0] addr, input wire we, input wire clk, output wire [(DATA_WIDTH-1):0] coef_rom ); reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0]; reg [(DATA_WIDTH-1):0] data_out; assign coef_rom = data_out; initial begin rom[0 ] = 24'b000000000000000000000000; rom[1 ] = 24'b000000000000000000000001; //new year tree rom[510] = 24'b000000000000000000000001; rom[511] = 24'b000000000000000000000000; end always @ (posedge clk) begin data_out <= rom[addr]; if (we) rom[addr] <= data; end endmodule 


рд▓рдЧрднрдЧ 508 рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рддрд╛рдХрд┐ рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝ рди рд╕рдХреЗред рдХреНрдпреЛрдВ 24 рдмрд┐рдЯреНрд╕, 16 рдирд╣реАрдВ? рдореБрдЭреЗ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдмрджрд▓рдирд╛ рдХреЛрдИ рд▓рдВрдмрд╛ рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЖрд░рдВрднрд┐рдХ рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж $ рд╢реБрд░реБрдЖрддреА рдпрд╛ $ readmemh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдЖрд░рдВрднреАрдХрд░рдг рдлрд╝рд╛рдЗрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░

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

 module pip #(parameter DATA_WIDTH=16, parameter ADDR_WIDTH=9) ( input wire [(DATA_WIDTH-1):0] data, input wire [(ADDR_WIDTH-1):0] read_addr, write_addr, input wire we, input wire clk, output wire [(DATA_WIDTH-1):0] pip_ram ); reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0]; reg [(DATA_WIDTH-1):0] data_out; assign pip_ram = data_out; always @ (posedge clk) begin data_out <= ram[read_addr]; if (we) ram[write_addr] <= data; end endmodule 


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

 module upr #(parameter COEF_WIDTH = 24, parameter DATA_WIDTH = 16, parameter ADDR_WIDTH = 9) ( input wire clk, input wire en, input wire [ (DATA_WIDTH-1) : 0 ] ram_upr, input wire [ (DATA_WIDTH-1) : 0 ] data_in, output wire [ (DATA_WIDTH-1) : 0 ] upr_ram, output wire we_ram, output wire [ (ADDR_WIDTH-1) : 0 ] adr_out ); assign upr_ram = (r_adr == {ADDR_WIDTH{1'b0}}) ? data_in : ram_upr; assign we_ram = (r_state == state1) ? 1'b1 : 1'b0; assign adr_out = r_adr; reg [ 2 : 0 ] r_state = state0; localparam state0 = 3'b001, state1 = 3'b010, state2 = 3'b100; reg [ (ADDR_WIDTH-1) : 0 ] r_adr = {ADDR_WIDTH{1'b0}}; always @(posedge clk) if(en) begin case(r_state) state0: r_state <= state1; state1: r_state <= state1; state2: begin end endcase end always @(posedge clk) case(r_state) state0: r_adr <= {ADDR_WIDTH{1'b0}}; state1: r_adr <= r_adr + 1'b1; state2: begin end endcase endmodule 

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

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░

рдпрд╣рд╛рдБ рд╢реАрд░реНрд╖-рдЕрдВрдд рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ shimantik рд╕реЗ рдмрд╛рд╣рд░ рдЖрдИ рд╣реИ:

 module filtr_ram( CLK, D_IN, MULT ); input CLK; input [15:0] D_IN; output [15:0] MULT; wire SYNTHESIZED_WIRE_13; wire [15:0] SYNTHESIZED_WIRE_1; wire [8:0] SYNTHESIZED_WIRE_14; wire SYNTHESIZED_WIRE_4; wire [15:0] SYNTHESIZED_WIRE_15; wire SYNTHESIZED_WIRE_6; wire [0:23] SYNTHESIZED_WIRE_8; wire [23:0] SYNTHESIZED_WIRE_11; assign SYNTHESIZED_WIRE_4 = 1; assign SYNTHESIZED_WIRE_6 = 0; assign SYNTHESIZED_WIRE_8 = 0; pip b2v_inst( .we(SYNTHESIZED_WIRE_13), .clk(CLK), .data(SYNTHESIZED_WIRE_1), .read_addr(SYNTHESIZED_WIRE_14), .write_addr(SYNTHESIZED_WIRE_14), .pip_ram(SYNTHESIZED_WIRE_15)); defparam b2v_inst.ADDR_WIDTH = 9; defparam b2v_inst.DATA_WIDTH = 16; upr b2v_inst1( .clk(CLK), .en(SYNTHESIZED_WIRE_4), .data_in(D_IN), .ram_upr(SYNTHESIZED_WIRE_15), .we_ram(SYNTHESIZED_WIRE_13), .adr_out(SYNTHESIZED_WIRE_14), .upr_ram(SYNTHESIZED_WIRE_1)); defparam b2v_inst1.ADDR_WIDTH = 9; defparam b2v_inst1.COEF_WIDTH = 24; defparam b2v_inst1.DATA_WIDTH = 16; coef b2v_inst3( .we(SYNTHESIZED_WIRE_6), .clk(CLK), .addr(SYNTHESIZED_WIRE_14), .data(SYNTHESIZED_WIRE_8), .coef_rom(SYNTHESIZED_WIRE_11)); defparam b2v_inst3.ADDR_WIDTH = 9; defparam b2v_inst3.DATA_WIDTH = 24; mult b2v_inst5( .clk(CLK), .en(SYNTHESIZED_WIRE_13), .ad(SYNTHESIZED_WIRE_14), .coe(SYNTHESIZED_WIRE_11), .pip(SYNTHESIZED_WIRE_15), .dout(MULT)); defparam b2v_inst5.ADDR_WIDTH = 9; defparam b2v_inst5.COEF_WIDTH = 24; defparam b2v_inst5.DATA_WIDTH = 16; endmodule 


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

рдХреНрд╡рд╛рд░реНрдЯрд╕ 9.0 рдореЗрдВ рд╕реНрд░реЛрдд рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛
ifolder.ru/27556340

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


All Articles