网站大量收购独家精品文档,联系QQ:2885784924

PLD串口通信实验报告.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PLD串口通信实验报告

PLD与数字系统设计实验报告 --A组选做实验(串口通信) 1 实验要求 串行通信实验,设置波特率为9600或19200。计算机通过RS232接口向实验板发送数据,要求实验开发板能够正确接收到这些数据,并且将接收到的数据显示到实验开发板的LCD液晶屏上;当按下实验板的按键时,将接收到的数据正确地发给计算机,并将实验板上的按键值也发给计算机,计算机能够显示实验板发出的数据。 2 实验原理 2.1 串口接口(RS232) 串行接口是连接FPGA和PC机的一种简单方式。使用9针的DB-9插头允许全双工的双向通讯(也就是说计算机可以在接收数据的同时发送数据) 最大可支持的传输速率为10KBytes/s 图1 DB-9插头 它一共有9个引脚,但是最重要的3个引脚是:引脚2:RxD (接收数据)引脚3: TxD (发送数据)引脚5: GND (地),仅使用3跟电缆发送和接收数据由于串口通信是异步的,数据以每次一位的方式传输;每条线用来传输一个方向的数据。由于计算机通常至少需要若干位数据,因此数据在发送之前先“串行化”。通常是以8位数据为1组先发送最低有效位,最后发送最高有效位。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验位。对于两个进行通信的端口,这些参数必须匹配:①波特率:这是一个衡量通信速度的参数RS-232使用异步通讯协议也就是说数据的传输没有时钟信号接收端必须有某种方式,使之与接收数据同步。波特率表示每秒钟传送的bit的个数。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。②数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 ③停止位:用于表示的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。④奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。串口通信的数据传输时序如图: 0x55是传输的:? 图3 异步串行通信格式 0x55的二进制表示为但是由于先发送的是最低有效位,所以发送序列是这样的: 1-0-1-0-1-0-1-0对12864的操作都是围绕着几根引脚展开的。包括写命令、写数据、读数据、读状态就是通过这些引脚的高低电平搭配来实现的 图4 内部结构图 图5 写时序图 图6 基本操作时序 3 实验仪器 ①XUP(FPGA:spartan3S400AN)实验开发板 ②安装ISE软件的电脑及串口线一根 ③串口调试助手小软件 4 实验主要操作步骤 4.1 实验设计思想 实验采用分层次设计的方法,用硬件描述语言分别实现串口发送接收的功能及液晶显示的功能模块,最后用对顶层原理图进行综合的方法实现整个设计。具体方法如下: 1. 通过ISE开发工具,新建个模块,分别为串口模块,另外再加一个顶层。 ?????????. 串口通信模块主要分为四个进程部分:波特率?产生部分(发射和接收)、串行数据接收部分、串行数据发送部分。 ?????????3. 波特率产生:主要是通过计数来实现波特率产生,并对数据进行采样。此处采用9600,并且在计数到对数据进行采样。 ????????. 串行数据接收:当到接收信时,对数据进行采集。 ????????. 串行数据发送部分:当接收到发送信号时,对数据进行发送。 always@ (posedge clk) //波特率产生部分 begin if(!nrst) div_reg=0; else begin if(div_reg==div_par-1) div_reg=0; //分频计数器div_reg else div_reg=div_reg+1; end end always@(posedge clk)//分频得到8倍波特率的时钟clkbaud8x begin if(!nrst)

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档