资源描述:
《fpga的uart完整设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、电子科技大学成都学院毕业设计论文第三章UART设计3.1UART的帧格式在UART中,数据位是以字符为传送单位,数据的前、后要有起始位、停止位,另外可以在停止位的前面加上一个比特(bit)的校验位。其帧格式如图所示。数据位起始位D0D1D2D3——————D7校验位停止位以9600波特率接收或发送,每一位时间为1/9600秒,或48MHZ晶振5000次计数图3_1数据帧格式文章通过分析UART的功能,利用有限状态机来描述UART核心控制逻辑的方法,将其核心功能集成,从而使整个设计更加稳定、可靠。基本的UART通信只需要两条信号线就可以完成数据的相互通信。UART的功能模块如图3_2所示。
2、波特发生器Uart控制器接收模块发送模块对象模块图3_2UART的功能模块图17电子科技大学成都学院毕业设计论文3.2UART模块在大规模电路的设计中,广泛采用层次化,结构化的设计方法。它将一个完整的硬件设计任务从系统级开始,划分为若干个可操作的模块,编制出相应的模型并进行仿真验证,最后在系统级上进行组合。这样在提高设计效率的同时又提高了设计质量,是目前复杂数字系统实现的主要手段,也是本文设计思想的基础。其系统模块可划分为4个部分,如波特发生器,控制器,接收器,发送器,如图3-3所示:readsendclear_checkreadsendClr3clr4kscsData_inData_o
3、utclearRead_enablesend_enablecounterscountersresetCounters(control)stateT1clk_enableClk_clearClk(波特发生器)clk图3-3uart结构图3.2.1主要引脚功能介绍Read:串行输入send:串行输出Data_in:并行输入data_out:并行输出Cs:通知cpu接收数据位ks:通知cpu发送准备位Reset:重启输入state:uart状态输入Clk:48M时钟输入17电子科技大学成都学院毕业设计论文3.2.2UART主体程序`timescale1ns/1nsmodulegs_opt(in
4、putwireread,inputwireclk,inputwirereset,inputwirestate,inputwire[7:0]dat_in,outputwiresend,outputwirecs,outputwireks,outputwire[7:0]dat_out);wiresend_enable;wireread_enable;wireclk_enable3;wireclk_enable4;wireclear3;wireclear4;wireclk_enable;wire[7:0]counters;wireclear;wiret1;/*read,send,cs,ks,re
5、set,state,clk,dat_in,dat_out);17电子科技大学成都学院毕业设计论文//moduleuart(read,send,cs,ks,reset,state,clk,dat_in,dat_out);inputread,clk,reset,state;//read为串行输入,clk为时钟输入50MHZ,reset为重启键input[7:0]dat_in;//并行数据输入outputsend,cs,ks;//send为串行输出,cs为通知cpu接收数据位,ks为发送准备位output[7:0]dat_out;//并行数据输出wireclear,clk_enable,rea
6、d_enable,clear3,send_enable,clear4,t1;wire[7:0]counters,dat_in;*/rxdu1(.dat_out(dat_out),.cs(cs),.read(read),.reset(reset),.clk_enable3(clk_enable3),.clk(clk),.read_enable(read_enable),.clear3(clear3),.counters(counters));//接收数据moduletxdu2(.dat_in(dat_in),.ks(ks),.send(send),.reset(reset),.clk_en
7、able4(clk_enable4),.clk(clk),.send_enable(send_enable),.clear4(clear4),.counters(counters)17电子科技大学成都学院毕业设计论文);//发送数据moduleclk_bauu3(.clk(clk),.t1(t1),.clk_enable(clk_enable));//时钟计数器模块ctrlu4(.read_enable(read_enable),.