mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
1217 lines
31 KiB
Systemverilog
1217 lines
31 KiB
Systemverilog
|
///////////////////////////////////////////
|
||
|
//
|
||
|
// Written: James Stine
|
||
|
// Modified: 9/28/2021
|
||
|
//
|
||
|
// Purpose: FSM for floating point divider/square root unit (Goldschmidt)
|
||
|
//
|
||
|
// A component of the Wally configurable RISC-V project.
|
||
|
//
|
||
|
// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
|
||
|
//
|
||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
|
||
|
// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
|
||
|
// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
|
||
|
// is furnished to do so, subject to the following conditions:
|
||
|
//
|
||
|
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||
|
//
|
||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||
|
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
||
|
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
|
///////////////////////////////////////////
|
||
|
|
||
|
module fsm_fpdiv_pipe (
|
||
|
input logic clk,
|
||
|
input logic reset,
|
||
|
input logic start,
|
||
|
input logic op_type,
|
||
|
input logic P,
|
||
|
output logic done,
|
||
|
output logic load_rega,
|
||
|
output logic load_regb,
|
||
|
output logic load_regc,
|
||
|
output logic load_regd,
|
||
|
output logic load_regr,
|
||
|
output logic load_regs,
|
||
|
output logic load_regp,
|
||
|
output logic [2:0] sel_muxa,
|
||
|
output logic [2:0] sel_muxb,
|
||
|
output logic sel_muxr,
|
||
|
output logic divBusy
|
||
|
);
|
||
|
|
||
|
// div64 : S0-S14 (15 cycles)
|
||
|
// sqrt64 : S15-S35 (21 cycles)
|
||
|
// div32: S36-S47 (12 cycles)
|
||
|
// sqrt32 : S48-S64 (17 cycles)
|
||
|
typedef enum logic [6:0] {S0, S1, S2, S3, S4, S5, S6, S7, S8, S9,
|
||
|
S10, S11, S12, S13, S14, S15, S16, S17, S18, S19,
|
||
|
S20, S21, S22, S23, S24, S25, S26, S27, S28, S29,
|
||
|
S30, S31, S32, S33, S34, S35, S36, S37, S38, S39,
|
||
|
S40, S41, S42, S43, S44, S45, S46, S47, S48, S49,
|
||
|
S50, S51, S52, S53, S54, S55, S56, S57, S58, S59,
|
||
|
S60, S61, S62, S63, S64} statetype;
|
||
|
|
||
|
statetype current_state, next_state;
|
||
|
|
||
|
always @(posedge clk)
|
||
|
begin
|
||
|
if (reset == 1'b1)
|
||
|
current_state <= S0;
|
||
|
else
|
||
|
current_state <= next_state;
|
||
|
end
|
||
|
|
||
|
always @(*)
|
||
|
begin
|
||
|
case(current_state)
|
||
|
S0: // iteration 0
|
||
|
begin
|
||
|
if (start==1'b0)
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b0;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S0;
|
||
|
end
|
||
|
else if (start==1'b1 && op_type==1'b0 && P==1'b0)
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b010;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S1;
|
||
|
end
|
||
|
else if (start==1'b1 && op_type==1'b0 && P==1'b1)
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b010;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S36;
|
||
|
end
|
||
|
else if (start==1'b1 && op_type==1'b1 && P==1'b0)
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b1;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b010;
|
||
|
sel_muxb = 3'b001;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S15;
|
||
|
end
|
||
|
else if (start==1'b1 && op_type==1'b1 && P==1'b1)
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b1;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b010;
|
||
|
sel_muxb = 3'b001;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S48;
|
||
|
end
|
||
|
else
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b0;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S0;
|
||
|
end
|
||
|
end // case: S0
|
||
|
// div64
|
||
|
S1:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b001;
|
||
|
sel_muxb = 3'b001;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S2;
|
||
|
end // case: S1
|
||
|
S2: // iteration 1
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S3;
|
||
|
end
|
||
|
S3:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S4;
|
||
|
end
|
||
|
S4: // iteration 2
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S5;
|
||
|
end
|
||
|
S5:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0; // add
|
||
|
next_state <= S6;
|
||
|
end
|
||
|
S6: // iteration 3
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S7;
|
||
|
end
|
||
|
S7:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S8;
|
||
|
end // case: S7
|
||
|
S8:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S9;
|
||
|
end // case: S7
|
||
|
S9: // q,qm,qp
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b1;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S10;
|
||
|
end // case: S9
|
||
|
S10: // rem
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S11;
|
||
|
end
|
||
|
S11:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b1;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S12;
|
||
|
end // case: S11
|
||
|
S12:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S13;
|
||
|
end
|
||
|
S13:
|
||
|
begin
|
||
|
done = 1'b1;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S14;
|
||
|
end
|
||
|
S14:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b0;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S0;
|
||
|
end
|
||
|
// sqrt64
|
||
|
S15:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S16;
|
||
|
end
|
||
|
S16:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b001;
|
||
|
sel_muxb = 3'b100;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S17;
|
||
|
end
|
||
|
S17:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b010;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S18;
|
||
|
end
|
||
|
S18: // iteration 1
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b1;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S19;
|
||
|
end
|
||
|
S19: // iteration 1
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S20;
|
||
|
end
|
||
|
S20:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b100;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S21;
|
||
|
end
|
||
|
S21:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S22;
|
||
|
end
|
||
|
S22: // iteration 2
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b1;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S23;
|
||
|
end // case: S18
|
||
|
S23:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S24;
|
||
|
end
|
||
|
S24:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b100;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S25;
|
||
|
end
|
||
|
S25:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S26;
|
||
|
end
|
||
|
S26: // iteration 3
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b1;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S27;
|
||
|
end // case: S21
|
||
|
S27:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S28;
|
||
|
end
|
||
|
S28:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b100;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S29;
|
||
|
end
|
||
|
S29:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S30;
|
||
|
end // case: S23
|
||
|
S30: // q,qm,qp
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b1;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S31;
|
||
|
end
|
||
|
S31: // rem
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b110;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S32;
|
||
|
end // case: S25
|
||
|
S32:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b1;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b110;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S33;
|
||
|
end // case: S34
|
||
|
S33:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S34;
|
||
|
end
|
||
|
S34: // done
|
||
|
begin
|
||
|
done = 1'b1;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S35;
|
||
|
end // case: S34
|
||
|
S34:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b0;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S0;
|
||
|
end
|
||
|
// div32
|
||
|
S36:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b001;
|
||
|
sel_muxb = 3'b001;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S37;
|
||
|
end // case: S1
|
||
|
S37: // iteration 1
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S38;
|
||
|
end
|
||
|
S38:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S39;
|
||
|
end
|
||
|
S39: // iteration 2
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S40;
|
||
|
end
|
||
|
S40:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S41;
|
||
|
end
|
||
|
S41:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S42;
|
||
|
end
|
||
|
S42: // q,qm,qp
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b1;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S43;
|
||
|
end // case: S9
|
||
|
S43: // rem
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S44;
|
||
|
end
|
||
|
S44:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b1;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S45;
|
||
|
end // case: S11
|
||
|
S45:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S46;
|
||
|
end
|
||
|
S46: // done
|
||
|
begin
|
||
|
done = 1'b1;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S47;
|
||
|
end
|
||
|
S47:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b0;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S0;
|
||
|
end
|
||
|
// sqrt32
|
||
|
S48:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S49;
|
||
|
end
|
||
|
S49:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b001;
|
||
|
sel_muxb = 3'b100;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S50;
|
||
|
end
|
||
|
S50:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b010;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S51;
|
||
|
end
|
||
|
S51: // iteration 1
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b1;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S52;
|
||
|
end
|
||
|
S52: // iteration 1
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S53;
|
||
|
end
|
||
|
S53:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b100;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S54;
|
||
|
end
|
||
|
S54:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S55;
|
||
|
end
|
||
|
S55: // iteration 2
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b1;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S56;
|
||
|
end // case: S18
|
||
|
S56:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S57;
|
||
|
end
|
||
|
S57:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b1;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b1;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b100;
|
||
|
sel_muxb = 3'b010;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S58;
|
||
|
end
|
||
|
S58:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b1;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b011;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S59;
|
||
|
end
|
||
|
S59: // q,qm,qp
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b1;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S60;
|
||
|
end
|
||
|
S60: // rem
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b110;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S61;
|
||
|
end // case: S25
|
||
|
S61:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b1;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b011;
|
||
|
sel_muxb = 3'b110;
|
||
|
sel_muxr = 1'b1;
|
||
|
next_state <= S62;
|
||
|
end // case: S34
|
||
|
S62:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b1;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S63;
|
||
|
end
|
||
|
S63: // done
|
||
|
begin
|
||
|
done = 1'b1;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b1;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S64;
|
||
|
end // case: S34
|
||
|
S64:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b0;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S0;
|
||
|
end
|
||
|
default:
|
||
|
begin
|
||
|
done = 1'b0;
|
||
|
divBusy = 1'b0;
|
||
|
load_rega = 1'b0;
|
||
|
load_regb = 1'b0;
|
||
|
load_regc = 1'b0;
|
||
|
load_regd = 1'b0;
|
||
|
load_regr = 1'b0;
|
||
|
load_regs = 1'b0;
|
||
|
load_regp = 1'b0;
|
||
|
sel_muxa = 3'b000;
|
||
|
sel_muxb = 3'b000;
|
||
|
sel_muxr = 1'b0;
|
||
|
next_state <= S0;
|
||
|
end
|
||
|
endcase // case(current_state)
|
||
|
end // always @ (current_state or X)
|
||
|
|
||
|
endmodule // fsm
|