亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? decoder_arm.v

?? 若干VHDL語言的源代碼
?? V
?? 第 1 頁 / 共 5 頁
字號:
						out_MEMTargetRegister=`Def_LinkRegister;
					else
						out_MEMTargetRegister=TargetRegisterNumber;


					//simple thread of mem stage
					out_SimpleMEMType=`MEMType_Null;
					out_SimpleMEMTargetRegister=`Def_LinkRegister;
				end
			end
			else
			begin
				//post index
				//perform alu but use origin base as address to load
				//in this mode the write back bit is always 1'b0
				//but the alu result must ALWAYS WRITE BACK to base register
				//because if you do not want to write back, you do not need this address mode,
				// a normal address mode with 0 offset will be enough
				//so main alu thread compute the result,main mem thread will load according to simple alu result
				//simple alu will pass leftoperand(base) to main mem,simple mem will pass main alu result to write
				out_SimpleALUType=`ALUType_Mvl;
				out_SimpleALUTargetRegister=`Def_LinkRegister;

				out_ALUTargetRegister=LeftRegisterNumber;

				//main thread of mem stage
				out_MEMEnable=1'b1;
				if(in_PipelineRegister_IFID[22]==1'b1)
					out_MEMType=`MEMType_LoadSimpleByte;
				else
					out_MEMType=`MEMType_LoadSimpleWord;

				if(TargetRegisterNumber==`Def_PCNumber)
					out_MEMTargetRegister=`Def_LinkRegister;
				else
					out_MEMTargetRegister=TargetRegisterNumber;


				//simple thread of mem stage
				out_SimpleMEMType=`MEMType_MovMain;
				out_SimpleMEMTargetRegister=LeftRegisterNumber;
			end
			out_IDOwnCanGo=1'b1;

			//when target register is pc,then this bit will tell mem stage to write loaded value to if
			if(TargetRegisterNumber==`Def_PCNumber)
				out_ALUMisc[7]=1'b1;

			Next_PrevOperationWantWriteRegisterFromMEM=1'b1;
			Next_PrevWriteRegister=TargetRegisterNumber;
		end//load instruction
		else if(`Def_IsStoreInstruction)
		begin
			//left source register can be direct read
			if(LeftRegisterNumber==`Def_PCNumber)
			begin
				//left register is pc
				//do not read register file
				//just send out pc on out_AddressGoWithInstruction2ALU
				out_AddressGoWithInstruction2ALU=PCAdder8or4Result;
				out_LeftReadRegisterEnable=1'b0;
				out_LeftReadRegisterNumber=LeftRegisterNumber;
				//left come from imm pc
				//do not forward
				out_ALULeftFromImm=1'b1;
			end
			else
			begin
				//left register is not pc
				out_LeftReadRegisterEnable=1'b1;
				out_LeftReadRegisterNumber=LeftRegisterNumber;
				//left operand are not from immediate
				out_ALULeftFromImm=1'b0;
			end

			//deal with the offset
			//right read bus
			if(in_PipelineRegister_IFID[25]==1'b1)
			begin
				//offset come from register and need a shift
				out_RightReadRegisterNumber=RightRegisterNumber;
				out_RightReadRegisterEnable=1'b1;
				out_ALURightFromImm=1'b0;

				//imm is not need here
				out_ALUExtendedImmediateValue=`WordDontCare;

				//shift type
				out_ALURightShiftType=in_PipelineRegister_IFID[6:5];
				//shift ammount
				//use out_ALUMisc to pass shift count
				// the third read register bus will be use as store value read
				out_ALUMisc[5:0]={in_PipelineRegister_IFID[11:7],1'b1};
			end
			else
			begin
				//offset come from imm in instruction
				out_RightReadRegisterNumber=RightRegisterNumber;
				out_RightReadRegisterEnable=1'b0;
				out_ALURightFromImm=1'b1;

				//imm act as offset
				out_ALUExtendedImmediateValue={20'h00000,in_PipelineRegister_IFID[11:0]};

				out_ALURightShiftType=in_PipelineRegister_IFID[6:5];
				//shift ammount is always 0
				//use out_ALUMisc to pass shift count
				// the third read register bus will be use as store value read
				out_ALUMisc[5:0]={6'b000001};
			end
		
			//third read bus will be use to read store value
			if(ThirdRegisterNumber==`Def_PCNumber)
			begin
				out_ALUSecondImmediateValue=PCAdder12or4Result;
				//do not read register
				out_ThirdReadRegisterEnable=1'b0;
				out_ThirdReadRegisterNumber=ThirdRegisterNumber;
				//can not be forward
				out_ALUThirdFromImm=1'b1;
			end
			else
			begin
				out_ALUSecondImmediateValue=`WordDontCare;
				out_ThirdReadRegisterEnable=1'b1;
				out_ThirdReadRegisterNumber=ThirdRegisterNumber;
				//can be forward
				out_ALUThirdFromImm=1'b0;
			end

			out_ALUEnable=1'b1;
			//add or sub the offset from base
			if(in_PipelineRegister_IFID[23]==1'b1)
			begin
				//add
				out_ALUType=`ALUType_Add;
			end
			else
			begin
				//sub
				out_ALUType=`ALUType_Sub;
			end
			
			//deal with the case of pre or post index
			if(in_PipelineRegister_IFID[24]==1'b1)
			begin
				//pre index
				//first perform alu then use result as the address to store
				out_SimpleALUType=`ALUType_Null;
				out_SimpleALUTargetRegister=`Def_LinkRegister;
				if(in_PipelineRegister_IFID[21]==1'b1)
				begin
					//write back alu result to base register
					out_ALUTargetRegister=LeftRegisterNumber;

					//main thread of mem stage
					out_MEMEnable=1'b1;
					if(in_PipelineRegister_IFID[22]==1'b1)
						out_MEMType=`MEMType_StoreMainByte;
					else
						out_MEMType=`MEMType_StoreMainWord;
					out_MEMTargetRegister=`Def_LinkRegister;

					//simple thread of mem stage
					out_SimpleMEMType=`MEMType_MovMain;
					out_SimpleMEMTargetRegister=LeftRegisterNumber;
				end
				else
				begin
					//no need to write back
					out_ALUTargetRegister=`Def_LinkRegister;

					//main thread of mem stage
					out_MEMEnable=1'b1;
					if(in_PipelineRegister_IFID[22]==1'b1)
						out_MEMType=`MEMType_StoreMainByte;
					else
						out_MEMType=`MEMType_StoreMainWord;
					out_MEMTargetRegister=`Def_LinkRegister;

					//simple thread of mem stage
					out_SimpleMEMType=`MEMType_Null;
					out_SimpleMEMTargetRegister=`Def_LinkRegister;
				end
			end
			else
			begin
				//post index
				//perform alu but use origin base as address to load
				//in this mode the write back bit is always 1'b0
				//but the alu result must ALWAYS WRITE BACK to base register
				//because if you do not want to write back, you do not need this address mode,
				// a normal address mode with 0 offset will be enough
				//so main alu thread compute the result,main mem thread will load according to simple alu result
				//simple alu will pass leftoperand(base) to main mem,simple mem will pass main alu result to write
				out_SimpleALUType=`ALUType_Mvl;
				out_SimpleALUTargetRegister=`Def_LinkRegister;

				out_ALUTargetRegister=LeftRegisterNumber;

				//main thread of mem stage
				out_MEMEnable=1'b1;
				if(in_PipelineRegister_IFID[22]==1'b1)
					out_MEMType=`MEMType_StoreSimpleByte;
				else
					out_MEMType=`MEMType_StoreSimpleWord;
				out_MEMTargetRegister=`Def_LinkRegister;

				//simple thread of mem stage
				out_SimpleMEMType=`MEMType_MovMain;
				out_SimpleMEMTargetRegister=LeftRegisterNumber;
			end
			out_IDOwnCanGo=1'b1;
		end
		else if(`Def_IsLDM)
		begin
			if(in_PipelineRegister_IFID[23]==1'b0)
			begin//down
			   if(DecRegNumber[7:4]==4'b1110)
			   begin
			   	//perform delayed branch
			   	//except delay branch signal, nothing is use
				out_LeftReadRegisterEnable=1'b0;
				out_LeftReadRegisterNumber=LeftRegisterNumber;
				out_ALULeftFromImm=1'b1;
				
				//deal with offset
				out_RightReadRegisterNumber=RightRegisterNumber;
				out_RightReadRegisterEnable=1'b0;
				out_ALURightFromImm=1'b1;
	
				out_ALUExtendedImmediateValue=32'h0000_0000;
	
				out_ALURightShiftType=`Def_ShiftType_LogicLeft;
				//shift ammount is always 0
				out_ALUSecondImmediateValue=`WordZero;

				//third read bus will be use
				out_ThirdReadRegisterEnable=1'b0;
				out_ThirdReadRegisterNumber=ThirdRegisterNumber;
				out_ALUThirdFromImm=1'b1;

				//a valid ALU
				out_ALUEnable=1'b1;

				//sub 4 from current register
				out_ALUType=`ALUType_Sub;
				out_ALUTargetRegister=`Def_LinkRegister;

				out_SimpleALUType=`ALUType_Null;
				out_SimpleALUTargetRegister=`Def_LinkRegister;

				//main thread of mem stage
				out_MEMEnable=1'b1;
				//always load word
				out_MEMType=`MEMType_Null;
				out_MEMTargetRegister=`Def_LinkRegister;

				//simple thread of mem stage
				out_SimpleMEMType=`MEMType_Null;
				out_SimpleMEMTargetRegister=`Def_LinkRegister;

				out_IDOwnCanGo=1'b1;
				//out_ALUMisc[14] means delay branch
				if(in_PipelineRegister_IFID[15]==1'b1)
					out_ALUMisc[14]=1'b1;
				else
					out_ALUMisc[14]=1'b0;

				//out_ALUMisc[15] means store delay branch target
				out_ALUMisc[15]=1'b0;
				
				if(in_IsInPrivilegedMode==1'b1 && in_PipelineRegister_IFID[15]==1'b1 && in_PipelineRegister_IFID[22]==1'b1)
				begin
					//condition code valid in alu and mem stage
					out_ALUPSRType=`ALUPSRType_SPSR2CPSR;
					out_MEMPSRType=`MEMPSRType_WriteCPSR;
				end

				
				Next_IncRegNumber=`Def_RegisterSelectZero;
				Next_DecRegNumber=`Def_RegisterSelectAllOne;

				Next_PrevOperationWantWriteRegisterFromMEM=1'b0;
				Next_PrevWriteRegister=`Def_LinkRegister;

			   end//of DecRegNumber[7:4]==4'b1110
			   else
			   begin
				out_LeftReadRegisterEnable=1'b1;
				
				//if write back is need, then just read left register as base
				//if write back is not need and it is the first access ,also read left register as base
				// if write back is not need and it is not the first access, then just use LocalForwardRegister
				if(in_PipelineRegister_IFID[21]==1'b1 || IsFirstAccess==1'b1)
					out_LeftReadRegisterNumber=LeftRegisterNumber;
				else 
					out_LeftReadRegisterNumber=`Def_LocalForwardRegister;
					
				//left operand are not from immediate
				out_ALULeftFromImm=1'b0;
				
				//deal with offset
				//offset come from imm in instruction
				out_RightReadRegisterNumber=RightRegisterNumber;
				out_RightReadRegisterEnable=1'b0;
				out_ALURightFromImm=1'b1;
	
				//imm act as offset
				if(IfCurrentRegAccessByLDMSTM==1'b1)
					out_ALUExtendedImmediateValue=32'h0000_0004;
				else
					out_ALUExtendedImmediateValue=32'h0000_0000;
	
				out_ALURightShiftType=`Def_ShiftType_LogicLeft;
				//shift ammount is always 0
				out_ALUSecondImmediateValue=`WordZero;

				//third read bus will be use
				out_ThirdReadRegisterEnable=1'b0;
				out_ThirdReadRegisterNumber=ThirdRegisterNumber;
				out_ALUThirdFromImm=1'b1;

				//a valid ALU
				out_ALUEnable=1'b1;

				//sub 4 from current register
				out_ALUType=`ALUType_Sub;

				//deal with the case of pre or post index
				if(in_PipelineRegister_IFID[24]==1'b1)
				begin
					//pre index
					//first perform alu then use result as the address to load
					out_SimpleALUType=`ALUType_Null;
					out_SimpleALUTargetRegister=`Def_LinkRegister;
					if(in_PipelineRegister_IFID[21]==1'b1)
					begin
						//write back alu result to base register
						out_ALUTargetRegister=LeftRegisterNumber;

						//main thread of mem stage
						out_MEMEnable=1'b1;

						//always load word
						if(IfCurrentRegAccessByLDMSTM==1'b1)
						begin
							out_MEMType=`MEMType_LoadMainWord;
							
							if({4'b0000,DecRegNumber[3:0]}==`Def_PCNumber)
								out_MEMTargetRegister=`Def_LinkRegister;
							else
								out_MEMTargetRegister={4'b0000,DecRegNumber[3:0]};
						end
						else
						begin
							out_MEMType=`MEMType_Null;
							out_MEMTargetRegister=`Def_LinkRegister;
						end


						//simple thread of mem stage
						out_SimpleMEMType=`MEMType_MovMain;
						out_SimpleMEMTargetRegister=LeftRegisterNumber;
					end
					else
					begin
						//no need to write back
						//so just write base value to Def_LocalForwardRegister 
						out_ALUTargetRegister=`Def_LocalForwardRegister;

						//main thread of mem stage
						out_MEMEnable=1'b1;
						
						//always load word
						if(IfCurrentRegAccessByLDMSTM==1'b1)
						begin
							out_MEMType=`MEMType_LoadMainWord;
							
							if({4'b0000,DecRegNumber[3:0]}==`Def_PCNumber)
								out_MEMTargetRegister=`Def_LinkRegister;
							else
								out_MEMTargetRegister={4'b0000,DecRegNumber[3:0]};
						end
						else
						begin
							out_MEMType=`MEMType_Null;
							out_MEMTargetRegister=`Def_LinkRegister;
						end


						//simple thread of mem stage
						//no need to write back, so just write the modified base to Def_LocalForwardRegister
						out_SimpleMEMType=`MEMType_MovMain;
						out_SimpleMEMTargetRegister=`Def_LocalForwardRegister;
					end
				end
				else
				begin
					//post index
					//perform alu but use origin base as address to load
					out_SimpleALUType=`ALUType_Mvl;
					out_SimpleALUTargetRegister=`Def_LinkRegister;

					if(in_PipelineRegister_IFID[21]==1'b1)
					begin
						out_ALUTargetRegister=LeftRegisterNumber;

						//main thread of mem stage
						out_MEMEnable=1'b1;

						//always load word
						if(IfCurrentRegAccessByLDMSTM==1'b1)
						begin
							out_MEMType=`MEMType_LoadSimpleWord;

							if({4'b0000,DecRegNumber[3:0]}==`Def_PCNumber)
								out_MEMTargetRegister=`Def_LinkRegister;
							else
								out_MEMTargetRegister={4'b0000,DecRegNumber[3:0]};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美福利一区二区| 中文字幕一区二区在线播放| 国产精品午夜在线观看| 亚洲国产精品视频| 成人综合日日夜夜| 欧美一级片免费看| 亚洲狠狠爱一区二区三区| 成人网页在线观看| 久久午夜国产精品| 蜜桃精品视频在线观看| 欧美中文一区二区三区| 国产精品二三区| 韩国欧美国产1区| 91精品国产综合久久福利软件 | 亚洲美女少妇撒尿| 国产精品一区免费在线观看| 欧美人伦禁忌dvd放荡欲情| 亚洲男人天堂av| av在线播放不卡| 国产精品无圣光一区二区| 国产麻豆精品一区二区| 日韩精品一区二区三区在线观看| 五月天中文字幕一区二区| 欧美在线制服丝袜| 亚洲国产欧美在线| 日本韩国视频一区二区| 亚洲精品久久嫩草网站秘色| 成人一级片在线观看| 国产欧美综合在线| 岛国av在线一区| 中文字幕精品一区| 92国产精品观看| 国产精品你懂的| 99久久精品免费观看| 国产精品免费视频一区| www.成人在线| 亚洲欧洲综合另类| 在线精品亚洲一区二区不卡| 一区二区三区在线免费视频| 日本精品一区二区三区四区的功能| 国产精品白丝在线| 99re这里只有精品视频首页| 国产精品视频一区二区三区不卡| 不卡一区二区三区四区| 国产精品乱码一区二区三区软件| 成人激情av网| 亚洲综合久久av| 欧美日高清视频| 黄页视频在线91| 国产喷白浆一区二区三区| www.亚洲人| 亚洲国产wwwccc36天堂| 欧美一级在线观看| 国产精选一区二区三区| 国产精品久久久久精k8| 欧美色视频一区| 久久狠狠亚洲综合| 中文字幕亚洲视频| 69av一区二区三区| 国内精品视频一区二区三区八戒| 国产精品久久久久久亚洲伦| 欧美三级中文字| 国产麻豆精品在线| 亚洲国产另类av| 日韩精品一区二区三区swag| 成人一级视频在线观看| 午夜婷婷国产麻豆精品| 久久精品视频免费| 欧美精品欧美精品系列| 国产成人在线视频网站| 亚洲制服丝袜av| 久久久久久久综合色一本| 日韩亚洲欧美成人一区| 丁香桃色午夜亚洲一区二区三区| 亚洲综合图片区| 国产拍欧美日韩视频二区| 欧美精品日日鲁夜夜添| 成人理论电影网| 麻豆精品在线播放| 亚洲欧美另类久久久精品| 欧美v亚洲v综合ⅴ国产v| 色8久久人人97超碰香蕉987| 国产一区二区在线看| 午夜精品久久一牛影视| 国产精品国产三级国产普通话99| 3d动漫精品啪啪| 色婷婷一区二区| 国产二区国产一区在线观看| 三级久久三级久久久| 亚洲日本青草视频在线怡红院| 日韩免费性生活视频播放| 91国内精品野花午夜精品| 国产成人av福利| 韩国欧美国产1区| 免费看欧美美女黄的网站| 亚洲欧洲综合另类在线| 亚洲国产精品精华液2区45| 精品国产精品网麻豆系列| 欧美理论电影在线| 在线免费亚洲电影| 99视频超级精品| 成人黄色综合网站| 丁香桃色午夜亚洲一区二区三区| 狠狠色综合日日| 久久er精品视频| 青青草精品视频| 日韩av电影免费观看高清完整版| 亚洲综合区在线| 一区二区三区国产豹纹内裤在线| 国产天堂亚洲国产碰碰| 久久麻豆一区二区| 久久久精品tv| 久久精品人人做人人爽97| 日韩一二三区不卡| 日韩免费一区二区三区在线播放| 91精品国产aⅴ一区二区| 欧美日韩1234| 日韩欧美aaaaaa| 久久久久久日产精品| 久久精品无码一区二区三区| 久久精品视频在线免费观看| 欧美极品少妇xxxxⅹ高跟鞋| 欧美国产1区2区| 亚洲男人都懂的| 亚洲成a人在线观看| 亚洲午夜免费电影| 美国三级日本三级久久99| 美女免费视频一区| 国产精品乡下勾搭老头1| 成人中文字幕合集| 一本到不卡精品视频在线观看 | 成人久久久精品乱码一区二区三区| 播五月开心婷婷综合| 色88888久久久久久影院按摩| 欧美日韩精品三区| 精品处破学生在线二十三| 欧美国产日本韩| 一个色综合网站| 黄色成人免费在线| 99精品热视频| 欧美丰满少妇xxxxx高潮对白| 日韩欧美中文字幕制服| 国产女人aaa级久久久级| 一区二区三区波多野结衣在线观看| 天堂成人免费av电影一区| 精品亚洲aⅴ乱码一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃 | 国产一区视频网站| 一本大道久久精品懂色aⅴ| 欧美精品久久一区二区三区| 久久青草国产手机看片福利盒子| 国产精品看片你懂得| 丝袜美腿一区二区三区| 国产毛片精品国产一区二区三区| 日本韩国欧美三级| 久久综合九色综合欧美就去吻| 亚洲欧洲日韩在线| 另类专区欧美蜜桃臀第一页| 99久久精品情趣| 精品乱人伦一区二区三区| 一区二区三区中文字幕精品精品 | 日韩小视频在线观看专区| 国产精品久久综合| 麻豆免费看一区二区三区| 91免费观看视频| 精品国产免费一区二区三区四区| 亚洲欧美区自拍先锋| 国产一区二区在线看| 欧美久久久久久久久| 国产精品初高中害羞小美女文| 日本女优在线视频一区二区| 色爱区综合激月婷婷| 欧美成人bangbros| 亚洲午夜精品一区二区三区他趣| 成人av手机在线观看| 久久亚洲私人国产精品va媚药| 图片区日韩欧美亚洲| 一本色道久久综合狠狠躁的推荐| 国产日韩综合av| 国精产品一区一区三区mba桃花 | 91色porny在线视频| 精品国产亚洲一区二区三区在线观看 | 亚洲444eee在线观看| aaa欧美大片| 欧美国产97人人爽人人喊| 韩国v欧美v亚洲v日本v| 日韩欧美一级二级| 喷水一区二区三区| 欧美日韩成人一区二区| 亚洲国产另类av| 欧美日韩中文另类| 亚洲一区二区三区在线播放| 色就色 综合激情| 亚洲欧美日韩一区| 一本色道亚洲精品aⅴ| 一区二区三区在线观看动漫| 色94色欧美sute亚洲13| 一区二区三区欧美视频| 欧美一区二区在线免费观看| 日本在线不卡一区|