9.3FPGA体系规划的3种常用IP模块
FPGA的开发东西软件,如QuartusII、ISE等,一般都会供给一些经过验证的IP模块。这些IP模块是芯片厂家供给的,所以只能用于该厂家的FPGA芯片规划中。这些IP首要包含以下几类。
·算术类,如乘法器、加法器、除法器等。
·逻辑类别,如与门、或门、非门等。
·存储器类,如FIFO、RAM、ROM、移位寄存器等。
·I/O类,如双向IO、PLL、LVDS等。
·接口类,如以太网MAC、PCI接口操控器、高速串行收发器(SERDES)等。
·商业IP核,需求付费购买的。
以上的IP中,最常用的3个IP别离是片上存储器(RAM/ROM/FIFO),锁相环(PLL/DLL)和高速串行收发器(SERDES)。灵敏运用这些IP,可以前进规划的功用,一起下降规划的复杂度。
IP模块的完结办法首要有3种:运用HDL代码描绘、运用归纳束缚特点例化或类推、运用器材商的IPcore生成器。
典型功用的IPcore都可以经过这3种途径完结。其间前两种办法需求学习归纳RAM、ROM、CAM等存储单元的CodingStyle或束缚特点,后一种办法十分便利、直接,主张初学者首要要把握运用器材商IPcore生成器规划RAM、ROM、CAM等存储单元的办法。
下面经过QuartusII东西别离介绍Altera的3种IP模块的运用办法。
9.3.1片上存储器的运用办法
片上存储器由内嵌于FPGA内部的逻辑资源(散布RAM和块RAM)树立而成。树立出来的这些片上存储器的调用办法与分立器材根本共同,但却为开发者省去了许多的PCB布线资源。在小容量的存储器规划中有着十分广泛的运用,一起这些片上存储器还常常用作数据缓冲及时钟域转化等作业。
首要来介绍片上FIFO的运用办法。
1.FIFO
(1)翻开宏模块导游办理器。
在QuartusII中,IP模块的生成都是经过“MegaWizardPlug-InManager”(宏模块导游办理器)完结的,它可以经过如图9.9的“Tools”菜单翻开。
(2)挑选新建宏模块。
在宏模块导游办理器的第1页,挑选新建一个自界说的宏模块,如图9.10所示。
图9.9宏模块导游办理器调用 图9.10新建宏模块
(3)挑选宏模块。
在宏模块导游办理器的第2页,办理器为咱们供给了支撑的宏模块树形目录。经过在该目录中挑选相应的宏模块完结调用。一起在这一页中还可以挑选运用的FPGA器材系列和宏模块的描绘言语,并运用用户自界说的模块名,如图9.11所示。
图9.11挑选宏模块
在本例中,咱们挑选“LPM_FIFO+模块”进行完结。
(4)设置FIFO宽度和深度。
在宏模块导游办理器(FIFO)的第3页,可以设置FIFO的深度和宽度,一起在本页的左下角管帐算出完结这样一个深度和宽度的FIFO所耗费的FPGA资源,如图9.12所示。
图9.12设置FIFO深度和宽度
(5)设置FIFO的操控信号。
在宏模块导游办理器(FIFO)的第4页,可以设置FIFO的操控信号,包含满信号full、空信号empty、运用字节信号组usedw[]、简直满信号almostfull(可编程)、简直空信号almostempty(可编程)、异步清零信号和同步清零信号。
经过挑选是否翻开这些信号来结构一个用户自界说的FIFO,如图9.13所示。
图9.13设置FIFO的操控信号
(6)设置FIFO的方法。
在宏模块导游办理器(FIFO)的第6页,可以设置FIFO的方法。分为Lagacy同步方法和Show-ahead同步方法。差异在于输出数据是在FIFO的读恳求信号rdreq宣布之前仍是之后有用,用户可以依据需求进行挑选,如图9.14所示。
(7)设置FIFO的外部特点。
在宏模块导游办理器(FIFO)的第7页,可以设置FIFO的外部特点,包含输出寄存器运用最佳速度战略仍是最小面积战略,数据溢出及读空状态下的维护机制,还可以强制只运用逻辑单元来结构FIFO,如图9.15所示。
图9.14设置FIFO的方法
图9.15设置FIFO的外部特点
(8)挑选生成的FIFO模块文件。
在宏模块导游办理器(FIFO)的第8页,也便是终究一页,可以挑选生成的FIFO模块文件。在QuartusII软件中,宏模块导游办理器可为FIFO生成7个文件,如图9.16所示。
图9.16挑选生成的FIFO模块文件图9.17翻开工程添加/删去文件对话框
(9)向工程添加FIFO模块文件。
生成FIFO模块的文件后,在工程的目录下生成了挑选的文件。要在工程中调用这些模块,首要要将这些文件添加到工程中来。
翻开“Project”菜单,挑选其间的“Add/RemoveFilesinProject…”选项,如图9.17所示,翻开工程添加/删去文件对话框。
在翻开的对话框中,挑选向工程添加3个文件,如图9.18所示。
图9.18添加FIFO模块文件图 9.19工程浏览器
添加成功后,在工程浏览器中,可以看到器材规划文件中现已包含了这3个文件,如图9.19所示。
(10)FIFO模块实例化。
将模块文件参加工程后,规划者就可以调用这个片上FIFO,并实例化了。
首要咱们看一下QuartusII是怎么构建这个FIFO的。翻开fifo_test.v文件,这是FIFO模块的结构规划文件。该结构规划文件首要可以分为下面4个部分。
榜首部分是端口声明和阐明,这部分是依据用户自界说挑选的操控信号及深度、宽度等参数决议的,代码如下:
modulefifo_test(
data, //数据输入
wrreq, //写恳求
rdreq, //读恳求
clock, //时钟
aclr, //异步清零
q, //数据输出
full, //满信号
empty, //空信号
usedw); //字节运用信号
input [31:0]data; //输入数据宽度
input wrreq;
input rdreq;
input clock;
input aclr;
output [31:0]q; //输出数据宽度
output full;
output empty;
output [10:0]usedw; //主动计算出的字节运用操控信号宽度
第二部分是FIFO端口信号与Altera宏模块之间的连线声明,其间只要输出信号需求声明,而输入信号可以直接调用,代码如下:
wire[10:0]sub_wire0; //usedw输出类型声明
wiresub_wire1; //空信号输出类型声明
wire[31:0]sub_wire2; //数据输出类型声明
wiresub_wire3; //满信号输出类型声明
wire[10:0]usedw=sub_wire0[10:0]; //usedw连线
wireempty=sub_wire1; //空信号连线
wire[31:0]q=sub_wire2[31:0]; //数据输出连线
wirefull=sub_wire3; //满信号连线
第三部分是实例化FIFO所调用的宏模块,这儿调用的是scfifo模块,代码如下:
scfifoscfifo_component( //scfifo模块实例化
.rdreq(rdreq), //读恳求
.aclr(aclr), //异步清零
.clock(clock), //时钟
.wrreq(wrreq), //写恳求
.data(data), //输入数据
.usedw(sub_wire0), //字节运用信号
.empty(sub_wire1), //空信号
.q(sub_wire2), //数据输出
.full(sub_wire3) //满信号
.almost_empty(), //简直空信号
.almost_full(), //简直满信号
.sclr() //清零信号
.);
第四部分是参数设置,这儿设置的是scfifo模块的参数,包含宽度、深度以及之前生成过程中设置的那些参数,代码如下:
defparam
scfifo_component.lpm_width=32, //宽度为32位
scfifo_component.lpm_numwords=2048, //深度为2048字节
scfifo_component.intended_device_family=Cyclone,//器材族为Cyclone
scfifo_component.lpm_type=scfifo, //调用lpm为scfifo
scfifo_component.lpm_showahead=OFF, //封闭showahead方法
scfifo_component.overflow_checking=ON, //翻开溢出校验
scfifo_component.underflow_checking=ON, //翻开读空校验
scfifo_component.add_ram_output_register=ON; //运用输出寄存器
在生成的3个FIFO模块文件中,还包含一个fifo_test_bb.v文件,这个文件包含的是fifo_test.v文件的榜首部分内容,也便是说这个文件是FIFO模块的端口声明模块。
剩余的一个文件是fifo_test_inst.v,inst是实例化的简称。在这个文件里边供给了FIFO模块实例化的模板,代码如下:
fifo_test fifo_test_inst( //fifo_test模块实例化
.data(data_sig), //输入数据
.wrreq(wrreq_sig), //写恳求
.rdreq(rdreq_sig), //读恳求
.clock(clock_sig), //时钟
.aclr(aclr_sig), //异步清零
.q(q_sig), //输出数据
.full(full_sig), //满信号
.empty(empty_sig), //空信号
.usedw(usedw_sig) //字节运用信号
);
经过仿制这个模板至工程规划文件中,即可完结FIFO模块的实例化。在进行实例化时,可以修正实例化的称号以及FIFO模块端口信号线的连线资源称号。
下面是将FIFO实例化在IP_Generate_Test工程中的代码。
moduleIP_Generate_Test(…); //调用FIFO模块的规划文件模块
… //连线资源声明
fifo_test fifo_test_inst1( //实例化为fifo_test_inst1
.data(fifo_data), //FIFO数据输入为fifo_data
.wrreq(fifo_wrreq),
.rdreq(fifo_rdreq),
.clock(fifo_clock),
.aclr(fifo_aclr),
.q(fifo_q),
.full(fifo_full),
.empty(fifo_empty),
.usedw() //未实例化的端口保存空白标明不运用该端口
);
…
endmodule
至此,现已在一个工程中完结了片上FIFO的调用。
2.RAM
这儿首要介绍双口RAM模块的生成办法,模块的结构办法及调用办法与FIFO模块相似,不详细介绍。
(1)翻开宏模块导游办理器并新建宏模块。
详细办法拜见FIFO的办法。
(2)挑选宏模块。
在本例中,咱们挑选LPM_RAM_DP模块进行完结,如图9.20所示。
图9.20挑选宏模块
(3)设置DPRAM端口数及容量单位。
在宏模块导游办理器(DPRAM)的第3页,可以设置DPRAM的端口数及容量单位。支撑两种DPRAM:1个读端口和1个写端口的DPRAM,2个读端口和2个写端口的DPRAM。可以设置DPRAM的容量单位为位或许是字节。一起在本页的左下角管帐算出完结这样一个DPRAM所耗费的FPGA资源,如图9.21所示。
图9.21挑选宏模块
(4)设置DPRAM数据宽度及容量。
在宏模块导游办理器(DPRAM)的第4页,可以设置DPRAM的数据宽度及容量,一起可以设置输入输出端口为不同的宽度完结串并或并串转化,如图9.22所示。
(5)设置DPRAM时钟及使能。
在宏模块导游办理器(DPRAM)的第5页,可以设置DPRAM的时钟及使能信号,可以将DPRAM设置为单时钟(输入输出运用同一个时钟),也可以运用独立的时钟。别的还可以为DPRAM添加读使能信号rden,如图9.23所示。
图9.22设置DPRAM数据宽度及容量
图9.23设置DPRAM时钟及使能
(6)设置DPRAM端口寄存器及清零信号。
在宏模块导游办理器(DPRAM)的第7页,可以设置DPRAM的端口寄存器及清零信号,可以挑选是否添加端口的寄存器,如图9.24所示。
图9.24设置DPRAM端口寄存器及清零信号
(7)设置DPRAM初始化值。
在宏模块导游办理器(DPRAM)的第9页,可以设置DPRAM的初始化值。经过挑选MIF文件或许HEX文件可以运用文件中的值对DPRAM进行初始化,如图9.25所示。
图9.25设置DPRAM初始化值
(8)生成DPRAM模块文件。
设置完结一切的参数,来到宏模块导游办理器(DPRAM)的终究一页。可以挑选生成的DPRAM模块文件,共有6个文件可以生成,如图9.26所示。
图9.26生成DPRAM模块文件
DPRAM的调用办法与FIFO的相似,其构建办法及模块的声明结构可以参看DPRAM模块的dpram_test.v和dpram_test_bb.v文件。
3.ROM
这儿首要介绍ROM模块的生成办法,模块的结构办法及调用办法与FIFO模块相似,就不详细介绍了。
(1)翻开宏模块导游办理器并新建宏模块。
详细办法拜见FIFO的办法。
(2)挑选宏模块。
在本例中,咱们挑选LPM_ROM模块进行完结,如图9.27所示。
(3)设置ROM宽度、深度及时钟操控办法。
在宏模块导游办理器(DPRAM)的第3页,可以设置DPRAM的宽度、深度及时钟操控办法。ROM宽度指的是存储器数据位宽,深度指的是具有该宽度的存储单元个数。宏模块导游办理器会依据规划者的挑选主动生成ROM的地址总线,一起也会在左下角显现耗费的FPGA逻辑资源状况。
图9.27挑选宏模块
ROM的时钟操控办法分为两种,一种为单时钟,另一种将输入时钟和输出时钟别离。ROM的输入输出运用的是同一个数据端口,时钟的别离实际上也是对同一个数据端口作操控,如图9.28所示。
图9.28设置ROM宽度、深度及时钟操控办法
(4)设置端口寄存器及清零信号。
这个过程与RAM中的第(6)步相似,不再胪陈,如图9.29所示。
(5)设置ROM初始化值。
相同可以参看RAM运用办法的第(7)步,如图9.30所示。
图9.29设置端口寄存器及清零信号
图9.30设置ROM初始化值
(6)挑选生成ROM模块文件。
设置完结一切的参数,来到宏模块导游办理器(ROM)的终究一页。可以挑选生成的ROM模块文件,相同有6个文件可以生成,如图9.31所示。
图9.31生成ROM模块文件
ROM的调用办法与FIFO的相似,其构建办法及模块的声明结构可以参看ROM模块的ROM_test.v和ROM_test_bb.v文件。
9.3.2锁相环的运用办法
锁相环在数字体系中的运用十分广泛,在Altera的FPGA产品中集成的锁相环是PLL模块,在Xilinx的FPGA产品中集成的锁相环是DLL模块。两者选用的技能不同,可是完结的根本功用大致相同,但也各有特点。
锁相环的原理及在FPGA内部的结构这儿将不做介绍,只以Altera的CycloneFPGA的PLL为例解说其运用办法。
CyclonePLL具有时钟倍频和分频、相位偏移、可编程占空比和外部时钟输出,进行体系级的时钟办理和偏移操控。PLL常用于同步内部器材时钟和外部时钟,使内部作业的时钟频率比外部时钟更高,时钟推迟和时钟偏移最小,减小或调整时钟到输出(TCO)和树立(TSU)时刻。
(1)翻开宏模块导游办理器并新建宏模块。
详细办法拜见FIFO的办法。
(2)挑选宏模块。
在本例中,咱们挑选ALTPLL模块进行完结,如图9.32所示。
图9.32挑选宏模块
(3)设置时钟源,PLL类型及作业方法。
在宏模块导游办理器(PLL)的第3页,规划者可以设置一些PLL根本特点,如器材族、速度等级及基准频率,还可以设置PLL的类型及作业方法。
值得注意的是,这儿的基准频率并不一定是终究规划者向PLL输入的时钟。终究的PLL是经过份额值来对输入频率进行归纳,所以PLL的要害参数是份额值,即图9.33中PLL_test框图中的Ratio值。
例如Ratio值为5/2(经过后边几个过程完结),而基准频率为40MHz,则PLL的c0输出为100MHz。在调用这个PLL时,若规划者运用20MHz的频率输入,则输出的频率为50MHz,而不是100MHz。
别的,在这页中,规划者还可以设置PLL的作业方法,如图9.33所示。
图9.33设置时钟源、PLL类型及作业方法
CyclonePLL支撑3种(反应)方法:规范、零推迟缓冲和无补偿。和其他Altera器材系列不同,CyclonePLL不支撑外部反应方法。一切支撑的3种时钟反应方法答应倍频/分频、相位偏移和可编程占空比。下面临每种方法进行解说。
·规范方法。
在规范方法下,PLL把参阅时钟和逻辑阵列或I/O单元的端口缓存器处的时钟信号相位对齐,补偿内部大局时钟网络推迟。在ALTPLL宏模块导游办理器中,可以界说PLL的哪个内部时钟输出(c0或c1)应该补偿。
假如在该方法中运用外部时钟输出(PLL[2..1]_OUT),则相关于时钟输入管脚有相位偏移。假如用内部PLL时钟输出驱动通用I/O管脚,则相对应的时钟输入管脚也有相位偏移。
·零推迟缓冲方法。
PLL外部时钟输出管脚(PLL[2..1]_OUT)的时钟信号和PLL输入时钟是相位对齐的,没有推迟。假如用c[1..0]端口驱动内部时钟管脚,那么相关于输入时钟管脚有相位偏移。
·无补偿方法。
在该方法下,PLL不补偿任何时钟网络。这样会有更佳的颤动功用,由于反应到PFD的时钟不经过某些电路。相对PLL时钟输入,PLL内部和外部时钟输出都有相位偏移。
(4)设置可选输入输出。
在宏模块导游办理器(PLL)的第4页,可以挑选PLL模块的可选输出信号,如图9.34所示。
CyclonePLL有4个操控信号pllena、areset、prdena和locked,进行PLL办理。
·pllena。
PLL发动信号pllena用于发动PLL。当pllena为低时,PLL时钟输出端口为低,PLL失锁。当pllena再次变高时,PLL从头确定并从头同步输入时钟。因而,pllena是高有用信号。
由于在CycloneFPGA中没有专用的pllena管脚,内部逻辑或恣意通用I/O管脚都可以驱动pllena端口。由于每个PLL都有自己的pllena操控电路或同享通用的pllena电路,这样就很灵敏。pllena信号是可选的,假如软件中没有发动它,端口内部就连接到VCC。
图9.34设置可选输入
·areset。
PLLareset信号是每个PLL的复位或从头同步输入。但驱动为高时,PLL计数器重置,铲除PLL输出,形成PLL失锁,VCO复位后回到初始设置。当areset再次变低,PLL从头开端确定,PLL从头和输入时钟同步。假如方针VCO的频率低于规范频率,在确定过程中PLL时钟输出开端频率值比所需值要高。areset是高有用信号。
CycloneFPGA可以从内部逻辑或恣意通用I/O管脚驱动这个PLL输入信号。areset信号是可选的,假如在软件中没有运用它,该端口内部连接到GND。
·pfdena。
pfdena信号用可编程开关操控着PLL中PFD输出。假如把areset置低制止PFD,那么VCO将以终究设置的操控电压和频率值作业,长时刻会漂移到更低的频率。即便每个输入时钟PLL时钟输出也会持续触发,可是PLL可能会失锁。
当PLL失锁或输入时钟制止时,体系会持续运转。由于在一段时刻内终究确定输出频率不会改动,所以可以用pfdena端口作为关机或铲除功用。为了保持这一频率,体系在关机之前有时刻贮存当时的设置。假如pfdena信号再次变高,PLL从头确定和输入时钟从头同步。因而pfdena管脚是高有用信号。
可以用恣意通用I/O管脚或内部逻辑驱动pfdena输入信号。该信号是可选的,假如在软件没有运用它,该端口内部连接到VCC。
·locked。
当locked输出是逻辑高电平,标明PLL时钟输出和PLL参阅输入时钟安稳同相。当PLL开端盯梢参阅时钟时,locked端口可能会触发,无需额定电路。
PLL的locked端口可以运用恣意通用I/O管脚和内部逻辑。这个locked信号是可选的,在监督PLL确定过程中是十分有用的。
(5)设置c0输出参数。
在宏模块导游办理器(PLL)的第5页,可以挑选PLL模块c0输出参数,包含Ratio比值、相移量、占空比等,如图9.35所示。
图9.35设置c0输出参数
(6)设置c1输出参数。
在宏模块导游办理器(PLL)的第6页,相同可以挑选PLL模块c1输出参数,包含Ratio比值、相移量、占空比等,如图9.36所示。
图9.36设置c1输出参数
(7)设置e0输出参数。
在宏模块导游办理器(PLL)的第7页,可以挑选PLL模块e0输出参数,包含Ratio比值、相移量、占空比等,如图9.37所示。
图9.37设置e0输出参数
(8)挑选生成PLL模块文件。
在宏模块导游办理器(PLL)的第8页,完结PLL参数设置后,可以挑选生成的PLL模块文件,共包含6个文件可以生成,如图9.38所示。
图9.38挑选生成PLL模块文件
PLL的调用办法与FIFO的相似,其构建办法及模块的声明结构可以参看PLL模块的PLL_test.v和PLL_test_bb.v文件。
9.3.3高速串行收发器的运用办法
1.SERDES简介
跟着对信息流量需求的不断增加,传统并行接口技能成为进一步前进数据传输速率的瓶颈。曩昔首要用于光纤通讯的串行通讯技能——SERDES正在替代传统并行总线而成为高速接口技能的干流。
SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。它是一种时分多路复用(TDM)、点对点的通讯技能,即在发送端,多路低速并行信号被转化成高速串行信号,经过传输媒体(光缆或铜线),终究在接纳端高速串行信号从头转化成低速并行信号。这种点对点的串行通讯技能充分运用传输媒体的信道容量,削减所需的传输信道和器材引脚数目,然后大大下降通讯本钱。
跟着半导体技能的迅速发展,计算机的功用和运用取得了长足前进。可是,传统并行总线技能PCI却跟不上处理器和存储器的前进,而成为前进数据传输速率的瓶颈。新一代PCI规范PCIExpress正是为处理计算机I/O瓶颈而提出的。
PCIExpress是一种依据SERDES的串行双向通讯技能,每个通道的数据传输速率为2.5Gbit/s,可多达32通道,支撑芯片与芯片和背板与背板之间的通讯。国际互联网络和信息技能的鼓起促成了计算机和通讯技能的交汇,而SERDES串行通讯技能逐渐替代传统并行总线正是这一交汇的详细表现。
2.SERDES体系结构
依据SERDES的高速串行接口选用以下办法突破了传统并行I/O接口的数据传输瓶颈:一是选用差分信号传输替代单端信号传输,然后增强了抗噪声、抗干扰才能;二是选用时钟和数据康复技能替代一起传输数据和时钟,然后处理了约束数据传输速率的信号时钟偏移问题。
一个典型SERDES收发机由发送通道和接纳通道组成,如图9.39所示。编码器、串行器、发送器以及时钟产生电路组成发送通道,解码器、解串器、接纳器以及时钟康复电路组成接纳通道。望文生义,编码器宽和码器完结编码宽和码功用,其间8B/10B、64B/66B和不规则编码(scrambling)是最常用的编码方案。
图9.39典型SERDES收发机结构图
串行器宽和串器担任从并行到串行和从串行到并行的转化。串行器需求时钟产生电路,时钟产生电路一般由锁相环(PLL)来完结。解串器需求时钟和数据康复电路(CDR),时钟康复电路一般也由锁相环来完结,但有多种完结方法如相位插值、过剩抽样等。
发送器和接纳器完结差分信号的发送和接纳,其间LVDS和CML是最常用的两种差分信号规范。别的还有一些辅佐电路也是必不可少的,例如环路(loopback)测验、内置误码率测验等。
3.SERDES完结办法
SERDES在体系中的完结尽管概念上比较简单,可是硬件完结要求许多细节正确无误,如信号端接、参阅时钟的生成、锁相环(PLL)的运用、背板信号完整性和位错误率的评价等。
下面以Altera的StratixGXFPGA为例介绍其间的内嵌的数千兆位收发器功用块。
StratixGX器材将高速3.125Gbit/s收发器串行/解串行(SERDES)技能和业界最先进的FPGA架构相结合。在FPGA中嵌入的数千兆位收发器功用块,可以在需求灵敏性、高功用和最先进功用的许多新体系中运用收发器。
下面是这个数千兆位收发器功用块的首要特点。
·支撑从622MHz~3.125GHz的一切频率。
·每个块有4个独立的3.125Gbit/s全双工通道,每个器材多达20个通道(5个块)。
·支撑3.1875Gbit/s的10Gbit光纤通道。
·集成时钟数据康复(CDR)、方法检测、字对齐、8b/10b编解码器和同步功用。
·功耗很低,每4通道只要450mW(包含数千兆收发器功用块的功耗)。
·支撑动态可编程:预加剧、均衡和I/O缓冲上的差分输出电压。
·支撑SerialLite协议,这是一个精简的点对点协议。
·对中等功用信号的差分片内匹配。
·彻底完结10Gbit以太网物理介质接入层(PMA)和物理编码子层(PCS)功用。
·支撑灵敏的时钟拓扑,每个收发器模块中有一个发送器PLL和四个接纳器PLL。
·选用1.5V、0.13mm全铜CMOS工艺技能制作,支撑1.5VPCMLI/O规范。
·包含独立的发送器和接纳器节电功用,在不作业过程中减小功耗。
·内嵌自检(BIST)功用,包含嵌入伪随机二进制序列(PRBS)图画生成和验证。
·有4个独立的环回途径用于体系验证。
可以看到,StratixGX的这个收发器功用十分强壮,远远超出了图9.39所示的SERDES根本结构图的功用。图9.40是它的原理框图,需求阐明的是,规划者在运用这个模块时并不一定彻底完结其间的每一个模块,可以依据需求只完结其间的部分内容。
图9.40StratixGX收发机
下面介绍其间的一些模块。
(1)差分缓冲。
数千兆位收发器功用块差分I/O缓冲支撑1.5VPCMLI/O规范,有许多改进体系信号完整性的特性。例如,动态可重装备预加剧和均衡功用,调整信号以补偿信号经过传送介质的衰减。不同的可编程VOD设置保证了驱动强度匹配传输线电阻和线长。别的,差分片内匹配为中等功用信号供给了适宜的接纳器和发送器缓冲匹配。
(2)可编程发送预加剧模块。
发送预加剧块使收发器(SERDES)可以驱动更长的背板或超越1GHz频率下的电缆。在这些频率下,通道损耗是很高的,衰减是很明显的,由于眼图的封闭无法让发送的信号持续传送。预加剧信号前进信号的高频部分,补偿传输线的衰减。运用可编程的预加剧设置,可以为给定的传输线挑选最优的水平(或许在软件设定,或许经过内部或外部信号动态挑选),让信号眼图在远端张得最开。
(3)可编程接纳均衡器模块。
接纳均衡器块使得收发器(SERDES)驱动更长的背板或超越1GHz的电缆。当信号经过接纳器均衡器块时,相同可以前进信号的高频部分能量,补偿传输线的高频衰减目标。可编程均衡水平可以依据传输线进行优化(或许在软件设定或许经过内部或外部信号动态挑选),让信号眼图在CDR单元输入端张得最开。
(4)发送器和接纳器PLL。
每个数千兆位收发器功用块有一个专用发送器PLL和四个专用接纳器PLL,供给灵敏的时钟拓扑,支撑一系列的输入数据流。关于输出传送和接纳,这些PLL依据更低速的输入参阅时钟生成所需的时钟频率。每个PLL支撑4、8、10、16或20的倍增因子。每个外部参阅时钟或StratixGX内的各种时钟源都可以驱动PLL。
(5)时钟康复单元。
CDR从输入串行数据流中提取时钟。康复的时钟用于采样串行数据流、同步操控解串行器。
(6)串行/解串模块。
SERDES模块将输入的高速串行数据转化为更低速度的并行接口,反之亦然。SERDES模块可以装备为8、10、16或20位并行接口。
(7)方法检测器模块。
方法检测器模块辨认输入数据流中的特别方法。方法检测器包含一个内建的8b/10b的K28距离符号检测和SONET的A1A2方法检测。在定制方法下,规划者可以创立专用方法。
(8)字对齐模块。
字对齐模块和方法检测器共同辨认和调整正确的字节鸿沟。此外,字对齐有一个定制方法,可以从FPGA内核逻辑人工地操控字节对齐。
(9)速率匹配器模块。
在串行数据传输中,发送和接纳器材的时钟频率一般是不匹配的。这种不匹配会引起数据以略快或慢于接纳器材能解说的速度传送。StratixGX速率匹配器从数据流中刺进或删去如传送协议中界说的可移除的符号,处理了康复时钟和PLD逻辑阵列时钟的频差,而不会丢掉传送的数据。StratixGX数据匹配器为运用8b/10b编码数据的体系进行了优化。
(10)信道对齐器。
信道对齐器消除了完结4个收发器XAUI协议相关的信道至信道的偏移。信道对齐器消除4信道的偏移,为内核逻辑树立了牢靠的以太网XGMII接口。
(11)8b/10b编解码器。
8b/10b编解码器模块将8比特的数据转化为10比特的数据,反之亦然。该算法平衡了串行数据流中“0”和“1”的数量,添加了改换密度,因而更易于接纳器康复串行数据。
(12)同步器。
同步器补偿了并行收发器接口和FPGA内核逻辑之间的相位差。
(13)内建自测。
BIST为收发器供给了一组强壮的确诊才能。它包含伪随机二进制序列(PRBS)和其他图画的生成器和查看器。BIST也供给了4个环回装备用于体系确诊。