OpenCores
URL https://opencores.org/ocsvn/hive/hive/trunk

Subversion Repositories hive

[/] [hive/] [trunk/] [v04.05/] [pipe.v] - Rev 4

Compare with Previous | Blame | View Log

/*
--------------------------------------------------------------------------------
 
Module: pipe.v
 
Function: 
- Vector I/O shift register.
 
Instantiates: 
- Nothing.
 
Notes:
- Parameters for depth (register stages), data width, and async reset value.
- DEPTH=0 generates a wire.
 
--------------------------------------------------------------------------------
*/
 
 
module pipe
	#(
	parameter	integer					DEPTH					= 4,			// register stages
	parameter	integer					WIDTH					= 2,			// I/O data width
	parameter	[WIDTH-1:0]				RESET_VAL			= 0			// regs async reset value
	)
	(
	// clocks & resets
	input		wire							clk_i,								// clock
	input		wire							rst_i,								// async. reset, active high
	// I/O
	input		wire	[WIDTH-1:0]			data_i,								// data in
	output	wire	[WIDTH-1:0]			data_o								// data out
	);
 
 
	/*
	----------------------
	-- internal signals --
	----------------------
	*/
	genvar									i;
 
 
	/*
	================
	== code start ==
	================
	*/
 
 
	// generate regs pipeline
	generate
		if ( DEPTH == 0 ) begin
			assign data_o = data_i;
		end else begin
			reg [WIDTH-1:0] stage[0:DEPTH-1];
			for ( i=0; i<DEPTH; i=i+1 ) begin : loop
				always @ ( posedge clk_i or posedge rst_i ) begin
					if ( rst_i ) begin
						stage[i] <= RESET_VAL;
					end else begin
						stage[i] <= ( i == DEPTH-1 ) ? data_i : stage[i+1];
					end
				end
			end  // endfor : loop
			assign data_o = stage[0];
		end
	endgenerate
 
 
endmodule
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.