.
图3-5reset为零时仿真图
如图为UART的数据发送模块的功能仿真图,为方便观察,其中的时钟是直接给出来的,根据图中的数据判读,其功能为正确,UART的数据发送模块编译成功。
1.当计时器为140ns时,为数据接收 2.当计时器为357ns时,为数据发送
3.当计时器为705ns时,为奇偶校验结果发送 4.当计时器为825ns时,发送高电平 当reset为1时 如图3-6
.
.
图3-6reset为1时仿真图
.
.
3.4UART接收模块
3.4.1UART数据接收服务
串行 数 据 帧和接收时钟是异步的,由逻辑1跳变为逻辑0可视为一个数据帧的开始,所以接收器首先要判断起始位。如表3.2
计数器 操作
0 测 1~~~~8 偶校验 9 10 数据判断 数据起始位检数据接收和奇奇偶校验 表3.2uart的数据接收服务
其基 本 特 点是:
UART 接收状态 一 共 有 4个:state0(检测起始位),stat e1( 对数据位进行采样,并串/并转换),state2(奇偶校验 分析),state3(接收数据正确与否检测)。 ① 起始位判读:当UART接收器复位以后,接收器将处 于这一状态。在该状态,控制器一直等待read电平的跳 变,即从逻辑1变为逻辑0,也就是等待起始位的到来 。一旦检测到起始位,就对采样时钟elk一 rev 上跳沿计 数,当计数为8时,也就是确保在起始位的中间点 ,然后转到state1 状态。
② 数据接收 :该状态下,每间隔16位倍频采样一位 串行数据,接收8位异步数据并进行串/并转换。即对 clk一 rev 上跳沿计数,当为16时,就对数据采样,这样 保证了数据位是在中点处被采样的,同时串/并转换,当检测到已收到8个数据后以后,便进入了state2状态。
③ 奇偶校验 :该状态实现的功能是奇偶校验。本文采 用的是偶校验。校验结束以后,转到state3状态。
④ 数据帧判读 :该状态是用来帧校验的,即在校验位 以后,检测停止位是否为逻辑高电平
.
.
.
.
3.4.2UART数据接收操作
图3-7UART数据接收操作 起始位检测 空闲检测 Cpu接收位检测 检测 毛刺检测 数据帧检测 接收等待 数据位读取和奇偶校验 奇偶结果比较 图3-7UART数据接收操作
解释:数据接收速度9600波特率,以16倍频接收
cpu接收位检测:当奇偶结果比较和数据帧检测都正确时,cpu检测接收位cs置位
3.4.3UART的数据接收模块程序
///发送数据模块 module txd(
dat_in,send,reset,clk_enable4,clk,
send_enable,clear4,counters,ks);//发送数据module
input[7:0] dat_in,counters; input reset,clk,send_enable;
.