首页 > 范文大全 > 正文

一种简易的UART IP核的设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种简易的UART IP核的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:文章主要介绍一种简易通用的uart ip核的设计。UART作为一种短距离、低成本通信的串行传输接口,随着嵌入式系统的迅速发展,已成为SoC(System on Chip)芯片中的一个重要部件,在数字通信中得到了广泛的应用。本设计在对UART的串行通信协议进行详细分析的基础上,采用Verilog HDL语言对ALTERA的Cyclone系列FPGA进行设计,用一片FPGA实现了UART的发送、接收和波特率发生等功能,并验证了结果。这种灵活的设计方法使整体设计紧凑、小巧,提高了系统的兼容性,节约了硬件成本,具有较强的推广价值。

关键词:现场可编程门阵列;UART IP;Verilog HDL;

中图分类号:TN402 文献标识码:A文章编号:1009-3044(2007)06-11657-01

1 引言

随着集成电路的深亚微米制造技术和EDA技术的迅猛发展,芯片的密度和复杂度不断提高,复用以前的设计模块用于ASIC芯片和在一块芯片上实现嵌入式系统的功能形成所谓的片上可编程系统(System on Programmable Chip,SOPC)已成为一种发展的新趋势。IP(电路知识产权)设计的重用性以及SOPC技术的出现,以其设计的灵活性大大缩短了产品的设计周期,减少了设计成本,降低了设计风险,加快了产品的上市速度。本文中介绍的UART控制器是建立在计算机工业控制和通信领域中广泛使用的一种串行数据传输协议上的,其在SoC中是一种常用的数据通信部件,往往用于低速低成本的微机与下位机的通讯中,并允许在串行链路上进行全双工的通信,以其易于实现、传输距离较远的优点, 广泛应用于嵌入式微处理芯片的设计以及工业应用中。

2 UART通信标准

UART(Universal Asynchronous Receive Transmitter)即通用异步收发器,是一种串行通信方式。所谓“串行通信”是指外设与计算机间使用一根数据信号线,数据在传输过程中是通过一位一位地在一个数据信号线进行传输来实现通信的,每一位数据都占据一个固定的时间长度。在UART中, 数据位是以字符为传送单位, 数据的前、后要有起始位、停止位来实现字符的同步, 另外可以在停止位的前面加上一个比特(bit)的校验位。其帧格式如图1所示。其基本特点为:在信号线上共有2种状态,分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送空闲时, 数据线应该保持在逻辑高电平状态。而发送一个完整的字节信息首先是通过发送起始位来同步的,用下降沿通知接受方传输开始。紧跟着起始位的是数据位,数据可由5-8位数据位组成,低位在前,高位在后,比如字符A的ASCII码01000001B,那么传输的将是10000010B。数据位后面是奇偶检验位,校验位一般用来判断接收的数据位有无错误, 一般是奇偶校验。在实际使用中该位常被取消。最后是停止位,停止位是高电平,其标志一个字符传送的结束,并为下一个字符的传输做准备。停止位后面是不定长的空闲位,其对应于逻辑1状态。

图1 UART的数据帧格式

3 简易UART IP核的FPGA实现

3.1 Cyclone的简介

Altera? Cyclone? FPGA是目前市场上性价比最优且价格最低的FPGA。Cyclone器件具有为大批量价格敏感应用优化的功能集,这些应用市场包括消费类、工业类、汽车业、计算机和通信类。

Cyclone器件基于成本优化的全铜1.5V SRAM工艺,容量从2910至20060个逻辑单元,具有多达294912bit嵌入RAM。Cyclone FPGA支持各种单端I/O标准如LVTTL、LVCMOS、PCI和SSTL-2/3,通过LVDS和RSDS标准提供多达129个通道的差分I/O支持。每个LVDS通道高达640Mbps。Cyclone器件具有双数据速率(DDR) SDRAM和FCRAM接口的专用电路。Cyclone FPGA中有两个锁相环(PLLs)提供六个输出和层次时钟结构,以及复杂设计的时钟管理电路。这些业界最高效架构特性的组合使得FPGA系列成为ASIC最灵活和最合算的替代方案。本设计采用Altera公司生产的EP1C6Q240C8芯片来实现TFT-LCD控制器以及它的逻辑时序的全部功能。

3.2 UART IP核的设计

根据异步串行通信的原理,本设计采用硬件描述语言Verilog HDL来开发符合RS-232标准的UART IP核,其内部结构由波特率发生器、数据接收器以及数据发送器三部分组成,如图2所示。其中,由于串行数据帧与接收时钟是异步的,所以接收器功能实现中的关键是接收器时钟与每个接收字符同步,一个比较有效的方法是接收器时钟采用高速率时钟对串行数据进行采样,本设计采用16倍于波特率的频率。

图2 UART IP核的功能模块

下面给出实现该UART IP核的关键代码,其中div_clk为波特率,由一分频模块产生,clk_div16 为16倍于波特率的采样率,txd为UART发送信号,rxd为接收信号。发送器完成的功能主要是把要发送的数据内容加上开始位和停止位,然后移位发送。

下面是数据接收模块,其根据RS-232的通讯协议,在空闲状态,必须采集到rxd由高电平到低电平变化才开始接收数据,并通过间隔的采样来降低误码率:

//通过检测到的2个数据来判断是否有开始位

4 结论

IC设计技术的发展使基于IP模块的SoC技术日趋流行和成熟,利用强大的EDA工具,以具有知识产权的内核(IP Core)复用技术为支撑,实现软硬件协同设计已成为SoC的核心思想。UART作为数字集成电路中常用的串行通信部件, 广泛应用于嵌入式微处理芯片的设计中。本文利用Verilog HDL硬件描述语言的灵活性,根据串行通信协议的要求,设计出一个简易的UART IP核。该IP核实现方法简单,代码易读,容易修改,并且具有较强可移植性。该设计已经下载到ALTERA公司的Cyclone系列器件EP1C6Q240C8中,其逻辑功能以及时序关系均符合设计要求。

参考文献:

[1]周立功, 夏宇闻.单片机与CPLD综合应用技术[M]. 北京: 北京航空航天大学出版社, 2003.

[2]UART Transmitter and Receiver Macros, Ken Chapman Xilinx Ltd, 2002, 10.

[3]周灿荣, 陈禾. UART通信的FPGA实现设计[J]. 山西电子技术, 2006.3.

[4]Cyclone Device Handbook. [OB/OL]. / literature/ lit- cyc.jsp.

[5]聂涛, 许世宏. 基于FPGA的UART设计[J] . 现代电子技术, 2006. 2.

[6]李或, 于宏毅, 王大鸣等. 简化UART功能的FPGA实现[J]. 现代电子技术, 2004. 4.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。