基于fpgacpld设计与实现uart(vhdl)

上传人:第*** 文档编号:33949922 上传时间:2018-02-19 格式:DOC 页数:15 大小:388.38KB
返回 下载 相关 举报
基于fpgacpld设计与实现uart(vhdl)_第1页
第1页 / 共15页
基于fpgacpld设计与实现uart(vhdl)_第2页
第2页 / 共15页
基于fpgacpld设计与实现uart(vhdl)_第3页
第3页 / 共15页
基于fpgacpld设计与实现uart(vhdl)_第4页
第4页 / 共15页
基于fpgacpld设计与实现uart(vhdl)_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《基于fpgacpld设计与实现uart(vhdl)》由会员分享,可在线阅读,更多相关《基于fpgacpld设计与实现uart(vhdl)(15页珍藏版)》请在金锄头文库上搜索。

1、基于 FPGA/CPLD 设计与实现 UART(VHDL)1 引言由于微电子学和计算机科学的迅速发展,给 EDA(电子设计自动化)行业带来了巨大的变化。特别是进入 20 世纪 90 年代后,电子系统已经从电路板级系统集成发展成为包括 ASIC、FPGA/CPLD 和嵌入系统的多种模式。可以说 EDA产业已经成为电子信息类产品的支柱产业。EDA 之所以能蓬勃发展的关键因素之一就是采用了硬件描述语言(HDL)描述电路系统。就 FPGA 和 CPLD 开发而言,比较流行的 HDL 主要有 Verilog HDL、VHDL、ABEL-HDL 和 AHDL 等,其中 VHDL和 Verilog HDL

2、因适合标准化的发展方向而最终成为 IEEE 标准。下面的设计就是用 VHDL 来完成实现的。2 UART 设计实例通常设计数字电路大都采用自顶向下将系统按功能逐层分割的层次化设计方法,这比传统自下向上的 EDA 设计方法有更明显的优势(当时的主要设计文件是电路图)。因为由自顶向下的设计过程可以看出,从总体行为设计开始到最终逻辑综合,形成网络表为止。每一步都要进行仿真检查,这样有利于尽早发现系统设计中存在的问题,从而可以大大缩短系统硬件的设计周期。下面以 UART 的设计为例具体说明:(本设计只对本设计的总模块做各种基于 MAX+PLUS II 环境下的各种分析,对于各分模块只是作些必要的说明。

3、)UART(即 Universal Asynchronous Receiver Transmitter 通用异步收发器)是一种应用广泛的短距离串行传输接口。UART 允许在串行链路上进行全双工的通信。串行外设用到的 RS232-C 异步串行接口,一般采用专用的集成电路即 UART 实现。如 8250、8251、NS16450 等芯片都是常见的 UART 器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如 FIFO),有时我们不需要使用完整的 UART 的功能和这些辅助功能。或者设计上用到了 FPGA/CPLD 器件,那么我们就可以将所需要的 UART 功能集成到 FPGA 内部。使用 VH

4、DL 将 UART 的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。本文应用 EDA 技术,基于 FPGA/CPLD 器件设计与实现 UART。2.1 UART 简介2.1.1 UART 结构UART 主要有由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分等组成。本设计主要设计 UART 中最重要的发送部分和接收部分,其他部分设计不在赘述。功能包括发送缓冲器(tbr)、发送移位寄存器(tsr)、帧产生、奇偶校验、并转串、数据接收缓冲器(rbr)、接收移位寄存器(rsr)、帧产生、奇偶校验、串转并。图 1 是 UART 的典型应用。图 12.1.2 UART 的帧格式UART 的帧

5、格式如图 2 所示。图 2包括线路空闲状态(idle,高电平)、起始位(start bit,低电平)、58 位数据位(data bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为 1、1.5、2 位)。这种格式是由起始位和停止位来实现字符的同步。UART 内部一般有配置寄存器,可以配置数据位数(58 位)、是否有校验位和校验的类型、停止位的位数(1,1.5,2)等设置。本设计没有奇偶校验位,所设置的奇偶校验只是检验数据中是否有奇数或偶数个 1。数据位为 8 位,停止位为 1 位。2.2 UART 的设计与实现2.2.1 UART 发送器发送器每隔 16 个 C

6、LK16 时钟周期输出 1 位,次序遵循 1 位起始位、8 位数据位、1 位停止位。CPU 何时可以往发送缓冲器 tbr 写入数据,也就是说 CPU 要写数据到tbr 时必须判断当前是否可写,如果不判这个条件,发送的数据会出错。本设计由 wrn 控制。数据的发送是由微处理器控制,微处理器给出 wrn 信号,发送器根据此信号将并行数据 din7.0锁存进发送缓冲器 tbr7.0,并通过发送移位寄存器 tsr7.0发送串行数据至串行数据输出端 sdo。在数据发送过程中用输出信号 tbre、tsre 作为标志信号,当一帧数据由发送缓冲器 tbr7.0送到发送发送移位寄存器 tsr7.0时,tbre

7、信号为 1,而数据由发送移位寄存器tsr7.0串行发送完毕时,tsre 信号为 1,通知 CPU 在下个时钟装入新数据。发送器端口信号如图 3 所示。图 3引入发送字符长度和发送次序计数器 no_bits_sent,实现设计的源程序如下。library ieee ;use ieee.std_logic_1164.all ;use ieee.std_logic_arith.all ;entity txmit isport (rst,clk16x,wrn : in std_logic ;din : in std_logic_vector(7 downto 0) ;tbre : out std_lo

8、gic ;tsre : out std_logic ;sdo : out std_logic ) ;end txmit ;architecture v1 of txmit issignal clk1x_enable : std_logic ;signal tsr : std_logic_vector (7 downto 0) ;signal tbr : std_logic_vector (7 downto 0) ;signal parity : std_logic ;signal clkdiv : unsigned (3 downto 0) ; -用来控制数据采样时钟的signal clk1x

9、 : std_logic ;signal no_bits_sent : unsigned (3 downto 0) ;signal wrn1 : std_logic ;signal wrn2 : std_logic ;beginprocess (rst,clk16x) -对 wrn 进行脉宽处理,以防接收数据错误beginif rst = 1 thenwrn1 0) ;elsif wrnevent and wrn = 0 thentbr = 0011 and std_logic_vector(no_bits_sent) = 0001 and std_logic_vector(no_bits_r

10、cvd) rst,clk16x = clk16x,din = din,tbre = tbre,tsre = tsre,sdo = sdo);u2 : rcvr PORT MAP (rst = rst,clk16x = clk16x,rxd = rxd,rdn = rdn,data_ready = data_ready,framing_error = framing_error,parity_error = parity_error,dout = dout) ;end v1 ;总模块 RTL 图如图 5图 52.3 程序在 MAX+PLUS II 环境下的分析在此设计中我所采用的编程目标芯片是

11、ALTERA 公司的 EPF10K10LC84-3.2.3.1 波形仿真波形仿真图如图 6 所示:图 6由于条件限制,数据给的太多,从图 6 上是看不出来的,所以,为了说明设计的正确性,只给出了一个数据。通过波形仿真图我们可以清楚的看到 UART 的工作原理。2.3.2 时序分析我对设计在没有优化的情况下做了分析,首要的目的是验证用 FPGA/CPLD设计的正确性,次要的目的主要是与优化后的分析进行比较,以说明用FPGA/CPLD 设计的优越性。优化前的时序分析图如下:图 7、延时矩阵图图 8、建立/保持时序分析图图 9、延时路径及寄存器时钟特性图对本设计采用 MAX+PLUS II 优化设计

12、中的专门针对其 ALTERA 器件的优化。在逻辑综合类型中选择快速类型(Fast)。这种类型是对大部分的器件特殊结构进行优化,是对性能要求较高的设计采用的综合类型。但是编译适配要比普通类型(Normal)慢许多。对于适配 FLEX/ACEX 等系列器件,综合器会自动使用 FLEX/ACEX 中的级链、进位链结构(对于 Normal 是忽略的)。优化后的时序分析图如下:图 10、优化后的延时矩阵图图 11、优化后的建立/保持时序分析图图 12、延时路径及寄存器时钟特性图从时序分析我们可看到本设计基本满足设计要求。(上面的时序分析图中,某些图中只包含了部分数据)对于优化前与优化后的数据比较来看,虽

13、然在某些数据上优化后反而不如优化前的,这是正常的。因为优化不可能照顾到每一个信号。2.3.3 资源利用对于资源利用的情况,也分优化前和优化后进行比较。优化前的资源分布图如下:图 13、资源利用分布图由于 FPGA/PLD 的阵列结构,如果在设计中,将某些关联模块在适配的时候集中分配在一块,其性能会大大提高。因此,对本设计进行打包(Clique)(又称分组)。优化后的资源分布图如下图 14、优化后资源利用分布图从上面的比较中,我们很清楚的看到,优化后的资源利用率有了很大的提高。3 总结本设计由于采用了 VHDL 语言作为输入方式并结合 FPGA/CPLD,大大缩短了设计周期,提高了设计的可靠性、灵活性,使用户可根据自己的需求,方便、高效地设计出适合的串行接口电路。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号