Altera series- The UART of FPGA

本文介绍了UART的发送和接收原理,并提供了基于Verilog的FPGA实现UART发送器(Uart_tx)和接收器(Uart_rx)的详细代码。内容涵盖UART的5个状态,包括起始位、数据位、校验位和停止位的发送过程,以及接收数据的时序分析。
摘要由CSDN通过智能技术生成


  UART :  Universal Asynchronous Receiver/Transmitter : 异步收发传输器; 分为2个PART(发送  和接收);-------------学习笔记(一) Alex.Lee

**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

PART I   发送部分

      本实验是以波特率为9600,为例来讲述UART;

           首先,先介绍下串口的发送机制( 如图一 )


    即 UART 的发送(TX)机制,一般分为5个状态,即空闲位、 起始位、发送数据位、校验、停止位;

空闲(Idle):TX空闲时为High Level status;

起始(Start):TX 从高跳变到低电平,标志着下一个Bit将传送有效的数据;

数据(Data): TX将根据发送寄存器里的数据值,依次发送;(【注】:在传送的数据顺序为 First LSB ,Last MSB,先低位,后高位;)数据一般为7或8bit;

               校验( Check): TX 发送完数据位后,可使用校验位来使传送的数据更加准确,即使用 奇偶校验; 也可以不使用校验;

              停止(Stop): 发送停止位,即TX发送一 个BIt 的高电平,标志本次数据传送结束;一般用 帧错误检测 (Frame error:传送一帧数据是否出错);


 发送机制的过程可概括 为:  

Step 1 : 在空闲时TX为High Level ,当要发送数据时,则将pull down  TX 线 作为 发送起始位标志,即TX 发送一个Bit 位的低电平。

               Step 2 : 发送完起始位后,将进入发送数据, TX 将从接收缓冲器中依次从最低位 到最高位取出数据并在时钟周期到来时发送;一般数据位为8位即 1Byte。

       Step 3 : 发送完一帧数据后,为了确保数据的准确传输,一般会使一个bit位 用 于奇偶校验,来判断数据是否出错。

       Step 4 ::最后将发送一个bit的高电平作为发送停止位的标志,同时表明一帧数据传输完成。


    CODE :

`timescale 1ns / 1ps
module Uart_tx(clk,rst_n,wrig,datain,tx,idle);
input clk;
input rst_n;
input wrig;
input [7:0]datain;




output tx;
output idle;


reg tx, idle;
reg send;
reg result;
reg[7:0] timer;
reg tx_temp,tx_raising;


parameter poritymode = 1'b0;


always@(posedge clk)  // raise edge valid 
begin
tx_temp <= wrig;
tx_raising <= wrig & (~tx_temp);
end


always@(posedge clk)
begin
if(tx_raising &&(~idle))
begin
send <= 1'b1;
end
else if(timer == 8'd168)
begin
send <= 1'b0;
end
end


always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
tx <= 1'b0; 
idle <= 1'b0;
timer <= 8'd0; 
result <= 1'b0; 
end
else if(send

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值