第二篇:UART硬件架构设计与FPGA实现
1. 模块化架构设计
1.1 系统级框图与时钟域划分
-
核心模块划分 :
发送模块(TX) :负责数据帧组装与串行输出。
接收模块(RX) :负责串行数据采样与帧解析。
波特率生成器(Baud Generator) :生成发送/接收时钟。
控制寄存器组(Control Registers) :配置数据位宽、校验模式、波特率等参数。 -
时钟域划分 :
系统时钟域(clk_sys) :主时钟,用于控制逻辑和寄存器访问。
波特率时钟域(clk_baud) :由波特率生成器分频得到,用于发送/接收时序控制。 -
跨时钟域同步策略 :
- 异步信号(如外部中断信号)需通过两级同步器(2-FF)消除亚稳态:
verilog
always @(posedge clk_sys) begin sync_reg <= async_signal; // 第一级同步 sync_signal <= sync_reg; // 第二级同步 end - 异步信号(如外部中断信号)需通过两级同步器(2-FF)消除亚稳态:
1.2 波特率生成器设计
-
分频器参数化建模 :
分频系数计算 :分频系数=系统时钟频率/(波特率×过采样倍数)
- 例如:系统时钟50 MHz,波特率115200,16x过采样 → 分频系数 = 50,000,000 / (115200 × 16) ≈ 27.13 → 取整为27。
-
Verilog实现 :
verilog
module baud_generator (
input wire clk, // 系统时钟
input wire [15:0] div_value, // 分频系数
output wire baud_clk // 波特率时钟
);
reg [15:0] counter = 0;
always @(posedge clk) begi

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



