DSP课程设计报告-DSP芯片与PC机的异步串行通信系统_第1页
DSP课程设计报告-DSP芯片与PC机的异步串行通信系统_第2页
DSP课程设计报告-DSP芯片与PC机的异步串行通信系统_第3页
DSP课程设计报告-DSP芯片与PC机的异步串行通信系统_第4页
DSP课程设计报告-DSP芯片与PC机的异步串行通信系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南科技大学信息与电气工程学院课程设计报告题 目: DSP芯片与PC机的异步串行通信系统 专 业: 班 级: 姓 名: 学 号: 指导教师: 尹艳群 2015年 12月 25日信息与电气工程学院课程设计任务书20152016学年第一学期专业: 学号: 姓名: 课程设计名称: DSP原理及应用课程设计 设计题目: DSP芯片与PC机的异步串行通信系统 完成期限:自 2015 年 12 月 21 日至 2015 年 12 月 25 日共 1 周设计依据、要求及主要内容(可另加附页):指导教师(签字): 批准日期: 年 月 日目录一 、课题设计概述及原理 41.1设计目的41.2设计要求41.3实验

2、设备41.4实验原理4二、串行通信的基本概念 62.1数据传输方式 62.2波特率62.3 误码率62.4 串行通信的基本方式62.5 异步串行通信标准接口 72.6 异步通信的控制时钟 72.7 全双工串行通信模块UART 8三 、实验步骤及仿真结果 93.1实验步骤 93.2仿真程序 10四 、总结11五 、参考文献12一、 课题设计概述及原理1.1设计目的1.掌握异步串行通信协议;2.掌握通用异步收发器芯片的应用。3. 掌握异步串行通讯电路及系统的设计方法。1.2设计要求 设计一个能进行异步全双工串行通信的模块,该模块以固定的串行数据传送格式收发数据。要求如下: 1) 每帧数据供10 位

3、,其中 1位启动位,8位数据位,1位停止位 。2) 波特率为:9600。3) 收发误码率1% 。4) 实现与PC机的通信,PC机端采用串口调试助手。在 PC 机端,用串口调试助手发送和显示数据;在 FPGA 端,发送的数据来自于自建ROM内存储的数据,数据量为200,接受数据由串口调试助手发送,并由数码管显示接受数据值。1.3 实验设备1.一台装有CCS软件的计算机;2.插上2407主控板的DSP实验箱;3.DSP硬件仿真器。1.4设计原理1.异步串行通信协议在传输数据前,数据线处于高电平状态,这称为标识态。传输开始后,数据线由高电平转为低电平状态,这称为起始位;起始位后面接着58个信息位;信

4、息位后面是校验位;校验位后是停止位“1”。传输完毕后,可以立即开始下一个字符的传输;否则,数据线再次进入标识态。上面提到的信息位的位数(58位)、停止位的位数(1位、1.5位或2位)、校验的方式(奇校验、偶校验或不校验)等参数都可以根据不同需要进行设置,但对于同一个传输系统中的收发两端来说,这些参数必须保持一致。异步串行通信方式中另一个重要的参数是波特率。在一般的“0”/“1”系统中,波特率就是每秒钟传输的位数。国际上规定了一个标准波特率系列,它们是最常用的波特率。标准波特率系列为110、300、600、1200、1800、2400、4800、9600和19200。发送端和接收端必须设置统一的

5、波特率,否则无法正确接收数据。2.通用异步收发器芯片SC16C550:通用异步收发器完成的功能是把并行数据转换为串行数据,按上述异步串行通信方式把数据发送出去,同时把接收到的串行数据转换成并行数据。本模块选用的是Philips公司的SC16C550型号芯片。该芯片内部有15个寄存器可由编程者进行读写控制。本实验只用到其中几个,如下:地址(A2 A1 A0)寄存器011线控制寄存器(LCR)101线状态寄存器(LSR)000 接收数据寄存器(RHC)000 发送数据寄存器(THC)000除数寄存器低位(DLL)001除数寄存器高位(DLM)LCR用来指定异步串行通信的参数,包括传送的字长、停止位

6、的位数和校验方式。见下表:LCR1,0传送字长00=5, 01=6, 10=7, 11=8LCR2停止位位数0:1位;1:1.5位(字长为5时)1:2位(字长为6,7,8时)LCR3是否进行校验0:不校验; 1:校验LCR4奇校验或偶校验0:奇校验; 1:偶校验LCR5强制校验位缺省为0:即不强制校验位LCR6中止0:不中止; 1:中止发送LCR7选择除数寄存器0:收发寄存器有效;1:除数寄存器有效。当LCR7 位置为0时,CPU以000的地址读取RHR中存放的接收到的数据,或者往THR中写入要发送的数据。这两个都是8位的寄存器。当RHR中有数据到达时,线状态寄存器的LSR0 位为“1”,这时

7、可以读出该数据;当THR中数据清空时,LSR5 位为“1”,这时可以写入下一个要发送的数据。当LCR7 位置为1时,就可以设置除数寄存器的值,该值的计算方法是: 。 把计算结果(十进制)转换为十六进制分别填入DLL和DLM即可。本实验中用的晶振频率是1.8432MHz,若所需波特率为9600,则DLL中应写入0CH(即12),DLM中写入0H。3.电平转换RS-232-C标准中规定 5V 15V为逻辑“1”,+5V+15V为逻辑“0”,因此要用专门的芯片完成TTL电平与RS-232电平的转换,如MAX3232。4.串口调试助手该计算机端程序可以监测计算机串口接收和发送数据的情况。本实验中需要用

8、该程序帮助观察实验结果。 二、串行通信的基本概念2.1数据传输方式 在串行通信中,数据在通信线路上的传送有三种方式: 单工方式 数据只能按一个固定的方向传送。 半双工方式 数据可以分时在连个方向传输,但不能同时双向传输。 全双工方式 数据可以同时在两个方向上传输。 本设计选用的是全双工方式。 2.2 波特率 即单位时间内传送的二进制数据的位数,也称数据位率,单位为bit/s(位/秒)。波特率是衡量串行数据传送速度快慢的重要指标和参量。 在串行通信中,数据的接收和发送都必须要有时钟信号对传送的数据进行定位和同步控制。波特率与收/发时钟频率的关系如下:收/发时钟频率 = n波特率 n的取值一般为1

9、、16、32、64等。同步通信必须满足n=1,异步通信中常采用n=16.2.3 误码率 即数据经过传输后发生错误的位数(码元数)与总传输位数(码总元数)之比,其与通信线路质量、干扰大小及波特率等因素有关。 2.4 串行通信的基本方式(两种) 异步串行方式 数据流中,字符间异步,字符内部各位间同步。 同步串行方式 数据流中,字符间以及字符内部各位间都同步。 目前PC机的串行接口基本都采用的异步通信方式,故本设计也采用此方式。2.5 异步串行通信标准接口通信协议,即通信规程,指通信双方在信息传输格式上的一种约定。 在数据通信中,收/发器之间传送的是一组二进制的“0”“1”位串,而“0”“1”在不同

10、的位置可能有不同的含义。有的只用于同步,有的代表通信双方的地址,有的是控制信息,有的是为了差错控制而附加上的冗余位,有的则是真正的需要传输的数据。这些都需要在通信协议中事先进行约定,以形成收/发双方共同遵守的格式。 每帧信息(即每个字符)由4部分组成: 1位起始位,规定为低电平“0”; 5-8位数据位,紧跟于起始位的后面。规定从低位向高位依次传送; 0位或1位奇偶校验位; 1位,3/2位或2位停止位,规定为高电平。起始位标志着每个字符的开始,通知接收器开始装配一个字符,以便和发送器取得同步;停止位标志着每个字符的结束。通过起始位和停止位的结合,实现异步字符传输的同步。异步通信的关键是接收器必须

11、准确地发现每个字符开始出现的时刻,因此协议规定起始位和结束位必须采用相反的极性,利用前一个字符的高电平停止位到后一个字符的低电平起始位的负跳变,接收器便知道这是一个字符的开始,以此作为新字符内位检测与采样的时间基准。为保持相邻两个字符的转换是一个负跳变,故通信协议规定字符与字符间出现的空闲状态(冗余位)也用“1”填充。 按课程设计要求,我们的设计的传输格式为1位起始位,1位停止位和8位数据位,无奇偶校验位。2.6 异步通信的控制时钟 因为在异步通信中,同步只在一个字符间保持,每个字符在传输时都会有新的起始位和停止位,故发送时钟和接收时钟只需分别使用两个频率相同的局部时钟,无需使用同一个时钟。由

12、于收/发器使用的为各自独立控制的时钟,他们的频率虽然要求要相同,但不可能真正严格的相同,它们的上下始终边沿总会不可避免地出现一定程度的偏移。这种收/发时钟的相对误差会导致接收端的采样错误,为保证数据能正确传送,除了用起始位、停止位和空闲位提供正确的时间基准外,还可以采用接收器在码元中心进行采样,获得最大收/发时钟频率偏差容限的方法来实现。为了保证在每个码元的中心位置采样,在准确知道起始位前沿的前提下,接收器在起始位前沿到来后,先等半个周期采样一次,然后每过一个位周期采样一次,直至收到停止位。为提高采样的分辨能力和抗干扰能力,接收器应采用比波特率高的时钟来控制采样时间。利用经16倍波特率的接收时

13、钟实现再同步的过程如上图所示。利用这种经16倍频的接收时钟对串行数据流进行检测和采样,接收器能在一个位周期的1/16时间内决定出字符的开始。不仅有利于实现收发同步,还有利于抗干扰和提高异步串行通信的可靠性。其采样、检测过程为:停止位或任意数目空闲位的后面,接收器在每个接收时钟的上升沿对输入数据流进行采样,通过检测是否有9个连续的低电平来确定它是否为起始位,如果是,则确认其为起始位,并且对应的是起始位中心,然后,以此为准确的时间基准,每隔16个时钟周期采样一次,检测一个数据位;如果不是严格的9个连续的低电平,则认为这是一个干扰信号,将其删除。2.7 全双工串行通信模块UART UART(Univ

14、ersal Asynchronous Receiver & Transmitter)即通用异步收发器,是串行通信的一种协议,它规定串行通信的波特率、起始/停止位、数据位、校验位等格式,以及各种异步握手信号。也可将UATR理解为通用串行数据总线,该总线双向通信,可以实现全双工传输和接收。UART能提供RS-232C数据终端设备接口,使计算机可以和调制解调器或其它使用RS-232C接口的串行设备通信,包括监控调试器和其它器件。 计算机内部采用的是并行数据,不能直接把数据发到Modem,必须经过UART的整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器中,再通过F

15、IFO(First Input First Output,先入先出队列)传送到串行设备;在UART模块中对要输出的数据流进行加工,使消息帧格式变为从一个低起始位开始,后面是58个数据位,一个可用的奇偶校验位和一个或几个高位停止位;接收时,接收器发现开始位(即0)时就判断数据准备发送,并尝试与发送器始终频率同步,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行 上图为UART实现原理图,UART内核模块的功能是控制接收、数据加载和数据发送的过程,常用状态机来实现。在数据接收时,UART内核模块负责控制波特率发生器和移位寄存器,使得移位寄存器在波特率时钟

16、的驱动下同步地接收并且保存RS-232接收端口上的串行数据;在数据发送时,UART内核模块首先依据待发送的数据和奇偶校验位的设置产生完整的发送序列(包括起始位、数据位、奇偶校验位和停止位),之后控制移位寄存器将序列加载到移位寄存器的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。根据设计的要求,奇偶校验模块可以省略。三 、实验步骤及仿真结果3.1实验步骤1.用串口线连接实验箱的UART模块与计算机串行口;1. 在CCS环境中打开本实验的工程(.UARTTESTUARTTEST.pjt),编译,生成输出文件(.out文件),通过仿真器把执行代码(.out的文件)下载到DSP芯片

17、;然后复位串行接口模块 ;3.在计算机上运行串口调试助手程序,设置串口为Com1,波特率为9600,校验为None,停止位为1位,十六进制显示,以待观察从DSP往PC串口发送的数据;4.口调试助手程序的发送窗口键入任意字符(如 “5A”)以待发送至DSP,并且选择手动发送模式(即不选中自动发送项)和十六进制发送;3.2仿真程序#include #include int k=0;int i=0;void InitDSP()asm(SETC INTM); / Disable all interruptasm(CLRC SXM); /asm(CLRC OVM); /-asm(CLRC CNF);/B

18、0-dataSCSR1 =0x0E00; / 1*fin disable all clockSCSR2 =0x000E; /disable rom;/mc;don=1,pon=0WDCR =0x0E8;WSGR =0x0FFF;/*/* main/*/void main(void) int a=1; int tmp=0; asm(SETC INTM); / Disable all interrupt*/ InitDSP(); port1003=0x80; port1000=12; port1001=0; port1003=0x03; while(1) while(port1005&0x1)=0

19、); tmp = port1000; while(port1005&0x60)!=0x60); port1000 = tmp; 六 总结 这次课程设计对我们来说是考验,但是有考验才有收获。从开始的分组,选课题,做课题,到实验结束,其中的种种让我们学习到了很多。拿到课题时,老师对其中的某些概念原理做了讲解,可我们对其中具体的细部原理仍然不是很明白。实验开始的时候,我们每个人都查找了关于该课题的资料,了解了课题的原理,不懂得地方请教了同学和老师,清楚了实验要实现的功能。但是我们并没有得到想要的结果,硬件下载后实验板没有显示。我们发现书上提供的方案与实际的硬件条件在很多方面都不一样,于是我们修改了显示模块的程序,使它符合实验室提供的实验板。修改后,实验板经硬件下载能显示初始值00,串口发送数据后仍然没有实现接收功能。经过老师的耐心讲解,我们发现我们对波特率的理解有误,实验需要的是16倍波特率的信号,我们改动了分频模块的程序,先50分频后再6分频,使其接近9600波特率。但是实验结果并不正确,串口小助手能自行将接收到的数据不断显示,不随其发送的信号触发,且发送的数据单一,并不是最终希望得到的数据。询问老师后得知,出现此现象是由于系统内部对于起始位的识别有偏差,将错误的数据位定义为起始位后,将其后的数据不断发送给串口导致的。实验做到这一步才发现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论