群落分类的基本单位是样地(或样方),即群落实体。群落的内涵特征描述项目,如种类组成、种的频度、多度或显著度等的数值,即反映实体属性的信息。数值分类一般是按属性的相似或相异程度,将所有样地(或样方)集合分成若干个“同质的”样地(样方)组,使组内的成员尽可能地相似,不同组的成员尽可能地相异。即按群落所包含的各个属性、或规定的各项属性的变异幅度来分类。这些“同质”的样方组,可以是等级的分类类级(如传统分类的群丛,群属,群目,群系等),也可以是非等级的类级(统称为植物群落型)。通常按属性分类,用样方间的矩阵CN,称为正分析,或R分析方法。但也有用属性或种间矩阵CP的,称为逆分析,或Q分析方法。分类的方法程序有二大类,即聚合分类,或分划分类。
等级聚合的分类 根据群落样地(样方)彼此间的相似程度,通过逐次合并,成为不同等级的“同质”样方组,或聚簇(Clustor)的分类方法,也叫聚簇分析。等级聚合程序最早被切卡诺夫斯基(1909)用于人类学资料的分类,以后才被波兰生态学家专门用于植被分类。
群落的聚簇分析,是多元的聚合方法。因为,群落样地或样方的N×N相似(异)系数矩阵CN是进行聚合的基础。无论哪一种相似(异)系数,其数值都是从所有属性的数据计算而来。聚合的程序一般是:①计算样地(样方)的N×N相似(异)系数矩阵CN;②先从CN中找出最相似的一对样地(方)合并为第一个聚簇;③重算(N-1)×(N-1)的相似(异)矩阵;④再从中找出与第一次合并聚簇最相似的另一个样地,并合并出另一个聚簇;⑤依次,重复逐次合并,直到全部样地合并为一。简言之,即从单个样方开始聚合,再是聚簇与单个样方、或与另外聚簇的聚合,自下而上直到把整个样方集合聚合为一体,结果是产生一个逐级聚合分析的枝谱图。
等级聚合过程中,有一个如何测算两个聚簇之间的距离的问题。需要一个适合的测度Dkij,表示k聚簇到i和j联合聚簇之间距离。通常应用的七种聚合方法是:最近邻法;最远邻法;中线法;形心法;组平均法;平方和增量法;可变法等。兰斯和威廉斯(1967)为这些计算群簇距离的不同聚合方法,建立了一个统一的模型。
DCA+B=XADCA+2BDCB+βDCA+γ|DCA-DCB|
其中A,B,C,A+B均表示样方组(群簇)。它们的样方数分别为nA,nB,nC,nA+B,A+B是 A与 B的并组,有nA+B=nA+nB。2A,2B,β,γ是常数(模型系数)。
威廉斯和兰伯特(1966)提出的信息分析方法,用对称信息相似系数,即以样方组合并引起的信息增量ΔI,作为A与B样方组间的相异性指标,将信息增量最小的成对群簇加以合并,其计算式为
ΔI(A,B)=I(A+B)-I(A)-IB
等级划分的分类 是从N个样地(方)的集合开始,从上向下逐次分划。即先按相似性分为二个样方组,使组内相似性最大,组间相异性最大。接着对每个组再次分划,最终达到一定要求的“同质”样方组为止。
等级分划有单元和多元二类,现时通行的多为单元分划方法。如关联分析、组群分析和信息分析等方法。在群落数值分类中最常用的是关联分析方法。
关联分析,是基于在某个一致的群落中不同样方之间种类是不相关的,即二种间的关联是随机的,因而可把种间关系最小的一些样方,从样方集合中分划出来,作为一个类级。
关联分析的程序是:①依据二元(种的存在与不存在)原始数据矩阵X,求出P个种的种间关联系数矩阵CP=(Chi),(h,i=1,2,…,P);②从种的关联矩阵中找出一个与其他种关联最大的种A,称为临界种或关键种。③在样方集合中把含有临界种A的样方组(A),与不含临界种的样方(a)划分开成二个子样方组;④对(A)分别重复上面的程序,确定另一个临界种B,按B种的有或无,从A中划分出有B种存在的B样方组。如此反复进行,直到在分出的子组内部种间关联系数全都在规定的显著水平以下,即达到划分过程的“终止线”为止。⑤最后,也可得到等级划分分类的树谱图(图4)。图中横坐标表示两条终止线的两个显著水平,纵坐标表示各次分划的X2/N的临界值和分划的过程。每一次分划的两支联结线下的植物种是该次分划的临界种,(+)号表示含有该临界种的样方组,样方数在方框内;(-)号表示无临界种的样方组,样方数记在方框内。
在Zynq-7000上编程PL大致有3种方法:1. 用FSBL,将bitstream集成到boot.bin中
2. 用U-BOOT命令
3. 在Linux下用xdevcfg驱动。
步骤:
1. 去掉bitstream的文件头
用FSBL烧写PL Images没有什么好说的,用Xilinx SDK的Create Boot Image工具即可完成,不再赘述。用后两种方法需要把bitstream文件的文件头用bootgen工具去掉。
一个典型的bif文件如下所示:
the_ROM_image:
{
[bootloader]<fsbl_name>.elf
<pl_bitstream_name>.bit
<u-boot_name>.elf
}
bif文件可以用文本编辑器写,也可以用Xilinx SDK的Create Boot Image工具生成。然后在命令行下用以下命令即可去掉bitstream文件的文件头。
bootgen -image <bootimage>.bif -split bin -o i BOOT.BIN
"-split”参数可以生成以下文件:
<pl_bitstream_name>.bit.bin
2. 在U-BOOT下烧写PL Image
命令”fpga load”和”fpga loadb”都可以。区别是前一个命令接受去掉了文件头的bitstream文件,后一个命令接受含有文件头的bitstream文件。
在OSL 2014.2上,缺省编译就可以完整支持写入PL Image的功能。但是在Petalinux 2013.10下,尽管可以在U-BOOT下看到命令”fpga”,还需要在文件
<PROJ>/subsystems/linux/configs/u-boot/platform-top.h 中增加以下内容后重新编译才可以支持具体的功能。
/* Enable the PL to be downloaded */
#define CONFIG_FPGA
#define CONFIG_FPGA_XILINX
#define CONFIG_FPGA_ZYNQPL
#define CONFIG_CMD_FPGA
#define CONFIG_FPGA_LOADFS
在OSL 2014.2 U-BOOT中,具体的功能是在zynqpl.c的zynq_load()中实现的。
3. 在Linux下烧写PL Image
OSL Linux 2014.2.01中已经含有xdevcfg驱动了(之前就有,不过本文是在这个版本上验证的),直接用以下命令就可以完成PL Image写入。
cat <path_to_storage_media>/<pl_bitstream_name>.bit.bin >/dev/xdevcfg
Linux驱动的源代码在xilinx_devcfg.c中。因为驱动的编号是通过alloc_chrdev_region()动态分配的,所以不需要手工用mknod命令手动建立设备节点。
在Linux驱动中,每次往DevCfg中写入4096字节,直到全部写完。
4. 在用户程序中烧写PL Image
目前没有现成的源码来完成这个功能,不过可以用mmap()把DevCfg的寄存器映射到用户程序的虚地址中,然后参考一些现成的软件代码来完成这个功能:
* FSBL中的pcap.c
* U-BOOT中的zynqpl.c
* Linux中的xilinx_devcfg.c
* Xilinx SDK中的例子。例子位于以下位置,随SDK的版本会有变化。
C:\Xilinx\SDK\2014.1\data\embeddedsw\XilinxProcessorIPLib\drivers\devcfg_v3_0\examples\index.html
小结:
DevCfg外设内部有自己的DMA,只需要简单的配置PL Image的基地址和长度到DevCfg寄存器,就可以完成Zynq-7000 PL Image的加载。Xilinx已经提供了灵活的解决方案,如果开发者要把这个功能集成在自己的应用程序中,也有很多的代码可以参考,并不是很困难的任务。
2021文都考研复试(会计&审计)硕士复试精讲大纲班
链接:https://pan.baidu.com/s/1bR366f6ksnsXAdCXeOuYbg
提取码:32of若资源有问题欢迎追问~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)