新建
上传
首页
助手
最?/div>
资料?/div>
工具

实现功能?/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>

 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

实现功能?/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>

 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

实现功能?/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>

 

Ͼλ">
Ͼλ
Ŀ

FPGA模拟串口自收?Verilog - 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

实现功能?/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>

 



ļ׺.doc޸Ϊ.docĶ

  • ҰѧӢ3д̳̿κ
  • θӪӦü
  • ̰꼶ѧϲ5 һԪһηϰ
  • пѧӦӦϰԭ
  • ר
  • STC89C516 Ƭֹ⹦ʼ
  • ϩ龫 ƷƼ
  • ˰3ĩ⼰𰸽
  • Ϣд
  • ս̰ѧ꼶²вԾ

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)