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

📄 compute_pipe_ch31t.v

📁 利用2個加法器及2個乘法器加上平行化處理來實現
💻 V
字号:
//************************************ The Module is for PIPELINE of MUL_ADD DEVICE testing MODULE *********************                                                                                                                      
//************************************ Copyright by @CDJ Co,.LTD     *******************************************                                                                                                                      
//************************************ Dpt : ASIC R&D Dpt.           *******************************************                                                                                                                      
//************************************ Rev : V1.2	             *******************************************                                                                                                                      
//************************************ Author : Kevin Chiang 	     *******************************************                                                                                                                      
//************************************ Modify : 2004/12/19	     *******************************************                                                                                                                      
//**************************************************************************************************************                                                                                                                      
//**********************(XDIN * A)+ (XDIN * A) * B + (XDIN * C)=(4 * 1) + (4 * 2) + (4 * 3)=4+8+12=24 **********                                                                                                                      
//**********************(YDIN * A)+ (YDIN * A) * B + (YDIN * C)=(5 * 1) + (5 * 2) + (5 * 3)=5+10+15=30**********                                                                                                                      
//**********************(ZDIN * A)+ (ZDIN * A) * B + (ZDIN * C)=(6 * 1) + (6 * 2) + (6 * 3)=6+12+18=36**********                                                                                                                      
//**************************************************************************************************************                                                                                                                      

`timescale 1ns/1ns 

module COMPUTE_PIPE_CH31T();
reg 		RST,CLK;               
reg	[15:0]	A,B,C;                    
wire   	[2:0]	IN_TAG;                
reg	[15:0]	X_DIN;
reg	[15:0]	Y_DIN;
reg	[15:0]	Z_DIN;                   
reg 		REQ;                   
                                       
wire	[2:0]	TAGOUT;
wire    [32:0]	DYOUT;
wire	[32:0]	DXOUT;
wire	[32:0]	DZOUT;

//reg	[1:0]	counter;
reg	clk;
always  @(posedge CLK or negedge RST)begin
	if (~RST)
	clk <= 1'b0;
	else
	clk <= ~clk;
end

parameter [2:0]	P0 = 3'b001,	
		P1 = 3'b100,
		P2 = 3'b010;
		
parameter 	ST0 = 2'b00,
		ST1 = 2'b01,
		ST2 = 2'b10;
				
reg	[1:0]ST,NEXT_ST;		

wire	DREQ = 1'b0;

always @(ST or DREQ)begin
	case (ST)
	ST0:	if (~DREQ)
		NEXT_ST = ST1;
		else
		NEXT_ST = ST0;
	ST1:	NEXT_ST = ST2;
	ST2:    NEXT_ST = ST0;
	default: NEXT_ST = ST0;
	endcase	
end

always @(posedge clk or negedge RST)begin
	if (~RST)
	ST <= ST0;
	else
	ST <= NEXT_ST;
end

reg	[2:0]	t;
always @(ST)begin
	case(ST)
	ST0: t <= P2;
	ST1: t <= P0;
	ST2: t <= P1;
	default: t<=t;
	endcase
end
	
assign IN_TAG = t;

initial                                 
begin                                   
#10 		CLK  <= 0;           
		RST  <= 0;           
		A <= 16'h1;      
		B <= 16'h2;  
		C <= 16'h3;
		X_DIN <=8'h4;
		Y_DIN <=8'h5;
		Z_DIN <=8'h6;
#200		RST  <= 1;             
#50		REQ <= 1'b1;        
#50		REQ <= 1'b0;        
		                        
#500000 $stop;                          
end


initial                                                                                               
begin                                                            
     	$dumpfile("COMPUTE_PIPE_CH31T.vcd");                         
        $dumpvars(0,COMPUTE_PIPE_CH31T);                             
    	//$fsdbDumpfile("COMPUTE_PIPE_CH31T.fsdb");                  
     	//$fsdbDumpvars(0,COMPUTE_PIPE_CH31T);                       
#500000 $finish;	                                         
                                                                 
end //end initial                                                
                                                                 
//*********************************************************      
//                      TEST_sysclk                              
//*********************************************************      
                                                                 
always  #20  CLK <= !CLK;//clk -> 40us cycle time          

COMPUTE_PIPE_CH31 PIPE3(
		   .CLK		(CLK),
		   .RST		(RST),
		   .REQ		(REQ),
		   //.DIN	(X_DIN),
		   .X_DIN	(X_DIN),
		   .Y_DIN	(Y_DIN),
		   .Z_DIN	(Z_DIN),	  
		   .IN_TAG	(IN_TAG),
		   .A		(A),
		   .B		(B),
		   .C		(C),
		   .TAGOUT	(TAGOUT),
		   .DXOUT	(DXOUT),
		   .DYOUT	(DYOUT),
		   .DZOUT  	(DZOUT)
		  );
endmodule
//******************************************************************************
//(XDIN * A)+ (XDIN * A) * B + (XDIN * C)=(4 * 1) + (4 * 2) + (4 * 3)=4+8+12=24
//(YDIN * A)+ (YDIN * A) * B + (YDIN * C)=(5 * 1) + (5 * 2) + (5 * 3)=5+10+15=30
//(ZDIN * A)+ (ZDIN * A) * B + (ZDIN * C)=(6 * 1) + (6 * 2) + (6 * 3)=6+12+18=36
//******************************************************************************
//******************************************************************************
//(XDIN * A)+ (XDIN * A) * B + (XDIN * C)=(4 * 1) + (4 * 2) + (4 * 3)=4+8+12=24
//(YDIN * A)+ (YDIN * A) * B + (YDIN * C)=(5 * 1) + (5 * 2) + (5 * 3)=5+10+15=30
//(ZDIN * A)+ (ZDIN * A) * B + (ZDIN * C)=(6 * 1) + (6 * 2) + (6 * 3)=6+12+18=36
//******************************************************************************

⌨️ 快捷键说明

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