串口硬件设计文档.docx

上传人:b****5 文档编号:6733078 上传时间:2023-01-09 格式:DOCX 页数:16 大小:196.57KB
下载 相关 举报
串口硬件设计文档.docx_第1页
第1页 / 共16页
串口硬件设计文档.docx_第2页
第2页 / 共16页
串口硬件设计文档.docx_第3页
第3页 / 共16页
串口硬件设计文档.docx_第4页
第4页 / 共16页
串口硬件设计文档.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

串口硬件设计文档.docx

《串口硬件设计文档.docx》由会员分享,可在线阅读,更多相关《串口硬件设计文档.docx(16页珍藏版)》请在冰豆网上搜索。

串口硬件设计文档.docx

串口硬件设计文档

 

空调温控器设计方案

 

版本信息

序号

版本号

修改信息说明

修改人

时间

V1.0

设计方案初稿

1概述

1.1硬件结构连接

该方案实现nios核中半双工串行收发器接口和外接单片机之间的通信,通信线路之间采用MAX3483,传输协议遵照UART半双工串行收发通信方式。

接口位置如图1中半双工串行收发器接口。

图1硬件结构连接

1.2半双工串行通信数据格式

1.2.1一次收发数据传输格式

1.2.2连续收发的数据传输格式

1.3MAX3483CSA介绍

MAX3483CSA采用半双工通信方式,RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD端和TXD相连,/RE和DE端分别为接受和发送的使能端,/RE为逻辑0时,器件处于接收状态,当DE为逻辑1时,器件处于发送状态。

1.4软件访问接口函数流程图

图2发送接收数据过程

2.半双工串行收发器接口

2.1接口设计框图

图3半双工串行收发器结构图

2.2接口描述

收发器接口总结构如图4所示,在默认和复位情况下收发器处于发送状态。

在发送状态,查询到控制寄存器的值为0,并且tr_space为高时,则将DE和/RE清0,此时收发器从发送状态切换到接收状态。

在接收状态,查询到控制寄存器的值为1,并且r_space为高时,则将DE和/RE置1,收发器从接收状态切换到发送状态。

发送状态时,在发送空闲(tr_space为高)期间检测到发送数据缓冲寄存器有数据(tr_buf_empty_ind为低),首先将缓冲器的数据搬到移位寄存器,并且给高位加1,低位加0,同时将tr_buf_empty_ind信号置高,接着启动发送波特率计数器,同时将tr_space信号清0,然后每隔16个uart_clk时钟周期发送1位数据,发送完最后1位数据后,再次将tr_space置高,表示发送空闲。

接收状态时,首先检测下降沿,当检测到下降沿后,将re_space信号清0,同时启动接收数据波特率计数器,当计数器加到8时,采样RO的值,为低,表示此时是一个起始信号,然后每隔16个uart_clk时钟周期接收1位数据,当接收到第9位数据,也就是停止位时,判断停止位是否正确,若正确则将数据写到接收缓冲寄存器,同时将re_space信号置高,若停止位不正确则给出一个帧出错指示信号,并放弃数据输出。

当把数据从移位寄存器写到接收缓冲寄存器时,将re_buf_full_ind置高,当cpu把数据从接收缓冲寄存器读走,将re_buf_full_ind信号清0。

fpga_clk为cpu工作时钟,频率为66.66MHZ,uart_clk为串行收发器接口的采样时钟,频率为串口数据传送波特率的16倍,数据传送的波特率为9600bps。

2.3接口定义

序号

引脚名称

I/O

功能描述

备注

1.

rst_n

I

复位信号,低有效

2.

fpga_clk

I

cpu工作时钟,频率为66.66MHZ

3.

nios_cs

I

cpu发送的片选信号,低有效

4.

nios_wr

I

cpu发送的写使能,低有效

5.

nios_rd

I

cpu发送的读使能,低有效

6.

nios_adder[1:

0]

I

cpu访问接口内部寄存器的地址

7.

nios_data_in[7:

0]

I

cpu向外接单片机中发送的数据

8.

nios_data_out[7:

0]

O

Cpu从外接单片机中接收的数据

9.

RO

I

串行数据接收引脚

10.

/RE

O

接收使能,低有效

11.

DI

O

串行数据发送引脚

12.

DE

O

发送使能,高有效

13.

TI

O

发送完成信号,高有效

14

RI

O

接收完成信号,高有效

15

fram_error

O

帧出错信号,高有效

3.控制模块

3.1功能描述

该模块主要实现以下功能:

●根据tr_space、re_space和控制寄存器的值改变DE和/RE,实现收发器状态的切换

●生成发送缓冲器写使能,接收缓冲器读使能,状态寄存器读使能信号。

3.2内部寄存器说明

序号

寄存器名称

读/写

地址

寄存器说明

备注

1.

control_reg

读写

00

读写控制寄存器,最低位为读写判

断位,0,表示发送,1表示接收。

其它位保留。

2.

uart_state

只读

01

状态寄存器,8位,低3位状态标

志位,bit0发送数据缓冲寄存器空

满标志位,1为空,0为满。

bit1

接收缓冲寄存器空满标志,1为满,

0为空。

bit2帧错误指示信号,1

表示有错误,0表示正确。

其它位

保留。

3.

tran_buf_reg

只写

10

发送缓冲寄存器,8位,只有缓冲寄存器写使能有效时,cpu才能向该寄存器写数据。

4.

rece_buf_reg

只读

11

接收缓冲寄存器,8位,只有接收缓冲寄存器读使能有效时,cpu才能读该寄存器。

3.3结构框图

图4控制模块总体框图

3.4接口定义

序号

引脚名称

I/O

功能描述

备注

1.

rst_n

I

复位信号,低有效

2.

fpga_clk

I

Cpu工作时钟,频率为66.66mhz,上升沿采样,占空比为50%。

3.

uart_clk

I

分频后产生的采样时钟,频率为波特率的16倍,上升沿采样,占空比为50%

4.

nios_cs

I

cpu发送的片选信号,低有效

5.

nios_wr

I

cpu发送的写使能,低有效

6.

nios_rd

I

cpu发送的读使能,低有效

7.

nios_adder[1:

0]

I

cpu访问接口内部寄存器的地址

8.

nios_data_in[7:

0]

I

cpu向外接单片机中发送的数据

9.

nios_data_out[7:

0]

O

Cpu从外接单片机中接收的数据

10.

/RE

O

接收使能,低有效

11.

DE

O

发送使能,高有效

12.

TI

O

发送完成信号,高有效

13.

RI

O

接收完成信号,高有效

14.

fram_error

O

帧出错信号,高有效

15.

tr_space

I

发送空闲状态指示信号,高有效

16.

trbuf_empty_ind

I

发送缓冲寄存器数据空指示信号,高有效

17.

trdata_reg_set

O

发送缓冲寄存器写使能信号,高有效

18.

rece_buf_reg[7:

0]

I

接收缓冲寄存器数据输出

19.

rebuf_full_ind

I

接收缓冲寄存器数据满指示信号,好有效

20.

stopbit_err_ind

I

帧错误izhishi信号,高有效

21.

re_space

I

接收状态空闲指示信号,高有效

22.

state_reg_sel

O

状态寄存器读使能信号,高有效

23.

redata_reg_sel

O

接收缓冲寄存器读使能信号,高有效

4.接收模块

4.1功能描述

该部分主要完成以下功能:

●完成帧起始信号的检测

●按照uart协议正确接收RO上数据,并且写到接收缓冲寄存器内。

●当接收数据有误时,发送错误指示信号,等待CPU读取后,将错误指示信号清除。

●生成re_space、rebuf_full_ind指示信号

4.2设计框图

4.2.1总体设计框图

图5接收模块总体框图

图6中控制逻辑部分为状态机,具体状态转移如下所讲。

Uart_rece_begin为检测到下降沿的指示信号,re_frame_error和re_valid为状态机的输出信号,用fpga_clk时钟的上升沿分别检测re_frame_error和re_valid信号的下降沿,检测到下降沿的时候让stopbit_err_ind和rebuf_full_ind分别置1,当cpu把状态寄存器的值读走将stopbit_err_ind信号清0.当cpu把接收缓冲寄存器的数据读走,rebuf_full_ind信号清0。

4.2.2接收控制逻辑部分

图6接收部分状态机

re_idle接收空闲状态;start接收帧起始信号状态,rece接收数据状态。

复位时处于接收空闲状态,当检测到下降沿后进入start状态,此时启动接收波特率计数器,当计数器计到8时,检测RO的值,为0,表示帧起始信号,则进入rece接收数据状态。

检测RO的值,为1,进入空闲状态。

接收完数据后跳到空闲状态。

在接收空闲状态re_space信号为高,其余状态信号都为低,即re_space=(re_state==re_idle)。

4.3接口定义

序号

引脚名称

I/O

功能描述

备注

1.

fpga_clk

I

Cpu工作时钟,频率为66.66mhz,上升沿采样,占空比为50%。

2.

uart_clk

I

分频后产生的采样时钟,频率为波特率的16倍,上升沿采样,占空比为50%

3.

RO

I

串行数据接收引脚

4.

/RE

O

接收使能,低有效

5.

rece_buf_reg[7:

0]

I

接收缓冲寄存器数据输出

6.

rebuf_full_ind

I

接收缓冲寄存器数据满指示信号,好有效

7.

stopbit_err_ind

I

帧错误izhishi信号,高有效

8.

re_space

I

接收状态空闲指示信号,高有效

9.

state_reg_sel

O

状态寄存器读使能信号,高有效

10.

redata_reg_sel

O

接收缓冲寄存器读使能信号,高有效

4.4接收时序图

图7正确数据

图8错误数据

5.发送模块

5.1功能描述

该模块实现以下功能

●把数据从发送缓冲寄存器搬到移位寄存器,按照uart协议,正确发送数据

●生成tr_space、trbuf_empty_ind指示信号

5.2设计框图

5.2.1总体设计框图

图7发送部分整体框图

图7中控制逻辑部分为状态机,具体状态转移如下所讲。

状态控制输出tr_space信号,用fpga_clk时钟的上升沿分别检测tr_space信号的下降沿,检测到下降沿的时候让trbuf_empty_ind信号置高,当cpu向缓冲寄存器写入数据,则把trbuf_empty_ind信号清0。

5.2.2发送控制逻辑部分

图8发送过程状态图

tr_idle发送空闲状态;init发送初始化状态,tran发送数据状态。

复位时处于发送空闲状态,在发送状态检测到缓冲寄存器有数据,则进入init状态,完成数据从缓冲寄存器哦移位寄存器的搬移,然后跳转到发送状态,当发送完最后一位数据时,状态机到到发送空闲状态。

在发送状态(tran)tr_space为低,其他状态tr_space都为高,即tr_space=!

(tr_state==tran)。

5.3接口定义

序号

引脚名称

I/O

功能描述

备注

1.

fpga_clk

I

Cpu工作时钟,频率为66.66mhz,上升沿采样,占空比为50%。

2.

uart_clk

I

分频后产生的采样时钟,频率为波特率的16倍,上升沿采样,占空比为50%

3.

DI

O

串行数据发送引脚

4.

DE

O

发送使能,高有效

5.

tr_space

I

发送空闲状态指示信号,高有效

6.

trbuf_empty_ind

I

发送缓冲寄存器数据空指示信号,高有效

7.

trdata_reg_set

O

发送缓冲寄存器写使能信号,高有效

8.

nios_data_in[7:

0]

I

cpu向外接单片机中发送的数据

5.4发送时序图

图9发送过程时序图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1