//
// 16ビット幅、2048ワードRAM
//
module rom_16x2k (clk, we, en, addr, din, dout);
parameter DATA_WIDTH = 16;
parameter ADDR_WIDTH = 11;
input wire [DATA_WIDTH-1:0] din;
input wire [ADDR_WIDTH-1:0] addr;
input wire we;
input wire clk;
input wire en;
output reg [DATA_WIDTH-1:0] dout;
(* RAM_STYLE="BLOCK" *) reg [DATA_WIDTH-1:0] ram [2**ADDR_WIDTH-1:0];
initial
$readmemh("rom_16x2k.data", ram, 0, 2047);
always @(posedge clk)
if (en) begin
dout <= ram[addr];
if (we)
ram[addr] <= din;
end
endmodule
// Program Memory
// rom_8x2k_hi rom_8x2k_hi_0 (
// .addr (pmem_addr),
// .clk (clk_sys),
// .din (pmem_din[15:8]),
// .dout (pmem_dout[15:8]),
// .en (pmem_cen),
// .we (pmem_wen[1])
// );
// rom_8x2k_lo rom_8x2k_lo_0 (
// .addr (pmem_addr),
// .clk (clk_sys),
// .din (pmem_din[7:0]),
// .dout (pmem_dout[7:0]),
// .en (pmem_cen),
// .we (pmem_wen[0])
// );
assign we_node = ~(pmem_wen[1] & pmem_wen[0]);
rom_16x2k rom_16x2k_inst (
.addr (pmem_addr),
.clk (clk_sys),
.din (pmem_din),
.dout (pmem_dout),
.en (~pmem_cen),
.we (we_node)
);
//initial
// begin
// // Read memory file
// #10 $readmemh("./pmem.mem", pmem);
//
// // Update Xilinx memory banks
// for (i=0; i<2048; i=i+1)
// begin
// dut.rom_8x2k_hi_0.inst.mem[i] = pmem[i][15:8];
// dut.rom_8x2k_lo_0.inst.mem[i] = pmem[i][7:0];
// end
//end
// initial // Normal end of test
// begin
// @(inst_pc===16'hffff)
// $display(" ===============================================");
// if (error!=0)
// begin
// $display("| SIMULATION FAILED |");
// $display("| (some verilog stimulus checks failed) |");
// end
// else if (~stimulus_done)
// begin
// $display("| SIMULATION FAILED |");
// $display("| (the verilog stimulus didn't complete) |");
// end
// else
// begin
// $display("| SIMULATION PASSED |");
// end
// $display(" ===============================================");
// $finish;
// end
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |