Problem 8-7
module ALU_4_bit (output reg [4: 0] Alu_out, input [3: 0] Data_A, Data_B, input [2: 0] Opcode);
parameter Add = 3’b000;
parameter Sub = 3’b001;
always @ (Data_A, Data_B, Opcode) begin
Alu_out = 5’b0;
case (Opcode)
Add: Alu_out = Data_A + Data_B;
Sub: Alu_out = Data_A – Data_B;
Rand_B: Alu_out = & Data_B;
endcase
end
endmodule
module Toggle_Button (output Load, Led_idle, Led_wait, Led_rdy, input Go, clk, reset);
reg [1: 0] state, next_state;
parameter S_idle = 2’b00, S_1 = 2’b01, S_2 = 2’b10, S_3 = 2’b11;
assign Led_rdy = (state == S_3);
always @ (posedge clk) if (reset) state <= S_idle; else state <= next_state;
always @ (Go, clk) begin
next_state = S_idle;
case (state)
S_idle: if(reset) next_state = S_idle; else next_state = Go ? S_1: S_idle;
S_1: next_state = S_2;
S_2: next_state = Go ? S_2: S_3;
S_3: next_state = Go ? S_1: S_3;