.
第三章UART设计
3.1 UART的帧格式
在 UART 中,数据位是以字符为传送单位,数据的前、后要有起始位、停止位,另外可以在停止位的前面加上一个比特(bit)的校验位。其帧格式如图所示。
数据位 起始位 D0 D1 D2 D3 —————— D7 校验位 停止位
图3_1数据帧格式
以9600波特率接收或发送,每一位时间为 1/9600秒,或48MHZ晶振5000次计数
文章 通 过 分析UART的功能,利用有限状态机来描述UART核心控制逻辑的方法,将其核心功能集成,从而使整个设计更加稳定、可靠。基本的UART通信只需要两条信号线就可以完成数据的相互通信。UART的功能模块如图3_2所示。
波特发生器 Uart控制器 接收模块 发送模块 .
.
对象模块
图3_2UART的功能模块图
.
.
3.2 UART模块
在大规模电路的设计中,广泛采用层次化,结构化的设计方法。它将一个完整的硬件设计任务从系统级开始,划分为若干个可操作的模块,编制出相应的模型并进行仿真验证,最后在系统级上进行组合。这样在提高设计效率的同时又提高了设计质量,是目前复杂数字系统实现的主要手段,也是本文设计思想的基础。 其系统模块可划分为4个部分,如波特发生器,控制器,接收器,发送器,如图3-3所示:
clr4 read send read clear_check send Clr3 ks Data_in cs Data_out reset
Clk(波特发生器)
.
clear Read_enable
counters
send_enable
counters
Counters(control)
state
T1
clk_enable
Clk_clear
clk
.
图3-3uart结构图
3.2.1主要引脚功能介绍 Read:串行输入 Data_in:并行输入
Cs:通知cpu接收数据位 Reset:重启输入
Clk:48M时钟输入
.
send:串行输出
data_out:并行输出
ks:通知cpu发送准备位
state:uart状态输入
.
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);
.