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

📄 datapath.v.bak

📁 多周期处理器--verilog写的,欢迎大家来下载
💻 BAK
字号:
//Implementation of Datapath 32-bit. Including output to PC(Segment 1), Register File (32 registers, Segment 2) and ALU (Segment 3).module datapath(	input			clk, reset,			//clock, reset	input 			memtoreg, 	input [1:0] pcsrc,	//control signal: memory-to-register, PC-source	input			alusrca,	input [1:0] alusrcb,	input    regdst,		//control signal: ALU-source, register-destination	input			regwrite, jump, signExt,	branch,	//control signal: register-write, jump, sign-extend	input	[3:0]	aluctrl,			//control signal: ALU-control		//************************************************	output			cout,	//Flag carry	output 			ov,		//Flag overflow	output 			zero,	//Flag zero	output 			sign,	//Flag sign		//************************************************	//We can put these flags in a Flag Register, after careful discussion together.	output	[31:0]   pc,			//next adress of PC	input 		[31:0]	instr,		//instruction from Instruction Memory	output	[31:0]	aluout, writedata,	//result: ALU-out; control signal: write-signal	input		[31:0]	readdata,	input pcwritecond,pcwrite);	//data resource: read-data		wire	[4:0]		writereg;	wire	[31:0]	pcnext;   //pcplus4 is calculated by ALU,so it's aluresult in fact;	wire	[31:0]	signimm, signimmsh;	wire	[31:0]	regsrca,srca, srcb;	wire	[31:0]	result,aluresult;	wire writepc;      //write enable		//wire pcsrc1;	//reg		[31:0]	instr;	//initial	always @(instr)	begin		//instr = instr;		$display ("datapath<<<<<<<<<instr = %b>>>>>>>>>>",instr);	end			//Segment 1, next PC logic	flopr 	 pcreg(clk, reset,writepc, pcnext, pc);	SL2 				immsh(signimm, signimmsh);		mux3 #(32) 	pcbrmux(aluout,aluresult,{pc[31:28], instr[25:0], 2'b00}, pcsrc,pcnext);// jump signal is in fact nonsense in multicycle!!!!!should be left out later!!!!   assign writepc=(pcwritecond&zero)|pcwrite;   	//Segment 2, register file logic	regfile			rf(clk, regwrite, instr[25:21], instr[20:16], writereg, result, regsrca, writedata);	mux2	#(5)	wrmux(instr[20:16], instr[15:11], regdst, writereg);	mux2	#(32)	resmux(aluout, readdata,memtoreg, result);	signExt			se(instr[15:0], signExt, signimm);   	//Segment 3, ALU logic	mux2 #(32) srcamux(pc,regsrca,alusrca,srca);	mux4	#(32)	srcbmux(writedata,'d4, signimm,signimmsh, alusrcb, srcb);	ALU				alu(srca, srcb,cin, aluctrl, instr[10:6],aluresult,aluout, cout, ov, zero, sign);endmodule

⌨️ 快捷键说明

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