精华内容
下载资源
问答
  • 串行并行
    千次阅读
    2019-07-31 19:21:31

    串行传输:串行传输即串行通信,是指使用一条数据线 将数据一位一位地依次传输,每一个数据占据一个固定的时间长度,其只需要少数几条线就可以在系统之间交换信息,特别适合计算机和计算机  计算机和外设之间的远距离通信。

    并行传输:并行传输指的是数据以成组的方式,在多条并行信道上同时进行传输,是在传输中有多条数据位同时在设备之间进行传输。

    区别:串行传输的速度比并行传输的速度要慢的多,但是费用低并行传输适用距离短,而串行传输适用远距离传输。

    并行传输即使=同步通信较复杂,双方时钟的允许误差较小,串行传输即异步通信简单,双方时钟可允许一定误差。

    并行传输可以用与点对多点,串行传输只用于点对点。

    并行传输的实现

    一个采用8单位二进制码构成了一个字符进行并行传输,系统采用8个信道并行传输,一次传送一个字符,因此收、发双方不存在字符同步的问题,不需要额外的措施来实现收发双方的字符同步,这是并行传输的主要优点。

    但是并行传输必须有多条并行信道,成本比较高,不易远距离传输。

    这类总线传输速度快,但适用于短距离传送。典型的有S-100总线、MUI.TIBUS总线、标准总线、IEEE-488总线等。并行标准总线通常是用于插件板之间的连接。只有IEEE-488是用于系统和系统之间的连接。

    更多相关内容
  • 名称:并行数据转换为串行数据 说 明 : 切 换 连 接 到 并 串 转 换 芯 片74LS165 的拨码开关,该芯片将并行数据以串行方式发送到 8051 的 RXD 引脚,移位脉冲由 TXD 提供,显示在 P0 口。
  • 用于串行数据并行数据的VHDL代码,可参考,欢迎下载
  • 它包含两个功能—— 1.ser2par : 将串行数据转换为并行数据2.par2ser : 将并行数据转换为串行数据
  • 并行传输数据串行传输数据SATA hard drive connections are faster than older PATA hard drive connections and the same can be said for external cabling standards, but this is counter-intuitive: why ...
    并行传输数据和串行传输数据

    并行传输数据和串行传输数据

    SATA hard drive connections are faster than older PATA hard drive connections and the same can be said for external cabling standards, but this is counter-intuitive: why wouldn’t the parallel transmission be faster?

    SATA硬盘驱动器的连接速度比旧的PATA硬盘驱动器连接要快,对于外部电缆连接标准也可以这么说,但这是违反直觉的:为什么并行传输不会更快?

    Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.

    今天的“问答”环节由SuperUser提供,它是Stack Exchange的一个分支,该社区是由社区驱动的Q&A网站分组。

    问题 (The Question)

    SuperUser reader Modest is curious about the data transfer rates of parallel and serial connections:

    SuperUser阅读器Modest对并行和串行连接的数据传输速率感到好奇:

    Intuitively, you would think that parallel data transmission should be faster than serial data transmission; in parallel you are transferring many bits at the same time, whereas in serial you are doing one bit at a time.

    凭直觉,您会认为并行数据传输应该比串行数据传输快; 并行操作是同时传输许多位,而串行操作是一次传输一位。

    So what makes SATA interfaces faster than PATA, PCI-e devices faster than PCI, and serial ports faster than parallel?

    那么,什么使SATA接口比PATA更快,PCI-e设备比PCI更快,串行端口比并行更快?

    While it’s easy to fall into the reasoning that SATA is newer than PATA, there must be a more concrete mechanism at work than just age.

    虽然很容易得出SATA比PATA更新的理由,但在工作中必须有一种比年龄更具体的机制。

    答案 (The Answer)

    SuperUser contributor Mpy offers some insight into the nature of the transmission types:

    超级用户贡献者Mpy对传输类型的性质提供了一些见解:

    You cannot formulate it this way.

    您不能以此方式制定。

    Serial transmission is slower than parallel transmission given the same signal frequency. With a parallel transmission you can transfer one word per cycle (e.g. 1 byte = 8 bits) but with a serial transmission only a fraction of it (e.g. 1 bit).

    相同的信号频率下,串行传输比并行传输要慢 在并行传输中,您可以每个周期传输一个字(例如1字节= 8位),而在串行传输中,仅传输其一小部分(例如1位)。

    The reason modern devices use serial transmission is the following:

    现代设备使用串行传输的原因如下:

    • You cannot increase the signal frequency for a parallel transmission without limit, because, by design, all signals from the transmitter need to arrive at the receiver at the same time. This cannot be guaranteed for high frequencies, as you cannot guarantee that the signal transit time is equal for all signal lines (think of different paths on the mainboard). The higher the frequency, the more tiny differences matter. Hence the receiver has to wait until all signal lines are settled — obviously, waiting lowers the transfer rate.

      您可以在不增加信号频率并行传输无极限,因为按照设计,从发射器需要的所有信号在接收器在同一时间到达。 这不能保证在高频下使用,因为您不能保证所有信号线的信号传输时间都相等(请考虑主板上的不同路径)。 频率越高,差异越小。 因此,接收器必须等到所有信号线都建立好之后,显然,等待会降低传输速率。

    • Another good point (from this post) is that one needs to consider crosstalk with parallel signal lines. The higher the frequency, the more pronounced crosstalk gets and with it the higher the probability of a corrupted word and the need to retransmit it. [1]

      另一个好处(来自本文)是,需要考虑与并行信号线的串扰。 频率越高,串扰越明显,随之而来的单词损坏和重传的可能性也越高。 [1]

    So, even if you transfer less data per cycle with a serial transmission, you can go to much higher frequencies which results in a higher net transfer rate.

    因此,即使您使用串行传输每个周期传输较少的数据,您也可以使用更高的频率,从而导致更高的净传输速率。

    [1] This also explains why UDMA-Cables (Parallel ATA with increased transfer speed) had twice as many wires as pins. Every second wire was grounded to reduce crosstalk.

    [1]这也解释了为什么UDMA电缆(具有更高传输速度的并行ATA)的导线数是引脚的两倍。 每隔两根导线接地,以减少串扰。

    Scott Chamberlain echoes Myp’s answer and expands upon the economics of design:

    斯科特·张伯伦(Scott Chamberlain)回应了Myp的回答,并扩展了设计经济学:

    The problem is synchronization.

    问题是同步。

    When you send in parallel you must measure all of the lines at the exact same moment, as you go faster the size of the window for that moment gets smaller and smaller, eventually it can get so small that some of the wires may still be stabilizing while others are finished before you ran out of time.

    并行发送时,必须在同一时刻测量所有线路,因为随着速度的加快,该时刻的窗口尺寸会越来越小,最终可能会变得很小,以至于某些电线可能仍在稳定而其他人则在您没时间用完之前就完成了。

    By sending in serial you no longer need to worry about all of the lines stabilizing, just one line. And it is more cost efficient to make one line stabilize 10 times faster than to add 10 lines at the same speed.

    通过串行发送,您无需担心所有线路都稳定下来,只需担心一条线路。 而且,使一条线的稳定速度比以相同速度添加10条线的速度快10倍,具有更高的成本效益。

    Some things like PCI Express do the best of both worlds, they do a parallel set of serial connections (the 16x port on your motherboard has 16 serial connections). By doing that each line does not need to be in perfect sync with the other lines, just as long as the controller at the other end can reorder the “packets” of data as they come in using the correct order.

    诸如PCI Express之类的东西在两全其美方面发挥了最大作用,它们完成了一组并行的串行连接(主板上的16x端口具有16个串行连接)。 通过这样做,只要另一端的控制器可以按照正确的顺序对数据的“数据包”进行重新排序,就不必与其他行完美同步。

    The How Stuff Works page for PCI-Express does a very good explination in depth on how PCI Express in serial can be faster than PCI or PCI-X in parallel.

    PCI-Express的“工作原理”页面对串行PCI Express如何比并行PCI或PCI-X更快提供了很好的深度解释。

    TL;DR Version: It is easier to make a single connection go 16 times faster than 8 connections go 2 times faster once you get to very high frequencies.

    TL; DR版本:一旦到达非常高的频率,使单个连接的传输速度比8个连接的传输速度快2倍就容易了。



    Have something to add to the explanation? Sound off in the the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.

    有什么补充说明吗? 在评论中听起来不对。 是否想从其他精通Stack Exchange的用户那里获得更多答案? 在此处查看完整的讨论线程

    翻译自: https://www.howtogeek.com/171947/why-is-serial-data-transmission-faster-than-parallel-data-transmission/

    并行传输数据和串行传输数据

    展开全文
  • 单片机串行数据转换为并行数据,比赛练习案例,仿真实例,现成调用封装使用,可运行的仿真电路图和调好的程序,开箱即用。适用于教学案例、毕业设计、电子设计比赛、出书项目实例,实际设计、个人DIY参考。 已调试好...
  • 摘要:串行并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对...
  • 模块功能:接收串行数据,转为并行数据。 应用场景:在SPI,Uart等串行协议接收侧均有应用。 二. 模块框图与使用说明 有两种模式(通过参数SDATA_IS_CONTINUOUS进行选择): 1.数据连续模式,此时sdata_valid指示...

    一. 模块功能与应用场景

    模块功能:接收串行数据,转为并行数据。

    应用场景:在SPI,Uart等串行协议接收侧均有应用。

    二. 模块框图与使用说明

    Verilog功能模块-串行数据转并行数据-1

    有两种模式(通过参数SDATA_IS_CONTINUOUS进行选择):

    1.数据连续模式,此时sdata_valid指示有效数据开始,在并行数据接收完成前,后面数据均有效。输入时序如下图。

    Verilog功能模块-串行数据转并行数据-2

    2.数据不连续模式,此时sdata_valid指示当前数据有效。输入时序如下图。

    Verilog功能模块-串行数据转并行数据-3

    注意:

    1.sdata与sdata_valid应同步有效,且因为代码中有同步处理,所以这两者不需要与sclk的某边沿同步

    2.sdata应从最高位开始发

    2.第一组数据和第二组数据之间的间隔可以为0~N个时钟周期,即可以连续发不间隔,也可以有任意间隔。

    三. 模块代码

    /*
     * @Author       : Xu Dakang
     * @Email        : XudaKang_up@qq.com
     * @Date         : 2021-04-24 12:27:11
     * @LastEditors  : Xu Dakang
     * @LastEditTime : 2021-04-25 21:08:14
     * @Filename     : sdata2pdata.sv
     * @Description  : 输入串行数据,输出并行数据,实现串转并
    */
    
    
    
    module sdata2pdata
    #(
      parameter PDATA_WIDTH = 24,
      parameter SDATA_IS_CONTINUOUS = 0
    )(
      output logic [PDATA_WIDTH-1 : 0] pdata,
      output logic                     pdata_valid,
    
      input  logic                     sdata,
      input  logic                     sdata_valid,
    
      input  logic                     sclk,
    
      input  logic rstn
    );
    
    
    
    //< 输入信号同步 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    logic sdata_r1;
    logic sdata_r2;
    logic sdata_r3;
    always_ff @(posedge sclk) begin
      sdata_r1 <= sdata;
      sdata_r2 <= sdata_r1;
      sdata_r3 <= sdata_r2;
    end
    
    
    logic sdata_valid_r1;
    logic sdata_valid_r2;
    always_ff @(posedge sclk) begin
      sdata_valid_r1 <= sdata_valid;
      sdata_valid_r2 <= sdata_valid_r1;
    end
    //< 输入信号同步 ------------------------------------------------------------
    
    
    
    //> 串行数据计数 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    logic [$clog2(PDATA_WIDTH+1)-1 : 0] sdata_cnt;
    
    logic sdata_cnt_en;
    always_ff @(posedge sclk, negedge rstn) begin
      if (~rstn)
        sdata_cnt_en <= '0;
      else if (SDATA_IS_CONTINUOUS)
        if (sdata_valid_r2 && (sdata_cnt == '0 || sdata_cnt == PDATA_WIDTH - 1 || sdata_cnt ==  PDATA_WIDTH))
          sdata_cnt_en <= 1'b1;
        else if (~sdata_valid_r2 && sdata_cnt ==  PDATA_WIDTH - 1)
          sdata_cnt_en <= 1'b0;
        else
          sdata_cnt_en <= sdata_cnt_en;
      else
        sdata_cnt_en <= sdata_valid_r2;
    end
    
    
    always_ff @(posedge sclk, negedge rstn) begin
      if (~rstn)
        sdata_cnt <= '0;
      else if (sdata_cnt_en)
        if (sdata_cnt == PDATA_WIDTH) // 数据有效时,一组数据刚转换完成,下一组的第一个数据来了,计为1
          sdata_cnt <= 'b1;
        else //! 数据有效时,一组数据还未转换完成,计数加1
          sdata_cnt <= sdata_cnt + 1'b1;
      else if (sdata_cnt == PDATA_WIDTH) // 一组数据转换完成,下一组数据没马上来,回到0
        sdata_cnt <= '0;
      else
        sdata_cnt <= sdata_cnt;
    end
    //> 串行数据计数 ------------------------------------------------------------
    
    
    
    //< 生成输出 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    logic [PDATA_WIDTH-1 : 0] pdata_temp; // pdata的计算中间值
    always_ff @(posedge sclk, negedge rstn) begin
      if (~rstn)
        pdata_temp <= '0;
      else if (sdata_cnt_en)
        pdata_temp <= {pdata_temp[PDATA_WIDTH-2 : 0], sdata_r3};
      else
        pdata_temp <= pdata_temp;
    end
    
    
    always_ff @(posedge sclk, negedge rstn) begin
      if (~rstn)
        pdata <= '0;
      else if (sdata_cnt == PDATA_WIDTH)
        pdata <= pdata_temp;
      else
        pdata <= pdata;
    end
    
    
    always_ff @(posedge sclk, negedge rstn) begin
      if (~rstn)
        pdata_valid <= '0;
      else if (sdata_cnt == PDATA_WIDTH)
        pdata_valid <= 1'b1;
      else
        pdata_valid <= '0;
    end
    //< 生成输出 ------------------------------------------------------------
    
    
    
    endmodule
    

    四. testbench

    /*
     * @Author       : Xu Dakang
     * @Email        : XudaKang_up@qq.com
     * @Date         : 2021-04-24 12:27:28
     * @LastEditors  : Xu Dakang
     * @LastEditTime : 2021-04-25 21:05:02
     * @Filename     : sdata2pdata_tb.sv
     * @Description  : testbench of sdata2pdata
    */
    
    
    
    module sdata2pdata_tb ();
    
    timeunit 1ns;
    timeprecision 10ps;
    
    localparam PDATA_WIDTH = 5;
    localparam SDATA_IS_CONTINUOUS = 1;
    
    logic [PDATA_WIDTH-1 : 0] pdata;
    logic                     pdata_valid;
    
    logic                     sdata;
    logic                     sdata_valid;
    logic                     sclk;
    logic                     rstn;
    
    
    
    // 实例化模块
    sdata2pdata #(
      .PDATA_WIDTH (PDATA_WIDTH),
      .SDATA_IS_CONTINUOUS (SDATA_IS_CONTINUOUS)
    ) sdata2pdata_inst(.*);
    
    
    
    // 产生测试数据 最大值 2^PDATA_WIDTH-1
    localparam NUM = 15;
    logic [PDATA_WIDTH-1 : 0] pdata_list [NUM];
    initial begin
      for (int i = 0; i < NUM; i++) begin
        pdata_list[i] = {$random()} % (2**PDATA_WIDTH);
      end
    end
    
    
    
    // 生成时钟
    localparam CLKT = 2;
    initial begin
      sclk = 0;
      forever #(CLKT / 2) sclk = ~sclk;
    end
    
    
    
    // 数据连续模式
    initial begin
      if (SDATA_IS_CONTINUOUS == 1) begin
        rstn = 0;
        sdata_valid = 0;
        #(CLKT * 2)  rstn = 1;
        for (int i = 0; i < NUM; i++) begin
          sdata_valid = 1;
          for (int j = 0; j < PDATA_WIDTH; j++) begin
            sdata = pdata_list[i][PDATA_WIDTH-1-j];
            #(CLKT) sdata_valid = 0;
          end
          #(CLKT * ({$random} % 3)) ; // 数据连续模式时,可在各组数据间插入随机时钟间隔
        end
    
        #(CLKT * 10) $stop;
      end
    end
    
    
    // 数据不连续模式
    initial begin
      if (SDATA_IS_CONTINUOUS == 0) begin
        rstn = 0;
        sdata_valid = 0;
        #(CLKT * 2)  rstn = 1;
        for (int i = 0; i < NUM; i++) begin
          for (int j = 0; j < PDATA_WIDTH; j++) begin
            sdata = pdata_list[i][PDATA_WIDTH-1-j];
            sdata_valid = 1;
            #CLKT ;
            sdata_valid = 0;
            #(CLKT * ({$random} % 3)) ; // 数据不连续模式时,可在同组数据间插入随机时钟间隔
          end
          sdata_valid = 0;
          #(CLKT * ({$random} % 3)) ;
        end
    
        #(CLKT * 10) $stop;
      end
    end
    
    
    
    endmodule
    

    五. 仿真验证

    仿真工具:Vivado 2020.2 Simulator。

    数据连续模式,从结果可以看出,串转并输出正确。

    image-20210425212255013

    数据不连续模式,同样正确。

    image-20210425212515021

    六. 工程分享

    sdata2pdata 串转并模块 vivado 2020.2工程.7z

    链接:https://pan.baidu.com/s/1wBCLjYqcjj0HGm_S9O5iOQ
    提取码:j3z4

    展开全文
  • 单片机C语言程序设计 串行数据转换为并行数据(有源码)单片机C语言程序设计 串行数据转换为并行数据(有源码)单片机C语言程序设计 串行数据转换为并行数据(有源码)单片机C语言程序设计 串行数据转换为并行数据(有...
  • 摘要:串行并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对...
  • 名称:串行数据转换为并行数据 说明:串行数据由 RXD 发送给串 并转换芯片 74164,TXD 则用于输出移位时钟脉冲,74164 将串行输入的 1 字节转换为并行数据,并将转换的数据通过 8 只 LED 显示出来。本例串口工作...
  • 单片机并行数据转换为串行数据,比赛练习案例,仿真实例,现成调用封装使用,可运行的仿真电路图和调好的程序,开箱即用。适用于教学案例、毕业设计、电子设计比赛、出书项目实例,实际设计、个人DIY参考。 已调试好...
  • 并行数据转换为串行数据_74ls165 由拨马开关控制并行数据状态,通过74LS165转串口输出 在由8位LED灯的亮灭来显示当前的拨码开关的状态 源程序+Proteus的仿真文件 可以帮助你很好的学习哦
  • 74HC595 - 串行并行

    2020-07-14 17:44:36
    2)SERIAL DATA INPUT:串行数据输入引脚; 3)RESET:清空移位寄存器中数据,低电平有效; 4)LATCH CLOCK:锁存寄存器时钟输入引脚,上升沿将数据完成锁存; 5)OUTPUT ENABLE:输出允许引脚; 3、应用 最多见的用于8 * 8...
  • 串行数据并行数据并行数据串行数据行转串行代码 module parallel_to_serial(clk,data_in,data_out,state); input clk;input [7:0] data_in;output data_out;output [7:0] state;reg [7:0] state=0;reg data_...
  • 单片机C语言程序设计 并行数据转换为串行数据(有源码)单片机C语言程序设计 并行数据转换为串行数据(有源码)单片机C语言程序设计 并行数据转换为串行数据(有源码)单片机C语言程序设计 并行数据转换为串行数据(有...
  • protues串行数据转换为并行数据很经典。
  • endmodule 仿真截图: 说明:无意中看到了一些博客上的数据串并转换,逻辑上基本都能实现,但绝大部分都不能用,连基本的信号使能、时序打拍都没有,信号命名也很随便,就简单的实现了移位寄存器,直接复用的价值...

    代码:

    module bit1_bit4(
        input    clk_50M_i,
    	input    rst_n_i,
    	
    	input    data_i,
    	input    data_en_i,
    	
    	output   [3:0]data_o,
    	output   data_en_o
    );
    reg  data_i_tmp1;
    reg  data_i_tmp2;
    reg  data_en_i_tmp1;
    reg  data_en_i_tmp2;
    
    reg  [3:0]data_o_tmp;
    reg       data_en_o_tmp; 
    reg  [3:0]cnt; 
    
    always@(posedge clk_50M_i or negedge rst_n_i)
    	if(!rst_n_i)begin
    	    data_i_tmp1    <= 1'b0;
    	    data_i_tmp2    <= 1'b0;
    		data_en_i_tmp1 <= 1'b0;
    		data_en_i_tmp2 <= 1'b0;
    	end
    	else begin 
    	    data_i_tmp1    <= data_i;
    		data_i_tmp2    <= data_i_tmp1;
    		data_en_i_tmp1 <= data_en_i;
    		data_en_i_tmp2 <= data_en_i_tmp1;
    	end
    always@(posedge clk_50M_i or negedge rst_n_i)
    	if(!rst_n_i)
    	    data_o_tmp <= 4'b0;
    	else if(data_en_i_tmp2)
    	    data_o_tmp <= {data_o_tmp[2:0],data_i_tmp2};
    	else
    	    data_o_tmp <= 4'b0;
    always@(posedge clk_50M_i or negedge rst_n_i)
        if(!rst_n_i)
    	    cnt <= 4'b0;
    	else if(data_en_i_tmp2)
    	    cnt <= cnt + 1'b1;
    	else
    	    cnt <= 4'b0;
    always@(posedge clk_50M_i or negedge rst_n_i)
    	if(!rst_n_i)
    	    data_en_o_tmp <= 1'b0;
    	else if(cnt == 4-1)
    	    data_en_o_tmp <= 1'b1;
    	else
    	    data_en_o_tmp <= 1'b0;
    
    assign  data_o = data_o_tmp;	
    assign  data_en_o = data_en_o_tmp; 	 
    endmodule
    
    
    
    
    
    

    测试:

    `timescale 1ns/1ns
    
    module  bit1_bit4_tb();
    
    parameter  clk_period = 20;
    
    reg    clk_50M_i;
    reg    rst_n_i;
    reg    data_i;
    reg    data_en_i;
    
    initial begin
        clk_50M_i    = 1'b0;
        rst_n_i      = 1'b0;
    	data_i       = 1'b0;
    	data_en_i    = 1'b0;
    	
        #100
    	rst_n_i = 1'b1;
    	   
    	#200
    	
        #clk_period data_i = 1'b1; data_en_i = 1'b1;
    	#clk_period data_i = 1'b1;
    	#clk_period data_i = 1'b0;
    	#clk_period data_i = 1'b1;
    	#clk_period                data_en_i = 1'b0;
    	
    	#200
    	#clk_period data_i = 1'b0; data_en_i = 1'b1;
    	#clk_period data_i = 1'b1;
    	#clk_period data_i = 1'b1;
    	#clk_period data_i = 1'b0;
    	#clk_period                data_en_i = 1'b0;
    	
    	#200
    	#clk_period data_i = 1'b1; data_en_i = 1'b1;
    	#clk_period data_i = 1'b1;
    	#clk_period data_i = 1'b1;
    	#clk_period data_i = 1'b0;
    	#clk_period                data_en_i = 1'b0;
    	
    	#200
    	#clk_period data_i = 1'b0; data_en_i = 1'b1;
    	#clk_period data_i = 1'b0;
    	#clk_period data_i = 1'b0;
    	#clk_period data_i = 1'b1;
    	#clk_period                data_en_i = 1'b0;
    	
    	#200
    	#clk_period data_i = 1'b1; data_en_i = 1'b1;
    	#clk_period data_i = 1'b0;
    	#clk_period data_i = 1'b0;
    	#clk_period data_i = 1'b0;
    	#clk_period                data_en_i = 1'b0;
    	
    end
    
    always #(clk_period/2) clk_50M_i = ~clk_50M_i;
    
    bit1_bit4  bit1_bit4_inst(
        .clk_50M_i(clk_50M_i),
    	.rst_n_i(rst_n_i),
    	
    	.data_i(data_i),
    	.data_en_i(data_en_i),
    	
    	.data_o(),
    	.data_en_o()
    );
    
    
    endmodule
    

    仿真截图:
    在这里插入图片描述

    说明:无意中看到了一些博客上的数据串并转换,逻辑上基本都能实现,但绝大部分都不能用,连基本的信号使能、时序打拍都没有,信号命名也很随便,就简单的实现了移位寄存器,直接复用的价值几乎为零,所以才有了我这两篇博客的诞生。时间比较赶,后面有时间会再优化一下,希望提供一种规范化的实用代码思路大家一起学习

    展开全文
  • Verilog实现8位串行数据并行数据

    千次阅读 2021-08-18 19:26:11
    串行数据输入信号din。 输出信号为8bit并行信号dout。 每经过8个时钟周期,便把收到的8个串行信号合成并行信号并输出,等下8个时钟周期过后再输出下一个并行信号。 module deserialize( input rst,clk,din, output ...
  • 采用FPGA实现同步串行数据并行采集.pdf
  • 串行数据转换为并行数据.zip
  • 43 串行数据转换为并行数据.zip
  • 串行通讯 一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,少只需一根传输线即可完成,成本低但送速度慢。串行通讯的距离可以从几米到几千米。 根据...
  • 源代码+仿真+电路图
  • 1、8位并行数据输入转串行数据输出,采用移位方式,代码如下: module shift ( clk,rst_n, din,dout ); parameter Num=8; output dout; //串行数据输出 input clk; //控制时钟 input rst_n; //复位信号,...
  • //进来的数据和使能打两拍同步一下 always@(posedge clk_50M_i or negedge rst_n_i) if(!rst_n_i)begin data_i_tmp1 ; data_i_tmp2 ; data_en_tmp1 ; data_en_tmp2 ; end else begin data_i_tmp1 ; ...
  • 并行数据转换为串行数据.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 132,044
精华内容 52,817
关键字:

串行数据并行数据