题解 | #移位运算与乘法#
移位运算与乘法
https://www.nowcoder.com/practice/1dd22852bcac42ce8f781737f84a3272
`timescale 1ns/1ns module multi_sel( input [7:0]d , input clk, input rst, output reg input_grant, output reg [10:0]out ); //*************code***********// reg [1:0] counter; reg [7:0] d_reserved; always @(posedge clk, negedge rst) begin if(!rst) counter <= 0; else if(counter == 3) counter <= 0; else counter <= counter + 1; end always @(posedge clk, negedge rst) begin if(!rst) begin out = 0; input_grant = 0; end else begin case(counter) 2'b00: begin d_reserved = d; out = d_reserved * 1; input_grant = 1; end 2'b01: begin out = d_reserved * 3; input_grant = 0; end 2'b10: begin out = d_reserved * 7; input_grant = 0; end 2'b11: begin out = d_reserved * 8; input_grant = 0; end endcase end end //*************code***********// endmodule