您好,欢迎访问三七文档
FPGA实验报告目录FPGA实验报告............................................................................................................................1目录..................................................................................................................................................1基于VHDL的串口通信实现设计..........................................................................................3摘要...........................................................................................................................................3正文...........................................................................................................................................31.研究背景知识................................................................................................................31.1串口简介.............................................................................................................31.2串口通信参数.....................................................................................................32.系统整体设计................................................................................................................52.1系统框图............................................................................................................52.2原理图.................................................................................................................52.3管脚介绍:.........................................................................................................63.系统模块设计..............................................................................................................63.1分频模块.............................................................................................................63.11流程图.......................................................................................................63.12程序...........................................................................................................73.2接收模块.............................................................................................................83.21流程图.......................................................................................................83.22程序...........................................................................................................93.3发送模块...........................................................................................................103.31流程图.....................................................................................................103.32程序.........................................................................................................114.系统调试....................................................................................................................124.1时序调试........................................................................................................124.2硬件调试.........................................................................................................135.总结..............................................................................................................................14基于VHDL的串口通信实现设计摘要串口是计算机上一种非常通用设备通信的协议,其特点是通信线路简单,成本低,特别适用于远距离通信,因此有较为广泛的应用。为了深入了解串口,本课程设计基于VHDL语言,利用FPGA开发板实现了板间串口通信。在程序设计中,考虑到串口波特率、数据格式等参数,共采用了四个模块:分频模块(即波特率产生模块),接受模块,发送模块,显示模块。通过软件和开发板调试,实现了板和串口调试助手收发数据,软件改变波特率等参数,并在数码管显示的功能。关键词:串口VHDLFPGA分频接收发送显示正文1.研究背景知识1.1串口简介串行接口SerialInterface是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。串口通信的两种最基本的方式:同步串行通信方式和异步串行通信方式。1.2串口通信参数双方为了可以进行通信,必须要遵守一定的通信规则,这个共同的规则就是通信端口的初始化。通信端口的初始化有以下几项必须设置:1.数据的传输速率传输双方通过传输线的电压改变来交换数据,但传输线的电压改变的速度必须和接收端的接收速度保持一致,RS-232通常用于异步传输,即双方并没有一个可参考的同步时钟作为基准。由于没有一个参考时钟,双方所发送的高低电位到底代表几个位就不得而知了,要使得双方的数据读取正常,就要考虑到传输速率——波特率,其所代表的意义是每秒钟所能产生的最大电压状态改变率,或者说是每秒钟可以振荡的次数。2.数据的发送单位一般串行通信端口所发送的数据是字符类型的,若用来传输文件,则会使用二进制的数据类型。当使用字符类型时,通常使用ASCII码,ASCII码中8个位形成一个字符。以实际的RS-232传输来看,由于大多数应用只是发送文字码,因此只要7个位就可以将ASCII码的0-127号字符表达出来,所有的可见字符都在这个范围内,所以只要7个数据位就足够了。不同的情况下,会使用到不同的发送单位,但使用多少个位合成一个字节必须先行确定。3.起始位及停止位由于异步串行通信中并没有使用同步脉冲作为基准,故接收端完全不知道发送端何时将进行数据的发送,而当发送端准备要开始发送数据时,发送端会在所送出的字符前后分别加上高电位的起始位(逻辑0)及低电位的停止位(逻辑1),它们分别是所谓的起始位和停止位。当发送端要开始发送数据时,便将传输在线的电位由低电位提升至高电位,而当发送结束后,再将电位降至低电位。接收端会因起始位的触发(因电压由低电位升至高电位)而开始接收数据,并因停止位的通知(因电压维持在低电位)而确切数据的字符信号已经结束。4.校验位的检查为了预防错误的产生,因此使用校验位作为检查的机制;校验位是用来检查所发送数据正确性的一种核对码,其中又分成奇校验位和偶校验位两种方式,分别是检查字符码中I的数目是奇数或偶数。以偶校验位为例,A的ASCII码01100001(二进制),其中1的数目是三个,因此校验位便是1,使1的数目保持偶数。2.系统整体设计2.1系统框图2.2原理图分频模块波特率选择,收发控制发送模块接收模块数码管显示2.3管脚介绍:3.系统模块设计3.1分频模块通过本模块要产生8×波特率的时钟,FPGA开发板时钟振荡频率为50MHZ,因此要产生9600*8的时钟,分频数为50M/9600/8=325*2,本程序以9600波特率为例,展开分频。其余波特率依例可以选择产生。3.11流程图功能管脚输入/输出功能RST输入复位,初始化CLK输入时钟RXD输入串行收引脚SK_RP输入高电平为接收数据低电平为发送数据BAUD8X输出波特率*8TXD输出串行发引脚SEG_EN输出数码管位选择SEG_DATA输出数码管段选择3.12程序PROCESS(clk,rst)--分频得到8倍波特率的时钟BEGINSEG_EN=11111110;IF(rst='1')THENDIV_BUF='0';div_REG=0000000000000000;ELSIF(clk'EVENTANDclk='1')THENIF(div_reg=div_par-0000000000000001)THEN--//FENPINSHUYIBANQUFANDIV_BUF=NOTDIV_BUF;--产生时钟脉冲DIV_REG=0000000000000000;ELSE开始DIV_PAR为分频数的一半,DIV
本文标题:FPGA串口通信
链接地址:https://www.777doc.com/doc-5998849 .html