FPGA串口

本文介绍了在FPGA中实现UART串口发送模块时如何计算波特率分频计数值。以50MHz系统时钟为例,详细解析了不同波特率下所需的具体计数值。

前面说到了UART,也就是串口发送模块,串口发送模块两个主要组件之一即为波特率时钟生成模块,这里需要

计算出系统时钟计数值与波特率之间的关系:

FPGA主板频率是50Mhz,T=20ns

    

 9600波特率指的是9600bps,9600bit/s

然后周期是1/速率 = 1/9600 = 1.0416666667*10^(-4)=104167ns

 

波特率分频计数值:104167/System_clk_period=104167/20=5208

 

计数值与波特率之间的关系如表 1 所示 

baud_set波特率波特率周期波特率分频计数值50M 系统时钟计数值
09600104167ns104167/ System_clk_period5208-1
11920052083ns52083/ System_clk_period2604-1
23840026041ns26041/ System_clk_period1302-1211
35760017361ns17361/ System_clk_period868-1
41152008680ns8680/ System_clk_period434-1
FPGA串口开发有其特定的流程。一般性的FPGA开发流程可作为基础,包括设计输入(创建FPGA工程,添加如HDL文件等设计源文件)、设计综合(将HDL源文件转译为特定结构的设计网表)、约束输入(指定时序、布局布线等设计要求)、设计仿真(对FPGA工程进行功能或时序验证)、设计实现(将逻辑设计转译为可下载烧录到目标FPGA器件的特定物理文件格式)、分析实现结果(对设计性能进行分析)、设计优化(修改设计源文件等以达到设计最优化)、板级调试(生成比特流并下载到开发板上进行调试)等步骤,且存在很多迭代过程 [^1]。 在应用方面,FPGA在JESD204B高速串行接口协议中有应用。JESD204B协议在FPGA应用中的优点包括减少了PCB布板空间(通过高速串行接口减少了器件之间的走线数量)、降低了走线匹配要求(消除了建立与保持时序约束问题)、简化了高速转换器数据接口的实施(通过帧串行数据链路时钟和对齐字符简化了接口设计) [^2]。 ### FPGA串口开发代码示例(简单的串口发送示例,Verilog语言) ```verilog module uart_tx ( input wire clk, input wire rst_n, input wire [7:0] data_in, input wire send_en, output reg tx_out ); // 波特率计数器参数 parameter BAUD_RATE = 9600; parameter CLK_FREQ = 50000000; parameter BAUD_DIV = CLK_FREQ / BAUD_RATE; reg [12:0] baud_cnt; reg [3:0] bit_cnt; reg [9:0] tx_data; reg sending; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin baud_cnt <= 0; bit_cnt <= 0; tx_data <= 0; sending <= 0; tx_out <= 1; end else begin if (send_en && !sending) begin tx_data <= {1'b1, data_in, 1'b0}; sending <= 1; bit_cnt <= 0; baud_cnt <= 0; end if (sending) begin if (baud_cnt == BAUD_DIV - 1) begin baud_cnt <= 0; if (bit_cnt < 10) begin tx_out <= tx_data[bit_cnt]; bit_cnt <= bit_cnt + 1; end else begin sending <= 0; tx_out <= 1; end end else begin baud_cnt <= baud_cnt + 1; end end end end endmodule ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值