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
							
								
									6ac54a180e
								
							
						
					
					
						commit
						068ddc3e0d
					
				@ -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