题解 | #移位运算与乘法#
移位运算与乘法
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] cnt;
wire [7:0] d_r;
assign d_r = (cnt == 2'd0) ? d : d_r;
always@(posedge clk or negedge rst) begin
if(!rst)
cnt <= 2'b0;
// else if(cnt == 2'd3)
// cnt <= 2'b0;
else cnt <= cnt + 1'b1;
end
always@(posedge clk or negedge rst) begin
if(!rst)
out <= 11'b0;
else if(cnt == 2'd0)
out <= d_r;
else if(cnt == 2'd1)
out <= (d_r<<2)-d_r;
else if(cnt == 2'd2)
out <= (d_r<<3)-d_r;
else if(cnt == 2'd3)
out <= (d_r<<3);
end
always@(posedge clk or negedge rst) begin
if(!rst)
input_grant <= 1'b0;
else if(cnt == 2'd0)
input_grant <= 1'b1;
else input_grant <= 1'b0;
end
//*************code***********//
endmodule
爱玛科技公司福利 8人发布

