串转并verilog()

`timescale 1ns / 1ps
//
module serial2paraller(
    input           clk,
    input           rst_n,
    input           d,
    input           en,
    output  wire [7:0]   q
);
reg [11:0]cnt;

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        cnt = 'd0;
    end
    else if(en)begin
        if(cnt == 'd63)begin
            cnt <= 'd0;
        end
        else begin
            cnt <= cnt + 1'd1;
        end
    end
    else begin
        cnt <= 'd0;
    end
end

reg [7:0] data;//寄存器
reg [7:0] cn;
always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        data <= 8'd0;
        cn   <=  'd0;
    end
    else if(en)begin
        if(cnt == 'd35)begin
            data <= {data[6:0],d};
            cn <= cn + 'd1;
        end
    end
end
reg [7:0] q_buf;
always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
       cn   <=  'd0;
    end
    else if(en)begin
        if(cnt == 'd35)begin
           if(cn == 'd7) begin 
                  cn <= 'd0;
                  q_buf <= data;                
           end
           else    begin 
                  cn <= cn + 'd1;
                  q_buf <= 'd0;
           end
        end
    end
end

assign   q = q_buf ;
//===================================================ram===================================
endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值