You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xilinx FPGA物理接触数据传输无信号问题排查求助

问题排查与修复方案

1. 未定义的date_tx信号

主模块中,UART_Transmitter的data端口连接到date_tx,但该信号从未被声明或赋值。这会导致UART模块的输入数据为不定态(X态),无法生成有效输出。
修复:在main模块中声明并赋值date_tx,比如固定发送测试值:

wire [7:0] date_tx = 8'h55; // 发送0x55,对应二进制01010101,便于观测波形

2. UART波特率时钟未分频

当前代码直接将FPGA系统时钟接入UART模块,bit_counter每一个时钟周期就递增一次,意味着波特率等于系统时钟频率(比如50MHz),这远远超出常规UART的波特率范围,物理层无法识别,高速切换的信号也可能被误判为无输出。
修复:添加波特率分频逻辑,生成UART的波特率时钟使能信号。例如,对于50MHz系统时钟、9600波特率,分频系数约为5208:

// 在UART_Transmitter模块中添加分频逻辑
reg [12:0] baud_counter = 13'd0;
wire baud_tick;
assign baud_tick = (baud_counter == 13'd5207);

always @(posedge clk) begin
    if (reset) begin
        baud_counter <= 13'd0;
    end else begin
        baud_counter <= baud_tick ? 13'd0 : baud_counter + 1'd1;
    end
end

然后修改bit_counter的递增逻辑,仅在baud_tick有效时才更新:

// 以4'd0分支为例,其他分支同理修改
bit_counter <= baud_tick ? bit_counter + 1'd1 : bit_counter;

3. 未声明clk信号

主模块中使用了clk信号(IBUFG的输出),但未在模块内部声明该信号,会导致编译错误,直接影响功能实现。
修复:在main模块的端口列表后添加clk声明:

module main
(
    input wire clkin,      // Clock signal
    input wire reset,    // Reset signal

    output wire DI,  // data
    output wire DE,  // The ready bit
    output wire uart_tx
);
wire clk; // 声明clk信号
IBUFG clkin1_buf
   (.O (clk),
    .I (clkin));
// ... 其余代码

4. UART移位寄存器位数不匹配

UART_Transmitter中shift_reg定义为11位,但标准UART帧格式为1个起始位+8个数据位+1个停止位(共10位),当前赋值shift_reg <= {1'b0, data}仅填充了9位,高位补0会导致后续输出无效位。
修复:调整移位寄存器为10位,并正确构造完整帧:

reg [9:0] shift_reg = 10'b0; // 改为10位
// 在4'd0的case分支中构造完整帧
shift_reg <= {1'b1, data, 1'b0}; // 停止位(1) + 数据位 + 起始位(0)

同时修改数据移位逻辑:

default: begin // Data
    shift_reg <= {1'b1, shift_reg[9:1]}; // 保留停止位,移位输出
    tx <= shift_reg[0]; // 发送当前最低位
    bit_counter <= baud_tick ? bit_counter + 1'd1 : bit_counter;
end

5. 持续拉高data_ready导致重复发送异常

主模块中ready_tx被固定为1'b1,会让UART模块发送完一帧后立即开始下一帧,无间歇,可能导致接收端无法识别帧边界,也不利于调试观测。
修复:改为单次触发或添加发送间隔,比如用计数器控制发送周期,调试阶段可手动触发发送。


内容的提问来源于stack exchange,提问作者Graus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:30:19