快捷搜索:
来自 使用说明 2020-01-28 11:42 的文章
当前位置: 晋城市报警模块有限公司 > 使用说明 > 正文

FPGA系统设计原则和技巧之:FPGA系统设计的3种常

  FPGA的开发工具软件,如QuartusII、ISE等,一般都会提供一些经过验证的是芯片厂家提供的,所以只能用于该厂家的FPGA芯片设计中。这些IP主要包括以下几类。

  接口类,如以太网MAC、PCI接口控制器、高速串行收发器(SERDES)等。

  (SERDES)。灵活使用这些IP,可以提升设计的性能,同时降低设计的复杂度。

  IP模块的实现方式主要有3种:使用HDL代码描述、使用综合约束属性例化或类推、使用器件商的IPcore生成器。

  典型功能的IPcore都可以通过这3种途径实现。其中前两种方法需要学习综合RAM、ROM、CAM等存储单元的CodingStyle或约束属性,后一种方法非常方便、直接,建议初学者首先要掌握使用器件商IPcore生成器设计RAM、ROM、CAM等存储单元的方法。

  下面通过QuartusII工具分别介绍Altera的3种IP模块的使用方法。

  片上存储器由内嵌于FPGA内部的逻辑资源(分布RAM和块RAM)搭建而成。搭建出来的这些片上存储器的调用方法与分立器件基本一致,但却为开发者省去了大量的PCB布线资源。过滤模块在小容量的存储器设计中有着非常广泛的应用,同时这些片上存储器还常常用作数据缓冲及时钟域转换等工作。

  在宏模块向导管理器的第1页,选择新建一个自定义的宏模块,如图9.10所示。

  在宏模块向导管理器的第2页,管理器为我们提供了支持的宏模块树形目录。通过在该目录中选择相应的宏模块实现调用。同时在这一页中还可以选择应用的FPGA器件系列和宏模块的描述语言,并使用用户自定义的模块名,如图9.11所示。

  在宏模块向导管理器(FIFO)的第3页,可以设置FIFO的深度和宽度,同时在本页的左下角会计算出实现这样一个深度和宽度的FIFO所消耗的FPGA资源,如图9.12所示。

  在宏模块向导管理器(FIFO)的第4页,可以设置FIFO的控制信号,包括满信号full、空信号empty、使用字节信号组usedw[]、几乎满信号almostfull(可编程)、几乎空信号almostempty(可编程)、异步清零信号和同步清零信号。

  通过选择是否打开这些信号来构造一个用户自定义的FIFO,如图9.13所示。

  在宏模块向导管理器(FIFO)的第6页,可以设置FIFO的模式。分为Lagacy同步模式和Show-ahead同步模式。区别在于输出数据是在FIFO的读请求信号rdreq发出之前还是之后有效,用户可以根据需要进行选择,如图9.14所示。

  在宏模块向导管理器(FIFO)的第7页,可以设置FIFO的外部属性,包括输出寄存器使用最佳速度策略还是最小面积策略,数据溢出及读空状态下的保护机制,还可以强制只利用逻辑单元来构造FIFO,如图9.15所示。

  在宏模块向导管理器(FIFO)的第8页,也就是最后一页,可以选择生成的FIFO模块文件。在QuartusII软件中,宏模块向导管理器可为FIFO生成7个文件,如图9.16所示。

  图9.16选择生成的FIFO模块文件图9.17打开工程添加/删除文件对线)向工程添加FIFO模块文件。

  生成FIFO模块的文件后,在工程的目录下生成了选择的文件。要在工程中调用这些模块,首先要将这些文件添加到工程中来。

  添加成功后,在工程浏览器中,可以看到器件设计文件中已经包含了这3个文件,如图9.19所示。

  在宏模块向导管理器(DPRAM)的第3页,可以设置DPRAM的端口数及容量单位。支持两种DPRAM:1个读端口和1个写端口的DPRAM,2个读端口和2个写端口的DPRAM。可以设置DPRAM的容量单位为位或者是字节。同时在本页的左下角会计算出实现这样一个DPRAM所消耗的FPGA资源,如图9.21所示。

  在宏模块向导管理器(DPRAM)的第4页,可以设置DPRAM的数据宽度及容量,同时可以设置输入输出端口为不同的宽度实现串并或并串转换,如图9.22所示。

  在宏模块向导管理器(DPRAM)的第7页,可以设置DPRAM的端口寄存器及清零信号,可以选择是否增加端口的寄存器,如图9.24所示。

  在宏模块向导管理器(DPRAM)的第9页,可以设置DPRAM的初始化值。通过选择MIF文件或者HEX文件可以使用文件中的值对DPRAM进行初始化,如图9.25所示。

  设置完成所有的参数,来到宏模块向导管理器(DPRAM)的最后一页。可以选择生成的DPRAM模块文件,共有6个文件可以生成,如图9.26所示。

  ROM的时钟控制方式分为两种,一种为单时钟,另一种将输入时钟和输出时钟分离。ROM的输入输出使用的是同一个数据端口,时钟的分离实际上也是对同一个数据端口作控制,如图9.28所示。

  设置完成所有的参数,来到宏模块向导管理器(ROM)的最后一页。可以选择生成的ROM模块文件,同样有6个文件可以生成,如图9.31所示。

  ROM的调用方式与FIFO的类似,其构建方式及模块的声明结构可以参看ROM模块的ROM_test.v和ROM_test_bb.v文件。

  锁相环的原理及在FPGA内部的构造这里将不做介绍,只以Altera的CycloneFPGA的PLL为例讲解其使用方法。

  CyclonePLL具有时钟倍频和分频、相位偏移、可编程占空比和外部时钟输出,进行系统级的时钟管理和偏移控制。PLL常用于同步内部器件时钟和外部时钟,使内部工作的时钟频率比外部时钟更高,时钟延迟和时钟偏移最小,减小或调整时钟到输出(TCO)和建立(TSU)时间。

  在宏模块向导管理器(PLL)的第3页,设计者可以设置一些PLL基本属性,如器件族、速度级别及基准频率,还可以设置PLL的类型及工作模式。

  CyclonePLL支持3种(反馈)模式:标准、零延迟缓冲和无补偿。和其他Altera器件系列不同,CyclonePLL不支持外部反馈模式。所有支持的3种时钟反馈模式允许倍频/分频、相位偏移和可编程占空比。下面对每种模式进行讲解。

  在标准模式下,PLL把参考时钟和逻辑阵列或I/O单元的端口缓存器处的时钟信号相位对齐,补偿内部全局时钟网络延迟。在ALTPLL宏模块向导管理器中,可以定义PLL的哪个内部时钟输出(c0或c1)应该补偿。

  PLLareset信号是每个PLL的复位或重新同步输入。但驱动为高时,PLL计数器重置,清除PLL输出,造成PLL失锁,VCO复位后回到初始设置。当areset再次变低,PLL重新开始锁定,PLL重新和输入时钟同步。如果目标VCO的频率低于标准频率,在锁定过程中PLL时钟输出起始频率值比所需值要高。areset是高有效信号。

  CycloneFPGA可以从内部逻辑或任意通用I/O管脚驱动这个PLL输入信号。areset信号是可选的,如果在软件中没有使用它,该端口内部连接到GND。

  在宏模块向导管理器(PLL)的第6页,同样可以选择PLL模块c1输出参数,包括Ratio比值、相移量、占空比等,如图9.36所示。

  在宏模块向导管理器(PLL)的第7页,可以选择PLL模块e0输出参数,包括Ratio比值、相移量、占空比等,如图9.37所示。

  在宏模块向导管理器(PLL)的第8页,完成PLL参数设置后,可以选择生成的PLL模块文件,共包含6个文件可以生成,如图9.38所示。

  PLL的调用方式与FIFO的类似,其构建方式及模块的声明结构可以参看PLL模块的PLL_test.v和PLL_test_bb.v文件。

  SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。它是一种时分多路复用(TDM)、点对点的通信技术,即在发送端,多路低速并行信号被转换成高速串行信号,经过传输媒体(光缆或铜线),最后在接收端高速串行信号重新转换成低速并行信号。这种点对点的串行通信技术充分利用传输媒体的信道容量,减少所需的传输信道和器件引脚数目,从而大大降低通信成本。

  随着半导体技术的迅速发展,计算机的性能和应用取得了长足进步。可是,传统并行总线技术PCI却跟不上处理器和存储器的进步,而成为提高数据传输速率的瓶颈。新一代PCI标准PCIExpress正是为解决计算机I/O瓶颈而提出的。

  PCIExpress是一种基于SERDES的串行双向通信技术,每个通道的数据传输速率为2.5Gbit/s,可多达32通道,支持芯片与芯片和背板与背板之间的通信。国际互联网络和信息技术的兴起促成了计算机和通信技术的交汇,而SERDES串行通信技术逐步取代传统并行总线正是这一交汇的具体体现。

  一个典型SERDES收发机由发送通道和接收通道组成,如图9.39所示。编码器、串行器、发送器以及时钟产生电路组成发送通道,解码器、解串器、接收器以及时钟恢复电路组成接收通道。顾名思义,编码器和解码器完成编码和解码功能,其中8B/10B、64B/66B和不规则编码(scrambling)是最常用的编码方案。

  串行器和解串器负责从并行到串行和从串行到并行的转换。串行器需要时钟产生电路,时钟发生电路通常由锁相环(PLL)来实现。解串器需要时钟和数据恢复电路(CDR),时钟恢复电路通常也由锁相环来实现,但有多种实现形式如相位插值、过剩抽样等。

  发送器和接收器完成差分信号的发送和接收,其中LVDS和CML是最常用的两种差分信号标准。另外还有一些辅助电路也是必不可少的,例如环路(loopback)测试、内置误码率测试等。

  数千兆位收发器功能块差分I/O缓冲支持1.5VPCMLI/O标准,有许多改善系统信号完整性的特性。例如,动态可重配置预加重和均衡功能,调整信号以补偿信号经过传送介质的衰减。不同的可编程VOD设置确保了驱动强度匹配传输线电阻和线长。另外,差分片内匹配为中等性能信号提供了合适的接收器和发送器缓冲匹配。

  发送预加重块使收发器(SERDES)可以驱动更长的背板或超过1GHz频率下的电缆。在这些频率下,通道损耗是很高的,衰减是很明显的,因为眼图的关闭无法让发送的信号继续传送。预加重信号提升信号的高频部分,补偿传输线的衰减。使用可编程的预加重设置,能够为给定的传输线选择最优的水平(或者在软件设定,或者通过内部或外部信号动态选择),让信号眼图在远端张得最开。

  每个数千兆位收发器功能块有一个专用发送器PLL和四个专用接收器PLL,提供灵活的时钟拓扑,支持一系列的输入数据流。对于输出传送和接收,这些PLL根据更低速的输入参考时钟生成所需的时钟频率。每个PLL支持4、8、10、16或20的倍增因子。每个外部参考时钟或StratixGX内的各种时钟源都可以驱动PLL。

  在串行数据传输中,发送和接收器件的时钟频率通常是不匹配的。这种不匹配会引起数据以略快或慢于接收器件能解释的速度传送。StratixGX速率匹配器从数据流中插入或删除如传送协议中定义的可移除的符号,解决了恢复时钟和PLD逻辑阵列时钟的频差,而不会丢失传送的数据。StratixGX数据匹配器为使用8b/10b编码数据的系统进行了优化。

本文由晋城市报警模块有限公司发布于使用说明,转载请注明出处:FPGA系统设计原则和技巧之:FPGA系统设计的3种常

关键词: 过滤模块