【verilog每日一练】位拼接符的应用:如何实现串行数据的接收与输出 - FPGA开发者技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

Mill 关注 私信
[问答]

【verilog每日一练】位拼接符的应用:如何实现串行数据的接收与输出

若1bit串行信号data_in按高位先发的顺序传输一个8bit的数据,data_en为使能信号,请用位拼接符实现串行数据的接收并输出接收的8bit数据data[7:0]
image.png

image.png

回帖(12)

Mill

2023-8-7 16:05:20

最佳答案


解析:data_in的接收顺序为高位在前,所以使用位拼接符将每次接收到的data_in放在data[7:0]的最低位,同时将原data[7:0]的低六位即data[6:0]往高位移一位,先接收的数据会逐步移位到高位,后接收的数据放在低位,接收完8bit数据后data[7:0]就是最终的结果。若低位在前则处理方式相反。

zealsoft

2023-8-7 19:06:12
module data_rx (
  input clk,
  input data_en,
  input data_in,
  output reg [7:0] data
);

  always @ (posedge clk) begin
    if (data_en)
      data <= {data[6:0], data_in}; // 使用位拼接符将新的串行数据添加到 data 中,左移一位
    else
      data <= data;
  end
endmodule

PCB62304753

2023-8-7 19:50:28
data <= {data[6:0], data_in};

卿小小_9e6

2023-8-7 20:04:32
data代码:
  1. data <= {data[6:0],data_in};

更多回帖

×
发帖