ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:196.57KB ,
资源ID:6733078      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6733078.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(串口硬件设计文档.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

串口硬件设计文档.docx

1、串口硬件设计文档 空调温控器设计方案版本信息序号版本号修改信息说明修改人时间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和

2、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_spac

3、e为高)期间检测到发送数据缓冲寄存器有数据(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位

4、数据,也就是停止位时,判断停止位是否正确,若正确则将数据写到接收缓冲寄存器,同时将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_nI复位信号,低有效2. fpga_clkI

5、cpu工作时钟,频率为66.66MHZ3. nios_csIcpu发送的片选信号,低有效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串行数据发送引脚12. DEO发送使能,高有效13. TIO发送完成信号,高有效14RIO接收完成信号,高有效15fram_errorO帧出

6、错信号,高有效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表示

7、有错误,0表示正确。其它位保留。3. tran_buf_reg只写10发送缓冲寄存器,8位,只有 缓冲寄存器写使能有效时,cpu才能向该寄存器写数据。4. rece_buf_reg只读11接收缓冲寄存器,8位,只有接收缓冲寄存器读使能有效时,cpu才能读该寄存器。3.3结构框图 图4 控制模块总体框图3.4 接口定义序号引脚名称I/O功能描述备注1. rst_nI复位信号,低有效2. fpga_clkICpu工作时钟,频率为66.66mhz,上升沿采样,占空比为50%。3. uart_clkI分频后产生的采样时钟,频率为波特率的16倍,上升沿采样,占空比为50%4. nios_csIcpu发送

8、的片选信号,低有效5. nios_wrIcpu发送的写使能,低有效6. nios_rdIcpu发送的读使能,低有效7. 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发送缓冲寄存

9、器数据空指示信号,高有效17. trdata_reg_setO发送缓冲寄存器写使能信号,高有效18. rece_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上数

10、据,并且写到接收缓冲寄存器内。 当接收数据有误时,发送错误指示信号,等待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,当cp

11、u把状态寄存器的值读走将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_stat

12、e=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接收缓冲寄存器数据输出6. rebuf_full_indI接收缓冲寄存器数据满指示信号,好有效7. stopbit_err_indI帧错误izhishi信号,高有效8. re_spaceI接收状态空闲指示信号,高有效9. state_reg_se

13、lO状态寄存器读使能信号,高有效10. redata_reg_selO接收缓冲寄存器读使能信号,高有效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信号置高

14、,当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_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 发送时序图 图9发送过程时序图

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

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