⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testbench_simplememory.v

📁 ARM7_verilog代码
💻 V
字号:
// Testbed for SDRAM model (simple)// written by Chris Fester 4-2-00`include "SimpleMemory.v"`include "Memoryside.v"module top;	reg [31:0] outsideAddr;	wire [31:0] A;	wire [31:0] D;	wire nRAS, nCAS, nRW, SEQ, nCS, MCLK, BYTE;	wire st_busy, ld_busy;	reg write_buffer_is_byte;	reg [31:0] write_buffer_D, write_buffer_A;	reg Store_Trigger, Load_Trigger;	wire load_from_mem_req;	wire [31:0] load_from_mem_data;	wire [1:0] load_from_mem_offset;	reg sysclk;	reg reset;        wire nWE;		memory_coupler memside(outsideAddr, A, D, nRAS, nCAS, nRW, SEQ, nCS, MCLK, BYTE, st_busy, ld_busy, write_buffer_is_byte, write_buffer_D, write_buffer_A, Store_Trigger, Load_Trigger, load_from_mem_req, load_from_mem_data, load_from_mem_offset, sysclk, reset);	SDRAM_model_simple mem(A, D, nRAS, nCAS, nWE, SEQ, nCS, MCLK, BYTE);	always #10 sysclk = ~sysclk;        assign nWE = ! nRW;	always @(posedge sysclk)		 $display("MEM: A=%h D=%h {nRAS,nCAS,nRW}=%b,  load req=%b",                           A, D, {nRAS, nCAS, nRW}, load_from_mem_req);	initial	begin                $stop;		sysclk = 1'b0;		outsideAddr = 32'h00000000;		write_buffer_is_byte = 1'b0;		write_buffer_D = 32'h00000000;		write_buffer_A = 32'h00000000;		Store_Trigger = 1'b0;		Load_Trigger = 1'b0;		reset = 1'b0;		#40;		reset = 1'b1;		#20;		reset = 1'b0;  // here we'll store an entire cache line.		write_buffer_D = 32'h01010101;		write_buffer_A = 32'h00000000;		Store_Trigger = 1'b1;		#20;		Store_Trigger = 1'b0;		#(20 * 8); // 8 states for store.		write_buffer_D = 32'hF0123456;		write_buffer_A = 32'h00000004;		Store_Trigger = 1'b1;		#20;		Store_Trigger = 1'b0;		#(20 * 8);		write_buffer_D = 32'h79ABCDEF;		write_buffer_A = 32'h00000008;		Store_Trigger = 1'b1;		#20;		Store_Trigger = 1'b0;		#(20 * 8);		write_buffer_D = 32'hDEADF00F;		write_buffer_A = 32'h0000000C;		Store_Trigger = 1'b1;		#20;		Store_Trigger = 1'b0;				#(20 * 8); // now we're going to load that stored cacheline...		Load_Trigger = 1'b1;		outsideAddr = 32'h00000000;		#20;		Load_Trigger = 1'b0;				#(20*10); // 10 states for load...		// now we'll store a byte...		write_buffer_is_byte = 1'b1;		write_buffer_D = 32'h00CC0000;		write_buffer_A = 32'h00000002;		Store_Trigger = 1'b1;		#20;		Store_Trigger = 1'b0;				#(20*8);		// now we're going to load that stored cacheline with the modified byte:		Load_Trigger = 1'b1;		outsideAddr = 32'h00000000;		#20;		Load_Trigger = 1'b0;		#(20*10);		#200;		//$finish;		$shm_open("waves.shm");		$shm_probe(top.outsideAddr, top.A, top.D, top.nRAS, top.nCAS, top.nRW, top.SEQ, top.nCS, top.MCLK, top.BYTE, top.st_busy, top.ld_busy, top.write_buffer_is_byte, top.write_buffer_D, top.write_buffer_A, top.Store_Trigger, top.Load_Trigger, top.load_from_mem_req, top.load_from_mem_data, top.load_from_mem_offset, top.sysclk, top.reset);		$shm_probe(top.memside.A, top.memside.clk, top.memside.ld_busy, top.memside.load_from_mem_data, top.memside.load_from_mem_offset, top.memside.load_from_mem_req, top.memside.Load_Trigger, top.memside.mem_A, top.memside.mem_BYTE, top.memside.mem_D, top.memside.mem_Dout, top.memside.mem_MCLK, top.memside.mem_nCAS, top.memside.mem_nCS, top.memside.mem_nRAS, top.memside.mem_nRW, top.memside.mem_SEQ, top.memside.reset, top.memside.st_busy, top.memside.state, top.memside.Store_Trigger, top.memside.write_buffer_A, top.memside.write_buffer_D, top.memside.write_buffer_is_byte);		$shm_probe(top.mem.Addr, top.mem.AddrBuf, top.mem.BYTE, top.mem.Data, top.mem.Dataout, top.mem.MCLK, top.mem.nCAS, top.mem.nCS, top.mem.nRAS, top.mem.nWE, top.mem.SEQ, top.mem.WriteBuf);		$stop;                $finish;	endendmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -