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

📄 pipeid.v

📁 别处下载的sarm9
💻 V
📖 第 1 页 / 共 2 页
字号:
						 end						 if (iir[23])							rs2<= iir[11:0];						 else							rs2<= -iir[11:0];						 						 rsf[1] <=0;						 rsf[2]<=0;						 rs2op <=`SFROR;						 rs2sf <=0;						 rs2r<=0;						 rs2sfr<=0;						 sbit <=0;					  end					  ///////////////////////////////////////////////////////////////					  					   ////////////////////////////////////////////////////////////					 `ENCLSREG:					 begin					   rda <= iir[15:12];						 if (iir[20])							begin								 op <= `LD;								  rdatar<=0;						  rsf[3]<=0;						  rdata<= 0;							end						 else							begin							  op <= `ST;							  if (armrf.writealloc[iir[15:12]])								begin								   rdatar <= armrf.reqNaddr[iir[15:12]]; 								   armrf.req[armrf.reqNaddr[iir[15:12]]] <=   armrf.req[armrf.reqNaddr[iir[15:12]]] +1;																								   rsf[3]<=1;								   rdata<=0;								end							 else								begin								   rdatar<=0;								   rsf[3] <=0;								   rdata<= armrf.regs[iir[15:12]];								end							end						 opt <= iopt;						 if (armrf.writealloc[iir[19:16]])							begin							   rs1r <= armrf.reqNaddr[iir[19:16]];							   #1							   armrf.req[armrf.reqNaddr[iir[19:16]]] <=   armrf.req[armrf.reqNaddr[iir[19:16]]] +1;							   rsf[0] <=1;							   rs1 <=0;							end						 else							begin							   rs1r<=0;							   rsf[0]<=0;							   rs1<= armrf.regs[iir[19:16]];							end													  if (armrf.writealloc[iir[3:0]])							begin							   rs2r <= armrf.reqNaddr[iir[3:0]];							   rsf[1] <=1;							   rs2 <=0;							   #1							   armrf.req[armrf.reqNaddr[iir[3:0]]] <=   armrf.req[armrf.reqNaddr[iir[3:0]]] +1;							end						 else							begin							   rs2r<=0;							   rsf[1] <=0;							   rs2<= armrf.regs[iir[3:0]];							end						 rsf[2] <=0;							 rs2<= iir[11:0];						 rs2op <=decshift(iir[6:5]);						 rs2sf <=iir[11:7];						 rs2sfr<=0;						 sbit <=0;					  end					  ///////////////////////////////////////////////////////////////					  					  					  					   ////////////////////////////////////////////////////////////					 `ENCDPIMM:					 begin						  rda <= iir[15:12];						 op <= getopcode(iir[24:21]);   						 opt <= iopt;						 if (armrf.writealloc[iir[19:16]])							begin							   rs1r <= armrf.reqNaddr[iir[19:16]];								armrf.req[armrf.reqNaddr[iir[19:16]]] <=   armrf.req[armrf.reqNaddr[iir[19:16]]] +1;							   rsf[0] <=1;							   rs1 <=0;							end						 else							begin							   rs1r<=0;							   rsf[0]<=0;							   rs1<= armrf.regs[iir[19:16]];							end						 rs2<= iir[7:0];						 rs2op <=`SFROR;						 rs2sf <=iir[11:8];						 rs2r<=0;						 rs2sfr<=0;						 sbit <=iir[20];						 if (iir[20])						   armrf.cpsrws<= 1;						   						  rdatar<=0;						  rsf[3]<=0;						  rdata<= 0;					  end					  ///////////////////////////////////////////////////////////////					  					  					  					  ////////////////////////////////////////////////////////////					 `ENCDPIMMS:					 begin						  rda <= iir[15:12];						 op <= getopcode(iir[24:21]);   						 opt <= iopt;						 if (armrf.writealloc[iir[19:16]])							begin							   rs1r <= armrf.reqNaddr[iir[19:16]];							   armrf.req[armrf.reqNaddr[iir[19:16]]] <=   armrf.req[armrf.reqNaddr[iir[19:16]]] +1;							   rsf[0] <=1;							   rs1 <=0;							end						 else							begin							   rs1r<=0;							   rsf[0]<=0;							   rs1<= armrf.regs[iir[19:16]];							end						 if (armrf.writealloc[iir[3:0]])							begin							   rs2r <= armrf.reqNaddr[iir[3:0]];							   rsf[1] <=1;							   rs2 <=0;							   #1							   armrf.req[armrf.reqNaddr[iir[3:0]]] <=   armrf.req[armrf.reqNaddr[iir[3:0]]] +1;							end						 else							begin							   rs2r<=0;							   rsf[1]<=0;							   rs2<= armrf.regs[iir[3:0]];							end													 rs2op <=decshift(iir[6:5]);						 rs2sf <=iir[11:7];						 rs2sfr<=0;						 sbit <=iir[20];						  if (iir[20])						   armrf.cpsrws<= 1;						  rdatar<=0;						  rsf[3]<=0;						  rdata<= 0;					  end					  ///////////////////////////////////////////////////////////////					  					  					 ////////////////////////////////////////////////////////////					 `ENCDPREGS:					 begin						  rda <= iir[15:12];						 op <= getopcode(iir[24:21]);   						 opt <= iopt;						 if (armrf.writealloc[iir[19:16]])							begin							   rs1r <= armrf.reqNaddr[iir[19:16]];								armrf.req[armrf.reqNaddr[iir[19:16]]] <=   armrf.req[armrf.reqNaddr[iir[19:16]]] +1;							   rsf[0] <=1;							   rs1 <=0;							end						 else							begin							   rs1r<=0;							   rsf[0]<=0;							   rs1<= armrf.regs[iir[19:16]];							end						 if (armrf.writealloc[iir[3:0]])							begin							   rs2r <= armrf.reqNaddr[iir[3:0]];							   rsf[1] <=1;							   rs2 <=0;							   #1 							   armrf.req[armrf.reqNaddr[iir[3:0]]] <=   armrf.req[armrf.reqNaddr[iir[3:0]]] +1;							end						 else							begin							   rs2r<=0;							   rsf[1]<=0;							   rs2<= armrf.regs[iir[3:0]];							end						 if (armrf.writealloc[iir[11:8]])							begin							   rs2sfr <= armrf.reqNaddr[iir[11:8]];							   rsf[2] <=1;							   rs2sf <=0;							   #2							   armrf.req[armrf.reqNaddr[iir[11:8]]] <=   armrf.req[armrf.reqNaddr[iir[11:8]]] +1;							end						 else							begin							   rs2sfr<=0;							   rsf[2]<=0;							   rs2sf<= armrf.regs[iir[11:8]];							end   						 rs2op <=decshift(iir[6:5]);						 sbit <=iir[20];						  if (iir[20])						   armrf.cpsrws<= 1;						   rdatar<=0;						  rsf[3]<=0;						  rdata<= 0;					  end					  ///////////////////////////////////////////////////////////////					  					   ////////////////////////////////////////////////////////////					 `ENCMLA:					 begin						  rda <= iir[19:16];						 op <= `MLA;   						 opt <= iopt;						 if (armrf.writealloc[iir[15:12]])							begin							   rs1r <= armrf.reqNaddr[iir[15:12]];							   armrf.req[armrf.reqNaddr[iir[15:12]]] <=   armrf.req[armrf.reqNaddr[iir[15:12]]] +1;							   rsf[0] <=1;							   rs1 <=0;							end						 else							begin							   rs1r<=0;							   rsf[0]<=0;							   rs1<= armrf.regs[iir[15:12]];							end						 if (armrf.writealloc[iir[3:0]])							begin							   rs2r <= armrf.reqNaddr[iir[3:0]];							  							   rsf[1] <=1;							   rs2 <=0;   							   #1							   armrf.req[armrf.reqNaddr[iir[3:0]]] <=   armrf.req[armrf.reqNaddr[iir[3:0]]] +1;							end						 else							begin							   rs2r<=0;							   rsf[1]<=0;							   rs2<= armrf.regs[iir[3:0]];							end						 if (armrf.writealloc[iir[11:8]])							begin							   rs2sfr <= armrf.reqNaddr[iir[11:8]];							   rsf[2] <=1;							   rs2sf <=0;							   #1							   armrf.req[armrf.reqNaddr[iir[11:8]]] <=   armrf.req[armrf.reqNaddr[iir[11:8]]] +1;							end						 else							begin							   rs2sfr<=0;							   rsf[2]<=0;							   rs2sf<= armrf.regs[iir[11:8]];							end   						 rs2op <=`SFMUL;						 sbit <=iir[20];						  if (iir[20])						   armrf.cpsrws<=1;						   rdatar<=0;						  rsf[3]<=0;						  rdata<= 0;					  end					  ///////////////////////////////////////////////////////////////					  					   ////////////////////////////////////////////////////////////					 `ENCMUL:					  begin						  rda <= iir[19:16];						 op <= `MUL;   						 opt <= iopt;							begin							   rs1r<=0;							   rsf[0]<=0;							   rs1<= 0;							end						 if (armrf.writealloc[iir[3:0]])							begin							   rs2r <= armrf.reqNaddr[iir[3:0]];							   armrf.req[armrf.reqNaddr[iir[3:0]]] <=   armrf.req[armrf.reqNaddr[iir[3:0]]] +1;							   rsf[1] <=1;							   rs2 <=0;							end						 else							begin							   rs2r<=0;							   rsf[1]<=0;							   rs2<= armrf.regs[iir[3:0]];							end						 if (armrf.writealloc[iir[11:8]])							begin							   rs2sfr <= armrf.reqNaddr[iir[11:8]];							   rsf[2] <=1;							   rs2sf <=0;							   #1							   armrf.req[armrf.reqNaddr[iir[11:8]]] <=   armrf.req[armrf.reqNaddr[iir[11:8]]] +1;							end						 else							begin							   rs2sfr<=0;							   rsf[2]<=0;							   rs2sf<= armrf.regs[iir[11:8]];							end   						 rs2op <=`SFMUL;						 sbit <=iir[20];						 if (iir[20])						   armrf.cpsrws<= 1;						 rdatar<=0;						  rsf[3]<=0;						  rdata<= 0;					  end					  ///////////////////////////////////////////////////////////////					  default:					  begin						  						 op <= `NOP;   						 opt <= 0;						 rs1r<= 0;						 rsf <= 0;						 rs1 <= 0;						 rs2 <= 0;						 rs2op <= 0;						 rs2sf <=0;						 rs2r<=0;						 rs2sfr<=0;						 sbit <=0;						 rdatar<=0;						  rdata<= 0;						  					  end				endcase             end // end ifend // end negedge /*always @(negedge clk)begin #5	  if ((istatus == 2'b01) && (!(op ==`NOP)) && (!(op ==`ST)))	 begin	 			if (!armrf.writealloc[iir[15:12]])			 begin				armrf.writealloc[iir[15:12]]<=1;					begin :break					for(j=0;j<`MAXRENAMEREGS;j=j+1)						begin						  if(!armrf.busy[j])							   begin								  armrf.busy[j] <= 1;								  armrf.valid[j]<= 0;								  armrf.data[j]<= 0;								  armrf.regrename[j]<= iir[15:12];								  armrf.reqNaddr[iir[15:12]] <=j;							   disable break;   							   end  						end 				end								if(j==`MAXRENAMEREGS)				begin					$display("Rename ERROR!");				end			end	  end end*/always @(negedge clk)begin #5	 if ((istatus == 2'b01) && (!(op ==`NOP)) && (!(op ==`ST)))	 begin			if (armrf.writealloc[iir[15:12]])			 begin			 			 end  			 else			 begin			 armrf.writealloc[iir[15:12]]<=1;				  if(!armrf.busy[0])				   begin					  armrf.busy[0] <= 1;					  armrf.valid[0]<= 0;					  armrf.data[0]<= 0;					  armrf.regrename[0]<= iir[15:12];					  armrf.reqNaddr[iir[15:12]] <=0;				   end			  else			  begin				  if(!armrf.busy[1])				   begin					  armrf.busy[1] <= 1;					  armrf.valid[1]<= 0;					  armrf.data[1]<= 0;					  armrf.regrename[1]<= iir[15:12];					  armrf.reqNaddr[iir[15:12]] <=1;				   end				else				  begin					  if(!armrf.busy[2])						   begin							  armrf.busy[2] <= 1;							  armrf.valid[2]<= 0;							  armrf.data[2]<= 0;							  armrf.regrename[2]<= iir[15:12];							  armrf.reqNaddr[iir[15:12]] <=2;						   end					  else					  begin						   if(!armrf.busy[3])						   begin							  armrf.busy[3] <= 1;							  armrf.valid[3]<= 0;							  armrf.data[3]<= 0;							  armrf.regrename[3]<= iir[15:12];							  armrf.reqNaddr[iir[15:12]] <=3;						   end						   else						   begin								if(!armrf.busy[4])							   begin								  armrf.busy[4] <= 1;								  armrf.valid[4]<= 0;								  armrf.data[4]<= 0;								  armrf.regrename[4]<= iir[15:12];								  armrf.reqNaddr[iir[15:12]] <=4;							   end							   else							   begin									if(!armrf.busy[5])									   begin										  armrf.busy[5] <= 1;										  armrf.valid[5]<= 0;										  armrf.data[5]<= 0;										  armrf.regrename[5]<= iir[15:12];										  armrf.reqNaddr[iir[15:12]] <=5;									   end									   else									   begin											if(!armrf.busy[6])											   begin												  armrf.busy[6] <= 1;												  armrf.valid[6]<= 0;												  armrf.data[6]<= 0;												  armrf.regrename[6]<= iir[15:12];												  armrf.reqNaddr[iir[15:12]] <=6;											   end											   else											   begin													if(!armrf.busy[7])													   begin														  armrf.busy[7] <= 1;														  armrf.valid[7]<= 0;														  armrf.data[7]<= 0;														  armrf.regrename[7]<= iir[15:12];														  armrf.reqNaddr[iir[15:12]] <=7;													   end													   else													   begin															if(!armrf.busy[8])															   begin																  armrf.busy[8] <= 1;																  armrf.valid[8]<= 0;																  armrf.data[8]<= 0;																  armrf.regrename[8]<= iir[15:12];																  armrf.reqNaddr[iir[15:12]] <=8;															   end															   else															   begin																	if(!armrf.busy[9])																	   begin																		  armrf.busy[9] <= 1;																		  armrf.valid[9]<= 0;																		  armrf.data[9]<= 0;																		  armrf.regrename[9]<= iir[15:12];																		  armrf.reqNaddr[iir[15:12]] <=9;																	   end																	   else																	   begin																			if(!armrf.busy[10])																			   begin																				  armrf.busy[10] <= 1;																				  armrf.valid[10]<= 0;																				  armrf.data[10]<= 0;																				  armrf.regrename[10]<= iir[15:12];																				  armrf.reqNaddr[iir[15:12]] <=10;																			   end																			   else																			   begin																					$display("Rename ERROR!");																			   end																	   end															   end													   end											   end									   end							   end						   end						  				  					  end				  end			  end		   end	  end end  	endmodule

⌨️ 快捷键说明

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