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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于FPGA的串口通信设计Word下载.docx

1、设计的基本原则是保留最主要的功能,基于PA的UR系统波特率时钟发生器、接收器和发送器3个子模块组成,如图所示。图1 基于PA的UART组成模块1.2 接收器设计 接收器的工作过程如下,如图2所示,在接收数据寄存器被读出一帧数据或系统开始工作以后,接收进程被启动。接收进程启动之后,检测起始位,检测到有效起始位后,以约定波特率的时钟开始接收数据,根据数据位数的约定,计数器统计接收位数。一帧数据接收完毕之后,如果使用了奇偶校验,则检测校验位,如无误则接收停止位。停止位接收完毕后,将接收数据转存到数据寄存器中。图2数据接收图为确保接收器可靠工作,在接收端开始接收数据位之前,处于搜索状态,这时接收端以1

2、6倍波特率的速率读取线路状态,检测线路上出现低电平的时刻。因为异步传输的特点是以起始位为基准同步的。然而,通信线上的噪音也极有可能使传号“”跳变到空号“0”。所以接收器以1倍的波特率对这种跳变进行检测,直至在连续8个接收时钟以后采样值仍然是低电平,才认为是一个真正的起始位,而不是噪音引起的,其中若有一次采样得到的为高电平则认为起始信号无效,返回初始状态重新等待起始信号的到来。找到起始位以后,就开始接收数据,最可靠的接收应该是接收时钟的出现时刻正好对着数据位的中央。由于在起始位检测时,已使时钟对准了位中央,用16倍波特率的时钟作为接收时钟,就是为了确保在位宽的中心时间对接收的位序列进行可靠采样,

3、当采样计数器计数结束后所有数据位都已经输入完成。最后对停止位的高电平进行检测,若正确检测到高电平,说明本帧的各位正确接收完毕,将数据转存到数据寄存器中,否则出错。采用有限状态机模型可以更清晰明确地描述接收器的功能,便于代码实现。接收器的状态转换图如图3所示,为突出主要过程,图中省略了奇偶校验的情况。接收器状态机由5个工作状态组成,分别是空闲状态、起始位确认、采样数据位、停止位确认和数据正确,触发状态转换的事件和在各个状态执行的动作见图中的文字说明。图3 接收器状态转换图根据状态图其主要的程序如下所示:el if(X_nSig ) cae ( i) 0: if( 2L_Sg ) gi i 11;

4、isount= 11; nd 4d : if( BPS_CLK )begn = i + 1b1; en 42, 4d3,44, 4d5, 4d6, 47, 8, 4d: i(BPS_CLK ) ben i = i rDt i -2 R_Pin_n; end d10 : if( BPSCLK ) begi i= i + 1b; ed 4d11 : f( BPS_LK ) begin i = + 1b1; d 4d1: begi i i+ 1 iDoe 1;sount = 1b0; 41: begn 40;ione = 1;end ese其中起始位检测正确会触发R_EnSg,一次的定时采集时第 0

5、 、1位数据(起始位),保持忽略态度。定时采集的是八位数据位,每一位数据位会依低位到最高位储存入 Daa寄存器。此时程序前两位省略取-9位就是传送的数据.3波特率发生器设计波特率发生器实质是设计一个分频器,用于产生和RS232通信同步的时钟。在系统中用一个计数器来完成这个功能,分频系数N决定了波特率的数值。该计数器一般工作在一个频率较高的系统时钟下,当计数到N时将输出置为高电平,再计数到N/的数值后将输出置为低电平,如此反复即可得到占空比50的波特率时钟,具体的波特率依赖于所使用的系统时钟频率和N的大小。如系统时钟频率是50 MHz,要求波特率是96,N=1/0Hz52,如果从零开始算起就是2

6、7个计数。然而,采集数据要求“在周期的中间”,那么结果是52/2,结果等于2604。基本上rxb_oule.v只有在Cnt_S拉高的时候,模块才开始计数。利用erlog 所写的具体代码如下:modue rx_bpsmdule( CLK, ST,Cunt_Si, BPS_CL); iput CLK; RSTn; inputCount_Sig; outut BPS_LK; /*/eg1:0Cunt_BS; aas ( poedge CLK orngege ST ) f( !STn) Cont_BPS =13d0; elsif( un_BPS= 13207) outBS130; else if(Co

7、unt_Sig ) Cont_BPSunt_PS + b; ele Count_BPS = 13d0; */ asig BS_C ( Count_BPS = 1260 )? 11:1b; /*endmode14发送器设计 图4发送数据原理图当发送数据时,对于每一个数据的发送,每一位采用的是定时发送。假设,配置的波特率是0bps,那么当有一个发送标志位时,数据将会以1/960 的节拍将数据一位一位的发送出去。一帧数据有11位,需要次定时。主要代码为:lwas (posedgeLK egedgeRSTn) f(!STn ) ben = rX ; isDone b0; ed lse if(X_Sig

8、 ) cas ( ) 40 : if(BP_L) begini = i b1; T 10; 4d1,4d2, 43, 4d4, 4d5, d, 4d7,d8 : if( BPSLK ) bgi i =i + 1 rTX = T_Data i 1 ; d9 : if( BS_L) bei i i TX =1 41: if(PS_CLK) bein i rTX= b1; 4 if( BPSCLK )begni= i + 1b1; iDone 2: begin i = d0; sDn 10; edca2 数据传输仿真Moes仿真工具是Modl公司开发的。它支持Vilog、VDL以及他们的混合仿真,它

9、可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在ataw窗口查看某一单元或模块的输入输出的连续变化等,比qur自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。.仿真串口发送模块编写一个仿真激励程序用于单独仿真串口发送模块。步骤0的时候,将数据82E发送至串口发送模块后使能串口发送模块,然后等待串口发送模块反馈完成信号。同样的动作也有 . 步骤1是发送数据 3f, 然而步骤2是发送数据 8hd。步骤3是停止动作图 发送数据仿真放大第二个数据0f的发送过程,如下图所示。可以看出串口发送模块,发送数据的格式

10、是一帧1 位。开始位逻辑0,1:8数据位,9校验位没有需要可以随便填,这里填逻辑1,停止位逻辑1。 图6发送过程仿真结果图7 发送数据的延时仿真串口发送模块配置的波特率是9600kbs ,所以一个数据逗留的时间是大约104us。在仿真结果中,在B0B 是数据0,B1B2 是数据1. B10B11 是数据0。xB之间的时间大约是14us。2.仿真串口接收模块用串口发送模块作为串口接收模块的刺激,亦即串口接收模块的输入(复杂输入)。下图是仿真虚拟环境env_moul. 它组合了串口发送模块和串口接收模块。erx_modulv 拥有TX_ES , TX_Dat , one_Sg , RX_n_ig,

11、on_Sig,RX_Data 等信号。在激励的过程中,需要对这些信号控制。图8 接收模块仿真建模图当RXEn_Sg 拉高的时候,串口接收模块开始准备接收数据了。当一帧 位数据发送至串口接收模块,并且被串口接收模块过滤。最后经过过滤的数据会输出至RX_Da ,然后产生一个完成信号至RX_onSig。(在这里数据格式四1 帧11 位,并且波特率为96kbps。仿真结果如下图所示:图10 发送结果仿真图上图仿真结果显示了“ 串口发送模块作为串口接收模块的刺激” 的激励过程。( Cus省略为C) 在CC2之间是第一帧数据的传送,CC3是第二位 数据的传送,其他的以此类推,然和 1C12是一帧数据11位

12、的传送过程。注意,每个CxCx之间的时间大约是us,亦即9600bps的波特率3 结语本设计是基于FPA的R设计,用时较少,逻辑消耗小,成熟稳定的实现了数据的发送与接收,可以兼容到自己的程序中。本设计的仿真程序实现了激励的所有功能,完成初步设计要求。附录:发送模块molex_conrl_module CLK,RSTn,T_n_Sig, Xaa, BPS_CK, X_Don_Sig, TX_Pn_t inputCL; iput RTn;inptX_En_Sg; put7:0X_Daa;inputBPS_C; oupt TX_Dne_Sig;utu TX_Pin_ut; /*/ rg3:0i; r

13、egX; re isDoe; awas(psede CLK ongge n ) if( !RTn ) begn i rTX isDoe end es if( T_n_Sig ) cae ( i) 4d : f( BP_CK) bgini = i+1 TX 1b; 4d1, 42,4d3, d, 4d5,4d6, 4d7, 48 : if( BPS_CL ) bgin i = + 1b1; rX= TX_Data - 1;ed f( PS_CLK) begini X 4d10 : i( BPS_CLK ) gin i 1;T= 411: i( BP_CL ) egin i = i 1 sDne

14、412 : bgini =0; isDoe endcase /*/ asn X_Pin_u= rX; ain T_Done_Si = isne; /*/Endmodule附录2:接收模块:lerx_contol_modle CLK, Tn, 2L_Sig, RX_Pin_In, S_CL,RESg, Count_Sg, _a, RXDneSig inptK;inputSTn; npt H2L_Sig; input RX_En_ig; input _Pin_In; npuBS_CLK; utpu Count_Sg; opt 7:0RX_Dat; outputR_Dne_Sg; /* reg :

15、rg 7:0Data; rg iCont; reg iDon; alas ( posedge CLK rngdg RTn) if( ! begin i = 4d0;Data sCnt0; iDone 1b0; end se if( RXEn_Sig) case ( ) 4d0 : i( H2L_Sig ) bein i ont = 4 if( BPS_CL ) gin i = i+ d2, 4d3, 44, d5, 4d6,d7,4d, 4d : if( BPS_CLK )begn i =i +b1;rData 2 = RXin_I; 4d0 : if( BPSCLK )begn i =i 1

16、d11: if( BPSCLK ) bei i = + 1 e d12 : bein i= + one isCnt 1 d13 : begin i= 40; isDon encase /*/ssign oun_S =Count; asign X_Data = rDt; assignR_one_Sig = isDoe; /*enmodule附录:波特率发生器modl rx_bpsmdl CLK, RSTn,Coun_Sig, BPS_CL npu LK; inpt RTn; iut Count_i; utpu BS_CLK; /*/ reg2:Count_BPS; lways ( sedge CLK nedge RSTn ) f( !n ) CounBS 13d0; lse if( CnBP = 1d520 ) Cout_BPS= 1d0; ese if( CountS ) Cn_BPS=ount_BPS+ 1 lse Count_BPS =30; /*/ assgn BPSCLK=(CoutP = 12d264 ) ?1 : 10; /*ndmodule

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

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