-1-
混合基 FFT处理器的设计与 Verilog实现
王靖琰,曹新民
中国科学院上海应用物理研究所,上海 (201800)
摘 要:本文介绍了混合基 FFT算法的基本原理,用 Verilog语言设计和实现了一个 6点混
合基 FFT处理器,实验结果证明本处理器能正确地完成 6点 FFT变换。
关键词:混合基 FFT;流水线处理器;可编程逻辑器件;Verilog
1.引言
傅里叶变换是一种将信号从时域变换到频域的变换形式。是声学、图像、电信和信号处
理等领域中一种重要的分析工具[1]。其中,离散傅里叶变换(DFT)更是数字信号处理领域不
可缺少的工具之一,特别是快速傅里叶变换(FFT)的出现使得DFT在实际应用中得到了广泛
的应用。FFT算法就是不断地把长序列的DFT逐次分解为几个短序列的DFT,并利用周期性
和对称性来减少DFT的运算次数这一基本原理来加快运算速度的。
可编程逻辑器件(PLD)是20世纪70年代发展起来的新器件,它的发展和应用不但简化了
电路设计,降低了开发成本,提高了系统的可靠性,而且给数字系统的设计方式带来了革命
性的变化[2]。PLD的设计使用硬件描述语言(HDL)进行,Verilog HDL是当前世界上应用最为
广泛的HDL之一,它允许工程师从不同的抽象级别对数字电路进行描述[3]。
本文讨论了混合基FFT算法,用Verilog语言实现了一个6点FFT处理器,本设计方案可以
在PFGA或CPLD上实现,能正确第对输入的数据进行6点FFT变换。
2.混合基FFT算法原理介绍
对于 N=2L的 FFT,可以采用基 2FFT、基 4FFT、分裂基 FFT 等算法,而若不满足 N=2L,
可以将 x(n)补一些零点使 N 增长到最临近的一个 2L数值在使用上面的算法;但如果要求准
确的 N 点 DFT,而 N 又是素数,只能采用直接 DFT 算法或 CZT 方法;若 N 是一个复合数,
即它可以分解成一些因子的乘积,则可以使用混合基 FFT 算法[4]。
设 DFT 点数 1 2N r r= 是一个复合数,将 n 用下面公式表达:
0 2
1 2 0
1 1
0,1, , 1
, (1)
0,1, , 1
n r
n n r n
n r
= −⎧= + ⎨ = −⎩
"
"
这样可以把 x(n)分为 2r 个 1r 点的序列。
令 2 1N r r= ,将频率变量 k 用下式表达:
1 2
1 1 0
0 1
0,1, , 1
, (2)
0,1, , 1
k r
k k r k
k r
= −⎧= + ⎨ = −⎩
"
"
则 DFT 公式可以化为:
2 1
1 0 0 0 0 1
1 2
0 1
1 1
1 0 1 0
0 0
( , ) ( , ) (3)
r r
n k n k n k
r N r
n n
X k k x n n W W W
− −
= =
⎧ ⎫⎡ ⎤⎪ ⎪= ⎨ ⎬⎢ ⎥⎪ ⎪⎣ ⎦⎩ ⎭∑ ∑
于是我们得到了 1 2N r r= 点的混合基 FFT 算法:首先将 n 表示为按 2r 进制表示的形式
1 2 0n n r n= + ,即将 x(n)分为 2r 个 1r 点的序列,然后做 2r 个 1r 点的 DFT 得到 1 0 0( , )X k n ;将
-2-
0 0( , )X k n 乘以旋转因子 0 0n kNW 后,再做 1r 个 2r 点的 DFT 得到 2 0 1( , )X k k ,最后进行 2r 进制
整序,得到 1 0( , ) ( )X k k X k= 。
1 2N r r= 点混合基算法的框图如图1所示。
图 1 频域抽取混合基 FFT 一级分解框图
这是 1 2N r r= 点频域抽取混合基 FFT 一级分解的算法,将 2r 和 1r 进行进一步的分解,直
到所有因子都是素数就得到了混合基的 FFT 算法。
可以证明,当 1 2 LN r r r= " 时,采用混合基算法所需要的总乘法次数为:
1
( ) 1 (4)
L
M i
i
C N r L
=
⎡ ⎤= + −⎢ ⎥⎣ ⎦∑
相对于基2FFT、基4FFT、分裂基FFT等算法,混合基FFT在保证时间复杂度较小的条件
下,可以对任意可以分裂为素数因子的N点信号进行FFT,灵活性好。
3.6点混合基FFT的Verilog实现
本文在 Quartus II 平台上用 Verilog 语言设计实现了一个最简单也是最典型的的 6 点
混合基 FFT 处理器,其中 6 被分解为2 3× 两级运算。
系统设计框图
本文所设计的 6 点混合基 FFT 处理器中,点数 6 被分解为 1 2 2 3N r r= × = × ,其中
1 2r = , 2 3r = 。算法实现被分为两级,处理器采用流水线结构。系统结构框图如图 2 所示。
0
4
10
1
2
3
5
6
7
9
8
11
0
1
5
3
6
9
4
7
10
8
2
11
0
1
5
3
6
9
4
7
10
8
2
11
1r 点 DFT
1r 点 DFT
1r 点 DFT
1r 点 DFT
2r 点
DFT
2r 点
DFT
2r 点
DFT
0 0n k
NW1 0( , )x n n 0 1( , )X k k
-3-
图 2 6 点混合基 FFT 处理器系统设计框图
对于 6 点 FFT,分别有 6 个输入和输出的复数数据,本文采用的数据宽度为 32 位,如
果直接采用并行输入和并行输出,则至少需要 768 个引脚,一般 FPGA 芯片难以满足要求。
本文采用的方式是串行输入,当输入 6 个数据时候转为并行数据进行 FFT 算法,处理完毕
后再转为串行输出,这样就解决了这个问题。所以在系统的前后两端分别需要串并和并串转
换模块。
为了保证时序的正确性,需要对串并和并串转换模块进行时序管理,所以引入了控制器
模块对时序进行同步。
本文中的算法为频域抽取混合基 FFT,所以算法的第一步要进行混序算法。然后进行两
点 FFT 运算,接着进行旋转因子的乘法运算,由旋转因子相乘模块实现,其功能是实现与
0 0n k
NW 的乘法,最后再进行三点 FFT 运算。
Verilog 语言的实现数据运算
Verilog 语言提供了+、-、*等操作符可以直接实现有符号整数的乘法[3],而 FFT 算法则
存在大量的实数,为了实现这些实数运算,本文提出了一种用定点整数运算实现整数与实数
相乘的方法。
本文的算法中,输入和输出数据都是 32 位整数数据类型,主要的实数运算存在与数据
与系数的乘法运算中。首先将实数的系数进行右移操作,然后进行取整,将其变为可以直接
进行乘法运算的整数,然后再与数据相乘,最后把结果再相应第进行左移操作就可以了。本
文中所采用的移动位数为 8。
实现了实数的运算,也可以通过复数的定义来实现复数的运算。复数乘法运算定义如下:
( ) ( ) ( ) ( ) (5)R I R I R R I I R I I Ra ja b jb a b a b j a b a b+ • + = • − • + • +
以数据与旋转因子 13W 的乘法为例,
2
1 6
6
j
W e
π−= ,通过以下 MATLAB 脚本,可以算出
我们在 Verilog 程序中的系数:
>> floor(exp(-j*2*pi/6)*(2^8))
ans =
+002 +002i
于是实现 x3_r 与旋转因子的复数乘法的 Verilog 代码如下所示。
mul_reg=x3_r*(128)-x1_i*(-222);
控制器
串
并
转
换
3 个
两
点
FFT
旋 转
因 子
相乘
混
序
2 个
三
点
FFT
并
串
转
换
时钟
串行
输入
串行
输出
-4-
mul_reg=mul_reg>>8;
for(i=31;i>=24;i=i-1)
mul_reg[i]=mul_reg[23];
y_reg3_r=mul_reg;
mul_reg=x3_r*(-222)+x1_i*(128);
mul_reg=mul_reg>>8;
for(i=31;i>=24;i=i-1)
mul_reg[i]=mul_reg[23];
y_reg3_i=mul_reg;
值得注意的是,乘法运算后进行右移运算后,需要对高六位进行符号位拓展以保证结果
数据的正确性。
事实上,对于浮点数的表示和运算,有 IEEE-754 标准可以使用[5],但是实现困难,效
率较低,所以将浮点运算转换为定点整数运算是一种不错的方法,但是要牺牲一定的精度。
FFT 变换模块的设计
FFT 转换模块实现将并行数据进行 6 点混合基 FFT 变换为并行结果,包括混序模块、3
个两点 FFT 模块、旋转因子乘法模块和 2 个三点 FFT 模块。
6 点 FFT 混序的原理可以通过以下方式解释:将数据按纵向方向填入 3 行 2 列矩阵,然
后按照横向方向读出。如图 3 所示。
图 3 6 点 FFT 混序的原理
图 4 6 点 FFT 混序模块寄存器端口
对于 3 个两点 FFT 模块和 2 个三点 FFT 模块,本文先设计了 2 点和 3 点 FFT 模块,然
后通过创建实例的方法来实现。值得注意的是 3 个两点 FFT 是对相邻的2个数据进行两点
FFT,而 2 个三点 FFT 是对相间隔的 3 个数据进行的。以 2 个三点 FFT 模块为例子:
DFT_3 DFT_30(
0 3
1 4
2 5
0 3 1 4 2 5
-5-
.clk(clk),
.x0_r(x_r0),.x0_i(x_i0),
.x1_r(x_r2),.x1_i(x_i2),
.x2_r(x_r4),.x2_i(x_i4),
.y0_r(y_r0),.y0_i(y_i0),
.y1_r(y_r2),.y1_i(y_i2),
.y2_r(y_r4),.y2_i(y_i4)
);
图 5 3 个两点 FFT 模块和 2 个三点 FFT 模块寄存器端口
有了 节介绍的 Verilog 语言的实现数据运算的方法,旋转因子的乘法模块也容易实
现,值得注意的是,6 个旋转因子中有 4 个是 1,可以不用相乘直接输出。
图 6 旋转因子的乘法模块寄存器端口
串并、转换并串转换模块与控制器的设计
并串与串并转换模块本身的设计并不复杂,但是要求与系统有良好的时序同步性,即首
先要等到串行的六个输入数据全部都输入后才能并行输出进行 FFT,而并行数据转串行数据
-6-
并输出必须在 FFT 运算完毕之后才能进行,否则会引起系统的混乱。
本问所采取的策略是:由主控制器控制整个系统的时序并决定串并和并串转换的开始时
刻。具体地,控制器维护一个计数器 counter,在每个时钟上升沿加 1,以 18 为周期计数。
当 counter 计数为 0 重新开始时,一个时序周期开始,触发串并转换操作。由于串并转
换需要采集 6 个数据才能做一次输出,而开始输入的前一个周期用来检测触发信号,所以共
需要 7 个周期。所以控制串并转换模块的信号控制代码如下:
if(counter<7)s2pen=1;
else s2pen=0;
对于 FFT 操作,共有混序、2FFT、旋转因子乘法和 3FFT 共 4 个流水单元,所以至少
要 4 个时钟单元后 FFT 结果数据带能到达并串转换的输入端,这时才能触发并串转换。所
以控制并串转换模块的信号控制代码如下:
if(counter>10)p2sen=1;
else p2sen=0;
输出需要 6 个周期,而开始输出的前一个周期用来检测触发信号,共 7 个周期,所以在
开始并串转换后第 7 个周期,将清零,重新计数:if(counter==17)counter=0; 。
另外,主控制器还负责在数据处理完毕后进行输出期间维护一个完成信号为高电平,此
信号为 over。
主控制器寄存器端口与仿真时序图如图 7 所示。
(a) 主控制器寄存器端口
(b)主控制器仿真时序图
图 7 主控制器寄存器端口与仿真时序图
相应地,并串与串并转换模块的触发是通过检测使能端的上跳变换来实现的:
if((en==1)&&(en_reg==0))
counter=0;
即若上次 en 为 0 而本次为 1,则 counter 清零开始并串与串并转。串并与并串转换可以
方便第通过 case 语句实现,以串并转换为例子:
case (counter)
0 :
begin
y_r0=x_r;y_i0=x_i;
end
-7-
……
5 :
begin
y_r5=x_r;y_i5=x_i;
end
串并与并串转换模块寄存器端口图如图 8 所示。
(a) 串并转换模块寄存器端口 (b) 并串转换模块寄存器端口
图 8 串并与并串转换模块寄存器端口图
6 点混合基处理器的实现
系统的各个模块实现以后,在 Quartus II 的原理图中连接,生成 文件,就
可以得到 6 点 FFT 处理器的最终设计结果,如图 9 所示。
图 9 6 点 FFT 处理器的最终设计结果
-8-
对项目进行编译和适配置,成功后就实现了 6 点混合基 FFT 处理器,其 RTL 级视图如
图 10 所示。
图 10 6 点 FFT 处理器的 RTL 级视图
4. 实验结果以及分析
我们已经实现了 6 点混合基 FFT 处理器,下面通过输入数据对其运算正确性进行验证。
首先用实数进行测试,输入 0、100、200、300、400、500 6 个实数,波形仿真结果如
图 11 所示。
图 11 实数 FFT 波形仿真结果
从图中我们可以看出,输入数据后,经过 6 个时钟的延时,over 信号变为高电平,FFT
结果的实部和虚部开始输出,输出 6 个时钟后结束,over 信号又变为低电平。
利用 MATLAB 实现此 FFT 算法,脚本如下:
>> fft([0 100 200 300 400 500])
ans =
+003 *
+ + -
-
观察对比可知,本文设计的处理器的结果与 MATLAB 的结果一致,正确的实现了整数
到整数的 FFT 变换。
-9-
再将以上输入数据的虚部置为 100,利用复数进行测试,波形仿真结果如图 12 所示。
图 12 复数 FFT 波形仿真结果
对应的 MATLAB 脚本为:
>> fft([100i 100+100i 200+100i 300+100i 400+100i 500+100i])
ans =
+003 *
+ + +
- -
观察对比可知,本文设计的处理器进行复数 FFT 的结果也与 MATLAB 的结果一致,正
确的实现了复数整数到整数的 FFT 变换。
注意到以上测试输入的数据都是较大的整数,精度有一定的保证,对于较小的数字,由
于系统本身输入和输出都是整数,同时在运算过程中也有误差,所以精度较差。
5.总结
混合基 FFT 在保证高效率的前提下,可以完成复合数点数的 FFT 算法,具有灵活性好
的优点。可编程逻辑器件(PLD)是 20 世纪 70 年代发展起来的新器件,它的发展的应用不但
简化了电路设计,降低了开发成本,而且提高了系统的可靠性。本文用 Verilog 语言设计实
现了一个基于 PLD 的 6 点混合基 FFT 处理器,此处理器能在一定精度范围内正确实现复数
的 FFT 算法,本设计方案可以在 PFGA 或 CPLD 上实现,具有重要的应用价值。
利用 PLD 实现 FFT 算法是一个非常有价值的研究方向,有着广阔的应用前景,本文对
这种方法也做出了有益的探索。
-10-
参考文献
[1] 史贤勇,陈子为.基于 BF533 的基 4 FFT 算法的 DSP 实现[J].成都信息工程学院学报, 2006, 21
(赠).
[2] 王金明.数字系统设计与 Verilog HDL[M].北京:电子工业出版社,2005.
[3] 王冠,俞一鸣.面向 CPLD/FPGA 的 Verilog 设计[M].北京:机械工业出版社,2007.
[4] 胡广书.数字信号处理-理论、算法与实现[M].北京:清华大学出版社,2003.
[5] Dr. Vickery.IEEE-754 References[EB/OL].
[6] 程佩青.数字信号处理教程[M].北京:清华大学出版社,2002.
[7] 丁美玉,高西全.数字信号处理[M].西安:西安电子科技大学出版社,2002.
Design and Verilog Implement of Mixed-Radix FFT
Processor
Wang Jingyan, Cao Xinmin
Shanghai Institute of Applied Physics, Chinese Academy of Sciences, Shanghai, PRC (201800)
Abstract
A fundamental principle of the Mixed-Radix FFT is introduced, and then we design and implement a
6-point mixed-radix FFT Processor. The experiment results prove that this processor can complete
6-point FFT correctly.
Keywords: Mixed Radix FFT; Pipeline processor; PLD; Verilog
作者简介:
王靖琰,男,1985 年生,山东临沂人。2007 年于中南大学获工科学士学位,硕士研究生,
信号与信息处理专业。研究方向是身份生物特征识别、图像及语音信号处理、智能视频监控
分析与识别、DSP 与嵌入式系统应用研发;
曹新民,男,1984 年生,江苏南通人。2007 年于南京大学获得理学学士学位,硕士研究生,
信号与信息处理专业。研究方向是加速器粒子探测与控制、信号分析与处理。
<<
/ASCII85EncodePages false
/AllowTransparency false
/AutoPositionEPSFiles true
/AutoRotatePages /None
/Binding /Left
/CalGrayProfile (Dot Gain 20%)
/CalRGBProfile (sRGB )
/CalCMYKProfile (. Web Coated \050SWOP\051 v2)
/sRGBProfile (sRGB )
/CannotEmbedFontPolicy /Error
/CompatibilityLevel
/CompressObjects /Tags
/CompressPages true
/ConvertImagesToIndexed true
/PassThroughJPEGImages true
/CreateJDFFile false
/CreateJobTicket false
/DefaultRenderingIntent /Default
/DetectBlends true
/ColorConversionStrategy /LeaveColorUnchanged
/DoThumbnails false
/EmbedAllFonts true
/EmbedJobOptions true
/DSCReportingLevel 0
/EmitDSCWarnings false
/EndPage -1
/ImageMemory 1048576
/LockDistillerParams false
/MaxSubsetPct 100
/Optimize true
/OPM 1
/ParseDSCComments true
/ParseDSCCommentsForDocInfo true
/PreserveCopyPage true
/PreserveEPSInfo true
/PreserveHalftoneInfo false
/PreserveOPIComments false
/PreserveOverprintSettings true
/StartPage 1
/SubsetFonts true
/TransferFunctionInfo /Apply
/UCRandBGInfo /Preserve
/UsePrologue false
/ColorSettingsFile ()
/AlwaysEmbed [ true
]
/NeverEmbed [ true
]
/AntiAliasColorImages false
/DownsampleColorImages true
/ColorImageDownsampleType /Bicubic
/ColorImageResolution 300
/ColorImageDepth -1
/ColorImageDownsampleThreshold
/EncodeColorImages true
/ColorImageFilter /DCTEncode
/AutoFilterColorImages true
/ColorImageAutoFilterStrategy /JPEG
/ColorACSImageDict <<
/QFactor
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/ColorImageDict <<
/QFactor
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000ColorACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000ColorImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasGrayImages false
/DownsampleGrayImages true
/GrayImageDownsampleType /Bicubic
/GrayImageResolution 300
/GrayImageDepth -1
/GrayImageDownsampleThreshold
/EncodeGrayImages true
/GrayImageFilter /DCTEncode
/AutoFilterGrayImages true
/GrayImageAutoFilterStrategy /JPEG
/GrayACSImageDict <<
/QFactor
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/GrayImageDict <<
/QFactor
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000GrayACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000GrayImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasMonoImages false
/DownsampleMonoImages true
/MonoImageDownsampleType /Bicubic
/MonoImageResolution 1200
/MonoImageDepth -1
/MonoImageDownsampleThreshold
/EncodeMonoImages true
/MonoImageFilter /CCITTFaxEncode
/MonoImageDict <<
/K -1
>>
/AllowPSXObjects false
/PDFX1aCheck false
/PDFX3Check false
/PDFXCompliantPDFOnly false
/PDFXNoTrimBoxError true
/PDFXTrimBoxToMediaBoxOffset [
]
/PDFXSetBleedBoxToMediaBox true
/PDFXBleedBoxToTrimBoxOffset [
]
/PDFXOutputIntentProfile ()
/PDFXOutputCondition ()
/PDFXRegistryName ()
/PDFXTrapped /Unknown
/Description <<
/ENU (Use these settings to create PDF documents with higher image resolution for high quality pre-press printing. The PDF documents can be opened with Acrobat and Reader and later. These settings require font embedding.)
/JPN <FEFF3053306e8a2d5b9a306f30019ad889e350cf5ea6753b50cf3092542b308030d730ea30d730ec30b9537052377528306e00200050004400460020658766f830924f5c62103059308b3068304d306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103057305f00200050004400460020658766f8306f0020004100630072006f0062006100740020304a30883073002000520065006100640065007200200035002e003000204ee5964d30678868793a3067304d307e305930023053306e8a2d5b9a306b306f30d530a930f330c8306e57cb30818fbc307f304c5fc59808306730593002>
/FRA <FEFF004f007000740069006f006e007300200070006f0075007200200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000500044004600200064006f007400e900730020006400270075006e00650020007200e90073006f006c007500740069006f006e002000e9006c0065007600e9006500200070006f0075007200200075006e00650020007100750061006c0069007400e90020006400270069006d007000720065007300730069006f006e00200070007200e9007000720065007300730065002e0020005500740069006c006900730065007a0020004100630072006f0062006100740020006f00750020005200650061006400650072002c002000760065007200730069006f006e00200035002e00300020006f007500200075006c007400e9007200690065007500720065002c00200070006f007500720020006c006500730020006f00750076007200690072002e0020004c00270069006e0063006f00720070006f0072006100740069006f006e002000640065007300200070006f006c0069006300650073002000650073007400200072006500710075006900730065002e>
/DEU <FEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e0020005000440046002d0044006f006b0075006d0065006e00740065006e0020006d00690074002000650069006e006500720020006800f60068006500720065006e002000420069006c0064006100750066006c00f600730075006e0067002c00200075006d002000650069006e00650020007100750061006c00690074006100740069007600200068006f006300680077006500720074006900670065002000410075007300670061006200650020006600fc0072002000640069006500200044007200750063006b0076006f0072007300740075006600650020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f0062006100740020006f0064006500720020006d00690074002000640065006d002000520065006100640065007200200035002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002e00200042006500690020006400690065007300650072002000450069006e007300740065006c006c0075006e00670020006900730074002000650069006e00650020005300630068007200690066007400650069006e00620065007400740075006e00670020006500720066006f0072006400650072006c006900630068002e>
/PTB <FEFF005500740069006c0069007a006500200065007300740061007300200063006f006e00660069006700750072006100e700f5006500730020007000610072006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000500044004600200063006f006d00200075006d00610020007200650073006f006c007500e700e3006f00200064006500200069006d006100670065006d0020007300750070006500720069006f0072002000700061007200610020006f006200740065007200200075006d00610020007100750061006c0069006400610064006500200064006500200069006d0070007200650073007300e3006f0020006d0065006c0068006f0072002e0020004f007300200064006f00630075006d0065006e0074006f0073002000500044004600200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002c002000520065006100640065007200200035002e00300020006500200070006f00730074006500720069006f0072002e00200045007300740061007300200063006f006e00660069006700750072006100e700f50065007300200072006500710075006500720065006d00200069006e0063006f00720070006f0072006100e700e3006f00200064006500200066006f006e00740065002e>
/DAN <FEFF004200720075006700200064006900730073006500200069006e0064007300740069006c006c0069006e006700650072002000740069006c0020006100740020006f0070007200650074007400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006d006500640020006800f8006a006500720065002000620069006c006c00650064006f0070006c00f80073006e0069006e0067002000740069006c0020007000720065002d00700072006500730073002d007500640073006b007200690076006e0069006e0067002000690020006800f8006a0020006b00760061006c0069007400650074002e0020005000440046002d0064006f006b0075006d0065006e007400650072006e00650020006b0061006e002000e50062006e006500730020006d006500640020004100630072006f0062006100740020006f0067002000520065006100640065007200200035002e00300020006f00670020006e0079006500720065002e00200044006900730073006500200069006e0064007300740069006c006c0069006e0067006500720020006b007200e600760065007200200069006e0074006500670072006500720069006e006700200061006600200073006b007200690066007400740079007000650072002e>
/NLD <FEFF004700650062007200750069006b002000640065007a006500200069006e007300740065006c006c0069006e00670065006e0020006f006d0020005000440046002d0064006f00630075006d0065006e00740065006e0020007400650020006d0061006b0065006e0020006d00650074002000650065006e00200068006f00670065002000610066006200650065006c00640069006e00670073007200650073006f006c007500740069006500200076006f006f0072002000610066006400720075006b006b0065006e0020006d0065007400200068006f006700650020006b00770061006c0069007400650069007400200069006e002000650065006e002000700072006500700072006500730073002d006f006d0067006500760069006e0067002e0020004400650020005000440046002d0064006f00630075006d0065006e00740065006e0020006b0075006e006e0065006e00200077006f007200640065006e002000670065006f00700065006e00640020006d006500740020004100630072006f00620061007400200065006e002000520065006100640065007200200035002e003000200065006e00200068006f006700650072002e002000420069006a002000640065007a006500200069006e007300740065006c006c0069006e00670020006d006f006500740065006e00200066006f006e007400730020007a0069006a006e00200069006e006700650073006c006f00740065006e002e>
/ESP <FEFF0055007300650020006500730074006100730020006f007000630069006f006e006500730020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000500044004600200063006f006e0020006d00610079006f00720020007200650073006f006c00750063006900f3006e00200064006500200069006d006100670065006e00200071007500650020007000650072006d006900740061006e0020006f006200740065006e0065007200200063006f007000690061007300200064006500200070007200650069006d0070007200650073006900f3006e0020006400650020006d00610079006f0072002000630061006c0069006400610064002e0020004c006f007300200064006f00630075006d0065006e0074006f00730020005000440046002000730065002000700075006500640065006e00200061006200720069007200200063006f006e0020004100630072006f00620061007400200079002000520065006100640065007200200035002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002e0020004500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007200650071007500690065007200650020006c006100200069006e0063007200750073007400610063006900f3006e0020006400650020006600750065006e007400650073002e>
/SUO <FEFF004e00e4006900640065006e002000610073006500740075007300740065006e0020006100760075006c006c006100200076006f0069006400610061006e0020006c0075006f006400610020005000440046002d0061007300690061006b00690072006a006f006a0061002c0020006a006f006900640065006e002000740075006c006f0073007400750073006c00610061007400750020006f006e0020006b006f0072006b006500610020006a00610020006b007500760061006e0020007400610072006b006b007500750073002000730075007500720069002e0020005000440046002d0061007300690061006b00690072006a0061007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f006200610074002d0020006a0061002000520065006100640065007200200035002e00300020002d006f0068006a0065006c006d0061006c006c0061002000740061006900200075007500640065006d006d0061006c006c0061002000760065007200730069006f006c006c0061002e0020004e00e4006d00e4002000610073006500740075006b0073006500740020006500640065006c006c00790074007400e4007600e4007400200066006f006e0074007400690065006e002000750070006f00740075007300740061002e>
/ITA <FEFF00550073006100720065002000710075006500730074006500200069006d0070006f007300740061007a0069006f006e00690020007000650072002000630072006500610072006500200064006f00630075006d0065006e00740069002000500044004600200063006f006e00200075006e00610020007200690073006f006c0075007a0069006f006e00650020006d0061006700670069006f00720065002000700065007200200075006e00610020007100750061006c0069007400e00020006400690020007000720065007300740061006d007000610020006d00690067006c0069006f00720065002e0020004900200064006f00630075006d0065006e00740069002000500044004600200070006f00730073006f006e006f0020006500730073006500720065002000610070006500720074006900200063006f006e0020004100630072006f00620061007400200065002000520065006100640065007200200035002e003000200065002000760065007200730069006f006e006900200073007500630063006500730073006900760065002e002000510075006500730074006500200069006d0070006f007300740061007a0069006f006e006900200072006900630068006900650064006f006e006f0020006c002700750073006f00200064006900200066006f006e007400200069006e0063006f00720070006f0072006100740069002e>
/NOR <FEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f00700070007200650074007400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006d006500640020006800f80079006500720065002000620069006c00640065006f00700070006c00f80073006e0069006e006700200066006f00720020006800f800790020007500740073006b00720069006600740073006b00760061006c00690074006500740020006600f800720020007400720079006b006b002e0020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50070006e006500730020006d006500640020004100630072006f0062006100740020006f0067002000520065006100640065007200200035002e00300020006f0067002000730065006e006500720065002e00200044006900730073006500200069006e006e007300740069006c006c0069006e00670065006e00650020006b0072006500760065007200200073006b00720069006600740069006e006e00620079006700670069006e0067002e>
/SVE <FEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006e00e40072002000640075002000760069006c006c00200073006b0061007000610020005000440046002d0064006f006b0075006d0065006e00740020006d006500640020006800f6006700720065002000620069006c0064007500700070006c00f60073006e0069006e00670020006600f60072002000700072006500700072006500730073007500740073006b0072006900660074006500720020006100760020006800f600670020006b00760061006c0069007400650074002e0020005000440046002d0064006f006b0075006d0065006e00740065006e0020006b0061006e002000f600700070006e006100730020006d006500640020004100630072006f0062006100740020006f00630068002000520065006100640065007200200035002e003000200065006c006c00650072002000730065006e006100720065002e00200044006500730073006100200069006e0073007400e4006c006c006e0069006e0067006100720020006b007200e400760065007200200069006e006b006c00750064006500720069006e00670020006100760020007400650063006b0065006e0073006e006900740074002e>
>>
>> setdistillerparams
<<
/HWResolution [2400 2400]
/PageSize [ ]
>> setpagedevice