题解 | #移位运算与乘法#
移位运算与乘法
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
