




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XilinxFPGA 内部结构深入分析作者:fpga001。论坛:芯片动力(SocVista)。网页地址:http: 的结构请大家看到手册的第1页,这是IOB的review部分。IOblock是高手的领地,一般接触FPGA第一年都不会太关心到这个部分。注意看,IOB有三个数据通道:输入、输出、三态控制。每个通道都有一对存储器件,他们可以当做寄存器或者锁存起来使用,视乎你的设置。输入通道有可编程的延迟模块,可以确保holdtime为零。(这是在什么场合使用?请达人补充!)另外可以看到输入输出通道都有完备的DDR支持,这个在后面可以看到。所有图都请参考PDF原文,这里就不再粘贴了。可编程输入延迟看
2、到手册第3页,这个像两根鱼骨似的构造就是输入延迟了。输入延迟一共16节,每节250ps,所以总共的延迟在04ns之间。这个鱼骨的构造非常巧妙,前面8节直接级联,只有一个输出。这样8节以内的调整就跳过这根长鱼骨;而超过8节的调整就直接利用第一根鱼骨,然后在后面的8节中进行微调。调整的输出分别供给IOB中的异步和同步单元,异步就是直接穿过IOB,同步则是经由存储单元流出IOB。异步单元精度较高,可以单节调整,所以精度为250ps;同步单元精度稍低,两个节为单位调整,所以精度只有500ps。上述内容看图便知可编程输入延迟的设置输入延迟的设置只能在Image配置的时候建立, 在设备工作期间无法改变。
3、我想有两种方法可以改变输入延迟的设置:1 .通过延迟原语在代码中设置;2 .通过FPGAeditor在P&R完成后在ngc文件中修改。存储单元存储单元可以配置为D触发器,就是我们常说的FF,Xilinx称之为FD;也可以配置为锁存器,Xilinx称之为LD。输出和三态通路各有一对寄存器外加一个MUX。利用这种2+1的组合可以产生DDR操作,Xilinx称之为ODDR2。每个存储单元都有6个接口信号:时钟+时钟时能,数据输入+输出,置位复位+翻转输入除了这些信号,存储单元还有一些属性设置:- FF/Latch可以用来配置存储单元的类型;- Sync/Async配置置位复位的方式;- SRHIGH
4、/SRLOW配置是置位(1)还是复位(0);INIT1/INIT0配置置位复位的初始值,一般置位(1)复位(0);DDRDDR 支持输入、输出、三态。这三个IOB通道都可以实现DDR支持。输出和三态通道可以实现ODDR2原语,这个原语的实现原理可以参考p5的图3.两个相差180度的时钟和两路信号进入一对寄存器并通过DDR专用MUX输出,即可得到DDR数据输出。实现相差180度,有两种方法。一种是通过DCM直接产生这两个信号。另外的方法是同一时钟,但是连入寄存器的时钟端口时,一路取反。输入通道则实现IDDR2原语。如果输出、三态通路实现的是DDR的调制的话,这一路其实就是DDR的解调,也就是1分
5、为2。当然,这里需要提供两路相差180度的时钟。另外ODDR2还有一个重要用途,就是用于产生随路时钟。只要把两路数据固定为1和0,这样产生的DDR数据其实就是0/1交叉的时钟信号了,这个一想就明白了吧。这样做的好处是:数据和时钟都经过IOB寄存器处理,具有相同的延迟特性,从而实现了所谓的源同步级联”重定时特性一一提高 DDRDDR 的性能在IDDR2和ODDR2的典型实现(图4图6)中,存在一个问题.以IDDR2为例,我们可以发现,在经典实现中,输出的两路数据分别与时钟的两个边沿对齐。但是,强调一下,后端的系统中往往只有一个时钟,工作在上升沿。那么对于下降沿对齐输出的数据,从下降沿开始到上升沿
6、被采样,只有半个时钟的余量来稳定输出并满足setup。由于FPGA系统比较复杂从IOB出来的数据要进入到下一个存储单元可能会经历非常漫长的逻辑和路由延迟。要在半个时钟内完成,有很大的挑战性,尤其是在高速系统中,往往有很大的困难。Spartan3E的解决办法是,利用相邻从属IOB的存储单元,对下降沿输出的数据马上做一次上升沿抽样。由于两个IOB相邻,不存在复杂的逻辑和路由延迟,因此虽然余量也是半个时钟,但一般情况下甚至高速系统下也可以成功实现。这样数据就回到了上升沿时钟域。到了上升沿时钟域,则数据有一个时钟的时间余量,处理起来就和普通的情况一样了。以上是关于IDDR2的讨论,对于ODDR2有着类
7、似的情况,大家可以自己理解一下。参考图6图7即可。想到一个资源守恒的公理,就是自然界普遍存在的tradeoff现象。如果添加一个寄存器抽样, 则系统负担降低; 反之如果想少使用资源, 不使用这个抽样寄存器, 则全系统的负担会提高。这个例子告诉我们两个道理1 .tradeoff普遍存在2 .四两可以拨千斤SelectIOSelectIO 信号标准S3E可以支持很多接口信号标准,比如最常见的LVTTL、LVCMOS系歹U、PCI系歹U。此外,还支持差分信号标准,典型的比如LVDS系列。要实现指定的信号标准有两个必要条件:1 .内在设置: 在UCF文件中对指定pin设置IOSTANDARD属性, 这
8、样FPGA会自动切换指定IOB的信号标准;2 .外在设置:每个信号标准都要求指定的Vcco(有些还要求指定的Vref),因此要在PCB板上提供相应的Vcco支持。再来说说差分信号,他的优点是差分信号固有的噪声消除特性来提高数据的可靠性,从而提高单路数据的传输速率。差分信号的命名有套规则,比如:IO_L43P_3和IO_L43N_3就表示Bank3里面第43对差分线的正负两根线。差分信号的 terminationtermination差分信号一般传输速率较高,因此对信号的完整性有严格要求。方法之一就是使用termination来防止信号反射。为了减少用户的外部负担,S3E实现了内部的差分term
9、ination。使用方法就是在UCF中加入下列语句。INSTDIFF_TERM=;上拉下拉电阻pullup、pulldown的主要目的就是将悬空的管脚引导到确定的状态,避免未知的干扰。所以在悬空的管脚,确定输入的管脚以及三态管脚上用的比较多。要修改管脚的pullup、pulldown、float属性,可以在BitGen的时候从GenerateProgrammingFile的属性中选择保持电路三态信号在没有驱动的时候悬空,为了防止悬空,有一个保持电路可以帮助信号保持在前一逻辑状态。具体使用方法-使用KEEPER属性-使用KEEPER库原语注意,如果使用了上下拉电阻,则该属性被重置,因为实现的功能
10、是类似的。差异是上下拉将悬空信号拉回确定值,而KEEPER是保持回前一逻辑值。电平转换速率 SlewRateSlewRateSlewRate用于设置IOB输出电平的切换速率。速率太低则很多接口时序得不到保障,因此有时候需要使用高速的切换速率。实现的方法就是加大驱动电流,从2mA到16mA,每2mA有一个选择。电流越大,当然驱动能力越强,相应的电平切换速率也更快。但是高速的切换会导致PCB电路的传输线效应,所以只要能满足应用,尽量采用低速的SlewRateBankBank 内的 IOBIOB 组织S3E的四边各有一个IOB的BanKo每个Bank可以有自己独立的Vcco和Vref,所以一般的,每
11、个bank可以有自己独立的电平标准。有些电平标准有相同的Vcco,则在该Bank内可以支持多个电平标准。对于差分信号,每个Bank都可以支持下面三个差分标准中的任意两个-LVDS_25-MINI_LVDS_25-RSDS_25但是不能做到同时支持这三个标准BankBank 内部电平标准的规则Vcco规则:- - 所有Vcco必须连接,即使不使用某个bank;- - 同属于某个Bank的所有Vcco必须设置为相同的电平- - 所有Vcco必须和指定的电平标准电压相符- - 如果某个bank没有指定电平标准,则将其连接到任意电平,比如2.5或者3.3VVref规则:(前提是该电平标准要求使用Vre
12、f)- - 所有Vref必须连接,即使不使用某个bank;- - 同属于某个Bank的所有Vref必须设置为相同的电平- - 所有Vref必须和指定的电平标准电压相符如果某个bank对应的电平标准不需要Vref来偏置输入切换门限,则该Vref管脚可以用做用户IO或者输入管脚。专用的输入管脚专用输入管脚一般用IP_Lxxx_x表示。对于专用输入管脚,没有差分termination。静电保护在每个IO上都有静电保护,大家看文档的图1就明白了。在pad-Vcco之间有P-N偏置保护。在pad-GND之间有N-P偏置保护。在静电过大的时候,通过这两个保护二极管可以直接将电流泄洪到电源与地IOBIOB
13、的电源支持Vcco用于对驱动输出的支持。Vccint用于驱动内部逻辑。Vccaux是辅助电源,用于优化FPGA性能(这个谁有补充?)在上电、配置、用户模式下,IOIO 的行为分析- - 上电状态首先,电源稳定。Vcco、Vccint、Vccaux作为内部主电复位电路”的必要电源输入,必须达到稳定状态。这些基本电源稳定了才能实现上电复位,芯片才能进入配置状态。其次,IO高阻上拉,切断外部接口。HSWAP管脚被施加一个低电平。注意,这个低电平会维持到配置结束。这个低电平的作用是将用户IO全部上拉。我想这样做的目的是令所有IO进入确定状态,避免对配置操作的干扰。最后,全局复位,切断边缘存储通道。FP
14、GA内部设置全局置位复位”,异步方式将所有IOB存储单元清零- - 配置阶段首先,确定配置模式。INIT_B高电平,并抽样M0,M1,M2的值,据此确定配置模式。然后,下载数据到FPGA。注意,整个配置期间,IO继续保持高阻上拉状态。最后,释放GSRo释放全局GSR,IOB寄存器回到默认的Low状态,除非设计中改变了SR输入的极性,否则都是Low状态。- - DesignOperationDesignOperation 阶段首先,全局三态释放,打通外部接口。GTS释放,令所有IO都进入活跃状态,未使用的IO则被弱下拉。通过在BitGen中设置属性,可以修改GTS释放后未使用IO的状态设置,比如
15、上拉、下拉、悬空。其次,全局写使能,打通内部存储通道。在一个时钟后,GWE全局写使能被释放。这样RAM和寄存器就都可以写入了,也就是设计可以动作起来了。注意,在该阶段HSWAP释放,所以他也可以被用作普通的GPIO。【上面的这个内容是写到现在最重要的一部分,对于理解整个 FPGA 的启动过程非常有帮助。】CLBCLB 概览CLB是可配置逻辑块的简称。这是FPGA整个矩形配置结构中的基本单元。1CLB=2X2Slice1Slice=2(LUT+FF)+其他运算、进位、MUX资源每个CLB都是相同的,所以知道一个就知道了全部。接下来重点研究CLB。SliceSlice上面讲到了一个CLB有2*2个
16、Slice。这个4个slice可以分成左右两对,我们来看他们的主要区别。左边的是SLICE-M,带有存储增强功能(分布式存储器,移位寄存器等)。右边的是SLICE-L,没有存储增强功能。那么为什么左右不一样呢?我认为,提供SLICE-M的目的就是为了让通用FPGA能够对存储应用有更多支持。那为什么右边的没有存储增强呢?最重要的原因是减小CLB右侧的面积,从而降低整个芯片的价格成本。同时,纯粹的logic设计可以提供比混杂设计的SLICE-M更优的性能。LogicCellLogicCell 的概念经常有人混淆CLB和LC的概念。这里就给大家澄清一下。CLB就不用讲了,就是上面说到的2*2slic
17、e阵列构成的可配置逻辑块。LC则比CLB要小多了。如果给个公式就是:LogicCell=1LUT+1FF(存储单元)那么一个Slice等价于多少LC呢?看到后面的内容你会知道,一个Slice里面有两个LUT和两个FF,但是除此之外,还有些运算增强单元。所以Xilinx给出的S3E的slice等价LC个数为:2.25SliceSlice 结构概览终于讲到Slice了。这个是研究FPGA的重中之重。接下来要分成若干小点分别讲述,如果要观察全部结构则最好参考14页的图12.这个图是Slice-M的结构图,注意里面的虚线部分是SliceM专有结构,在slice-L中并不存在。通过比较,SliceL的结
18、构也就非常清晰了。逻辑通路与 bypassbypass 通路一个slice可以简单分成上下两部分,两部分的结构基本一致,有着近乎相同的元素。下半部分一般冠以前缀或者后缀“F;上半部分则冠以前缀或者后缀“G G。现在以F为例,来研究一下主要的数据通路。参考的图片主要还是14页的图12,这个图太经典了。先来说明一下逻辑路径,这个路径必然经过LUT,否则就不能成为逻辑路径,而只能成为旁路路径。总结一下,主要的逻辑路径是5个:大家有兴趣的话,可以自己用笔标示一下这些通路,非常清晰。如果要记忆的话,其实也很简单,一是逻辑运算后的直接输出和寄存器输出;二是加法、乘法的直接输出和寄存器输出;三是LUT4到L
19、UT5甚至更多级的运算扩展输出。资料中还提到了旁路bypass通路,这个通路的特点是必然不经过LUT,所以称为旁路。旁路的应用比较多,但是为了集中精力,这里不再展开,大家自己研究吧。LUTLUT 查找表LUT就是lookuptable的简称,可以称为查找表。因为一个逻辑运算的与非门实现和ROM形式的查找表实现是完全等价的,这个在数电知识里学过的。在FPGA中,逻辑电路的实现,主要就是依靠LUT。当然在SliceM中,LUT的能力更强,可以被配置成为DistributedRAM或者16位移位寄存器。此外,在Spartan3E中,所有的LUT都是LUT-4也就是4输入的,但是他们可以扩展为LUT-
20、5/6/7/8,方法就是我们接下来要介绍的wideMUXWideMultiplexersWideMultiplexers 构造高阶 LUTiLUTi 的神兵利器有了LUT4,如何实现LUT5?这个问题的答案其实很简答。对于4位输入的逻辑可以用LUT实现,那么对于一个5位输入的实现,就可以这样来做。首先假设第5比特为0,在这个前提下,5位逻辑就变成了4位逻辑,用一个LUT4(F)实现。然后假设第5比特为1,在这个前提下,5位逻辑也变成了4位逻辑,用另一个LUT4(G)实现。最后,我们把这两个LUT4的输出值用一个MUX连接,当第5比特为0,我们就选通F,为1则选通Go这样通过整合两个LUT4和一
21、个MUX,另外用第5比特作为选通信号,我们得到了一个等价的LUT5。循环使用上述方法,我们可以进一步得到LUT-6/7/8.可以发现这里非常重要的一个资源就是MUX,Spartan3E称为widemultiplexero在一个Slice中,下半部分只提供F5MUX,也就是用于构造LUT5的MUX。而在上半部分中则没有F5MUX,因为一个slice刚好两个LUT4,有一个F5MUX就够了。但是上半部分提供了一个FiMUX,这个i可以是6、7、8。这样,上半部的FiMUX就为扩展更大规模的LUT-i提供了物质基础。.5.从LUT输出后,再通过X口,离开CLB从LUT输出后再经过从LU
22、T输出后再经过上述三种情况中,不从从LUT输出后再经过XOR运算(加法或乘法应用),再通过X口,离开CLBF5MUX(等价于LUT-5扩展),在通过X口或者F5,离开CLBX口输出,而是经由FF输出,通过XQ,离开CLBCYMUX,参与到加法运算的进位链中如果要细究一下哪些slice提供F6/7/8MUX,可以这样来归纳。一个CLB中的下面两个slice,只能提供F6MUX。上面的两个slice中,SliceM提供F7MUX,SliceL提供F8MUX。另外,LUT作为4比特逻辑能够实现2:1MUX功能,因此借助wideMUX可以实现更高阶的MUX。最后重点关注一下F5MUX中提高性能的一个细
23、节。F5MUX的选通输出,如果要构造LUT-6,就可以直接将输出绕回本Slice的F6MUX。为此,F5MUX特意创建了两个输出口,一个输出到CLB外,一个则利用本地反馈电路快速绕回到FiMUX进行级联。进位与算术逻辑这是Slice结构部分的高阶知识。Slice的主角是LUT,他有个缺陷,就是比较适合完成普通的逻辑设计,也就是单比特输出的运算。但是在设计中,大量用到算术逻辑,最常见的就是乘法和加法,这些运算的特点就是多个输出。比如带进位的1比特加法运算,结果有两个比特,一个是部分和,一个是进位。如果用LUT来实现的话,这么一个简单的运算都至少需要两个LUT来完成,非常浪费。为了避免这种浪费,X
24、ilinx想出了妙计, 就是在Slice中添加几个简单的XOR和AND门。 这些门数量极少, 但是画龙点睛, 把算术逻辑激活了。比如上面的单比特加法,只使用一个LUT,然后搭配简单的几个门就搞定了,大大节省资源。我们看以参考经典的图12和图20、21,我们发现,支持算术逻辑的单元并不多。在slice的上下两侧各有这样一套资源。每套资源都是一个三元组:AND、XOR、CYMUX。结合图20、21,我们可以领悟到,这些资源其实就是为了实现部分和”运算和部分积”运算而实现的。从而构造出一个完整的、高效的算术逻辑运算通道。对于加法和乘法,产生部分和以及部分积是在横向完成的,并且没有积累,所以时序上没有
25、问题。但是进位链由于具有累积效应,因此必须有专门的针对性设计。我们可以看到Spartan3E里面就有这样的一条进位链自下往上,通过一堆级联的MUX快速输出。这个就是Xilinx的进位链优化电路。存储单元存储单元是通用的设计,可以配置成为FF,也可以配置成为Latch。关于两者的差异,请自己查阅手册。基本上存储单元的输入数据来自两个部分:1 .LUT组合逻辑输出;2 .旁路数据一个存储单元有12个输入输出口,当然配置在不同的类型下,会使用到不同的接口。D-Q是输入输出数据信号,我给他列成一对;C-CE是时钟和时钟使能,也是一对;G-GE是配置为latch时的门和门使能信号,又是一对;S-R是同步
26、set/reset信号,两者取反,所以等效于一个信号;PRE-CLR是异步set/reset信号,两者取反,所以等效于一个信号;SR-REV和S-R以及PRE-CLR是一个系列,只不过他们是CLB的输入信号,在Slice内部,他们化身成了S-R以及PRE-CLR。注意SR是一个通用用法,你可以通过SRLOW和SRHIGH属性来将其设置为SET用途还是Reset用途。提一下REV,这个信号和SR同时作用,当他有效时,set/reset的值就取反。感觉很全面,不过又感觉好无聊,尽整一些没用的东西。分布式存储 DistributedRAMDistributedRAM一个SliceMLUT存储16位数
27、据(RAM16)。通过多个LUT的组合,可以对宽度和深度进行扩展,比如16x4,32x2,64x1。要提高地址空间就需要有地址线的扩展,LUT4只接收4位地址,扩展的地址由BX、BY两个旁路信号提供。有了这两个信号,地址就是6位的,深度就是64。写操作是同步的,也就是和写时钟(SliceM的CLK)同步。读操作则是异步的,随时反映当前读地址的内容。接下来重点研究一下SliceM如何构造dualportRAM。这个非常巧妙。建议大家对照图12、23进行研究。注意SliceM中上面的LUT可以同时读写,而下面的是只读的。这和dualport的定义有关,dualport是一侧只读、一侧只写,所以有一
28、个读,来减小控制逻辑。由于在逻辑上只有一个存储空间,所以两块LUT的内容必须一致。这就要求所以写操作必须同时反映到两个LUT,要完成这一点,必须令写使能、写地址、写数据同时反映到两个LUT。观察图12的两个LUT的WS(写使能)、WG-WF(写地址)、D1(写数据)的级联关系就明白了。好了,到此我们保证了写操作的正确性和两块LUT的内容一致性。那么读操作怎么完成呢?我们观察到,除了WG-WF,还有一个名为A4:1的地址总线。这个地址总线独立于写地址总线,从而确保了独立的读操作。然后读出的数据由LUT的D端输出。作为DualportRAM使用的时候,读数据从下端LUT的D口输出。最后,介绍一个使
29、用注意:1 .INIT属性用于初始化RAM;LUT完全可以只2 .如果只要ROM功能,则SliceL也可以提供;3 .全局写使能信号GWE在配置阶段关闭,可以防止对RAM初始值的干扰;总之,通过上面的内容我们明白了,SliceM和SliceL在存储支持上的最大区别:- SliceL只能支持读功能,比如ROM- SliceM则支持读写以及DualPort实现,因此在读写地址独立和输入数据通道等方面做了增强移位寄存器-构造Slice-M的LUT有个优势,就是可以构造16位的移位寄存器。由于一个SliceM内有两个LUT,所以可以级联构造32位寄存器。进一步,一个CLB内有上下两个SliceM,可以
30、构造64位的移位寄存器。事实上,以此类推,多个CLB可以进一步构造更长的移位寄存器。-例化要使用移位寄存器可以使用SRL16(ShiftRegisterLUT16bit),他有很多变种,可以构造出多种形式的近似的移位寄存器。他的输出有两个,一个是可寻址的输出,这是可变长度的移位寄存器的输出。另外一个名为MC15,是LUT中的最后一个比特,用于多个移位寄存器级联时使用。因为级联的上级SR总是从最后一个比特连到下一个SR。移位寄存器有原语,好像是SSRL16,大家可以试用一下。在Xilinx的技术文档中可以找到更多的SR形式。-不包括FF很多人疑惑,SR中是否有FF存在,其实图25清楚的回答了这个
31、问题。可以看到SR是完全由SliceM的LUT实现的,FF不在其内。当然可以在SR之外和FF连接,构造更长的SR。BlockRAMBlockRAM 概览在spartan3E系列中,每个FPGA基本有4-36个BRAM。每个这样的BRAM都是DualPort的、可配置的18Kbit存储器。为什么是18Kbit呢,可以这样记忆,16K做数据,2K做校验位。当然你一定要放18K数据也是可以的,但是涉及初衷肯定是考虑了校验位的需要。所以以后如果使用小的内存就用我们前面讲过的Slice(LUT)分布式RAM。如果要大块的,就不要麻烦了,直接例化BRAM。BRAM有几种主要的可配置项:- 初始值(比如可以
32、放启动软件代码)- 端口aspectratio,这个我会在后面介绍,简单讲就是输入输出数据长度的不对称配置- 写状态下的数据输出模式- 单端口双端口配置BRAMBRAM 的片上位置BRAM和乘法器相邻,两者一起以12纵列的形式放在FPGA内部。根据FPGA的大小,有些只有1歹U,有些有2列。每个BRAM都和一个18x18的乘法器相邻。BRAM的A口上端16位和乘法器A口上端16位共享。BRAM的B口上端16位和乘法器B口上端16位共享。不知道这样做的目的是什么,请大家补充BRAMBRAM 的端口结构BRAM被配置为双端口结构。每个端口都有其独立的数据、控制、时钟总线。根据这个特点,一个BRAM
33、可以有四种基本的读写数据通路:- 只从A端口读和写- 只从B端口读和写-A写B读-B写A读通过原语调用 BRAMBRAMBRAM的调用原语有两种,一种是当做dualport调用,一种是当做singleport调用。当dualport调用时,使用原语RAMB16_Swa_Swb,例如-RAMB16_S9_S18:双端口RAM,A端口宽度为9,B端口宽度为18当singleport调用时,使用原语RAMB16_Sw,例如-RAMB16_S18:单端口RAM,端口宽度为18BRAMBRAM 端口宽度比和很多人先入为主的印象不一样,BRAM是支持灵活的端口宽度的。端口A和端口B相互独立,两者可以配置成
34、为不同的宽度。通过寻址单位(A/B端口各不相同)的适配,两侧都能实现正确寻址。比如一侧宽,一侧窄,则在窄的一侧寻址时,宽的数据被分割成窄的数据单元。相反的,在宽的一侧寻址时,窄的数据被合并成宽的数据单元。图28非常经典。建议大家反复欣赏。假设A端口宽度为36位,则一个36位数据(4个字节,以及4个相应校验位)只占1个寻址单元。现在来对B端口宽度的各种情况进行假设:-36位:和A端口一样,原来的36位仍然占用一个寻址单元-18位:原36位数据(含校验位)均匀的一分为二(2x2字节+2比特校验),占用2个寻址单元。-09位:原36位数据(含校验位)均匀的一分为四(4x1字节+1比特校验),占用4个
35、寻址单元。-04位:原36位数据的4比特校验位被丢弃,原数据分割为(8x4比特),占用8个寻址单元。-02位:原36位数据的4比特校验位被丢弃,原数据分割为(16x2比特),占用16个寻址单元。-01位:原36位数据的4比特校验位被丢弃,原数据分割为(32x1比特),占用32个寻址单元。注意:当宽度小于8比特时,因为原来的字节校验无法继承下来,所以校验信息被丢弃。BRAMBRAM 属性定义-INITxx(INIT00INIT3F)初始化BRAM数据位,在配置阶段载入,每个初始化字符串定义32个Hex值,总共16Kbit。(貌似有笔误,INIT7F才符合)-INITPxx(INITP00INIT
36、P0F)初始化BRAM校验位,在配置阶段载入,每个初始化字符串定义32个Hex值,总共2Kbit。-INIT(单端口)INITA/INITB(双端口)数据输出锁存初始化,是一个和端口宽度匹配的Hex值。-SRVAL(单端口)SRVAL_A/SRVAL_B(双端口)数据输出锁存同步重置,是一个和端口宽度匹配的Hex值,用于重置输出锁存值。-WRITE_MODE数据输出锁存行为(写操作下):有先读、先写、不变,一共三种模式写操作下的数据输出锁存行为这是紧接着上面的内容写的。在写操作下,数据如何输出,一般不怎么关心。但是在特殊的应用下,设置不同的模式,可能可以提供到便利。我们只要大概理解就行了。- 先写这种模式下,正在写的数据穿肠而过,直接输出。- 先读这种模式下,写地址处的原数据被读出。用于保护原始数据非常有用。- 不变这种模式下,写操作前的输出数据被锁存并持续输出,整个写操作期间都不改变。BRAM到此就结束了,想想真的没有什么内容。专用乘法器FPGA在数字信号处理方面比DSP的功能要弱。但是为了争取更多用户,FPGA也把DSP的核心一一专用乘法器带入了芯片。一个典型的乘法器有着18X18=36的输入输出结构。两个输入端口和一个输出端口都有可选的寄存器,用于适配不同的应用需求。调用乘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内贸英文合同范例
- 2025年玉树货车上岗证理论模拟考试题库
- 中信银行抵押合同范本
- 代为追偿服务合同范本
- 绵阳水下安装拆除施工方案
- 仓库保管合同范本
- 修路建房合同范本
- 书籍稿件出版合同范本
- 农村宅基地分割合同范本
- 勘查委托合同范本
- 2023版马原专题课件:专题一马克思主义观;专题二辩证唯物主义世界观
- 乡村研学旅行方案
- 《养老机构认知障碍照护专区设置与服务规范》
- 货币流通的形式和层次课件
- DLT 5630-2021 输变电工程防灾减灾设计规程-PDF解密
- 输电线路安全施工培训
- 梅毒螺旋体抗体胶体金法检测试剂条生产工艺的优化
- 降低非计划性拔管的发生率课件
- 2024年湖南中职学校语文普测备考试题库(浓缩500题)
- 2024年新疆维吾尔自治区专升本考试大学政治测试题含解析
- 2024年哈尔滨铁道职业技术学院单招职业技能测试题库及答案解析word版
评论
0/150
提交评论