题解 | #数据串转并电路#
数据串转并电路
https://www.nowcoder.com/practice/6134dc3c8d0741d08eb522542913583d
`timescale 1ns/1ns
module s_to_p(
input clk ,
input rst_n ,
input valid_a ,
input data_a ,
output reg ready_a ,
output reg valid_b ,
output reg [5:0] data_b
);
reg [5:0] data_b_ray;
reg [2:0] data_num;
always @(posedge clk or negedge rst_n) begin
if (~rst_n) begin
data_b_ray <= 0;
data_num <= 0;
ready_a <= 0;
valid_b <= 0;
data_b <= 0;
end
else begin
ready_a <= 1;
if (valid_a) begin
data_b_ray <= {data_a,data_b_ray[5:1]};
if (data_num<5)
data_num <= data_num + 1;
else
data_num <= 0;
end
if (data_num==5 && valid_a == 1 ) begin
valid_b <= 1;
data_b <= {data_a,data_b_ray[5:1]};
end
else
valid_b <= 0;
end
end
endmodule
为了使valid_b只有一个时钟周期为1,判断:已输入5位有效数据并且该时钟周期中valid_a为1,即下个时钟周期输入6位有效数据。
OPPO公司福利 1202人发布