diff --git a/src/main/scala/device/AXI4DummySD.scala b/src/main/scala/device/AXI4DummySD.scala index a0b90f35ded95057e801f2faec08fe3e49775a9c..85010198066a24cacd7ee1d07f22d22c9400ca52 100644 --- a/src/main/scala/device/AXI4DummySD.scala +++ b/src/main/scala/device/AXI4DummySD.scala @@ -32,23 +32,22 @@ class SDHelper extends BlackBox with HasBlackBoxInline { setInline("SDHelper.v", s""" |import "DPI-C" function void sd_setaddr(input int addr); - |import "DPI-C" function int sd_read(input bit ren); + |import "DPI-C" function void sd_read(output int data); | |module SDHelper ( | input clk, | input setAddr, | input [31:0] addr, | input ren, - | output [31:0] data + | output reg [31:0] data |); | - | always @(posedge clk) begin - | if (setAddr) begin - | sd_setaddr(addr); - | end + | always @(negedge clk) begin + | if (ren) sd_read(data); + | end + | always@(posedge clk) begin + | if (setAddr) sd_setaddr(addr); | end - | - | assign data = sd_read(ren); | |endmodule """.stripMargin) diff --git a/src/test/csrc/sdcard.cpp b/src/test/csrc/sdcard.cpp index 3d74fa5020a4f44f4e98cb62561dbd5adebe4df8..8abe9c7475a39efeef7d8e059a0c536e1afa1074 100644 --- a/src/test/csrc/sdcard.cpp +++ b/src/test/csrc/sdcard.cpp @@ -11,18 +11,14 @@ void sd_setaddr(uint32_t addr) { //assert(0); } -uint32_t sd_read(int ren) { - if (ren) { - uint32_t data; - fread(&data, 4, 1, fp); - //printf("read data = 0x%08x\n", *data); - return data; - } - return 0xdeadbeaf; +void sd_read(uint32_t *data) { + fread(data, 4, 1, fp); + //printf("read data = 0x%08x\n", *data); + //assert(0); } void init_sd(void) { - fp = fopen("/home/xyn/debian/debian.img", "r"); + fp = fopen("/home/xyn/workloads/debian/riscv-debian.img", "r"); if(!fp) { eprintf(ANSI_COLOR_MAGENTA "[warning] sdcard img not found\n");