时钟频率=波特率*16倍*分频系数
对于传输速度而言,时钟速度越大,传输速率越快。
其中,波特率与分频系数关系如下 :
比特率
频率
分频系数
范围
对比数
9600
153600
325.5208
326
324
19200
307200
162.7604
163
162
38400
614400
81.38021
82
81
56000
896000
55.80357
56
55
57600
921600
54.25347
55
54
115200
1843200
27.12674
28
26
还有波特率与分频系数对应表:
波特率
分频器DLM(H)
分频器DLL(L)
50
09H
00H
75
06H
00H
110
04H
17H
150
03H
00H
300
01H
80H
600
00H
C0H
1200
00H
60H
1800
00H
40H
2400
00H
30H
3600
00H
20H
4800
00H
18H
7200
00H
10H
9600
00H
0CH
11520
00H
0AH
19200
00H
06H
23040
00H
05H
57600
00H
02H
115200
00H
01H
最后是一个参考程序如下:
---------波特率的设置,时钟为8倍的波特率.
---------先检测时钟的上升沿,每第7个时钟的上升沿,进行发送与接收使能,
---------每一位数据在第7个时钟的上升沿发出,每发送完一帧数据,进行数据状态的转换
---------USB转串口器的RX接26,TX接27
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
entity serial is
port(
clk:in std_logic;
txd:out std_logic;
rxd:in std_logic;
key1:in std_logic;
led:out std_logic_vector(7 downto 0)
);
end serial;
architecture behave of serial is
signal clk_div:std_logic;--分频后的时钟
signal div_temp:integer range 0 to 324;--分频计数(采用326)9600
signal txdcounter_reg:std_logic_vector(2 downt