题解 | #移位运算与乘法#
移位运算与乘法
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;
reg [7:0] d_reg;
always@(posedge clk or negedge rst)
if(!rst)
d_reg <= 8'b0;
else if(cnt == 2'd0)
d_reg <= d;
else
d_reg <= d_reg;
always@(posedge clk or negedge rst)
if(!rst)
cnt <= 2'd0;
else if(cnt == 2'd3)
cnt <= 2'b0;
else
cnt <= cnt + 1'b1;
always@(posedge clk or negedge rst)
if(!rst)
input_grant <= 1'b0;
else if(cnt == 2'd0)
input_grant <= 1'b1;
else
input_grant <= 1'b0;
always@(posedge clk or negedge rst)
if(!rst)
out <= 11'b0;
else
case(cnt)
2'd0 : out <= d; //d_reg打一拍,不能用d_reg
2'd1 : out <= (d_reg << 1) + d_reg;
2'd2 : out <= (d_reg << 3) - d_reg;
2'd3 : out <= (d_reg << 3);
default : out <= 11'b111_1111_1111;
endcase
//*************code***********//
endmodule

查看9道真题和解析
