欢迎来到天天文库
浏览记录
ID:39137271
大小:48.70 KB
页数:5页
时间:2019-06-25
《实验四串口接收模块电路设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四串口接收模块电路设计一、实验目的:1、熟练使用ISE设计工具。2、理解串口传输协议。理解采用“自顶向下”设计思路,分解模块的方法。3、在ISE使用VerilogHDL设计串口接收模块,完成仿真、下载。二、原理分析(一)串口传输协议概述设计完成异步串口通信通用异步收发是一种典型的异步串口通信,简称UART。串口通信时序如图1所示。图1通用异步收发时序图由图1可以看出,在没有数据传送时,通信线会一直处于高电平,即逻辑1状态;当有数据传送时,数据帧以起始位开始,以停止位结束。起始位为低电平,即逻辑0状态;停止位为高电平,即逻辑1状态,其持续时间可选为1位、1.5位或2位(本次设计选择持续时间
2、1位)。接收端在接收到停止位后,知道一帧数据已经传完,转为等待数据接收状态;只要再接收到0状态,即为新一帧数据的起始状态。数据帧的数据位低位(LSB)在前,高位(MSB)在后,根据不同的编码规则,数据位可能为5位、6位、7位或者8位(本次设计数据位定位8位)。校验位也可根据需要选择奇校验、偶校验或者不要校验(本次设计不要校验位)。(二)串口时序分析串口通讯常用“波特率”表述串口传输速率,常用的参数有9600bps和115200bps等。在硬件传输角度看,波特率表征了传输一位数据所需要的时间。例如:波特率是9600bps,传输一位数据的时间是1/9600=0.00010416666666666
3、7秒。如果FPGA系统时钟是20MHZ,则一位数据传输时间相当于(1/9600)/(1/20M)=2083个20MHZ时钟周期。设一帧数据位数=1(开始位)+8(数据位)+1(校验位)+1(结束位)=11位,所以传输一帧数据的时间是11*1/9600=0.00114583333333333333333333333333秒。为了稳定采集串口数据帧的数据,需要在每位数据的“中间时刻”采样,由此,需要在每位数据开始时刻对时钟进行计数,若系统时钟是20MHZ,则在计数至2083/2=1042时采样此时刻的数值。三、系统分析:为实现串口接收电路,FPGA应该完成:1、及时发现数据传输的开始,并判断每一
4、位的开始。2、按照“在数据位中间采样”的要求,确认采样时刻。3、将采样得到串行数据转换为并行数据。1、将并行数据显示在下载板上。本次实验参数:串口传输数据率9600bps,每帧数据11位。按照“自顶向下”设计思想,系统分为以下五个子模块:1、帧开始监测模块(detect_module)输入端口:串行输入数据RX_Pin_In,系统时钟CLK,复位信号RSTn,其中当RSTn=0时系统复位。输出端口:H2L_Sig参考代码:moduledetect_module(CLK,RSTn,RX_Pin_In,H2L_Sig);inputCLK;inputRSTn;inputRX_Pin_In;outp
5、utH2L_Sig;regH2L_F1;regH2L_F2;always@(posedgeCLKornegedgeRSTn)if(!RSTn)beginH2L_F1<=1'b1;H2L_F2<=1'b1;endelsebeginH2L_F1<=RX_Pin_In;H2L_F2<=H2L_F1;endassignH2L_Sig=H2L_F2&!H2L_F1;endmodule2、数据位中心定位模块(rx_bps_module)输入端口:系统时钟CLK;复位信号RSTn,当RSTn=0,系统复位;数据位有效信号Count_Sig,当Count_Sig=1,表示有效位传输。输出端口:BPS_CLK
6、,当计数至每一位的中间位置,BPS_CLK=1,提示信号采集时间到,否则不进行信号采集。设系统时钟20MHZ,则参考代码如下:modulerx_bps_module(CLK,RSTn,Count_Sig,BPS_CLK);inputCLK;inputRSTn;inputCount_Sig;outputBPS_CLK;reg[11:0]Count_BPS;always@(posedgeCLKornegedgeRSTn)if(!RSTn)Count_BPS<=12'd0;elseif(Count_BPS==12'd2082)Count_BPS<=12'd0;elseif(Count_Sig)Co
7、unt_BPS<=Count_BPS+1'b1;elseCount_BPS<=12'd0;assignBPS_CLK=(Count_BPS==12'd1041)?1'b1:1'b0;endmodule3、数据装载模块(rx_control_module)输入端口:系统时钟CLK,复位信号RSTn,当RSTn=0时,系统复位帧开始信号H2L_Sig,当H2L_Sig=1,表示一帧信号开始;串口数据输入信号:RX
此文档下载收益归作者所有