您的位置 首页 新品

根据FPGA器材EP1C12Q240CQ8芯片完成UAR中心功用的规划

基于FPGA器件EP1C12Q240CQ8芯片实现UAR核心功能的设计-串行通信分为两种类型:同步通信方式和异步通行方式。 UART是通用异步发送器,是一种串行异步通信方式。它是各种设备之间进行通信的关键模块,允许在串行链路上进行全双工的通信。在发送端,并行的数字信号需要转化成串行信号才能通过有线或无线传输到另外一台设备;而在接收端,串行信号必须要被恢复成并行信号才能进行数据处理。 UART就是用来处理这种数据与串口之间的串并和并串转换的。

导言

跟着嵌入式体系的广泛推行和运用, UART( Universal Asynchronous Receiver Transmiller)作为一种串行数据传输方法也得到广泛的运用。UART答应在串行链路上进行全双工通讯。串行外设到 RS 232-C异步串行接口一般选用专用的集成电路即 UART完结。常见的串行接口芯片如 8250、8251、NS16450等,能够完结比较全面的串行通讯功用。而在实践运用中,咱们往往并不需求如此完好的功用,然后会构成资源的糟蹋和本钱的进步。跟着 EDA技能的飞速发展,咱们就能够依据自己的需求,将所需求的 UART功用集成到 FPGA内部,然后简化了电路、减小了体积、进步了体系的牢靠性。依据这种思维,在规划中选用 Altera公司的 EP1C12Q240CQ8,运用 Verilog HDL规划完结 UART的中心功用。

1 UART通讯原理

串行通讯分为两种类型:同步通讯方法和异步通行方法。 UART是通用异步发送器,是一种串行异步通讯方法。它是各种设备之间进行通讯的要害模块,答应在串行链路上进行全双工的通讯。在发送端,并行的数字信号需求转化成串行信号才干经过有线或无线传输到别的一台设备;而在接纳端,串行信号有必要要被康复成并行信号才干进行数据处理。 UART便是用来处理这种数据与串口之间的串并和并串转化的。

UART传送一个字符以开端位 (Start Bit)开端,以中止位( Stop Bit)结束,字符之间没有固定的时刻距离要求。每一个字符的前面都有一个开端位(低电平),字符自身由 5~8位数据位组成,然后是一位校验位(可选),最终是中止位( 1位,1位半或 2位),中止位后边是不定长度的闲暇位。中止位和闲暇位都规则高电平,这样就能够确保开端位开端处有一个下降沿。

依据FPGA器材EP1C12Q240CQ8芯片完结UAR中心功用的规划

2 UART在 FPGA中的完结

2.1UART的硬件电路规划

在串行通讯中,遍及选用的是 RS-232接口标准。硬件电路首要由 FPGA串口模块、 MAX3232和 DB-9组成,电路图如图 2所示。数据从 DB-9的 TxD端进入,经过 MAX3232进行电平转化后由 FPGA串口模块中的 RxD端进入,进行串并转化后由数据总线进入 FPGA的其他模块。数据处理后经由数据总线进入 FPGA串口模块,在其中进行并串转化后由 TxD端输出到 MAX3232中,经电平转化后由 DB-9的 RxD端输出。

2.2 UART的结构规划 UART首要由波特率产生模块、发送模块、接纳模块这三个部分组成。

2.2.1 波特率产生模块

当 UART在发送数据的时分,只需求依照必定的速率将数据串行地移动出就能够了。但是,当 UART在接纳串行的数据时,在什么时刻将数据移入移位寄存器是十分要害的。最理想的状况是在串行数据的每一位的中心时刻,对串行数据进行采样。对每一位数据的时刻进行分段,时刻的分段越多,对串行数据的采样就越接近中点,因为接纳方和发送方的时钟不可能彻底同步,时刻的分段越多,接纳方呈现采样过错的概率就越低。但时刻的分段越多,也意味着采样时刻就越高,体系的开支就越大。因而,在实践的规划中,选用 16倍于波特率的时钟频率。UART收发的每一个数据宽度都是波特率产生器输出的时钟周期的 16倍。如依照 9600b/s进行收发,那么波特率产生器的输出时钟频率应为 9600×16Hz。因为外部时钟选用 25MHz,能够很简单地经过总线写入不同的数值到波特率产生器坚持寄存器中,然后用计数器的方法生成所需求的各种波特率。计算公式为: 25000000/(16×所希望的波特率)-1。

2.2.2 发送模块

发送模块首要完结对并行数据的缓存,并串转化,然后把串行数据依照既定数据帧格局进行输出,其组织如图 3所示:

试验中串行数据结构为 1位开端位,8位数据位,1位奇偶校验位, 1位中止位。数据的发送由外部接纳模块操控,接纳模块给出 wrn信号,UART发送模块依据此信号将并行数据 data-input锁存进发送缓冲,并经过移位寄存器进行并串转化,在转化结束后加上奇偶校验位,发送到端口 txd进行串行输出。在整个作业进程中,输出信号 tbre作为标志信号,在串行数据悉数输出结束之后变成 0,并在发送模块未作业时坚持为 0。

2.4接纳模块

接纳模块的结构如图 4所示。接纳模块的作用是把收到的串行数据转化成并行数据进行输出,并判别收到数据是否有错。接纳模块的内部结构及作业进程与发送模块相似,只不过接纳模块的作业和发送模块的作业相反,是进行数据的串并转化。

rxd dout[7:0]

rdn data ready

rst parity-error

clk 16xframing-error

a) rxd接纳串行数据输入;

b) rdn为输入操控端,只要 rdn为 0时,并行数据才答应输出;

c) data-ready为数据是否准备好的标志;

d) parity-error为校验位是否犯错的标志;

e) framing-error为帧是否犯错的标志;

f) data-out[7:0]为并行数据输出端。

接纳模块从捕捉到数据串的第一个 0开端作业,然后把随后顺次输入的 8个数据位经过移位在寄存器中完结窜并转化,并将并行数据输出至端口 data-out。将 8个数据位移位至寄存器后,接纳模块将检测输入数据串的最终一位是否为 1(中止位)来判别接纳到的数据帧是否犯错,若不为 1,就将输出 framing-error置 1。

3 仿真验证在试验中,作者选用 Altera公司的 Cyclone系列产品中的 EP1C12Q240C8芯片,硬件描绘言语选用 Verilog HDL,用 Quartus 5.1进行逻辑归纳,仿真东西则运用 ModelSim6.0。发送模块和接纳模块的仿真成果别离如图 5所示。发送的数据能够严厉依照串行通讯协议进行传输;接纳的数据也彻底正确。经过仿真测验后,将程序下载到 FPGA芯片中运转,成果通讯数据正确,电路作业安稳、牢靠。

4 结束语

用 FPGA完结了 UART通讯功用,能够完结对数据的接纳和发送,并能够在接纳数据时对其校验位、中止位进行判别,在发送数据时能够构成完好的一帧数据格局。本文使用 FPGA规划完结了 UART的中心功用,能够和上位机进行异步串行通讯。试验证明该 UART规划占用资源少,作业安稳牢靠。

本文作者立异观念:本文对 UART体系结构进行了模块化剖析,能够依据实践的需求可选择地完结相应的通讯功用,简化了电路规划,进步了体系的牢靠性,能够灵敏地嵌入到各个通讯体系傍边。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/85824.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部