【FPGA + 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源

这篇具有很好参考价值的文章主要介绍了【FPGA + 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【FPGA + 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源

VIO 控制单元

wire [1:0] mode;

vio_uart UART_VIO (
  .clk(ad9361_l_clk),                // input wire clk
  .probe_out0(mode)  // output wire [1 : 0] probe_out0
);

将 mode设置为0,是自发自收;
将 mode设置为1,是交叉收发;
将 mode设置为2,是内源;外部串口直接看数据即可;

FPGA 捕获ILA

ila_uart_tx ILA_s (
	.clk(ad9361_l_clk), // input wire clk


	.probe0(J1D3_RXD_A1), // input wire [0:0]  probe0  
	.probe1(J1D6_RXD_A2) // input wire [0:0]  probe1
);

主函数 测试系统

reg [31:0] cnts;

always @ (posedge ad9361_l_clk or posedge rst)
begin
    if(rst)
    begin
    cnts <= 32'd0;
    end
    
    else if(cnts == 32'd110000000)
    begin
    cnts <= 32'd0;    
    end
    
    else
    begin
    cnts <= cnts + 1'b1;
    end
end

reg [7:0] uart_din;
reg uart_din_clk_p;

always @ (posedge ad9361_l_clk or posedge rst)
begin
    if(rst)
    begin
    uart_din <= 8'd0;
    uart_din_clk_p <= 1'b0;
    end
    
    else
    begin
        case(cnts)
        32'd1:begin uart_din<=8'hEB;uart_din_clk_p<=1'b1; end
        32'd2:begin uart_din<=8'hAA;uart_din_clk_p<=1'b1; end
        32'd3:begin uart_din<=8'hBB;uart_din_clk_p<=1'b1; end
        32'd4:begin uart_din<=8'h65;uart_din_clk_p<=1'b1; end
        32'd5:begin uart_din<=8'h00;uart_din_clk_p<=1'b1; end
        32'd6:begin uart_din<=8'h00;uart_din_clk_p<=1'b0; end
        default:begin uart_din<=uart_din;uart_din_clk_p<=uart_din_clk_p;  end
        endcase
    end
end
wire send_uart;
uart_com_send_one_bit
#(
    .FRAME_LENGTH(16'd5                   )//多少个字节。
)
 UART_SEND(
    .clk(ad9361_l_clk                     ),
    .rst(rst                              ),
    .CLK_FRE(32'd143936068                ),//4*串口波特率*2^32/clk;,4倍于串口速率较合理,从FIFO中读数据,然后发送。 115200@110M
    .din(uart_din                         ),
    .din_clk_p(uart_din_clk_p             ), 
    .send_uart(send_uart                  ),   //RS422,RS232,RS485输出信号,默认1,即为高电平
    .send_uart_en(                        ) //RS485时才用到,FPGA发送至外部信号时该使能信号为1,不发送时该使能信号为0,注意外部使能信号的高低与硬件表述该信号的内容一致!!!
);

reg J1D1_TXD_Y1;
reg J1D4_TXD_Y2;

always @ (posedge ad9361_l_clk or posedge rst)
begin
    if(rst)
    begin
    J1D1_TXD_Y1 <= 1'b1;
    J1D4_TXD_Y2 <= 1'b1;
    end
    
    else
    begin
        case(mode)
        2'd0:begin J1D1_TXD_Y1<=J1D3_RXD_A1;J1D4_TXD_Y2<=J1D6_RXD_A2; end
        2'd1:begin J1D1_TXD_Y1<=J1D6_RXD_A2;J1D4_TXD_Y2<=J1D3_RXD_A1; end
        2'd2:begin J1D1_TXD_Y1<=send_uart;  J1D4_TXD_Y2<=send_uart;   end
        default:begin J1D1_TXD_Y1<=J1D3_RXD_A1;J1D4_TXD_Y2<=J1D6_RXD_A2;  end
        endcase
    end
end

总结

通过三种模式的测量,可以精确的测量串口是否通,出故障,也可以判断出 是TX还是RX。

该模块可以在任何一个FPGA中运行,欢迎交流。文章来源地址https://www.toymoban.com/news/detail-610426.html

到了这里,关于【FPGA + 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于时钟模块完备性验证方法第五章

    第五章 时钟strobe检查 文章目录 目录 系列文章目录 文章目录 前言 一、什么时钟strobe? 二、使用步骤 1.自动化checker代码如下 总结 只所以要进行时钟strobe检查,是因为很多时候设计中有下图时序的要求,这种场景一般在两个频率不同的时钟域内进行数据交互的时候会用到,

    2024年02月04日
    浏览(28)
  • 基于串口透传模块,单片机无线串口空中下载测试

    ✨无线串口下载,其本质还是串口下载方式,只不过省去了单片机和ISP上位机工具之间的物理有线连接,中间的数据通过无线串口透传模块进行数据中转,传递到单片机串口上。串口透传模块起到数据中继作用。 🎬STM32通过 STM32CubeProgrammer 软件串口空中下载演示:(和有线串

    2024年02月11日
    浏览(30)
  • ADC测试杂谈二:matlab操作串口向FPGA发信

     何以解忧,唯有串口。  相关文章:  ADC测试杂谈一:配置基于matlab+quartus的测试环境  之前提到,FPGA的JTAG相比MCU的UART,读取数据的速度更快。但是matlab 似乎 只能通过JTAG收信,而不能通过JTAG向FPGA发信。为了便于通过FPGA向芯片写一些配置信息,我们采用UART串口来向

    2024年02月10日
    浏览(32)
  • 5—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—蓝牙串口

    目录 1.蓝牙模块介绍 2.UART介绍 3.Verilog代码: 3.1Uart_RX模块: 3.2 分频模块: 3.3 Uart驱动模块 3.4 Uart控制模块 4. 总览   我使用的是JDY-31蓝牙模块,在连线中,要注意RX-TX,TX-RX。   即FPGA约束的TX对应蓝牙模块的RX,约束的RX对应蓝牙模块的TX。 蓝牙模块使用UART串口通信协议,具体

    2024年02月05日
    浏览(54)
  • 用Excel做一个功能完备的仓库管理系统

    用到的Excel技术:sumif, vlookup, 表格(table)。 基本思路:在有基础的商品、仓库等信息的情况下,对商品的每一个操作都有对应的单据,然后再汇总统计。 标识:为了在不同的维度统计数量,各单据表中添加了各种“标识”,供其他表vlookup使用。 VBA辅助:在能够手动完成工作

    2024年04月28日
    浏览(36)
  • 【AI工具】bing chat 使用--三种模式+撰写功能

    bing chat:三种模式+撰写功能 以下为点击复制后粘贴的内容 Bing Chat提供三种对话模式可选择:创造力、平衡和精确。更多创造力(Creative):Bing Chat回答的内容将带有更多语气和情绪,更像一个真实的人类与用户对话。更多平衡(Balanced):Bing Chat回答的内容将是事实和娱乐性

    2024年02月03日
    浏览(39)
  • 可视化配置 Nginx 代理:功能完备,使用简单 | 开源日报 No.234

    Stars: 18.0k License: MIT nginx-proxy-manager 是一个用于管理 Nginx 代理主机的 Docker 容器,具有简单而强大的界面。 该项目旨在提供用户一种简单易用的方式来实现反向代理主机和 SSL 证书,无需太多关于 Nginx 或 Let’s Encrypt 的知识。 其主要功能和核心优势包括: 美观且安全的基于

    2024年04月26日
    浏览(34)
  • FPGA-DE2-115-实验二-模块化多功能数字钟

    前言: 本文主要介绍了集成电路EDA这门课程的相关实验及代码。使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cyclone IV EP4CE115F29C7。 本次实验我们需要实现生活中常见的电子手表的所有功能。 我们知道: 电子手表有五个功能,包括:时间显示功能,夜光模式功能,计时功能,闹钟功能

    2024年02月04日
    浏览(50)
  • FPGA-结合协议时序实现UART收发器(五):串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive

    串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive,功能实现。 对照代码,串口发送模块UART_TOP实现功能包括: PLL锁相环,实现稳定系统输入时钟功能 UART_FIFO,数据先进先出,实现数据缓存功能,防止出现数据错乱 w_clk_rst = ~w_system_pll_locked;保证复位电平是先高位再地位 r_use

    2024年02月08日
    浏览(52)
  • FPGA UDP协议栈:基于88E1111,支持RGMII、GMII、SGMII三种模式,提供3套工程源码和技术支持

    FPGA UDP协议栈:基于88E1111,支持RGMII、GMII、SGMII三种模式,提供3套工程源码和技术支持 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但中间的FIFO或者RAM等调用了IP,或者不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中

    2024年02月02日
    浏览(110)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包