用ISE生成了一个双端口SRAM,但对其工作原理不是很清楚,尤其是WEA信号是如何起作用的,盼大侠指教.关于WEA信号的长度,是否不同的RAM有不同的要求? module sram( addra, addrb, clka, clkb, dina, doutb, wea); input [10 : 0] addra; input [10 : 0] addrb; input clka; input clkb; input [7 : 0] dina; output [7 : 0] doutb; input wea; // synthesis translate_off BLKMEMDP_V6_3 #( .c_addra_width(11), .c_addrb_width(11), .c_default_data("0"), .c_depth_a(2048), .c_depth_b(2048), .c_enable_rlocs(0), .c_has_default_data(0), .c_has_dina(1), .c_has_dinb(0), .c_has_douta(0), .c_has_doutb(1), .c_has_ena(0), .c_has_enb(0), .c_has_limit_data_pitch(0), .c_has_nda(0), .c_has_ndb(0), .c_has_rdya(0), .c_has_rdyb(0), .c_has_rfda(0), .c_has_rfdb(0), .c_has_sinita(0), .c_has_sinitb(0), .c_has_wea(1), .c_has_web(0), .c_limit_data_pitch(18), .c_mem_init_file("sram.mif"), .c_pipe_stages_a(0), .c_pipe_stages_b(0), .c_reg_inputsa(0), .c_reg_inputsb(0), .c_sim_collision_check("NONE"), .c_sinita_value("0"), .c_sinitb_value("0"), .c_width_a(8), .c_width_b(8), .c_write_modea(0), .c_write_modeb(0), .c_ybottom_addr("0"), .c_yclka_is_rising(1), .c_yclkb_is_rising(1), .c_yena_is_high(1), .c_yenb_is_high(1), .c_yhierarchy("hierarchy1"), .c_ymake_bmm(0), .c_yprimitive_type("16kx1"), .c_ysinita_is_high(1), .c_ysinitb_is_high(1), .c_ytop_addr("1024"), .c_yuse_single_primitive(0), .c_ywea_is_high(1), .c_yweb_is_high(1), .c_yydisable_warnings(1)) inst ( .ADDRA(addra), .ADDRB(addrb), .CLKA(clka), .CLKB(clkb), .DINA(dina), .DOUTB(doutb), .WEA(wea), .DINB(), .DOUTA(), .ENA(), .ENB(), .NDA(), .NDB(), .RFDA(), .RFDB(), .RDYA(), .RDYB(), .SINITA(), .SINITB(), .WEB()); // synthesis translate_on
// XST black box declaration // box_type "black_box" // synthesis attribute box_type of sram is "black_box" endmodule |