|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
大家好!我在FPGA设计的过程中通过调用一个双口RAM作为BUFFER进行数据的写入和读出,通过ISE的IP核生成工具生成了一个双口RAM的IP核,但是在应用中发现,写入的数据和读出的数据不一致,chipscope抓到的信号显示读写的数据和地址及写信号都正确,而且写入数据之后,多次读取BUFFER中相同地址的值在不停变化,但通过chipscope抓取的写信号(wea)一直保持为零。其他的双口RAM读写正常,将此RAM固定到正常的RAM的位置,读写仍然不对。求助可能是什么原因造成的?(virtex-7 485T开发板,时钟为106MHz,使用的chipscope采用时钟也是这个时钟)
附代码如下:
- RAM代码
- module SCHEME_BUFFER(
- clka,
- wea,
- addra,
- dina,
- douta,
- clkb,
- web,
- addrb,
- dinb,
- doutb
- );input clka;
- input [0 : 0] wea;
- input [12 : 0] addra;
- input [31 : 0] dina;
- output [31 : 0] douta;
- input clkb;
- input [0 : 0] web;
- input [12 : 0] addrb;
- input [31 : 0] dinb;
- output [31 : 0] doutb;// synthesis translate_offBLK_MEM_GEN_V7_3 #(
- .C_ADDRA_WIDTH(13),
- .C_ADDRB_WIDTH(13),
- .C_ALGORITHM(1),
- .C_AXI_ID_WIDTH(4),
- .C_AXI_SLAVE_TYPE(0),
- .C_AXI_TYPE(1),
- .C_BYTE_SIZE(9),
- .C_COMMON_CLK(1),
- .C_DEFAULT_DATA("0"),
- .C_DISABLE_WARN_BHV_COLL(0),
- .C_DISABLE_WARN_BHV_RANGE(0),
- .C_ENABLE_32BIT_ADDRESS(0),
- .C_FAMILY("virtex7"),
- .C_HAS_AXI_ID(0),
- .C_HAS_ENA(0),
- .C_HAS_ENB(0),
- .C_HAS_INJECTERR(0),
- .C_HAS_MEM_OUTPUT_REGS_A(0),
- .C_HAS_MEM_OUTPUT_REGS_B(0),
- .C_HAS_MUX_OUTPUT_REGS_A(0),
- .C_HAS_MUX_OUTPUT_REGS_B(0),
- .C_HAS_REGCEA(0),
- .C_HAS_REGCEB(0),
- .C_HAS_RSTA(0),
- .C_HAS_RSTB(0),
- .C_HAS_SOFTECC_INPUT_REGS_A(0),
- .C_HAS_SOFTECC_OUTPUT_REGS_B(0),
- .C_INIT_FILE("BlankString"),
- .C_INIT_FILE_NAME("no_coe_file_loaded"),
- .C_INITA_VAL("0"),
- .C_INITB_VAL("0"),
- .C_INTERFACE_TYPE(0),
- .C_LOAD_INIT_FILE(0),
- .C_MEM_TYPE(2),
- .C_MUX_PIPELINE_STAGES(0),
- .C_PRIM_TYPE(1),
- .C_READ_DEPTH_A(8192),
- .C_READ_DEPTH_B(8192),
- .C_READ_WIDTH_A(32),
- .C_READ_WIDTH_B(32),
- .C_RST_PRIORITY_A("CE"),
- .C_RST_PRIORITY_B("CE"),
- .C_RST_TYPE("SYNC"),
- .C_RSTRAM_A(0),
- .C_RSTRAM_B(0),
- .C_SIM_COLLISION_CHECK("ALL"),
- .C_USE_BRAM_BLOCK(0),
- .C_USE_BYTE_WEA(0),
- .C_USE_BYTE_WEB(0),
- .C_USE_DEFAULT_DATA(0),
- .C_USE_ECC(0),
- .C_USE_SOFTECC(0),
- .C_WEA_WIDTH(1),
- .C_WEB_WIDTH(1),
- .C_WRITE_DEPTH_A(8192),
- .C_WRITE_DEPTH_B(8192),
- .C_WRITE_MODE_A("WRITE_FIRST"),
- .C_WRITE_MODE_B("WRITE_FIRST"),
- .C_WRITE_WIDTH_A(32),
- .C_WRITE_WIDTH_B(32),
- .C_XDEVICEFAMILY("virtex7")
- )
- inst (
- .CLKA(clka),
- .WEA(wea),
- .ADDRA(addra),
- .DINA(dina),
- .DOUTA(douta),
- .CLKB(clkb),
- .WEB(web),
- .ADDRB(addrb),
- .DINB(dinb),
- .DOUTB(doutb),
- .RSTA(),
- .ENA(),
- .REGCEA(),
- .RSTB(),
- .ENB(),
- .REGCEB(),
- .INJECTSBITERR(),
- .INJECTDBITERR(),
- .SBITERR(),
- .DBITERR(),
- .RDADDRECC(),
- .S_ACLK(),
- .S_ARESETN(),
- .S_AXI_AWID(),
- .S_AXI_AWADDR(),
- .S_AXI_AWLEN(),
- .S_AXI_AWSIZE(),
- .S_AXI_AWBURST(),
- .S_AXI_AWVALID(),
- .S_AXI_AWREADY(),
- .S_AXI_WDATA(),
- .S_AXI_WSTRB(),
- .S_AXI_WLAST(),
- .S_AXI_WVALID(),
- .S_AXI_WREADY(),
- .S_AXI_BID(),
- .S_AXI_BRESP(),
- .S_AXI_BVALID(),
- .S_AXI_BREADY(),
- .S_AXI_ARID(),
- .S_AXI_ARADDR(),
- .S_AXI_ARLEN(),
- .S_AXI_ARSIZE(),
- .S_AXI_ARBURST(),
- .S_AXI_ARVALID(),
- .S_AXI_ARREADY(),
- .S_AXI_RID(),
- .S_AXI_RDATA(),
- .S_AXI_RRESP(),
- .S_AXI_RLAST(),
- .S_AXI_RVALID(),
- .S_AXI_RREADY(),
- .S_AXI_INJECTSBITERR(),
- .S_AXI_INJECTDBITERR(),
- .S_AXI_SBITERR(),
- .S_AXI_DBITERR(),
- .S_AXI_RDADDRECC()
- );// synthesis translate_onendmodule调用此RAM的代码
- SCHEME_BUFFER scheme_buffer(
- .clka (clk),
- .wea (host_sch_wr_host),
- .addra (scheme_host_addr),
- .dina (host_data_in),
- .douta (host_sch_data_out),
- .clkb (clk),
- .web (1'b0),
- .addrb (scheme_addr),
- .dinb (32'd0),
- .doutb (scheme_data)
- );
复制代码 |
|