微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 有一个现成的UART波特率发生器的RTL代码请高手给讲讲

有一个现成的UART波特率发生器的RTL代码请高手给讲讲

时间:10-02 整理:3721RD 点击:
多亏论坛上大侠们的帮助,我已经成功地使我写的uart和PC正确通信了 :)
感觉写的太简单了,可能不对,于是找了网上的一个RTL代码,再试试,结果主要就坑在波特率设置上:
比如:人家可能用的是50MHz的时钟,而我用的是66MHz。还有虽然我原来的程序用的是115200,但这段代码的目标波特率是多少我也不知道。
module bps_set(
               clk,rst_n,
      bps_start,
      sample
               );
input clk;
input rst_n;
input bps_start;
output sample;
/*
`define      BPS_PARA           5207
`define      BPS_PARA_HALF      2603
*/
reg [12:0] cnt;
always @ (posedge clk or posedge rst_n) begin
  if (rst_n)
    cnt <= 13'd0;
  else if ((cnt == 868) || (!bps_start))    ///// 我很不解这个数是怎么算出来的?
cnt <= 13'd0;
  else
    cnt <= cnt+1'b1;
end
reg sample_reg;
always @ (posedge clk or posedge rst_n) begin  
  if (rst_n)
    sample_reg <= 1'b0;
  else if (cnt ==  434)                          ///// 我很不解这个数是怎么算出来的?
    sample_reg <= 1'b1;
  else
    sample_reg <= 1'b0;
end
assign sample = sample_reg;
endmodule
////////////////////////////////////////////////////////sample信号用法如下//////////////////////////////////////////////
always @ (posedge clk or posedge rst_n) begin
   if (rst_n)
      begin
      rs232_tx_r <= 1'b1;
   num <= 4'd0;
      end
   else if (tx_en)
      if (sample)
   begin
      num <= num+1'b1;
   case(num)
      4'd0: rs232_tx_r <= 1'b0;  
      4'd1: rs232_tx_r <= tx_data[0];
      4'd2: rs232_tx_r <= tx_data[1];
      4'd3: rs232_tx_r <= tx_data[2];
      4'd4: rs232_tx_r <= tx_data[3];
      4'd5: rs232_tx_r <= tx_data[4];
      4'd6: rs232_tx_r <= tx_data[5];
      4'd7: rs232_tx_r <= tx_data[6];
      4'd8: rs232_tx_r <= tx_data[7];
      4'd9: rs232_tx_r <= 1'b1;
      default: rs232_tx_r <= 1'b1;
   endcase
      end
   else if (num == 4'd10)   
      num <= 4'b0;
end
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
请高手指点一下如何通过目标波特率115200和我的物理时钟66MHz,算出何时的计数值?

直接计算一下就好了  不难的

这些代码百度文库里面很多 而且都是可以直接使用的

用66M除以115200就可以吧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top