APP下载

关于FPGA系统设计的研究与方法

2018-04-15陶子愚

电子测试 2018年2期
关键词:毛刺寄存器时钟

陶子愚

(武汉纺织大学外经贸学院,湖北武汉,430073)

0 引言

随着集成电路设计与制造工艺水平的提高,系统设计向高速度、低电压、低功耗发展,对电路的要求更高。为满足现代电子系统设计的需要,可编程逻辑器件(Programmable Logic Device,PLD)应运而生,目前已是数字系统设计的主要硬件基础。同时设计电路的方法也由传统的依赖电路原理图的人工方法过渡到基于计算机语言的现代设计方法。利用硬件描述语言(HDL),开发者很容易实现复杂电路系统的设计,针对目前这方面的书籍和文章主要讲述了硬件描述语言语法和应用范例,而关于在电路系统设计中CPLD/FPGA设计经验和方法显得尤为重要。本文讲述了基于ATA主机控制器设计目标的基本思想和方法。

1 ATA接口主机控制器设计

ATA接口广泛用于高速数据存储,能实现数据连续实时记录。外挂一个硬盘的海量存储系统实现在Al tera 公司CycloneII系列EP2C35F672C8芯片内共消耗2904个LE和2410个寄存器资源,综合后最高时钟频率为114.97HMz。在成功设计出的海量存储系统中,系统主时钟80MHz,它是通过采用外部40MHz晶振经过芯片EP2C35F672C8内部的锁相环(PLL)进行2倍频来实现的,ATA主机控制器模块采用PIO模式4和Ul tra DMA模式5进行工作,实现了UDMA数据突发速率80MB/s和持续速率40MB/s传输。ATA主机控制器和USB主机控制器模块相连,能与PC机通信。当外部信源为8位宽的并行数据时,采用串并转换和异步FIFO实现与硬盘16位并行数据兼容及数据同步;整个ATA硬盘控制器采用状态机设计,为使系统工作稳定,采用了异步复位方式。在编写Veri log HDL代码时,i f和else语句配对用使,避免生成锁存器,减少后级电路的竞争冒险现象;尽量使用全局时钟,避免产生毛刺;在主机读取硬盘数据时,使用双边沿检测电路来接收数据。

海量存储系统内部的一个ATA主机控制模块可以实现40MB/s及以下速率并行数据的传送;当外部信源速率为80MB/s时,可采用面积换速度、乒乓操作等技术来实现数据传输;当外部信源为160MB/s时,流水线或并行处理等能满足设计要求。

2 CPLD/FPGA设计的关键技术

复杂可编程逻辑器件(Complex Programmable Logic Device, CPLD)主要由宏单元(Macrocel ls)、可编程I/O单元、可编程内部连线等部分组成。现场可编程门阵列(Field Programmable Gate Array, FPGA) 内部结构包含逻辑单元阵列、内部连线、输入输出单元等。CPLD与FPGA集成度较高,属于高密度PLD。两者功能基本相同、设计流程相似且使用EDA软件的设计方法也没太大区别,只是实现原理略有不同。但CPLD由于触发器有限乘积项多,更适合组合逻辑设计,而FPGA触发器资源丰富,更适用于时序逻辑设计。另外,FPGA比CPLD的集成度高,更适合复杂系统设计。在系统设计时,根据所选器件型号充分发挥其性能,故在大多数情况下,二者并未加以区分。根据经验总结主要涉及到CPLD/FPGA开发设计的基本方法、常用模块等关键技术。

2.1 同步电路设计规则

在FPGA设计中,异步时序电路易产生毛刺,而同步电路易于控制寄存器的异步复位/置位端,可避免受温度、电压、工艺的影响,易于消除电路的毛刺,设计可靠稳定,及有利于组织流水线提高系统工作频率等优点。根据实际经验,总结出以下同步电路设计规则。

(1)系统采用统一时钟

在系统设计中,尽量采用一个主时钟,同时使用同一个时钟沿。在FPGA设计中,避免使用多时钟网络。在各个模块设计中,推荐所有输入、输出端口均采用寄存器连接,即寄存器当异步接口考虑。

(2)模块采用统一时钟

当电路系统不能用同步电路实现时,可分割成若干个局部同步电路,一个模块尽量采用同一时钟。各个局部同步电路接口当作异步接口处理。

(3)系统实际工作频率小于理论最高频率

系统实际最高工作频率不应大于理论最高频率,留有足够的设计余量,保证芯片可靠稳定工作。电路设计中寄存器、状态机等在复位时应处于已知状态。

(4)延时采用电路逻辑实现

同步电路延时采用电路逻辑来实现,对于较大和特定要求的延时,一般用高速时钟产生一个计数器,根椐计数值来控制延时;对于较小的延时常用D触发器来实现信号同步。

(5)尽量避免外设信号

在系统设计中,考虑到电路板上元器件焊接、走线等因素,应避免检测或判断芯片引脚所分配的外设信号,否则,易造成系统不稳定。如在状态机设计中,若检测外部管脚信号时经常出现状态不跳转。因此需要严格的控制时序。

2.2 流水线技术和乒乓操作

2.2.1 前后级数据速率匹配

流水线是高速设计中常用的技巧,具体指数据处理流程和顺序操作的设计思想,把处理流程分为多个步骤,数据是单向的,没有反馈或迭代运算。前级输出是后级输入,并且数据速率相匹配。为达到流水线设计于前后级数据速率匹配的目的,须对各个步骤数据流量进行分析。若前后级操作时间相等,前级的输出直接汇入后级输入;若快于后级操作,则须通过串并转换、逻辑复制等手段将数据分流,或者对前级数据先存储后处理方式来让数据流量匹配;若慢于后级操作,则需前级数据进行缓存,然后汇入后级输入,并要注意速率匹配。

2.2.2 用乒乓操作实现高速数据存储

乒乓操作常用于数据流控制处理,其数据流程描述:输入数据流通过输入数据选择单元,等时分配到两个数据缓冲区,然后经过输出数据流选择单元,按节拍轮流相互切换连续不断地把数据送到数据流处理模块。其优点是实现连续数据操作,有利于组织流水线处理、节约缓冲区空间,还可达到低速模块处理高速数据的目的。例如:当外部信源持续速率80MB/s时,由于一个硬盘的连续存储速率最高为40MB/s,故可采用两个硬盘通过乒乓操作来实现存储,其数据写入通道结构框图。

2.3 串并转换与并串转换

串并转换和并串转换,两者过程相反,但所用逻辑资源基本相同,可采用寄存器、RAM等实现。对于排序规则的转换,可用case语句或if语句来实现;而较复杂的转换可使用状态机来解决。

2.4 数据接口同步

数据接口同步通常采用请求应答的握手机制或同步指示信号,也可使用RAM或FIFO等来实现。对于高速系统设计,添加时序约束的方法有利于提高工作频率和进行系统分析。

2.5 异步复位与同步复位信号

电路系统设计中,一般都需要硬件复位电路。硬件复位分为异步复位和同步复位两种,异步复位可靠性强,而同步复位有时会出现不定状态。根据器件特性,综合布线工具对异步复位和同步复位的实现往往不同,并且对系统最高工作频率有影响。为保证系统工作稳定性,一般仍采用异步复位方式。

2.6 全局时钟

当组合逻辑函数钟空触发器时,常会存在门控时钟,其最大缺点是容易产生毛刺,使电路误操作。一般采用全局时钟来替代门控时钟,或使用寄存器使能端,在不增加资源的情况下,只要满足建立时间要求,就可避免毛刺。门控时钟也能稳定工作,但满足两个条件:一是驱动时钟的逻辑必须只包含一个与门或一个或门。若采用任何附加逻辑,则在某些情况下工作会出现由竞争产生的毛刺;二是逻辑电路的一个输入作为实际时钟,其他所有的输入必须当作地址或控制线,并且遵守相对于时钟的建立和保持时间约束。

2.7 双边沿检测

在CPLD/FPGA设计中,对于双边沿信号来说,一般综合工具都不支持,所以如何把双边沿转换成单边沿成为系统设计的关键。在此讲解了采用时钟检测信号,出现变化即为上升沿/下降沿。当被测信号与检测时钟相关时,可不用第一个触发器。

2.8 寄存器

以寄存器来划分工作模块,在电路描述中应该消除锁存器。如果某个数据需要保存应该使用寄存器,因为锁存器在整个电平有效期间对输入信号敏感,输入毛刺可以通过锁存器进行传播,致使后级组合逻辑电路发生竞争冒险的可能性大大提高,影响整个电路的性能。不适当的描述也会产生锁存器,消耗了资源。

3 结束语

本文仅对CPLD/FPGA设计中一般规律和技巧加以介绍和分析,并未深入讨论,其实这些经验也不是绝对的,随着微电子工艺和EDA技术的发展,很多设计规则在不断发生变化。只有在实践中,勤于思考,细心体会,认真总结,掌握CPLD/FPGA的设计思想和方法,对电路系统设计大有益处。

[1]Ciletti,M ichael D,“Advanced Digital Design w ith the Verilog HDL”Upper Sadd le River, NJ:Prentice Hall,2003.

[2]The Programmable Logic Data Book. San Jose, CA: Xilinx,Inc., 1994.

[3]W. S. Carter, “The future of programmable logic and its impact on digital system design,” in IEEE Int. Conf. Computer Design:VLSI in Com puters and Processors, 1994, pp. 10-16.

[4]Sutherland S.Verilog 2001.Boston:Kluwer,2002.

猜你喜欢

毛刺寄存器时钟
别样的“时钟”
一种铸铁钻孔新型去毛刺刀具的应用
古代的时钟
Lite寄存器模型的设计与实现
一种筒类零件孔口去毛刺工具
可抑制毛刺的钻头结构
分簇结构向量寄存器分配策略研究*
有趣的时钟
时钟会开“花”
高速数模转换器AD9779/AD9788的应用