串口硬件设计文档.doc

上传人:啊飒飒 文档编号:10987623 上传时间:2021-06-15 格式:DOC 页数:12 大小:1.28MB
返回 下载 相关 举报
串口硬件设计文档.doc_第1页
第1页 / 共12页
串口硬件设计文档.doc_第2页
第2页 / 共12页
串口硬件设计文档.doc_第3页
第3页 / 共12页
串口硬件设计文档.doc_第4页
第4页 / 共12页
串口硬件设计文档.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《串口硬件设计文档.doc》由会员分享,可在线阅读,更多相关《串口硬件设计文档.doc(12页珍藏版)》请在三一文库上搜索。

1、1 空调温控器空调温控器设计方案设计方案 版本信息版本信息 序号版本号修改信息说明修改人时间 V1.0设计方案初稿 2 目录目录 1 概述概述 2 1.1 硬件结构连接2 1.2 半双工串行通信数据格式2 1.2.1 一次收发数据传输格式2 1.2.2 连续收发的数据传输格式2 1.3MAX3483CSA 介绍2 1.4 软件访问接口函数流程图3 2.半双工串行收发器接口半双工串行收发器接口 3 2.1 接口设计框图3 2.2 接口描述4 2.3 接口定义4 3.控制模块控制模块 5 3.1 功能描述5 3.2 内部寄存器说明5 3.3 结构框图6 3.4 接口定义6 4.接收模块接收模块 7

2、 4.1 功能描述7 4.2 设计框图7 4.2.1 总体设计框图7 4.2.2 接收控制逻辑部分8 4.3 接口定义8 4.4 接收时序图9 5.发送模块发送模块 9 5.1 功能描述9 5.2 设计框图9 5.2.1总体设计框图9 5.2.2 发送控制逻辑部分10 5.3 接口定义11 5.4 发送时序图11 3 1 概述概述 1.1 硬件结构连接硬件结构连接 该方案实现 nios 核中半双工串行收发器接口和外接单片机之间的通信,通信线路之间采 用 MAX3483,传输协议遵照 UART 半双工串行收发通信方式。接口位置如图 1 中半双工串行 收发器接口。 nios核核 半半双双工工串串

3、行行收收发发器器 接接口口 nios_data_in7:0 rst_n fpga_clk RO RE DE DI RXD TXD MAX3 483CS A FPGA TI RI nios_cs nios_rd nios_adder1:0 nios_wr nios_data_out7:0 frame_error 单片 机 图 1 硬件结构连接 1.2 半双工串行通信数据格式半双工串行通信数据格式 1.2.1 一次收发数据传输格式一次收发数据传输格式 起起始始位位数数据据位位停停止止位位空空闲闲位位 01234567 1.2.2 连续收发的数据传输格式连续收发的数据传输格式 起起始始位位数数据据位

4、位 停停止止位位 起起始始位位数数据据位位 停停止止位位 空空闲闲位位 07 07 1.3MAX3483CSA 介绍介绍 MAX3483CSA 采用半双工通信方式,RO 和 DI 端分别为接收器的输出和驱动器的输入端, 与单片机连接时只需分别与单片机的 RXD 端和 TXD 相连,/RE 和 DE 端分别为接受和发送的 使能端,/RE 为逻辑 0 时,器件处于接收状态,当 DE 为逻辑 1 时,器件处于发送状态。 4 1.4 软件访问接口函数流程图软件访问接口函数流程图 开开始始 读读状状态态寄寄存存器器的的值值写写到到flag_reg 是是 否否 是是 否否 flag_reg=2 数数据据发

5、发送送完完毕毕 结结束束 发发送送数数据据过过程程 向向数数据据缓缓冲冲寄寄存存器器写写入入 1个个字字节节数数据据 是是 否否 flag_reg=2 开开始始 向向控控制制寄寄存存器器写写0,表表示示接接收收数数据据 否否 结结束束 接接收收数数据据过过程程 读读状状态态寄寄存存器器的的值值写写到到flag_reg flag_reg=6 flag_reg=3 接接收收数数据据 数数据据接接收收完完成成 向向控控制制寄寄存存器器写写1 是是 否否 是是 否否 软软件件 处处理理 是是 软软件件 处处理理 图 2 发送接收数据过程 2.半双工串行收发器接口半双工串行收发器接口 2.1 接口设计框

6、图接口设计框图 re_space 分分频频 uart_clk tr_space nios_data_in7:0 trbuf_empty_ind Control 模模块块 transmit receive rebuf_full_ind trdata_reg_sel stopbit_err_ind Uart_data_out7:0 nios_rd nios_adder1:0 nios_data_out7:0 fpga_clk nios_cs nios_wr rst_n Frame_error DI DE RE RO TI RI 图 3 半双工串行收发器结构图 5 2.2 接口描述接口描述 收发器接

7、口总结构如图 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 信号置高,接着启动发送波

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

9、指示信号,并放弃数据输出。 当把数据从移位寄存器写到接收缓冲寄存器时,将 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_nI复位信号,低有效 2.fpga_clkIcpu 工作时钟,频率为 66.66MHZ 3.nios_csIcpu 发送的片选信

10、号,低有效 4.nios_wrIcpu 发送的写使能,低有效 5.nios_rdIcpu 发送的读使能,低有效 6.nios_adder1:0Icpu 访问接口内部寄存器的地址 7.nios_data_in7:0Icpu 向外接单片机中发送的数据 8.nios_data_out7:0OCpu 从外接单片机中接收的数据 9.ROI串行数据接收引脚 10./REO接收使能,低有效 11.DIO串行数据发送引脚 6 12.DEO发送使能,高有效 13.TIO发送完成信号,高有效 14RIO接收完成信号,高有效 15fram_errorO帧出错信号,高有效 3.控制模块控制模块 3.1 功能描述功能描

11、述 该模块主要实现以下功能: 根据 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 为空。

12、bit2 帧错误指示信号,1 表示有错误,0 表示正确。其它位 保留。 3. tran_buf_reg 只写10发送缓冲寄存器,8 位,只有 缓 冲寄存器写使能有效时,cpu 才能 向该寄存器写数据。 4. rece_buf_reg 只读11接收缓冲寄存器,8 位,只有接收 缓冲寄存器读使能有效时,cpu 才 能读该寄存器。 7 3.3 结构框图结构框图 trdata_reg_sel redata_reg_sel &nios_adder Control_reg 2b10 nios_wr 2b01 DE tr_space DFF set Rst & re_space state_reg_sel

13、uart_state 01 10rece_buf_reg nios_data_out 2b00 2b11 nios_cs 图 4 控制模块总体框图 3.4 接口定义接口定义 序号引脚名称 I/O 功能描述备注 1.rst_nI复位信号,低有效 2.fpga_clkICpu 工作时钟,频率为 66.66mhz,上升 沿采样,占空比为 50%。 3.uart_clkI分频后产生的采样时钟,频率为波特率 的 16 倍,上升沿采样,占空比为 50% 4.nios_csIcpu 发送的片选信号,低有效 5.nios_wrIcpu 发送的写使能,低有效 6.nios_rdIcpu 发送的读使能,低有效 7

14、.nios_adder1:0Icpu 访问接口内部寄存器的地址 8.nios_data_in7:0Icpu 向外接单片机中发送的数据 9.nios_data_out7:0OCpu 从外接单片机中接收的数据 10./REO接收使能,低有效 11.DEO发送使能,高有效 12.TIO发送完成信号,高有效 13.RIO接收完成信号,高有效 14.fram_errorO帧出错信号,高有效 15.tr_spaceI发送空闲状态指示信号,高有效 16.trbuf_empty_indI发送缓冲寄存器数据空指示信号,高有 效 17.trdata_reg_setO发送缓冲寄存器写使能信号,高有效 8 18.re

15、ce_buf_reg 7:0I接收缓冲寄存器数据输出 19.rebuf_full_indI接收缓冲寄存器数据满指示信号,好有 效 20.stopbit_err_indI帧错误 izhishi 信号,高有效 21.re_spaceI接收状态空闲指示信号,高有效 22.state_reg_selO状态寄存器读使能信号,高有效 23.redata_reg_selO接收缓冲寄存器读使能信号,高有效 4.接收模块接收模块 4.1 功能描述功能描述 该部分主要完成以下功能: 完成帧起始信号的检测 按照 uart 协议正确接收 RO 上数据,并且写到接收缓冲寄存器内。 当接收数据有误时,发送错误指示信号,等

16、待 CPU 读取后,将错误指示信号清除。 生成 re_space 、rebuf_full_ind 指示信号 4.2 设计框图设计框图 4.2.1 总体设计框图总体设计框图 DFF Ctrl Logic RO D uart_clk rst & RE Shift reg uart_rece_begin Buffer DFF & DFF redata_reg_sel D set DFF & DFF D set state_reg_sel re_valid stopbit_err_ind rebuf_full_ind rece_buf_reg7:0 re_frame_err fpga_clk re_s

17、pace D D 图 5 接收模块总体框图 9 图 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 信号

18、清 0。 4.2.2 接收控制逻辑部分接收控制逻辑部分 re_idle start rece rst_n uart_rece_begin= 1 uart_rece_begin=0 re_bps_cnt=4h7&RO= 0 re_bps_cnt=4h7 &RO=1 re_bps_cnt=4h7&rece _bit_cnt=4d8 图 6 接收部分状态机 re_idle 接收空闲状态;start 接收帧起始信号状态,rece 接收数据状态。复位时处于 接收空闲状态,当检测到下降沿后进入 start 状态,此时启动接收波特率计数器,当计 数器计到 8 时,检测 RO 的值,为 0,表示帧起始信号,则

19、进入 rece 接收数据状态。检 测 RO 的值,为 1,进入空闲状态。接收完数据后跳到空闲状态。在接收空闲状态 re_space 信号为高,其余状态信号都为低,即 re_space = ( re_state=re_idle )。 4.3 接口定义接口定义 序 号 引脚名称 I/O 功能描述备注 1.fpga_clkICpu 工作时钟,频率为 66.66mhz,上升沿 采样,占空比为 50%。 2.uart_clkI分频后产生的采样时钟,频率为波特率的 16 倍,上升沿采样,占空比为 50% 3.ROI串行数据接收引脚 4./REO接收使能,低有效 5.rece_buf_reg 7:0I接收缓

20、冲寄存器数据输出 6.rebuf_full_indI接收缓冲寄存器数据满指示信号,好有效 7.stopbit_err_indI帧错误 izhishi 信号,高有效 10 8.re_spaceI接收状态空闲指示信号,高有效 9.state_reg_selO状态寄存器读使能信号,高有效 10.redata_reg_selO接收缓冲寄存器读使能信号,高有效 4.4 接收时序图接收时序图 uart_clk RE RO re_state re_valid rebuf_full_ind redata_reg_sel re_idle start rece re_idle re_space set_full_

21、ind 图 7 正确数据 uart_clk RE RO re_state state_reg_sel idle start rece idle re_frame_err stopbit_err_ind 图 8 错误数据 5.发送模块发送模块 5.1 功能描述功能描述 该模块实现以下功能 把数据从发送缓冲寄存器搬到移位寄存器,按照 uart 协议,正确发送数据 生成 tr_space 、trbuf_empty_ind 指示信号 5.2 设计框图设计框图 5.2.1 总体设计框图总体设计框图 11 rst_n fpga_clk tr_space nios_data_in Ctrl Logic DF

22、F & D set_empty_ind DFF set D or trdata_reg_sel nios_wr trbuf_empty_ind uart_clk tran_buf_ reg & Shift reg 01 DE DI 图 7 发送部分整体框图 图 7 中控制逻辑部分为状态机,具体状态转移如下所讲。状态控制输出 tr_space 信号,用 fpga_clk 时钟的上升沿分别检测 tr_space 信号的下降沿,检测到下降沿的时候 让 trbuf_empty_ind 信号置高,当 cpu 向缓冲寄存器写入数据,则把 trbuf_empty_ind 信 号清 0。 5.2.2 发送控制

23、逻辑部分发送控制逻辑部分 tr_idle init tran rst_n DE& !trbuf_empty _ind=1 DE & !trbuf_empty_ind=0 re_bps_cnt=4h7 &RO=1 tran_bit_cnt=4d9)&(tr_bps_cnt = 4he&(!trbuf_empty_ind) 图 8 发送过程状态图 tr_idle 发送空闲状态;init 发送初始化状态,tran 发送数据状态。复位时处于 发送空闲状态,在发送状态检测到缓冲寄存器有数据,则进入 init 状态,完成数据从 缓冲寄存器哦移位寄存器的搬移,然后跳转到发送状态,当发送完最后一位数据时,状

24、态机到到发送空闲状态。在发送状态(tran)tr_space 为低,其他状态 tr_space 都为 高,即 tr_space = !(tr_state = tran)。 12 5.3 接口定义接口定义 序 号 引脚名称 I/O 功能描述备注 1.fpga_clkICpu 工作时钟,频率为 66.66mhz,上升沿 采样,占空比为 50%。 2.uart_clkI分频后产生的采样时钟,频率为波特率的 16 倍,上升沿采样,占空比为 50% 3.DIO串行数据发送引脚 4.DEO发送使能,高有效 5.tr_spaceI发送空闲状态指示信号,高有效 6.trbuf_empty_indI发送缓冲寄存器数据空指示信号,高有效 7.trdata_reg_setO发送缓冲寄存器写使能信号,高有效 8.nios_data_in7:0Icpu 向外接单片机中发送的数据 5.4 发送时序图发送时序图 uart_clk RE DI tr_state tr_space set_empty_ind trdata_reg_sel tr_idle init tran tr_idle trbuf_empty_ind data nios_data_in 图 9 发送过程时序图

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1