题解 | #数据串转并电路#

数据串转并电路

http://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 [2:0] cnt;

reg [5:0] data_bb;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        cnt<=3'b0;
    else if (valid_a)
        if (cnt==3'd5)
            cnt<=3'd0;
        else
        cnt<=cnt+1'd1;
    else
        cnt<=cnt;
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        valid_b<=1'b0;
    else if (cnt==3'd5)
        valid_b<=1'b1;
    else
        valid_b<=1'b0;
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        data_bb<=5'b0;
    else if ((cnt==3'd0)&&valid_a)
        data_bb[0]<=data_a;
    else if ((cnt==3'd1)&&valid_a)
        data_bb[1]<=data_a;
    else if ((cnt==3'd2)&&valid_a)
        data_bb[2]<=data_a;
    else if ((cnt==3'd3)&&valid_a)
        data_bb[3]<=data_a;
    else if ((cnt==3'd4)&&valid_a)
        data_bb[4]<=data_a;
    else if ((cnt==3'd5)&&valid_a)
        data_bb[5]<=data_a;
    else
        data_bb<=data_bb;
end
 
always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        data_b<=5'b0;
    else if (cnt==3'd5)
        data_b<=data_bb;
    else
        data_b<=data_b;
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        ready_a<=1'b0;
    else
        ready_a<=1'b1;
end

endmodule

全部评论

相关推荐

ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务