芯路恒电子技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

热搜: 活动
查看: 394|回复: 1

【设计实例】好用的串口发送多字节模块,支持8~256位数据.

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 270

    主题

    485

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    11523
    发表于 2021-4-20 14:02:50 | 显示全部楼层 |阅读模式
    /*作者:小梅哥 武汉芯路恒科技有限公司*/
    /*=====================================
    本模块实现1~16字节(8~256)位数据的发送。需要发送的数据位宽,可以在例化模块时使用DATA_WIDTH来修改
    主要应用场景为数据位宽超过8位数据,希望通过串口发送出去的场景,例如12位ADC采样结果通过串口发送。

    要求DATA_WIDTH的值为8的整数倍,且最大不超过256。对于实际数据位宽达不到8的整数倍的情况,需要将数据
    高位补0,以得到8整数倍位宽的数据之后再发送,例如对于12位ADC采样结果wire [11:0]ADC_DATA;使用时,可
    以用如下写法
    assign data = {4'd0,ADC_DATA},
    其中data位宽为16,连接到uart_data_tx的data端口上作为待发送数据

    **/

    /*
    例化模板
    ---------------------------------------
    uart_data_tx
    #(
            .DATA_WIDTH(DATA_WIDTH),
            .MSB_FIRST(MSB_FIRST)
    )
    uart_data_tx(
            .Clk(Clk),
            .Rst_n(Rst_n),
            .data(data),
            .send_en(send_en),   
            .Baud_Set(3'd4),  
            .uart_tx(uart_tx),  
            .Tx_Done(Tx_Done),   
            .uart_state(uart_state)
    );
    ---------------------------------------
    例化时
    1、通过修改DATA_WIDTH的值来指定每次发送的数据位宽
    2、通过修改MSB_FIRST的值来确定先发高字节还是先发低字节。为1则先发高字节,为0则先发低字节
    3、send_en为脉冲触发信号,发送时提供一个时钟周期的高脉冲即可触发一次传输
    4、Baud_Set为波特率设置值,0(9600)、1(19200)、2(38400)、3(57600)、4(115200)
    5、每次传输完成(指定位宽的数据传输完成),TX-Done产生一个时钟周期的高脉冲
    ======================================*/


    代码工程中已经设置好了仿真,直接运行仿真就可以查看发送256位数据的仿真波形。

    uart_data_tx.rar (5.35 KB, 下载次数: 59)
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    2

    积分

    新手入门

    Rank: 1

    积分
    2
    发表于 2021-4-20 15:20:02 | 显示全部楼层
    小梅哥讲解的实在是太好了!!非常棒的例子,对新手非常友好!!!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    QQ|小黑屋|手机版|Archiver|芯路恒电子技术论坛  |鄂ICP备2021003648号

    GMT+8, 2021-5-11 19:35 , Processed in 0.092727 second(s), 13 queries , File On.

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表