精华内容
下载资源
问答
  • 并行数据和串行数据的转换
    千次阅读
    2021-08-13 10:30:46

    1、8位并行数据输入转串行数据输出,采用移位方式,代码如下:
    module shift
    (
    clk,rst_n,
    din,dout
    );

    parameter Num=8;

    output dout; //串行数据输出
    input clk; //控制时钟
    input rst_n; //复位信号,低电平有效
    input [Num-1:0]din; //并行数据输入
    reg dout;

    reg [Num-1:0]din_reg; //并行数据寄存器
    reg [2:0]cnt;

    //右移 ,补高位
    always @(posedge clk,negedge rst_n)begin
    if(!rst_n) //异步复位
    begin
    dout <= 0;
    din_reg<=3’d0;
    end
    else
    if(cnt<3’d7)
    begin
    din_reg <= din_reg >>1; //寄存器内容右移一位
    dout<= din_reg[0];
    cnt<=cnt+1’b1;
    end
    else
    begin
    dout<= din_reg[0];
    din_reg<=din;
    cnt<=2’d0;
    end
    end

    endmodule

    更多相关内容
  • 单片机C语言程序设计 并行数据转换串行数据(有源码)单片机C语言程序设计 并行数据转换串行数据(有源码)单片机C语言程序设计 并行数据转换串行数据(有源码)单片机C语言程序设计 并行数据转换串行数据(有...
  • 51单片机Proteus仿真实例 串行数据转换并行数据51单片机Proteus仿真实例 串行数据转换并行数据51单片机Proteus仿真实例 串行数据转换并行数据51单片机Proteus仿真实例 串行数据转换并行数据51单片机Proteus...
  • 最新单片机仿真 串行数据转换并行数据最新单片机仿真 串行数据转换并行数据最新单片机仿真 串行数据转换并行数据最新单片机仿真 串行数据转换并行数据最新单片机仿真 串行数据转换并行数据最新单片机仿真 ...
  • 名称:并行数据转换串行数据 说 明 : 切 换 连 接 到 并 串 转 换 芯 片74LS165 的拨码开关,该芯片将并行数据以串行方式发送到 8051 的 RXD 引脚,移位脉冲由 TXD 提供,显示在 P0 口。
  • 51单片机Proteus仿真实例 并行数据转换串行数据51单片机Proteus仿真实例 并行数据转换串行数据51单片机Proteus仿真实例 并行数据转换串行数据51单片机Proteus仿真实例 并行数据转换串行数据51单片机Proteus...
  • 最新单片机仿真 并行数据转换串行数据最新单片机仿真 并行数据转换串行数据最新单片机仿真 并行数据转换串行数据最新单片机仿真 并行数据转换串行数据最新单片机仿真 并行数据转换串行数据最新单片机仿真 ...
  • 单片机C语言程序设计43 串行数据转换并行数据(基于8051+Proteus仿真)单片机C语言程序设计43 串行数据转换并行数据(基于8051+Proteus仿真)单片机C语言程序设计43 串行数据转换并行数据(基于8051+Proteus...
  • 名称:串行数据转换并行数据 说明:串行数据由 RXD 发送给串 并转换芯片 74164,TXD 则用于输出移位时钟脉冲,74164 将串行输入的 1 字节转换为并行数据,并将转换的数据通过 8 只 LED 显示出来。本例串口工作...
  • 单片机C语言程序设计44 并行数据转换串行数据(基于8051+Proteus仿真)单片机C语言程序设计44 并行数据转换串行数据(基于8051+Proteus仿真)单片机C语言程序设计44 并行数据转换串行数据(基于8051+Proteus...
  • 单片机C语言程序设计 串行数据转换并行数据(有源码)单片机C语言程序设计 串行数据转换并行数据(有源码)单片机C语言程序设计 串行数据转换并行数据(有源码)单片机C语言程序设计 串行数据转换并行数据(有...
  • 单片机并行数据转换串行数据,比赛练习案例,仿真实例,现成调用封装使用,可运行的仿真电路图调好的程序,开箱即用。适用于教学案例、毕业设计、电子设计比赛、出书项目实例,实际设计、个人DIY参考。 已调试好...
  • 并行数据转换串行数据.zip
  • 单片机串行数据转换并行数据,比赛练习案例,仿真实例,现成调用封装使用,可运行的仿真电路图调好的程序,开箱即用。适用于教学案例、毕业设计、电子设计比赛、出书项目实例,实际设计、个人DIY参考。 已调试好...
  • 它包含两个功能—— 1.ser2par : 将串行数据转换并行数据2.par2ser : 将并行数据转换为串行数据
  • 串行数据转换并行数据.zip
  • 基于89C51单片机/89C52单片机通用的并行数据转换串行数据,Proteus软件测试运行环境7.8版本,包含内容:keil vision5项目文件、C语言程序源码、hex后缀编译文件、DSN仿真后缀文件项目
  • 摘要:串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对...
  • 44 并行数据转换串行数据.zip
  • 并行数据转换串行数据.rar,44 并行数据转换串行数据,Keil C,并行数据转换串行数据,并行数据转换串行数据.hex,code,44.M51,44.LST,44.OBJ,44.Opt,44_Uv2.Bak,44.lnp,44.Uv2,44,44.c,44.plg,并行数据转换为...
  • 并行数据转换串行数据_74ls165 由拨马开关控制并行数据状态,通过74LS165转串口输出 在由8位LED灯的亮灭来显示当前的拨码开关的状态 源程序+Proteus的仿真文件 可以帮助你很好的学习哦
  • 串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对采样周期...
  • protues串行数据转换并行数据很经典。
  • 43 串行数据转换并行数据.zip
  • 串行数据转换并行数据.rar,43 串行数据转换并行数据,串行数据转换并行数据.PWI,code,43.M51,43.LST,43.lnp,43.Uv2,43_Uv2.Bak,43.Opt,43.plg,43.c,43,43.OBJ,Keil C,串行数据转换为并行.hex,串行数据转换为...
  • 并行数据转换串行数据的转换器

    万次阅读 2017-07-24 12:04:16
    这篇文章写一下今天早上设计的并行数据串行数据转换器,也算是对并行总线串行总线一个小小的应用,编码过程中也用到了task。 该转换器主要实现的功能是: 1、把并行地址存入寄存器 2、把并行数据存入寄存器 3...

    这篇文章写一下今天早上设计的并行数据到串行数据的转换器,也算是对并行总线和串行总线一个小小的应用,编码过程中也用到了task。

    该转换器主要实现的功能是:

    1、把并行地址存入寄存器

    2、把并行数据存入寄存器

    3、连接串行单总线

    4、地址的串行输出

    5、数据的串行输出

    6、挂起串行单总线

    7、给信号源应答

    8、让信号源给出下一个操作对象

    9、结束写操作

    该设计利用嵌套的状态机实现,主状态机分为四个状态:idle,addr_write,data_write,stop,主状态机中会涉及到任务shift8out的调用,该任务主要实现并行数据到串行数据的转换,也是由一个状态机实现。下面给出整个设计的代码:

    设计代码:

    ///并串转换器//
    module ps_convertor(clk,rst,data,addr,sda,ack);
    parameter idle=4'b0001,addr_write=4'b0010,data_write=4'b0100,stop=4'b1000;//独热编码
    parameter sh8_start=9'b00000_0001;
    parameter bit6     =9'b00000_0010;
    parameter bit5     =9'b00000_0100;
    parameter bit4     =9'b00000_1000;
    parameter bit3     =9'b00001_0000;
    parameter bit2     =9'b00010_0000;
    parameter bit1     =9'b00100_0000;
    parameter bit0     =9'b01000_0000;
    parameter sh8_stop =9'b10000_0000;
    
              
    input clk,rst;
    input [7:0]addr,data;
    inout sda;//串行总线
    output ack;//应答信号将输入测试模块
    
    reg ack;
    
    reg link_write;//写开关
    reg [7:0] sh8out_buf;//并行总线缓冲器
    
    reg [3:0] mstate;//主状态机的状态寄存器
    reg [8:0] sh8_state;//并串转换状态机状态寄存器
    
    reg FF;//标志寄存器,用来表示任务是否完成
    
    assign sda=(link_write)?sh8out_buf[7]:1'hz;//串行总线数据传输
    
    always@(posedge clk)
    begin
     if(!rst)//同步复位
     begin
      mstate<=idle;
      link_write<=0;
      FF<=0;
      sh8out_buf<=0;
      //sh8_state<=sh8_start;
      ack<=0;
     end
     else 
     begin
     case (mstate)
      idle: begin
             mstate<=addr_write;
    		 link_write<=0;
    		 FF<=0;
    		 sh8out_buf<=addr;
    		 sh8_state<=sh8_start;
    		 ack<=0;
            end
      addr_write: 
            begin
    		 if(FF==0)
    		  begin
    		   shift8out;
    		  end
    		 else 
    		  begin
    		   FF<=0;
    		   mstate<=data_write;
    		   sh8out_buf<=data;
    		   sh8_state<=sh8_start;
    		  end
    		end
      data_write:
            begin
    		 if(FF==0)
    		  begin
    		   shift8out;
    		  end
    		 else 
    		  begin
    		   FF<=0;
    		   mstate<=stop;
    		   ack<=1;
    		  end
    		end
      stop: begin
             ack<=0;
    		 mstate<=idle;
            end
      //default: mstate<=idle;       
     endcase
     end
    end
    //并串转换模块
    task shift8out;
     begin
      case(sh8_state)
       sh8_start: begin
                   link_write<=1;
    			   sh8_state<=bit6;
                  end
       bit6:      begin
                   //link_write<=1;
                   sh8_state<=bit5;
    			   sh8out_buf<=sh8out_buf<<1;
                  end
       bit5:      begin
                   sh8_state<=bit4;
    			   sh8out_buf<=sh8out_buf<<1;
                  end
       bit4:      begin
                   sh8_state<=bit3;
    			   sh8out_buf<=sh8out_buf<<1;
                  end
       bit3:      begin
                   sh8_state<=bit2;
    			   sh8out_buf<=sh8out_buf<<1;
                  end
       bit2:      begin
                   sh8_state<=bit1;
    			   sh8out_buf<=sh8out_buf<<1;
                  end
       bit1:      begin
                   sh8_state<=bit0;
    			   sh8out_buf<=sh8out_buf<<1;
                  end
       bit0:      begin
                   sh8_state<=sh8_stop;
    			   sh8out_buf<=sh8out_buf<<1;
                  end
       sh8_stop: begin 
                  FF<=1;
    			  sh8_state<=sh8_start;
    			  link_write<=0;
    			 end
    			  
      endcase
     end
    endtask
    
    endmodule
    

    测试模块:

    `timescale 1ns/1ns
    `define half_cycle 10
    module signal;
    reg clk,rst;
    reg [7:0]data,addr;
    wire sda,ack;
    always #(`half_cycle) clk=~clk;
    initial 
    begin
      rst=1;
      clk=0;
      data=8'b1010_1010;
      addr=0;
      #100 rst=0;
      #100 rst=1;
      #(200* `half_cycle)$stop;
    end
    
    always @(posedge ack)
    begin
     data=data+1;
     addr=addr+1;
    end
     ps_convertor m(clk,rst,data,addr,sda,ack);
    endmodule
    


    最终在modelsim中得到的仿真图如下:



    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    展开全文
  • 单片机C语言程序设计44 并行数据转换串行数据(基于8051 Proteus仿真).rar
  • 利用单片机的串行I/O 端口串行输出,利用74LS164移位转换并行数据,接在LED灯上显示。74LS164置于通用插座上。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,628
精华内容 20,251
热门标签
关键字:

并行数据和串行数据的转换