课程设计报告基于FPGA的FIR滤波器设计_第1页
课程设计报告基于FPGA的FIR滤波器设计_第2页
课程设计报告基于FPGA的FIR滤波器设计_第3页
课程设计报告基于FPGA的FIR滤波器设计_第4页
课程设计报告基于FPGA的FIR滤波器设计_第5页
免费预览已结束,剩余39页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子系统设计方向课程设计17目录1概述2课程设计要求及注意事项3课程设计内容3.1课程设计题目及要求3.1.1设计题目3.1.2设计要求3.1.3设计指标3.2课程设计内容3.2.1数字滤波器简介3.2.2 FIR滤波器的基本结构3.2.3数字滤波器的设计原理3.2.4滤波器的性能指标3.2.5 FIR数字滤波器的设计方法104基于FPGA的FIR滤波器设计124.1基于Matlab的FIR数字低通滤波器抽头系数的提取124.1.1滤波器的具体设计方法124.1.2参数提取与量化144.2 FIR滤波器的FPGA实现154.2.1 FIR数字滤波器的实现方法154.2.2模块划分18423 F

2、IR滤波器各模块的实现204.2.4 FIR滤波器的顶层设计354.3 FIR滤波器的系统仿真验证365教学教材与参考文献39为了帮助学生深入理解和消化基本理论、进一步提高综合应用能力并 且锻炼独立解决问题的能力,电子系统设计方向老师将数字信号处理、集成电路原理与应用和FPGA系统设计与应用几门课程融合在一 起开设的FPGA综合实验课程设计。主要从以下两方面考虑:一:设计内容突出 FPGA及信号处理的理论和技术的综合应用。如在 数字滤波实验中,要求学生能够熟悉数字滤波器的基本原理,并能运用 VHDL语言实现数字滤波。并采用 MATLAB软件实现的结果与运用 VHDL 实现的仿真结果进行,来验证

3、其正确性。最后通过实验装置进行硬件实 现,并对结果进行综合分析。二:如何将数字信号处理、集成电路原理与应用和FPGA系 统设计与应用三门课程有机的结合起来,设计一实际的系统。由学生在 所学知识的基础上,查阅相关资料,自主设计,通过实验装置进行实现, 并对结果进行综合分析,寻找最佳设计方案。学生通过完成一个利用 FPGA实现信号处理相关的课题的理论设计、 程序设计和实验调试任务,可以提高分析解决实际问题的能力。本设计要 求运用课程所学知识,进行算法实现、Matlab仿真,VHDL程序设计,FPGA开发平台上调试,加深对 FPGA在信号处理知识领域的理解与运 用,培养对FPGA系统的开发技能。2课

4、程设计要求及注意事项1. 设计过程以小组为单位,各组设一个组长,负责组织和协调本小 组的讨论、任务分工等;2. 设计过程必须在本组内独立完成,不得跨组参考或抄袭,避免方 案出现雷同;设计书一律采用A5纸打印,用统一封面装订; 课程设计原则上在3周内做完;最后一周周五进行优秀设计方案评选,在各组推选代表进行方案4.3.5.介绍的基础上,推选出2-3个优秀设计方案。6. 学有余力的学生在完成必做设计内容的基础上,可对内容进一步 展开设计,以提高综合应用能力,锻炼独立解决问题的能力。3 课程设计内容3.1 课程设计题目及要求3.1.1设计题目基于FPGA的FIR滤波器设计3.1.2设计要求结构,对其

5、实现方式进行研究,分别采用合适的方法进行仿真,并用 lab对实现的结果进行比较。利用所学知识,采用MATLAB 仿真。采用直接法或分布式算法实现 种算法的优缺点,选择其中一种算法, 和FPGA相结合完成FIR滤波器的设计FIR数字低通滤波器的设计。比较两得出用它来实现FIR滤波器的硬件Mat1)2)3)4)5)6)7)3.1.3 设计指标 类型:FIR低通;系统采样频率:FS = 10kHz ;截止频率F:=1kHz ;输入序列位宽为8位的有符号数(最高位为符号位)输出结果保留8位(最咼位为符号位);窗口类型为kaiser窗, =0.5 ;滤波器长度为N=163.2 课程设计内容3.2.1数字

6、滤波器简介滤波器是用来进行频率选择或频率分辨操作的线性时不变系统的通 称。数字滤波器通常都是应用于修正或改变时域或频域中信号的属性。最为普通的数字滤波器就是线性时间不变量(1inear time invariant ,LTI)滤波器。一个简单的数字滤波系统如图3-1所示,图中,x(t)为模拟信号,经过A/D转换器后变为一个有着先后顺序的数字序列x(n)。然后x(n)通过数字滤波系统H(z),即得到数字滤波器的输出y(n)。H(z)为该数字滤波系统的单位脉冲响应h(n)的Z变换,即:H(z)h(n )znn(3-1)若h(n)为无限长序列,则得到的数字滤波器为IIR数字滤波器,又称N-1。图3-

7、1数字滤波系统FIR滤递归滤波器;反之,若h(n)为有限长序列,则得到的数字滤波器为 波器,也称非递归滤波器。一个线形时不变因果滤波器可表示为:N 1(3-2)H(z)h(n )znn 0其中N为h(n)的长度,即滤波器的长度。滤波器的阶数为322 FIR滤波器的基本结构FIR滤波器的单位抽样响应为有限长度,一般采用非递归形式实现。 通常的FIR数字滤波器有横截性和级联型两种。FIR滤波器实现的基本结构有:(1)FIR滤波器的横截型结构表示系统输入输出关系的差分方程可写作:N 1(3-3)y(n) h(m)x(n m)m 0直接由差分方程得出的实现结构如图 3-2所示:刈, _瓦1'h

8、(iy h(纣Ph(N-2)F7图3-2横截型(直接型、卷积型)若h(n)呈现对称特性,即此FIR滤波器具有线性相位,则可以简化加 横截型结构,下面分情况讨论:图3-3 N为奇数时线性相位FIR滤波器实现结构z h(0) '>'叩厂k_图3-4 N为偶数时线性相位FIR滤波器实现结构y(n)Z' 2-'x(ri) 4(2)FIR滤波器的级联型结构将H(z)分解成实系数二阶因子的乘积形式:N 1却(3-4)H(z) h(n )zNb0k bikz1 b2kz2N 0k 1阳2嗚1这时FIR滤波器可用二阶节的级联结构来实现,每个二阶节用横截型 结构实现。如图所

9、示:这种结构的每一节控制一对零点,因而在需要控制传输零点时可以采 用这种结构。3.2.3数字滤波器的设计原理数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。IIR滤波器的特征 是,具有无限持续时间冲激响应。这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器。FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式 实现。数字滤波器的设计方法有多种,如双线性变换法、窗函数设计法、 插值逼近法和Chebyshev逼近法等等。随着MATLAB件尤其是MATLAB勺 信号处理工作

10、箱的不断完善,不仅数字滤波器的计算机辅助设计有了可 能,而且还可以使设计达到最优化。324滤波器的性能指标特性为例,频率响应有通带、过渡带及阻带三个范 围。在通带内:1 AH (ej )|在阻带中:H(ej ) Astst我们在进行滤波器设计时,需要确定其性能指标。一般来说,滤波器 的性能要求往往以频率响应的幅度特性的允许误差来表征。以低通滤波器 人触严丨图3-6低通滤波器频率响应幅度特性的容限图其中c为通带截止频率,st为阻带截止频率,Ap为通带误差,Ast为阻带误差。与模拟滤波器类似,数字滤波器按频率特性划分为低通、高通、带 通、带阻、全通等类型,由于数字滤波器的频率响应是周期性的,周期为

11、 2n。各种理想数字滤波器的幅度频率响应如图 3-7所示:3)吐踵(功高a(C)理円士運图3-7各种理想数字滤波器的幅度频率响应3.2.5 FIR 数字滤波器的设计方法IIR滤波器的优点是可利用模拟滤波器设计的结果,缺点是相位是非 线性的,若需要线性相位,则要用全通网络进行校正。FIR滤波器的优点是可方便地实现线性相位。FIR滤波器单位冲激响应h(n)的特点:其单位冲激响应h(n)是有限长(1 n N 1),系统函数为:N 1H(z) h(n )zn(3-5)n 0在有限Z平面有(N-1)个零点,而它的(N-1)个极点均位于原点 z=0 处。FIR滤波器线性相位的特点:如果FIR滤波器的单位抽

12、样响应h(n)为实数,而且满足以下任 条件:偶对称 h(n) = h(N-1-n)奇对称 h(n) = -h(N-1-n)其对称中心在n = (N-1)/2处,则滤波器具有准确的线性相位。 本次设计采用窗函数设计法:一般是先给定所要求的理想滤波器频率响应Hd(ej ),由Hd(ej )导出hd(n),我们知道理想滤波器的冲击响应hd(n)是无限长的非因果序列,而我们要设计的hd(n)是有限长的FIR滤波器,所以要用有限长序列hd(n)来逼近无限长序列hd(n),设:1(n)2Hd(ej )ej d(3-6)常用的方法是用有限长度的窗函数(n)来截取hd(n)即:h(n)(n)hd(n)(3-7

13、)这里窗函数就是矩形序列Rn(n),加窗以后对理想低通滤波器的频率响 应将产生什么样的影响呢?根据在时域是相乘关系,在频域则是卷积关系:Hd(ej )WRej( )d(3-8)H(ej ) 2其中,WR(ej )为矩形窗谱,H(ej )是FIR滤波器频率响应.4基于FPGA的FIR滤波器设计4.1基于Matlab的FIR数字低通滤波器抽头系数的提取4.1.1滤波器的具体设计方法启动 Matlab 设计软件后,依 次打开 start Toolboxes Filter(FDATOOL就可以看到如图 4-FIR低通数字滤波Desig n Filter Desig n & An alysis

14、Tool1的FDATOO界面。选择所需要的参数指标,就会生成器的特性曲线以及重要的幅度相位波形图,如图4-2、图 4-3、图 4-4 所示,验证了其技术指标。1Curerd Flier LtofEtoi|Flltr51山加呻主laT叱SdLiJ-dc工別饰Fl尺IS曽1=3OmjiEdi-F加Or沏LOHHtcH#pa»»Pr-rtiti." HaiilslDpi Hmrajm yngrsffcrEnddDF-Ct沏I' IP BdkcrwvtbEl|-vp1Ensy I ScbIe- feas bond/JndcwKaser-0 5|HI11眦1bPdo

15、Fs:FC(half *12 pHsh-B-id 尹n)I.A FR 'A'ncDwFdCompoling R«sporK» .图 4-1 FDATool 界面-WagittucJe hes parse fctJj-13-Fhftw sipons&:A I H lb u- Lh ibl2 2! 2riequcncy (w1;f图4-2幅度特性曲线c:15-rMiiien' kMi:图4-3相位特性曲线-bmpiiist RespirtM.i.PTine<'rrseccnJs.iT叫-r=_二 juv图4-4冲激响应曲线4.1.2

16、参数提取与量化利用Matlab软件的FDATO0图形用户界面工具,输入设计指标后便会 自动生成所设计的FIR低通数字滤波器的系数即抽头数,一般线性相位的 FIR低通数字滤波器的单位冲激响应都为实数,满足奇或偶对称的条件。 计算的结果可通过File下的菜单中的Export命令取出,点击Export打开 对话框,点击OK可将滤波器系数数据存放到当前工作空间,并且以Num命名。保存并关闭当前窗口回到工作空间,在命令区输入 Num回车,即可查 看Num的值。根据设计所求出的16阶FIR低通数字滤波器的系数是实数, 而在FPGA硬件仿真中要求输入的数据为整数,因此在这里,要对系数做归 一化处理,即将h(

17、n)扩大28=256倍,再分别进行四舍五入处理。如表 4-1 所示:表4-1 FIR低通数字滤波器系数序数序列FIR滤波器的系数h(n)取整后系数h(n )*2八8序数序列h(0)-0.0404-10h(15)h(1)-0.0383-10h(14)h(2)-0.0175-4h(13)h(3)0.02176h(12)h0.073619h(11)h(5)0.128633h(10)h(6)0.173644h(9)h(7)0.199351h(8)4.2 FIR滤波器的FPGA实现4.2.1 FIR数字滤波器的实现方法可以两种方法:1.直接型结构设计 2.分布式算法设计1.线性相位FIR滤波器的一般设计

18、方法根据线性相位的偶数N的FIR滤波器的系统直接结构可知,在FIR滤波器中的整个运算过程是、加法、乘法、减法和延时4种基本运算的组合。例如长度N=16的线性相位FIR滤波器的原理图设计如图4-5所示。+® ® ®® ® 0 ®-i2图4-5 15阶线性相位FIR滤波器的原理图设计2.采用分布式算法设计FIR滤波器1)分布式算法基础ArithmeticQA )是一项重要的 FPGA技术,分布式算法(Distributed广泛地应用于计算乘积和:y c,xN 1c(n)* x(n)n 0(4-1)电子系统设计方向课程设计这种算法可用于滤波

19、器、卷积、相关、DFT等凡是有乘累加运算的地仃方。c(n)为常量,一个线性时不变网络的输出可用式(4-1 )表示。假设x(n)为变量。对于有符号DA系统,x(n)可表示为:Bx(n) 2 Xb(n)N 1y 2B c( n)Xb( n)n 0N 1B2 c( n)XB( n)n 0N 1c(n)Xb(n)2bn 0b 0B 1 N 12bc(n )Xb( n)b 0 n 0B 1B 1(4-2Xb(n)2bb 0将式(4-2)代入式(4-1 ),得(4-3)2B f(c(n),Xb(n)2b f(c(n),Xb(n)b 0N 1其中x(n)为(B+1)位,f(c(n ),Xb( n)c(n )

20、Xb( n)称为位乘 积,其中n 0b=0,B+1。函数f(c( n),Xb( n)的实现方法是利用一个LUT实现映射,预先设定程序的LUT接收一个N位的输入向量Xb (Xb(0),Xb(1),.,Xb(N 1),输出为f(c(n),Xb(n),各个映射f(c(n),Xb(n)都由相应的二次幕加权累 加,最后得到一次滤波的结果。具体到本次设计,系统函数如下:15y(n)= h(m)x(n m)m 0h(0) x(n) X n 15h(1) x(n 1) x(n 14) L h(7) x(n 7) x(n 8)h(0)a( n) h(1)a(n 1)L h(7)x( n 7)(4-5)8h(m)

21、a( n m)m 07设 a(n)28a8(n)比(n)2b则 y(n)b 087h(m) 28a8(n)%(n)2bm 0b 0h(0)28a8( n)27a7(n)26a6( n) L20a0( n)h(1)28a8(n1)27a7(n1) 26a6(n 1) L 如门1)h(2)28a8(n2)27a7(n2) 26a6(n 2) L 20a0(n2)h(7)28a8(n7)27a7(n7)26a6(n7)L 2Oao(n7)28h(0)a8( n)h(1)a8(n 1) h(2)a8(n2)L h(7)a8(n 7)27h(0)a7( n)h(1)a7(n1)h(2)a7(n2)L h

22、(7)a7(n7)26h(0)a6( n)h(1)a6(n1)h(2)a6(n2)L h(7)a6(n7)2Oh(O)ao( n)h(1)a0(n1)h(2)ao(n2)L h(7)ao(n7)由上分析可知,分布式算法是将乘法运算转换成基于查找表结构的移 位相加算法,从而实现多个乘法运算操作。在被乘数位数较少的情况下, 相比直接的乘法器结构,这种算法有明显的速度和算法优势。这种算法尤 其是在乘法器资源很少的FPGA器件中有很大的应用前景。2)并行的分布式算法分布式算法有串行实现方式和并行实现方式。并行方式的算法结构如图3-10所示。图中ROM的输出和求和结果的输出都加上了虚线框,这些 虚线框为

23、流水线寄存器。上下级流水线寄存器之间的数字电路按照时钟频 率工作而不用考虑它们本身的延迟,这使得整个系统的工作频率增加,从 而加快了运算速度。但是这种并行结构增加了额外的LUT、寄存器和加法器。当输入数据位宽较少时,比如 4到8位,这种实现方式会有令人满意 的结果。II . 422 模块划分本设计米用并行分布式算法的实现方案。图4-7并行分布式算法实现框图电子系统设计方向课程设计女口图所示,各个模块的实现步骤如下:(1)输入数据预处理模块该模块用于将A/D转换器输出的8位有符号数据转换成二进制补码 形式,并进行锁存。由于在计算机中采用的数据形式是二进制补码,为了 仿真方便,在仿真时可以去掉这个

24、模块。(2)并行延时模块输入数据输送到并行延时模块,在每个时钟周期,把一组数据顺序时 延,每经过15个时钟周期,就会有一个数据移出并行延时模块。这些并行 时延模块是有15组D触发器串联而成,并且共用一个时钟。(3)预相加模块N-1) 12个乘法器,从而降低了硬件的规由于线性相位FIR滤波器的系数具有对称性,因此可以通过将对称的 x( n)进行相加,这样可以节省( 模。(4)查找表模块一个 8位的地址,可以产生28个数据。LUT分割技术,将一个8位地址的LUT该模块用于对位乘积的寻址。为了节约FPGA资源,可以采用ROM的使用。分割成两个4位地址的LUT。这样可以节省224个数据空间。因此,采用

25、 LUT分割技术,可以节省大量硬件资源,避免了大容量根据分布式算法,查找表存储的是滤波器系数的各种组合相加的结果,由于滤波器系数通常为浮点数,我们需要将其化为定点整数。(5)加法器模块该模块用于将高4位LUT选中的数据和低4位LUT选中的数据进行 相加,然后送入移位累加器模块。为了保证结果正确性,在相加前,需要 对相加的两个有符号数进行符号位扩展。(6)移位累加器模块各个位产生的位乘积在这个模块中乘以各自的权重,也即左移相应的 位数,然后相加得到最终结果。(7)输出处理模块由于移位累加器输出的是 24位二进制数,为了得到 16位字长的数 据,需要对输出数据进行截去低 8位,同时进行锁存输出。如

26、果有必要, 还需将输出的二进制补码转换为二进制原码。423 FIR 滤波器各模块的实现(1) 数据预处理-输入信号转换进程,对输入的二进制原码转换为二进制补码输出-预处理library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity sig ned_buma isport (X_in:in std_logic_vector(7 downto 0);-输入clk:in std_logic;buma:out std_logic_vector(7 dow nto 0)补码输出);end sig n

27、ed_buma;architecture arc of sig ned_buma issig nal temp:std_logic_vector(7 dow nto 0);-中 间信号sig nal b:std_logic;-中间信号beg inb<=X_i n(7);p rocess(clk)begi nif clk'eve nt and clk-1' the nif b='1' thentemp v=(X_i n(7)&(n ot X_in( 6)&(not X_in(5)&(not X_in)& (n ot X_in(

28、 3) )&(not X_in(2)&(not X_in( 1)&(not X_in( 0)+'1' elsetempv =X_i n;end if ;end if;end p rocess; buma<=te mp;end arc;时序仿真波形如图4-8所示:5悍的10甲m9'刖側话归迎如、ESj t HiE 7p砧*J2.;.cllL 0 l_-n m h-:i4p U,S 刖ID甲世肿辛u.剖如凸此灯、加手殆35 HknTLrmTLnnTLJWtrbirLnnruwlTWLnnrErRrLrLruTjmrL匕尸丫 寸厂寸飞wTn=yT

29、Tr-TrrfrrDrr厂 6 y丫飞 Y1 E'1X1論补诃'图4-8补码转换波形图Clk为输入时钟,X_in为输入的原码的有符号表示,buma为输出补码 的有符号数表示,由波形可以看出,负数的补码为符号位不变,其他位按 位取反后加1,正数的补码即为原码。移位寄存器FIR滤波器的阶的运算,即考虑(2) 输入模块 输入模块由移位寄存器和加法器与地址码形成模块组成。模块实现对并行输入信号的延迟输出,其寄存器的个数由 数决定。加法与地址码形成模块首先实现B(i)=X(i)+X(N-i)了滤波器系数的对称性,把与相同两个滤波系数相乘的两个采样值预先相 加,以减少硬件规模。移位寄存器模

30、块的VHDL代码如下所示:-并行延时,相当于15个D触发器串联library ieee;use ieee.std_logic_1164.all;en tity delay isport(X_in:in std_logic_vector(7 dow nto 0);-滤波器输入 clk:in std_logic;"输入时钟x0,x1,x2,x3,x4,x5,x6,x7: buffer std_logic_vector(7 dow nto 0);-寄存器 x8,x9,x10,x11,x12,x13,x14,x15:buffer std_logic_vector(7 dow nto 0);e

31、nd delay;architecture one of delay isbegi np rocess(clk)begi nif clk'eve nt and clk-1' thenx15<=x14;x14v=x13;x13<=x12;x12<=x11;x11<=x10;x10<=x9;x9<=x8;x8<=x7;x7<=x6;x6<=x5;x5<=x4;x4<=x3;x3<=x2;x2<=x1;x1<=x0;xOv=X_i n;end if;end p rocess;end one;时序仿真波

32、形如图4-9所示:Vilag23t 】耳址l.Ef .h10.踽 A11 a -JIE ft J】T卑seuHw-,1训30 5 KJ«:上kPL n jn rTun jTLjnjn r"Ln n rT nL n FL n PL n n rTJa T inXS 7w测 7 黑 T4St-HYL?KTlfQi:L K 13 If 4< F X t K£ £ X Q K 10 f H I1 1? I 1厂s0-11 OtLil J 3 K 4 I 5 If t. I 1 t iiKJjil tlEKlSa卫s15' tSt;Y *訂)!KNJT

33、F Y f F弋 MY n me何Js1" t 亠*1 呛 K'-i 1 I X j If f I 3 I V j: * tlTi - i. a 0 1 I? Y ! 134;崔"6Y"S f 呛'¥ D Ji : Y p i;Y 4 丫 g t"置 t ar M Y1,1't ')aS0丨屮巧1ft T 13 E3,-9一,!,心Q_JL_ijtJLX4 JUlX015丑r-3E3 x-a -i Y G 珂卞"(TY i yy Yrr y l、P -4 1a rv3i 'M =b r M Y

34、-J if -J X-i liKiltKuI'iYsl呑XWsi訓3iO' tfl 111:!3 Ell3一,.03e& X- I.-3 x-p X -1 -X 9 -X J -I I Aj丑旦311 D1 1y -d 1 -q I 包 If -2 1-1 toll iro& : £73'''',rEi-3 C ¥ -1 讥 Y 1 iM5: t:14 KEY 小 mU工叫g'1IIf n 1 -J J -3 1y -1 1图4-9移位寄存器仿真图由图4-9可以看出每来一个脉冲,输入信号就会向后延时一次

35、。 加法与地址码形成模块具体程序如下:library ieee;ieee.std_logic_1164.all; ieee.std_logic_sig ned.all;ieee.std_logic_arith.all;useuseuse-输入预相加和地址码产生en tity Address isport(x0,x1,x2,x3,x4,x5,x6,x7:in std_logic_vector(7 dow nto 0);-输入寄存器 x8,x9,x10,x11,x12,x13,x14,x15:in std_logic_vector(7 dow nto 0);-输入寄存器 clk:in std_lo

36、gic;-输入时钟 add0,add1,add2,add3,add4,add5,add6,add7,add8:outd_logic_vector(7 dow nto 0);-地址输出 end Address;architecture arc of Address issig nal a0,a1,a2,a3,a4,a5,a6,a7:std_logic_vector(8 dow nto 0);begi na0<=(x0(7)&x0)+(x15(7)&x15);-系数相同的两两相加求和 a1v=(x1(7 )& x1)+(x14 & x14);a2v=(x2(7

37、) &x2)+(x13 & x13);a3v=(x3(7) &x3)+(x12 & x12);a4<=(x4(7 )& x4)+(x11 & x11);a5v=(x5(7) &x5)+(x10 & x10);a6v=(x6(7) &x6)+(x9(7) &x9);a7<=(x7(7) &x7)+(x8(7) &x8);p rocess(clk,a0,a1,a2,a3,a4,a5,a6,a7)begi n-下面产生的8位位矢量将作为LUT的地址 if clk'eve nt and

38、clk='1'the nadd0<=a7(0)&a6(0)&a5(0)&a4(0)&a3(0)&a2(0)&a1(0)&a0(0);-最低位add1v=a7(1)&a6(1)&a5(1)&a4(1)&a3(1)&a2(1)&a1(1)&a0(1);add2v=a7(2)&a6(2)&a5(2)&a4(2)&a3(2)&a2(2)&a1(2)&a0(2);add3<=a7(3)&a6(3)&am

39、p;a5(3)&a4(3)&a3(3)&a2(3)&a1(3)&a0(3);add4<=a7(4)&a6(4)&a5(4)&a4(4)&a3(4)&a2(4)&a1(4)&a0(4);add5<=a7(5)&a6(5)&a5(5)&a4(5)&a3(5)&a2(5)&a1(5)&a0(5);add6<=a7(6)&a6(6)&a5(6)&a4(6)&a3(6)&a2(6)&a1(

40、6)&a0(6); add7<=a7(7 )&a6(7)&a5(7)&a4(7)&a3(7)&a2(7)&a1(7)&a0(7);add8<=a7(8)&a6(8)&a5(8)&a4(8)&a3(8)&a2(8)&a1(8)&a0(8);-最高位 end if;end p rocess;end arc;时序仿真波形如图4-10所示:炮u垃1>0zlk/B讪SlLUQ xsIV MO囂£sIV-QQ5* Q h451*Q <S5"預

41、kE5Of导:Q hT5IT'S0吠5FezB5TL 1加S EllSId ii;HQQ 43p d囲1£1S川3Q h5S密145fOD!鈕1忌pPL汛即 U:璋 dI. CL rii丄0卑4也g监35-军PL仇罕匹伴巧匕''a 羽3LTB QDIB am IP可fu am u dmb ODI hODI壬ViSS7X驴X何.y .inXTX一 JL .;H.A'.,.倉冥i5i1EX1 ?2eXiI12I1'S!'i 1 ''J '50X,:( '2. c .I:' .! 1 'J:5-

42、sK-HFJ-iTX-LXC?.,*A5X7TX,*')t屯>0JK.JX.2I9 uX.1X 15y0"Kr 典JI>ZBJX. 4X5+0TKrJ冥;4Xry 0XJ工! 4X号0XX:2JX-一号iozJiniD画 cinoaasI X皿imiJDflBnIL hctmi rIQOCilH1oimnjj y=i>DI叮 yrLj"Tjn n rLrrurL rL rLn n nL r n rL rL rL r , d y?i 厂'、L;厂Y . - * 厂'1rr'厂勺汁YbY '务 、:U円:Xk *;lUd

43、ilDLD ;11.,.I;IDELUUJd1.wjfMhib.y.iDdrtnti£iIIJJJIDLO 1TiCkDDti.mjoTOiinirTn-iDommmiffKDo £ jiiDiKL it厂I*' uiDUlLDcffiinnTcr' "fflilLOLa' jt ' ' ihnDLCii图4-10加法与地址码形成模块波形仿真图由波形图可以看出,x0+x15的结果组成了 add0 add8最低位,x7+x8的结果组成了 add0-add8最高位,其他相加结果依次组成 add0-add8相 应位。add0 ad

44、d8即为查找表的九个八位地址。(3) 查找表模块输入模块形成9组8位地址码,如果直接建立LUT,则LUT的规模较大,为28个字,为了节约FPGA资源并且简化表格深度,本文使用了 8位地址线LUT分割技术,分成2个4位地址线的LUT。加法模块实现高4位LUT与低4位LUT输出值相加后得出8位地址码的输出值。低四位和高四位 LUT如表4-2、表4-3所示:表4-2 低四位LUT地址及对应值低四位函数值十进制二进制补码相反数二进制补码00000000000000000000000000001h(0)-10111110110100000010100010h(1)-1011111011010000001

45、0100011h(0)+h(1)-20111101100200000101000100h-411111110040000001000101h(0)+h(2)-14111110010140000011100110h(1)+h(2)-14111110010140000011100111h(0)+h(1)+h(2)-24111101000240000110001000h(3)6000000110-61111110101001h(3)+h(0)-411111110040000001001010h(3)+h(1)-411111110040000001001011h(3)+h(1)+h(0)-141111

46、10010140000011101100h(3)+h(2)2000000010-21111111101101h(3)+h(2)+h(0)-811111100080000010001110h(3)+h(2)+h(1)-811111100080000010001111h(3)+h(2)+h(1)+h(0)-1811110111018000010010表4-3 高四位LUT地址及对应值高四位函数值十进制二进制补码相反数二进制补码00000000000000000000000000001h19000010011-191111011010010h(5)33000100001-33111011111001

47、1h(5)+h(4)52000110100-521110011000100h(6)44000101100-441110101000101h(6)+h(4)63000111111-631110000010110h(6)+h(5)77001001101-771101100110111h(6)+h(5)+h(4)96001100000-961101000001000h(7)51000110011-511110011011001H+h70001000110-701101110101010h(7)+h(5)84001010100-841101011001011h(7)+h(5)+h(4)10300110

48、0111-1031100110011100h(7)+h(6)95001011111-951101000011101h(7)+h(6)+h(4)114001110010-1141100011101110h(7)+h(6)+h(5)128010000000-1281100000001111h(7)+h(6)+h(5)+ h(4)147010010011-14710110110131查找表程序如下:library ieee;use ieee.std_logic_1164.all;-低四位对应系数的补码package FIR_R0M1 isfun ctio n LUT1(y:in std_logic_

49、vector(3 dow nto 0) return std_logic_vector;end FIR_ROM1;package body FIR_ROM1 isfun ctio n LUT1(y:in std_logic_vector(3 dow nto 0) return std_logic_vector is variable m: std_logic_vector(8 dow nto 0);begi ncase y iswhen "0000"=>m:="000000000"whe n "0001"=>m:=&quo

50、t;111110110"whe n "0010"=>m:="111110110"whe n "0011"=>m:="111101100"whe n "0100"=>m:="111111100"whe n "0l0l"=>m:="111110010"whe n "0110"=>m:="111110010"whe n "0lll"=>m

51、:="111101000"whe n "1000"=>m:="000000110"whe n "1001"=>m:="111111100"whe n "1010"=>m:="111111100"whe n "1011"=>m:="111110010"whe n "1100"=>m:="000000010"whe n "1101"

52、=>m:="111111000"whe n "lll0"=>m:="111111000"whe n "llll"=>m:="111101110"whe n others=>m:="000000000"end case;电子系统设计方向课程设计return m;end LUT1;end FIR_R0M1;-低四位对应系数的相反数的补码library ieee;use ieee.std_logic_1164.all;package FIR_ROM2 is-

53、程 序包function LUT1BU(y:in std_logic_vector(3 downto 0)-函数体return std_logic_vector;end FIR_ROM2;package body FIR_ROM2 isfun ctio n LUT1BU(y:in std_logic_vector(3 dow nto 0)return std_logic_vector isvariable m: std_logic_vector(8 dow nto 0);begi ncase y iswhen "0000"=>m:="000000000&qu

54、ot;whe n "0001"=>m:="000001010"when "0010"=>m:="000001010"whe n "0011"=>m:="000010100"whe n "0100"=>m:="000000100"whe n "0l0l"=>m:="000001110"whe n "0110"=>m:="0000011

55、10"whe n "0lll"=>m:="000011000"whe n "1111"=>m:="000010010" when others=>m:="000000000" end case;return m;end LUT1BU;end FIR_R0M2;-高四位对应系数的补码library ieee;use ieee.std_logic_1164.all;package FIR_ROM3 isfun cti on LUT2(y:i n std_logic_vector(3 dow nto 0) return std_logic_vector;end FIR_ROM3;package body FIR_ROM3 isfun cti on LUT2(y:i n std_logic_vector(3 dow nto 0) return std_logic_vector is variable m: std_logic_vector(8 dow nto 0);begi ncase y iswhen "0000"=>m:="000000000"whe n "0001"=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论