实现功能?/p>
FPGA
里实现从
PC
串口接收数据?/p>
接着把接收到的数据发回去?/p>
波特率可?/p>
9600bps,
可调
1bit
起始位,
8bit
数据?/p>
1bit
停止位,无校验位?/p>
参考?/p>
VHDL
硬件描述语言与和数字逻辑电路设计?/p>
模块介绍如下
一、串口数据接收模块:
特别注意一个数据位?/p>
4
?/p>
clk_bps_4
时钟周期?/p>
串口数据接收控制
当数据接收端
rxd
出现起始位低电平?/p>
启动接收控制计数?/p>
rx_cnt,
置位?/p>
8’b0111_00(28),
?/p>
rx_cnt[5:2]== 4’b0111(7),rx_cnt[1:0] == 2'b00(0);
一个计数周期开始,伴随
clk_bps_4,
rx_cnt
?/p>
1
(每一个数据位?/p>
4
?/p>
串口接收数据移位控制
(
关键采样点的选取
)
每当
rx_cnt[1:0] == 2'b01,
为了保证?/p>
rxd
一位数据靠近中间位置采样;
?/p>
4
?/p>
clk_bps_4,
rx_cnt[5:2]
?/p>
1
?/p>
rx_cnt[5:2] == 8,9,10?15
,完?/p>
8
位的数据采样,串并变?/p>
置位标志?/p>
rxdF
数据接收标志
rxd
出现起始位低电平
, rxdF
?/p>
1
,表示数据接收开始;?/p>
rx_cnt
计数?/p>
8’b1111_11(63),
数据接收完成?/p>
rxdF
?/p>
0
置位标志?/p>
rdFULL;//
接收锁存器满标志
空闲?/p>
rdFULL
?/p>
0
,当数据接收完成,数据锁存到
do_latch,
同时
rdFULL
?/p>
1,
向上层模
块表示数据以准备
OK
,可以来读取?/p>
rd
?/p>
0
,表示上层模块开始读取数据,
rdFULL
?/p>
0
,表
示数据已读走
二、串口数据发送模块:
数据发送依赖于
wr
(低电平有效?/p>
空闲?/p>
wr
?/p>
1
,数据发送时
wr
产生低电平脉冲,
wr
上升沿将数据锁存?/p>
din_latch;
串口数据发送控制:
wr
?/p>
0
跳变?/p>
1
后,启动发送控制计数器
tx_cnt,
置位?/p>
8’b0111_00(28),
?/p>
tx_cnt[5:2]== 4’b0111(7), tx_cnt[1:0] == 2'b00(0);
一个计数周期开始,伴随
clk_bps_4,
tx_cnt
?/p>
1
(每一个数据位?/p>
4
?/p>
串口发送数据移位控?/p>
