FPGA的UART完整设计

  • 格式:doc
  • 大小:256.50 KB
  • 文档页数:20

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章UART设计

3、1 UART得帧格式

在UART 中,数据位就是以字符为传送单位,数据得前、后要有起始位、停止位,另外可以在停止位得前面加上一个比特(bit)得校验位。其帧格式如图所示。

文章通过分析UART得功能,利用有限状态机来描述UART核心控制逻辑得方法,将其核心功能集成,从而使整个设计更加稳定、可靠。基本得UART通信只需要两条信号线就可以完成数据得相互通信。UART得功能模块如图3_2所示。

3、2 UART模块

在大规模电路得设计中,广泛采用层次化,结构化得设计方法。它将一个完整得硬件设计任务从系统级开始,划分为若干个可操作得模块,编制出相应得模型并进行仿真验证,最后在系统级上进行组合。这样在提高设计效率得同时又提高了设计质量,就是目前复杂数字系统实现得主要手段,也就是本文设计思想得基础。其系统模块可划分为4个部分,如波特发生器,控制器,接收器,发送器,如图3-3所示:

3

Data_in:并行输入data_out:并行输出

Cs:通知cpu接收数据位ks:通知cpu发送准备位

Reset:重启输入state:uart状态输入

Clk:48M时钟输入

3、2、2UART主体程序

`timescale 1ns/1ns

module gs_opt(

input wire read,

input wire clk,

input wire reset,

input wire state,

input wire [7:0] dat_in,

output wire send,

output wire cs,

output wire ks,

output wire [7:0] dat_out

);

wire send_enable;

wire read_enable;

wire clk_enable3;

wire clk_enable4;

wire clear3 ;

wire clear4 ;

wire clk_enable;

wire [7:0] counters;

wire clear ;

wire t1;

/*

read,send,cs,ks,reset,state,clk,dat_in,dat_out);

//module uart(read,send,cs,ks,reset,state,clk,dat_in,dat_out); input read,clk,reset,state;

//read为串行输入,clk为时钟输入50MHZ,reset为重启键input[7:0] dat_in;//并行数据输入

output send,cs,ks;

//send为串行输出,cs为通知cpu接收数据位,ks为发送准备位output[7:0] dat_out;//并行数据输出

wire clear,clk_enable,read_enable,clear3,send_enable,clear4,t1; wire[7:0] counters,dat_in;*/

rxd u1 (

、dat_out (dat_out) ,

、cs (cs) ,

、read (read) ,

、reset (reset) ,

、clk_enable3 (clk_enable3) ,

、clk (clk) ,

、read_enable (read_enable) ,

、clear3 (clear3) ,

、counters (counters)

); //接收数据module

txd u2 (

、dat_in (dat_in),

、ks (ks),

、send (send),

、reset (reset),

、clk_enable4 (clk_enable4),

、clk (clk),

、send_enable (send_enable),

、clear4 (clear4),

、counters( counters)

);//发送数据module

clk_bau u3 (

、clk(clk) ,

、t1 (t1),

、clk_enable (clk_enable)

); //时钟计数器模块

ctrl u4(

、read_enable (read_enable) ,

、send_enable (send_enable),

、clk (clk),

、state (state),

、t1 (t1),

、read (read ),

、counters (counters),

、reset (reset ),

、clear (clear)

);

check_cle u5 (

、state (state),

、clear3 (clear3),

、clear4 (clear4),

、clear (clear),

、clk_enable3 (clk_enable3),

、clk_enable4 (clk_enable4),

、clk_enable (clk_enable)

);

endmodule//////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////

3、3UART发送模块

3、3、1UART得数据发送服务

发送器实现得功能就是将输入得8位并行数据变为串行数据,同时在数据头部加起始位,在数据位尾部加奇偶校验位与停止位。数据发送服务如表3、1

相关主题