串行通信的系统设计Word文档格式.docx
《串行通信的系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《串行通信的系统设计Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
(一)、8251A的基本性能2
(二)、8251A的内部结构3
(三)、8251A的引脚功能4
(四)、8251A的编程6
五、设计方案8
图5、仿真电路图9
六、调试过程10
七、课程设计总结10
参考文献11
附:
程序清单12
摘要
计算机与外部的信息交换称为通信,基本的通信方式有两种,一种是并行通信,另一种是串行通信。
在远距离通信时,一般采用串行通信方式。
它具有需要的通信线少和传输距离远等优点。
串行通信时,要传送的数据必须按一定的格式编码,在单根线上按一位接一位的先后顺序进行传送。
接收数据时,每次从单根线上一位接一位的接收信息。
串行通信实现异步通信运用串行发送器MC1488、串行接收器MC1489、串行通信接口8251A等芯片实现其功能。
关键字:
串行通信,异步通信,串行发送器MC1488,串行接收器MC1489
一、设计的目的和意义
设计的目的:
(1)了解串行通信的一般原理和8251A的工作原理。
(2)掌握双机通信的原理和方法。
(3)掌握8251A异步串行时的编程应用。
(4)了解8253的初始化。
(5)巩固和加深在微机原理课程中所学的理论知识。
(6)学会查阅相关手册与资料,培养独立分析与解决问题能力。
(7)为以后的毕业搭建一个微机系统应用平台。
设计的意义:
微机原理是机械工业控制设备的理论基础,理论课程的学习只是让学生学习基本理论知识,对课程内容和原理有比较深刻的理解,只要从理论上理解,不用考虑实际的可行性。
本次课程设计是培养学生综合运用所学知识分析和解决实际问题,锻炼实践能力的重要环节。
同时也是对学生实际工作能力的具体训练和考察过程。
二、设计环境
PC机两台,串行通信接口8251A两片,串行发送器MC1488和串行接收器MC1489各两片等。
三、设计内容和要求
设计的内容:
在异步方式下,通过串行接口实现两台计算计之间通信。
设计的要求:
在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的8251A的接收端接收,然后在屏幕上显示出来。
四、设计的原理
(一)、8251A的基本性能
1.两种工作方式:
同步方式,异步方式。
同步方式下,波特率为064K,异步方式下,波特率为0~19.2K。
2.同步方式下的格式
每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。
除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。
3.异步方式下的格式
每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。
1个启动位。
并能根据编程为每个数据增加1个、1.5个或2个停止位。
可以检查假启动位,自动检测和处理终止字符。
4.全双工的工作方式
其内部提供具有双缓冲器的发送器和接收器。
5.提供出错检测
具有奇偶、溢出和帧错误三种校验电路。
(二)、8251A的内部结构
1、发送器
发送器由发送缓冲器和发送控制电路两部分组成。
图1、8251A的内部结构图
采用异步方式,则由发送控制电路在其首尾加上起始位和停止位,然后从起始位开始,经移位寄存器从数据输出线TXD逐位串行输出。
采用同步方式,则在发送数据之前,发送器将自动送出1个或2个同步字符,然后才逐位串行输出数据。
如果CPU与8251A之间采用中断方式交换信息,那么TXRDY可作为向CPU发出的中断请求信号。
当发送器中的8位数据串行发送完毕时,由发送控制电路向CPU发出TXE有效信号,表示发送器中移位寄存器已空。
2、接收器
接收器由接收缓冲器和接收控制电路两部分组成。
接收移位寄存器从RXD引腿上接收串行数据转换成并行数据后存入接收缓冲器。
异步方式:
在RXD线上检测低电平,将检测到的低电平作为起始位,8251A开始进行采样,完成字符装配,并进行奇偶校验和去掉停止位,变成了并行数据后,送到数据输入寄存器,同时发出RXRDY信号送CPU,表示已经收到一个可用的数据。
同步方式:
首先搜索同步字符。
8251A监测RXD线,每当RXD线上出现一个数据位时,接收下来并送入移位寄存器移位,与同步字符寄存器的内容进行比较,如果两者不相等,则接收下一位数据,并且重复上述比较过程。
当两个寄存器的内容比较相等时,8251A的SYNDET升为高电平,表示同步字符已经找到,同步已经实现。
采用双同步方式,就要在测得输入移位寄存器的内容与第一个同步字符寄存器的内容相同后,再继续检测此后输入移位寄存器的内容是否与第二个同步字符寄存器的内容相同。
如果相同,则认为同步已经实现。
3、数据总线缓冲器
数据总线缓冲器是CPU与8251A之间的数据接口。
包含3个8位的缓冲寄存器:
两个寄存器分别用来存放CPU向8251A读取的数据或状态信息。
一个寄存器用来存放CPU向8251A写入的数据或控制。
4、读/写控制电路
读/写控制电路用来配合数据总线缓冲器的工作。
功能如下:
(1)接收写信号
,并将来自数据总线的数据和控制字写入8251A。
(2)接收读信号
,并将数据或状态字从8251A送往数据总线。
(3)接收控制/数据信号C/
,高电平时为控制字或状态字;
低电平时为数据。
(4)接收时钟信号CLK完成8251A的内部定时。
(5)接收复位信号RESET,使8251A处于空闲状态。
5、调制解调控制电路
调制解调控制电路用来简化8251A和调制解调器的连接。
(三)、8251A的引脚功能
1、8251A和CPU之间的连接信号
8251A和CPU之间的连接信号可以分为四类:
a)、片选信号
•
:
片选信号,它由CPU的地址信号通过译码后得到。
b)、数据信号
D0-D7:
8位,三态,双向数据线,与系统的数据总线相连。
传输CPU对8251的编程命令字和8251A送往CPU的状态信息及数据。
c)、读/写控制信号
读信号,低电平时,CPU当前正在从8251A读取数据或者状态信息。
写信号,低电乎时,CPU当前正在往8251A写入数据或者控制信息。
•C/
控制/数据信号,用来区分当前读/写的是数据还是控制信息或状态信息。
该信号也可看作是8251A数据口/控制口的选择信号。
由此可知,
、
、C/
这3个信号的组合,决定了8251A的具体操作,
d)、收发联络信号
•TXRDY:
发送器准备好信号,用来通知CPU,8251A已准备好发送一个字符。
•TXE:
发送器空信号,TXE为高电平时有效,用来表示此时8251A发送器中并行到串行转换器空,说明一个发送动作已完成。
•RXRDY:
接收器准备好信号,用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,等待CPU来取走。
因此,在中断方式时,RXRDY可用来作为中断请求信号;
在查询方式时,RXRDY可用来作为查询信号。
•SYNDET:
同步检测信号,只用于同步方式。
2、8251A与外部设备之间的连接信号
8251A与外部设备之间的连接信号分为两类:
a)、收发联络信号
数据终端准备好信号,通知外部设备,CPU当前已经准备就绪。
数据设备准备好信号,表示当前外设已经准备好。
请求发送信号,表示CPU已经准备好发送。
允许发送信号,是对
的响应,由外设送往8251A。
实际使用时,这4个信号中通常只有
必须为低电平,其它3个信号可以悬空。
b)、数据信号
TXD:
发送器数据输出信号。
当CPU送往8251A的并行数据被转变为串行数据后,通过TXD送往外设。
RXD:
接收器数据输入信号。
用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。
3.、时钟、电源和地
8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端。
CLK:
时钟输入,用来产生8251A器件的内部时序。
同步方式下,大于接收数据或发送数据的波特率的30倍,异步方式下,则要大于数据波特率的4.5倍。
发送器时钟输入,用来控制发送字符的速度。
同步方式下,TXC的频率等于字符传输的波特率,异步方式下,TXC的频率可以为字符传输波特率的1倍、16倍或者64倍。
(四)、8251A的编程
编程的内容包括两大方面:
一是由CPU发出的控制字,即方式选择控制字和操作命令控制字;
二是由8251A向CPU送出的状态字。
1、方式选择控制字(模式字)
方式选择控制字的格式如图所示。
图2、方式控制字
2、操作命令控制字(控制字)
操作命令控制字的格式如下:
图3、操作命令控制字
3、8251A的初始化
a)、芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。
b)、如果模式字中规定了8251A工作在同步模式,
c)、由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。
五、设计方案
图4、程序流程图
图5、仿真电路图
图6、电路连接图
图7、程序调试界面
六、调试过程
在用实验箱完成项目设计调试的过程中,首先是运用实验箱验证已经编写的程序的正确性。
然后根据实验的完成度改正了一些程序,继而继续调试。
调试首先是力求实现单机通讯,先在一台实验箱上连接好电路进行调试程序,经过反复调试实现了单机通讯。
然后再将另一台实验箱连接好电路,通过端口将两台实验箱连接起来,再验证双机通讯的试验程序是否正确。
经过修改过后,才实现双机通讯的过程。
七、课程设计总结
本次微机原理课程设计是利用8251A、8253等芯片实现串行通信,通过编程来实现异步串行通信。
在设计第一个星期主要进行资料的查询以及进行工作分配问题,各个人员之间进行讨论如何进行设计的工作。
对于电路图的设计,对电路原理的分析等方面遇到了一些困难之处。
在询问知道老师过程中了解设计的错误之处,从而正确的分析电路实现可能。
在第二周的课程设计之时,是在实验室运用实验箱来验证所编写程序的正确性,以确定设计电路可以在程序运行时达到要求。
但是在验证程序的过程中也遇到了一些困难,之前所设计的电路和试验箱已有的电路有所出入。
由于试验箱的电路不可更改,所以在所设计好的电路进行了小范围的改动,再将编写的程序进行改写,才确保程序可以运行。
课程设计的时间虽然不是很长,但是这体现了三人团队之间的配合,团队的协作在其中突显出重要的作用。
还有非常感谢指导老师在整个过程的细心讲解我们所遇到的问题,才能让我们的设计回到正确的轨道上。
1、《微型计算机原理及接口技术》中国科技大学出版社2009.6周荷琴吴秀清编著
2、《汇编语言程序设计》南京大学出版社姚君遗编著
3、《微型计算机原理及接口技术》实验指导书
程序清单
单机通讯实现程序
.MODELTINY
PCIBAR3EQU1CH;
8位I/O空间基地址
Vendor_IDEQU10EBH;
厂商ID号
Device_IDEQU8376;
设备ID号
.STACK100
.DATA
COM_ADDRDW00B3H
T0_ADDRDW00B0H
T1_ADDRDW00B1H
IO_Bit8_BaseAddressDW?
msg0DB'
BIOS不支持访问PCI$'
msg1DB'
找不到StarPCI9052板卡$'
msg2DB'
读8位I/O空间基地址时出错$'
.CODE
START:
MOVAX,@DATA
MOVDS,AX
NOP
CALLInitPCI
CALLModifyAddress;
根据PCI提供的基地址,将偏移地址转化为实地址
MOVDX,00B3H
MOVAL,00110101B
OUTDX,AL;
计数器T0设置在模式2状态,BCD码计数
MOVDX,00B0H
MOVAL,00H
OUTDX,AL
MOVAL,10H
CLK0/1000
MOVDX,00B3H
MOVAL,01110111B
计数器T1为模式3状态,输出方波,BCD码计数
MOVDX,00B1H
CLK1/1000
START1:
CALLIfExit;
OUT1输出频率为1S的方波
JZSTART1
JMPExit
IfExitPROCNEAR
PUSHAX
PUSHDX
MOVAH,06H
MOVDL,0FFH
INT21H
POPDX
POPAX
RET
IfExitENDP
InitPCIPROCNEAR
MOVAH,00H
MOVAL,03H
INT10H;
清屏
MOVAH,0B1H
MOVAL,01H
INT1AH
CMPAH,0
JZInitPCI2
LEADX,msg0
InitPCI1:
MOVAH,09H
JMPExit
InitPCI2:
MOVAH,0B1H
MOVAL,02H
MOVCX,Device_ID
MOVDX,Vendor_ID
MOVSI,0
JNCInitPCI3;
是否存在StarPCI9052板卡
LEADX,msg1
JMPInitPCI1
InitPCI3:
MOVDI,PCIBAR3
MOVAL,09H
INT1AH;
读取该卡PCI9052基地址
JNCInitPCI4
LEADX,msg2
InitPCI4:
ANDCX,0FFFCH
MOVIO_Bit8_BaseAddress,CX
InitPCIENDP
ModifyAddressPROCNEAR
ADDCOM_ADDR,CX
ADDT0_ADDR,CX
ADDT1_ADDR,CX
ModifyAddressENDP
Exit:
MOVAH,4CH
ENDSTART
双机通讯主机端(仿真实现)
CS8251Requ09080h;
串行通信控制器复位地址
CS8251Dequ09000h;
串行通信控制器数据口地址
CS8251Cequ09002h;
串行通信控制器控制口地址
TCONTROEQU0A006H
TCON0EQU0A000H
CODESEGMENT;
H8253.ASM
ASSUMEDS:
DATA,CS:
CODE
MOVAX,DATA
MOVDS,AX
MOVDX,TCONTRO;
8253初始化
MOVAL,16H;
计数器0,只写计算值低8位,方式3,二进制计数
MOVDX,TCON0
MOVAX,52;
时钟为1MHZ,计数时间=1us*50=50us输出频率20KHZ
NOP
NOP
movdx,CS8251R;
8251初始化
INAL,DX
movdx,CS8251R
movdx,CS8251C
moval,01001101b;
1停止位,无校验,8数据位,x1
outdx,al
moval,00010101b;
清出错标志,允许发送接收
START4:
MOVCX,19
LEADI,STR1
Send:
movdx,CS8251C;
串口发送'
'
hantaijun'
清出错,允许发送接收
WaitTXD:
inal,dx
testal,1;
发送缓冲是否为空
jzWaitTXD
moval,[DI];
取要发送的字
moval,3fh
movdx,CS8251D
outdx,al;
发送
pushcx
movcx,8fh
loop$
popcx
INCDI
LOOPSend
JMPSTART4
CODEENDS
DATASEGMENT
STR1db'
DATAENDS
双机通讯接收端(仿真实现)
CS8251Requ09080h;
Receive:
串口接收
WaitRXD:
testal,2;
是否已收到一个字
jeWaitRXD
inal,dx;
读入
movBH,al
JMPSTART
STR1db100dup(?
)