mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	controller forwards funct7
- started the bmu controll register
This commit is contained in:
		
							parent
							
								
									8feeaa5e94
								
							
						
					
					
						commit
						cd13913f07
					
				| @ -149,7 +149,7 @@ module controller( | ||||
|                       ControlsD = `CTRLW'b1_101_01_11_001_0_0_0_0_0_0_0_0_0_10_0; // amo
 | ||||
|                   end else | ||||
|                       ControlsD = `CTRLW'b0_000_00_00_000_0_0_0_0_0_0_0_0_0_00_1; // Non-implemented instruction
 | ||||
|       7'b0110011: if (Funct7D == 7'b0000000 | Funct7D == 7'b0100000) | ||||
|       7'b0110011: if (Funct7D == 7'b0000000 | Funct7D == 7'b0100000 | (Funct7D == 7'b0000101 & `ZBC_SUPPORTED)) | ||||
|                       ControlsD = `CTRLW'b1_000_00_00_000_0_1_0_0_0_0_0_0_0_00_0; // R-type 
 | ||||
|                   else if (Funct7D == 7'b0000001 & `M_SUPPORTED) | ||||
|                       ControlsD = `CTRLW'b1_000_00_00_011_0_0_0_0_0_0_0_0_1_00_0; // Multiply/divide
 | ||||
| @ -215,9 +215,9 @@ module controller( | ||||
|   flopenrc #(1)  controlregD(clk, reset, FlushD, ~StallD, 1'b1, InstrValidD); | ||||
| 
 | ||||
|   // Execute stage pipeline control register and logic
 | ||||
|   flopenrc #(35) controlregE(clk, reset, FlushE, ~StallE, | ||||
|                            {RegWriteD, ResultSrcD, MemRWD, JumpD, BranchD, ALUControlD, ALUSrcAD, ALUSrcBD, ALUResultSrcD, CSRReadD, CSRWriteD, PrivilegedD, Funct3D, Funct7D, W64D, MDUD, AtomicD, InvalidateICacheD, FlushDCacheD, FenceD, InstrValidD}, | ||||
|                            {IEURegWriteE, ResultSrcE, MemRWE, JumpE, BranchE, ALUControlE, ALUSrcAE, ALUSrcBE, ALUResultSrcE, CSRReadE, CSRWriteE, PrivilegedE, Funct3E, Funct7E, W64E, MDUE, AtomicE, InvalidateICacheE, FlushDCacheE, FenceE, InstrValidE}); | ||||
|   flopenrc #(28) controlregE(clk, reset, FlushE, ~StallE, | ||||
|                            {RegWriteD, ResultSrcD, MemRWD, JumpD, BranchD, ALUControlD, ALUSrcAD, ALUSrcBD, ALUResultSrcD, CSRReadD, CSRWriteD, PrivilegedD, Funct3D, W64D, MDUD, AtomicD, InvalidateICacheD, FlushDCacheD, FenceD, InstrValidD}, | ||||
|                            {IEURegWriteE, ResultSrcE, MemRWE, JumpE, BranchE, ALUControlE, ALUSrcAE, ALUSrcBE, ALUResultSrcE, CSRReadE, CSRWriteE, PrivilegedE, Funct3E, W64E, MDUE, AtomicE, InvalidateICacheE, FlushDCacheE, FenceE, InstrValidE}); | ||||
| 
 | ||||
|   // Branch Logic
 | ||||
|   //  The comparator handles both signed and unsigned branches using BranchSignedE
 | ||||
| @ -239,6 +239,9 @@ module controller( | ||||
|                          {RegWriteE, ResultSrcE, MemRWE, CSRReadE, CSRWriteE, PrivilegedE, Funct3E, FWriteIntE, AtomicE, InvalidateICacheE, FlushDCacheE, FenceE, InstrValidE, IntDivE}, | ||||
|                          {RegWriteM, ResultSrcM, MemRWM, CSRReadM, CSRWriteM, PrivilegedM, Funct3M, FWriteIntM, AtomicM, InvalidateICacheM, FlushDCacheM, FenceM, InstrValidM, IntDivM}); | ||||
|    | ||||
|   // BMU control register
 | ||||
|   flopenrc#(7) controlregBMU(clk, reset, FlushM, ~StallM, {Funct7D}, {Funct7E}); | ||||
| 
 | ||||
|   // Writeback stage pipeline control register
 | ||||
|   flopenrc #(5) controlregW(clk, reset, FlushW, ~StallW, | ||||
|                          {RegWriteM, ResultSrcM, IntDivM}, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user