- 9
- 0
- 约3.82千字
- 约 7页
- 2018-03-16 发布于北京
- 举报
基于VERILOG-HDL的简化异步收发器的设计与仿真
摘要:该文阐述了通用异步收发器(UART)异步串行通信原理,介绍了实现UART异步串行通信的硬件接口电路及各部分硬件模块。该文基于Verilog语言实现了接收器和发送器这两个UART的内部核心功能模块,通过Modelsim对相应Verilog-HDL程序的仿真,验证了其异步串行数字接收和发送的功能。
关键词:Modelsim仿真;硬件描述语言;Verilog;UART
中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)34-1752-03
Design and Simulation of Universal Asynchronous Receiver/transmitter Based on Verilog-HDL
LIU Li-jia
(Liaoning University Of Technology,The School of Electronics and Information Engineering, Jinzhou 121001, China)
Abstract: The paper expatiate the asynchronous serial communication theory of the UART, introduce the hardware interface circuit of asynchronous serial communication and the hardware module of each part. By using the Verilog-HDL ,the article realize the transmitter and receiver,which are kernel functional modules of the UART. Through the Modelism simulation,we validate the function of asynchronous serial receiver and transmitter.
Key words: Modelism simulation; hardware description language; Verilog; UART
1 引言
UART(Universal Asynchronous Receiver Transmitter)协议是一种串行数据传输协议。UART允许在串行链路上进行全双工通信,在军事、工业、通信、自动控制、话音图像处理等众多领域得到了广泛运用。8250、NS16450等芯片都是常见的UART器件,这类芯片具有多种功能,但在实际应用中有时只需要使用UART的部分功能,因而会造成一定的资源浪费。本文使用Verilog HDL语言编写出简化型的异步串行数字接收、发送接口(UART)内部核心模块的硬件描述程序及其相应的测试程序,然后应用Modelsim对所编的程序进行仿真,验证其UART功能。
2 UART的结构
异步串行数据帧格式如图1所示。在异步通信中,一个字符在传输时,除传输实际编码信息外,还要传输几个外加位,即传输开始时首先输出起始位“0”。起始位后面为5~8个数据位,在同一个传输系统中,数据位的数目是固定的。数据位后面是奇偶校验位。最后的数位为停止位“1”。
在本方案中,异步串行通信传送一个字符,包括10位,其中有1个起始位,7个数据位,1个奇偶校验位和1个停止位。奇偶校验位采用的是奇校验,即7个数据位中“1”的个数为奇数个校验位输出为“1”,个数为偶数个时校验位输出为“0”。
3 UART的Verilog HDL实现
UART主要由波特率发生模块、发送模块、接收模块这三个部分组成。
波特率发生器用于产生一个本地时钟信号来控制UART的接收与发送;UART接收模块的用途是接收rxd端的串行信号,并将其转化为并行数据;UART发送模块的用途是将准备输出的并行数据按照基本UART帧格式转为串行数据从txd端串行输出。图2为UART的三个子模块。
3.1 波特率发生模块
设计的UART的接收和发送按照相同的波特率进行,波特率可以通过接口模块的总线接口进行设置。UART收发的每一个数据宽度都是波特率发生器输出的时钟周期的16倍,假如按照9600b/s进行收发,那么波特率发生器的输出时钟频率应该为9600×16Hz。假定提供的外部时钟为1.6MHz,可以通过总线写入不同的数值到波特率发生器保持寄存器,然后用计数器的方式生成所需要的各种波特率,即分频器。计算公式为:1600000÷(1
原创力文档

文档评论(0)