串口多字节数据的接收

打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3063

这次设计一个可以接收多字节(通过修改例化时的位宽实现)的串口接收模块。
 
当接收到9个字节的数据,但是我们只需要8个字节的数据时候,我们需要的是前八位的数据还是后八位的数据我们无法确定。

 
所以我们需要设定一种传输协议,这种协议我们可以自定义规则。我们就设定前缀为8'h55+8'hA5,后缀为8'hF0的一串数据即为我们需要的数据。

1、状态机的设定

 

 
2、需要的模块

(1) 8位串口接收模块

[code]`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: Lclone// // Create Date: 2022/12/16 15:37:44// Design Name: uart_byte_rx// Module Name: uart_byte_rx// Project Name: uart_byte_rx// Target Devices: // Tool Versions: // Description: 8位串口接收模块// // Dependencies: // // Revision:// Revision 0.01 - File Created// Additional Comments:// //////////////////////////////////////////////////////////////////////////////////module uart_byte_rx  # (        parameter   RX_BAUD  = 9600,                                //波特率        parameter   CLK_FQC  = 50_000_000,                        //模块时钟频率        parameter   BAUD_CNT = CLK_FQC/RX_BAUD)                        //模块每波特需要计数的次数(设置此端口方便仿真用)    (        input               Clk,                                //时钟频率接口        input               Rst_n,                                //复位接口        input               Uart_rx,                                //串口接收接口        output  reg  [7:0]  Data,                                //接收到的数据接口        output  reg         Rx_done                                //接收完成信号    );        reg            uart_rx_r;                                        //延一拍    reg            uart_rx_rr;                                        //延两拍    reg            receiv_begin;                                //接收开始信号    reg            receiv_flag;                                        //接收状态信号    reg   [ 3:0]   state;                                        //状态机寄存器    reg   [15:0]   baud_cnt;                                        //波及计数器    reg   [ 3:0]   sampel_cnt;                                        //采样计数器    reg            sampel_en;                                        //采样使能    reg            sampel_ref;                                        //样本寄存器    reg   [ 3:0]   acc;                                                //累加寄存器    reg   [ 3:0]   bit_cnt;                                        //数据位寄存器        always @(posedge Clk) begin   //延两拍为下降沿捕获        uart_rx_r

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表