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

📄 checkers.v

📁 verilog 写的 memory controller
💻 V
字号:
/////////////////////////////////////////////////////////////////////////                                                             ////////  OpenCores Memory Controller Testbench                      ////////  Additional checks                                          ////////                                                             ////////  Author: Richard Herveille                                  ////////          richard@asics.ws                                   ////////                                                             ////////                                                             ////////  Downloaded from: http://www.opencores.org/cores/mem_ctrl/  ////////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// Copyright (C) 2001, 2002 Richard Herveille                  ////////                          richard@asics.ws                   ////////                                                             //////// This source file may be used and distributed without        //////// restriction provided that this copyright statement is not   //////// removed from the file and that any derivative work contains //////// the original copyright notice and the associated disclaimer.////////                                                             ////////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     //////// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   //////// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   //////// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      //////// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         //////// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    //////// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   //////// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        //////// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  //////// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  //////// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  //////// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         //////// POSSIBILITY OF SUCH DAMAGE.                                 ////////                                                             ///////////////////////////////////////////////////////////////////////////  CVS Log////  $Id: checkers.v,v 1.1 2002/03/06 15:10:34 rherveille Exp $////  $Date: 2002/03/06 15:10:34 $//  $Revision: 1.1 $//  $Author: rherveille $//  $Locker:  $//  $State: Exp $//// Change History://               $Log: checkers.v,v $//               Revision 1.1  2002/03/06 15:10:34  rherveille//               Initial release////`include "timescale.v"//////////////////////////////// external bus-master model//module bm_model(br, bg, chk);	// parameters	reg on_off;	// inputs	output br;	reg br;	input  bg;	input chk;	integer delay;	initial		begin			on_off = 0;			br = 1'b0;		end	always	begin		wait(on_off)		delay = ($random >> 24) +10;		// wait a random moment		# delay;		// assert bus_request		br = 1'b1;		$display("External bus-master requesting bus at time %t... ", $time);		// wait for assertion of bus_grant		wait(bg);		$display("Bus granted at time %t.", $time);		// check the memory controller output_enable signal, should be negated		if (chk)			$display("Memory controller output signals not in tri-state.");		delay = ($random >> 24) +10;						// wait a random moment		# delay;		// negate bus_request							br = 1'b0;		$display("External bus-master releasing bus at time %t ...", $time);		// wait for negation of bus_grant		wait(!bg);		$display("Bus released at time %t.", $time);	endendmodule//// WISHBONE Bus Watchdog//module watch_dog(clk, cyc_i, ack_i, adr_i);	// parameters	parameter count = 1000;	// inputs	input clk;	input cyc_i;	input ack_i;	input [31:0] adr_i;	// variables	integer cnt;	// module body	always@(posedge clk)		if (!cyc_i || ack_i)			cnt <= #1 count;		else			begin				cnt <= #1 cnt -1;				if (cnt == 0)					begin						$display("\n\n WATCHDOG TIMER EXPIRED \n\n");						$display("Time: %t, address: %h", $time, adr_i);						$stop;					end			endendmodule//// Check status of Wishbone ERR_O line//module err_check(err, sel_par);	//	// inputs	//	input err;	input sel_par;	//	// module body	//	always@(err)		case (err)			1'b1:				if(sel_par)					begin						$display("*");						$display("* ERROR: WISHBONE ERR_O asserted at time %t", $time);						$display("*");					end				else						$display("Wishbone ERR_O asserted (ok)");				1'bx:				begin					$display("*");					$display("* ERROR: WISHBONE ERR_O undefined at time %t", $time);					$display("*");				end		endcaseendmodule//// Check status of Wishbone ERR_O line//module cs_check(cs);	//	// inputs	//	input [7:0] cs;	//	// module body	//	always@(cs)	begin		if ((cs[7] == 1'bx) | (cs[6] == 1'bx) | (cs[5] == 1'bx) | (cs[4] == 1'bx) | 		    (cs[3] == 1'bx) | (cs[2] == 1'bx) | (cs[1] == 1'bx) | (cs[0] == 1'bx) )			begin				$display("*");				$display("* ERROR: CHIP SELECT SIGNAL UNDEFINED at time %t", $time);				$display("*");			end		if ((!cs[7] & !(&cs[6:0])            ) |		    (!cs[6] & !(&{cs[7]  , cs[5:0]}) ) |		    (!cs[5] & !(&{cs[7:6], cs[4:0]}) ) |		    (!cs[4] & !(&{cs[7:5], cs[3:0]}) ) |		    (!cs[3] & !(&{cs[7:4], cs[2:0]}) ) |		    (!cs[2] & !(&{cs[7:3], cs[1:0]}) ) |		    (!cs[1] & !(&{cs[7:2], cs[0]}  ) ) |		    (!cs[0] & !(&cs[7:1])          )   )			begin				$display("*");				$display("* ERROR: MULTIPLE CHIP SELECT SIGNALS ASSERTED at time %t", $time);				$display("*");			end	endendmodule

⌨️ 快捷键说明

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