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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

通用串口实验报告.docx

1、通用串口实验报告通用串口实验 实验目的:1、掌握QuartusII软件的基本使用; 2、熟悉VHDL硬件描述语言编程及其调试方法;3、学习用FPGA实现接口电路设计;4、学习MCS-51单片机程序设计方法;5、学习液晶显示器的编程。实验内容: 设计一个通用串行接口,要求与PC的串口连接后,可以接受PC发来的数据,并能在液晶显示屏上显示,实验板上的键盘输入的数据可以传送到PC,并在PC的显示器上显示,串口传送速率为9600波特,8位数据位,1位停止位,不校验。进一步实现波特率可设置,设置范围为1200bps、2400bps、9600bps1、UART简介 UART(Universal Async

2、hronous Receiver Transmitter通用异步收发器)是一种应用广泛的短距离串行传输接口。常常用于短距离、低速、低成本的通讯中。8250、8251、NS16450等芯片都是常见的UART器件。基本的UART通信只需要两条信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式。TXD是UART发送端,为输出;RXD是UART接收端,为输入。UART的基本特点是:(1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态。(2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传

3、送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。(3)数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。(4)校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。(5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。(6)位时间:即每个位的时间宽度。起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。(7)帧:从起始位开始到停止位结束

4、的时间间隔称之为一帧。(8)波特率:UART的传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。如波特率9600=9600bps(位/秒)。UART的数据帧格式为:STARTD0D1D2D3D4D5D6D7PSTOP起始位数 据 位校验位停止位本实验8位数据位,1位停止位,不校验。FPGA UART系统组成 :如下图所示,FPGA UART由三个子模块组成:波特率发生器;接收模块;发送模块;2、VHDL模块设计:系统由四部部分组成:顶层模块;波特率发生器;UART接收器; UART发送器1)顶层模块 异步收发器的顶层

5、模块由波特率发生器、UART接收器和UART发送器构成。UART发送器的用途是将准备输出的并行数据按照基本UART帧格式转为TXD信号串行输出。UART接收器接收RXD串行信号,并将其转化为并行数据。波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,使接收器与发送器保持同步。2)波特率发生器 波特率发生器实际上就是一个分频器。可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数。波特率分频因子可以根据不同的应用需要更改。3)UART接收器 由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个数据

6、帧的起始位。然而,为了避免毛刺影响,能够得到正确的起始位信号,必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可认定接收到的是起始位。由于内部采样时钟bclk周期(由波特率发生器产生)是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续bclk周期的逻辑0被接收到,才认为起始位接收到,接着数据位和停止位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。如果起始位的确是16个bclk周期长,那么接下来的数据将在每个位的中点处被采样。UART接收器的接收状态机 接收状态机一共有5个状态: R_START(等待起始位);R_CENTER(求中点);

7、R_WAIT(等待采样);R_SAMPLE(采样);R_STOP(停止位接收)。 R_START状态 当UART接收器复位后,接收状态机将处于这一个状态。在此状态,状态机一直在等待RXD的电平跳转,从逻辑1变为逻辑0,即起始位,这意味着新的一帧UART数据帧的开始,一旦起始位被确定,状态机将转入R_CENTER状态。状态图中的RXD_SYNC信号是RXD的同步信号,因为在进行逻辑1或逻辑0判断时,不希望检测的信号是不稳定的,所以不直接检测RXD信号,而是检测经过同步后的RXD_SYNC信号。R_CENTER状态对于异步串行信号,为了使每一次都检测到正确的位信号,而且在较后的数据位检测时累计误差

8、较小,显然在每位的中点检测是最为理想的。在本状态,就是由起始位求出每位的中点,通过对bclk的个数进行计数(RCNT16),但计数值不是想当然的“1000”,要考虑经过一个状态,也即经过了一个bclk周期,所希望得到的是在采样时1/2位。另外,可能在R_START状态检测到的起始位不是真正的起始位,可能是一个偶然出现的干扰尖脉冲(负脉冲)。这种干扰脉冲的周期是很短的,所以可以认为保持逻辑0超过1/4个位时间的信号一定是起始位。R_WAIT状态当状态机处于这一状态,等待计满15个bclk,在第16个bclk是进入R_SAMPLE状态进行数据位的采样检测,同时也判断是否采集的数据位长度已达到数据帧

9、的长度(FRAMELEN),如果到来,就说明停止位来临了。FRAMELEN在设计时是可更改的(使用了Generic),在本设计中默认为8,即对应的UART工作在8位数据位、无校验位格式。R_SAMPLE状态即数据位采样检测,完成后无条件状态机转入R_WAIT状态,等待下次数据位的到来。 R_STOP状态无论停止位是1还是1.5位,或是2位,状态机在R_STOP不具体检测RXD,只是输出帧接收完毕信号(REC_DONE=1),停止位后状态机转回到R_START状态,等待下一个帧的起始位。4)UART发送器 发送器只要每隔16个bclk周期输出1个数据即可,次序遵循第1位是起始位,第8位是停止位。

10、在本设计中没有校验位,但只要改变Generic参数FrameLen,也可以加入校验位,停止位是固定的1位格式。 发送状态机的状态图 发送状态机一共有5个状态:X_IDLE(空闲);X_START(起始位);X_WAIT(移位等待);X_SHIFT(移位);X_STOP(停止位)。X_IDLE状态:当UART被复位信号复位后,状态机将立刻进入这一状态。在这个状态下,UART的发送器一直在等待一个数据帧发送命令XMIT_CMD。XMIT_CMD_P信号是对XMIT_CMD的处理,XMIT_CMD_P是一个短脉冲信号。这时由于XMIT_CMD是一个外加信号,在FPGA之外,不可能对XMIT_CMD的

11、脉冲宽度进行限制,如果XMIT_CMD有效在UART发完一个数据帧后仍然有效,那么就会错误地被认为,一个新的数据发送命令又到来了,UART发送器就会再次启动UART帧的发送,显然该帧的发送是错误的。在此对XMIT_CMD进行了脉冲宽度的限定,XMIT_CMD_P就是一个处理后的信号。当XMIT_CMD_P=1,状态机转入X_START,准备发送起始位。X_START状态:在这个状态下,UART的发送器一个位时间宽度的逻辑0信号至TXD,即起始位。紧接着状态机转入X_WAIT状态。XCNT16是bclk的计数器X_WAIT状态同UART接收状态机中的R_WAIT状态类似。 X_SHIFT状态当状

12、态机处于这一状态时,实现待发数据的并串转换。转换完成立即回到X_WAIT状态。X_STOP停止位发送状态,当数据帧发送完毕,状态机转入该状态,并发送16个bclk周期的逻辑1信号,即1位停止位。状态机送完停止位后回到X_IDLE状态,并等待另一个数据帧的发送命令。3、液晶显示模块设计 为了使接收器的输出端的数据能够在液晶屏上显示,需要使用MCS-51单片机,将接收器的输出端进行管脚锁定到P1口,程序扫描P1口即能显示接收器输出端的数据。实验程序:1、波特率发生器 -功能:本实验想要实现的波特率为:9600、2400、1200,EDA实验箱上晶振频率为: 6MHZ,-波特率发生器的分频数计算如下

13、式:-6000000/(16*9600)=39-6000000/(16*2400)=156-6000000/(16*1200)=312library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; entity baud is Port (clk,resetb:in std_logic; bclk:out std_logic);end baud; architecture behavioral of baud isbeginprocess(clk,res

14、etb)variable cnt:integer;begin if resetb=1 then - resetb=1时复位 cnt:=0; bclk=38 then cnt:=0; bclk=1; -设置分频系数9600pbs else cnt:=cnt+1; bclk=0; end if; end if;end process;end behavioral; 波形仿真:结果分析:图上可以观察到输出端bckl等间隔的有脉冲信号输出,通过标尺可以计算出它的脉冲输出频率及其与clk输入信号的关系。该程序实现的是波特率发生器,输出频率为时钟输入频率的1/39。生成符号文件:2、UART发送器libr

15、ary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; entity transfer is generic(framlent:integer:=8); Port (bclkt,resett,xmit_cmd_p:in std_logic; -定义输入输出信号 txdbuf:in std_logic_vector(7 downto 0); txd:out std_logic; txd_done:out std_logic);end transfer; architecture behavioral of transfer istype states is (x_idle,x_start,x_wait,x_shift,x_stop);-定义个子状态signal sta

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

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