ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:2.23MB ,
资源ID:23643145      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23643145.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA除法器课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FPGA除法器课程设计.docx

1、FPGA除法器课程设计一背 景 介 绍近几十年来,数字信号处理技术作为信号与信息处理学科的一个主要研究方向,在电子学、计算机、应用数学等学科得到了广泛的应用,许多信号处理和控制需要用到除法算法。一般的数字信号处理器中没有现成的除法指令,而是用现有的减法或乘法指令进行叠加来完成除法运算,这样其运算的复杂度和精确度就难以达到要求,这就致使一些带有除法的好的算法在信号处理中难以得到应用,严重影响了信号处理领域中的数据处理。虽然近几十年人们花在算术运算单元的设计越来越多,努力设计高性能的运算单元,但是,为了提高性能所做的大部分努力都花在设计更快的加/减法器和乘法器上,除法器设计相对来说所作的关注较少。

2、在无线通信、语音通信、图像处理等领域中,往往涉及大量的数据处理,而且数据计算精度和实时性要求很高,需要很高的处理能力来提高系统的执行效率,Soerquist 等人指出,在四中基本运算中,除法的执行速度最慢。虽然除法占所有运算的比例很少,大概 3%,但这并不表示除法对处理器性能的影响很小,在因为指令阻塞等待而引起的处理器性能下降的因素中,除法指令大约占到40%,因此设计一种执行效率高的除法结构具有很重要的意义。而随着半导体技术的发展,FPGA 逐渐步入人们的视野,成为系统设计的首选,本设计就是基于FPGA实现各种除法算法,那什么是FPGA?又为什么选择FPGA呢?FPGA(FieldProgra

3、mmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例

4、如触发器(Flipflop)或者其他更加完整的记忆块。FPGA一般来说比ASIC(专用集成电路)的速度要慢,实现同样的功能比ASIC电路面积要大。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)。主要特点:采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得

5、到合用的芯片。FPGA可做其它全定制或半定制ASIC电路的中试样片。FPGA内部有丰富的触发器和I/O引脚。FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器

6、,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。1984年,Xilinx公司推出了世界上第一个FPAG芯片,其目标是将LS工/VLSI门阵列技术的高密度和通用性和现场可编程逻辑器件的设计灵活及产品的有效性结合起来。他的特点是:复杂互连、性能依赖于设计和较高的逻辑密度。适于通信设备中复杂数据通路和工业控制的数据采集系统。随着 CAD 开发工具功能的日渐完善以及FPGA的优良性能日益显露,FPGA己经受到广大电子科技人员的普遍重视并得到了越来越为广泛的应用。

7、现今,利用FPGA来进行系统集成设计己成为一种极为普遍的现象。用 FPGA 来实现除法主要有以下儿几点优点:1)FGPA 非常适合于各种算术运算,包括含有大量乘、加运算的数字信号处理算法。充分利用硬件资源,并在性能上超过其他的器件。2)相对于单片机和DPS处理器而言,FGPA可以由设计者根据算法的内在结构设计合适的处理阵列,避免前者串行执行指令的低效。3)相对ASCI而言,采用FPGA可避免初期巨大的开发投资,同时拥有微处理器的通用性和灵活性。在算法修改时,短时间内就将新的算法付诸实际。当然由于FPGA 仍然属于通用器件,效率比ASIC低,但其灵活性的优势仍然可以很大程度上弥补其缺点。因此利用

8、FPGA完成快速除法器的算法是一种方便、快捷、最具优势的优化设计方案。基于上述原因,利用FPGA来实现快速除法器算法这一设计思想将具有十分重要的应用价值。二设计要求与任务除法器设计 以下两种要求任选一种1设计一个除法器,能在Basys2开发板上实际运行。被除数为16位,除数为8位,被除数和除数都用按键输入,结果用数码管显示,设置一个使能开关,开关朝上拨时才进行运算。由于数码管和按键等资源数量较少,因此可以考虑采取下面的方案实现。LD2 LD1 LD0指示状态,000是起始状态,001用于输入被除数高8位,010用于输入被除数低8位,011用于输入除数(8位),100用于显示结果,101用于显示

9、被除数和除数btn1和btn0和数码管配合,用于改变准备输入的数据btn2用于将数码管显示的数据输入到相应的地方,同时切换状态。btn3 的功能也是切换状态,如果用btn3切换状态,则不改变原来的数据。sw6如果为1表示允许进行除法运算,为0则表示不允许。因为LD2-LD0为100和101时需要显示6位16进制数,而数码管只有4个,所以用sw7进行切换。LD2-LD0为100时,sw7为0时显示商,为1时显示余数,LD2-LD0为101时,sw7为0时显示被除数,为1时显示除数。设计一个除法器,能在Basys2开发板上实际运行。被除数为16位,除数为8位,被除数和除数都用按键输入,结果用数码管

10、显示,设置一个使能开关,开关朝上拨时才进行运算。由于数码管和按键等资源数量较少,因此可以考虑采取下面的方案实现。使用2个开关决定状态,例如SW1和SW0,SW1-SW0为00时用于输入被除数,通过4个按键输入4位16进制数,输入的数通过数码管显示;01时用于输入除数,通过2个按键输入2位16进制数,输入的数通过数码管显示;10时显示商;11时显示余数。我们选择第二种方案。三现有的除法算法Michael J.Flynn 与 Stuart F.0berman 按照硬件操作的不同将浮点数除法算法分为 5 大类:数值循环法(digit recurrence)、Newton-Raphson 算法、Tal

11、yor级数展开法、高基数法(very high radix)、以及可变延迟法(variable latency)等。1数值循环法(Digit Recurrence)该算法的实现主要有三种方法:恢复余数算法、不恢复余数算法以及SRT 算法。大多数除法器都是采用数值循环算法,纯数学意义的整数除法的原始表达式如下:式(3-1)中,Z 是被除数,d 是除数,Q 是商,R 是余数。根据整数除法的定义,余数 R 需要满足两个条件:绝对值小于除数,与被除数同号(0 除外)。在实际的运算过程中,商 Q 是逐位产生的,不妨把 Q 与 Z 写成逐位相加的形式:其中 qk-1,qk-2q0就是在运算过程中逐个产生的

12、商位(digit),r 为基数(radix)。把式(3-2)代入式(3-1),就得到:式(3-3)可以进一步改写为如下形式:式(3-4)具备了循环迭代的形式,如果再设置一个中间变量 Wj,那么式(3-4)又可以改写成式(3-5):式(3-5)反映了 Digit Recurrence 算法的一般实现方式,我们称它为一般迭代公式,它显示了被除数通过多轮的减法运算最终得到余数,并在中间运算中逐位产生商的过程。式中的中间变量 Wj是过程余数,它是被除数(输入)与余数(输出)之间的中间形式。Digit Recurrence 算法大体上都具有式(3-5)的形式。对于不同的实现可以选取不同的参数,例如基数

13、r,商位 qj的取值范围等等。这些参数不同时,循环需要的次数 k 也不同。2Newton-Raphson 除法算法牛顿迭代法是将非线性方程线性化,从而得到迭代序号的一种方法。它的基本思想是用乘法代替除法运算,例如 a/b=a(1/b),如何计算 1/b 是牛顿迭代算法的核心所在。对于方程 f(X)=0,设 x0为它的一个近似根,如图 3-1,则函数 f(x)在 x0附近截断高次项可用一阶泰勒多项式展开为:f(X)=f (x0) + f (x0) (X-x0) (3-6) 图 3-1 Newton-Raphson除法算法牛顿迭代法可以描述成求解 f (X)=0,具体可以归纳成以下几个步骤:第一步

14、:设函数 f (X)在 x0处的值是 Y0,则 f (x0)= Y0第二步:在点(x0,Y0)处做切线与 X 轴的交点为 x1,与 Y 轴的交点为 Y1。第三步:根据一阶泰勒公式有第四步:根据第三步公式可得第五步:以 x1为下一次的逼近值,依次类推可得 f (X)=0 的解牛顿迭代中,函数原型的的选择非常的重要,其决定着倒数结果的形式,在多种函数原型中应用最广泛的是,在除法算法中我们所需求的商位,等式两边同时取倒数,则有 (3-7)3Talyor 级数展开法将一个函数展开成泰勒级数,直接展开法可按下列步骤进行: 第一步:求出函数的各阶导数 f (x), f (x), f (n)(x), ,第二

15、步:求函数 f (x)及其各阶导数在 f (x0),f (x0),f (x0),f (n)(x0) , ,第三步:写出泰勒级数4高基数法在整数表示中,对于整数 N,各个位上的数值是nm、nm-1、nm-2n1、n0,则N 可以表示成,其中的r就是基数,我们日常用的数值都是基数为 10 的表示,而在计算机当中,数是用二进制的补码表示的,数字集为0,1,因此计算机用的是基数为 2 的数。基数感念用到除法算法中,我们同样用 r 表示基数,它是用来表征在一次除法循环过程中产生多少位商的参数,和商的位数的具体关系为n=log2r,式中 n 就是在一次循环过程中产生的商的位数。 例如我们常说的基-4 是指

16、在一次循环过程中产生两位二进制商值。在高基数的除法中,每次除法循环可以得到较多位数的二进制商,但是这种一次性得到很多位商的算法是以硬件资源消耗和速度的减慢为代价的,为了把各种算法的优势和硬件资源以及速度能够有一个很好的平衡,提出了这种高基数算法,即最大程度的发挥一次循环产生较多位商的优点,又尽可能的减少硬件资源和硬件的时间延迟来提高速度。该算法同 Talyor 级数展开法一样建立在乘法操作,加法操作,查找表的基础之上。四硬件及软件环境概述1Xilinx FPGA 的硬件基本结构Xilinx 公司生产的FPGA基本内部结构大致可以划分为六个部分:可编程输入输出单元、基本可编程逻辑单元、完整的时钟

17、管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和专用硬件模块。1、可编程输入输出单元(IOB)可编程输入/输出单元简称 I/O 单元,是芯片与外界电路的接口电路,外部输入的信号可以通过 IOB 模块的存储单元输入到 FPGA 的内部,也可以直接输入到 FPGA 内部。IOB 模块不仅完成基本的 I/O 口功能,它通过把 IOB 模块划分成不同的组,能够独立的支持不同的 I/O 口标准。2、基本可编程逻辑单元(CLB)基本可编程逻辑单元是FPGA内的基本逻辑单元。FPGA芯片由大量的 CLB 单元和其它的一些模块组成。一个 CLB 基本单元包含一个可配置开关矩阵,此矩阵由 4 或 6

18、个输入、一些选型电路(多路复用器等)和触发器组成,另外每个 CLB 单元都会由多个相同的 Slice 和附加逻辑构成。每个 CLB 模块都含有 4 个 Slice 模块,Slice 是 Xilinx 公司定义的基本逻辑单元,一个 Slice 由两个 4/6 是输入的查找表、算术逻辑、进位逻辑、存储逻辑和函数发生器组成。每一款 FPGA 的 CLB 数量和特性会根据其功能不同而有差别,但是每一个 CLB 模块的都可以配置用来完成组合电路、时序电路等,这就决定了 FPGA 强大的功能,能够实现各种简单的、复杂的逻辑电路,并且灵活,容易配置。3、完整的时钟管理(DCM)Xilinx 公司生产的 FP

19、GA 都会自带一个数字时钟管理模块,这个模块提供数字时钟管理和相位环路锁定功能,常利用 DCM 或 PLL 可以进行分频或倍频以及相位移动等操作。DCM 实际上可以称作管理时钟的硬核,硬件资源已有,我们用时只需进行简单的软件参数设置即可,使用很方便。4、嵌入块式 RAM很多的 FPGA 都内嵌有 RAM 模块,这些 RAM 块可以由用户自由进行配置,可以把它配置成单端口 RAM、双端口 RAM、内容地址存储器(CAM)或者 FIFO等存储器,其中的 CAM 在路由交换领域有广泛的应用。在基本逻辑单元 Slice中的 LUT,当用户对它进行配置后也可以用作 RAM、ROM 和 FIFO 等存储单

20、元使用。5、丰富的布线资源布线是指把设计中用到的底层逻辑门按照一定的要求和规则进行连接,布线资源连通 FPGA 芯片内部的所有单元,所以芯片内部有着丰富的布线资源。根据工艺、长度、宽度和分布位置的不同划分为 4 类:全局布线资源、长线资源、短线资源、分布式布线资源。在实际的使用中,布线是通过布局布线器完成的。布局布线器根据输入的逻辑网表的拓扑结构和约束条件自动的连通所用到的各个逻辑单元模块,这些逻辑网表和约束条件同设计有着直接的关系,设计的繁简,是否优化直接影响布局布线的结果。6、内嵌的底层功能单元这个模块指的是嵌入到芯片内的一些软处理核,主要有 DLL(Delay Locked Loop)、

21、PLL(Phase Locked Loop)、DSP 和 CPU 等,这些内嵌模块也可以叫做内嵌处理器(Embeded Processor)。这些内嵌的处理器具有丰富的功能,正因为如此使得 FPGA 称为系统级的设计工具。7、内嵌专用硬核这里的硬核模块是相对于软核而言,主要指常用的一些硬核 RAM 快、硬核乘发器等,另外高端产品中内嵌了 CPU 模块并且集成了吉比特收发器(MGT)模块。这些模块专用性很强,进一步完善了 FPGA 的功能,使得 FPGA 向 So C(片上系统)开发发展。2FPGA 的开发步骤具体的 FPGA 开发是指运用现代 EDA 开发软件和各种开发工具在芯片上进行开发的过

22、程,这个过程通常有一套通用的开发流程,在具体的实践中,这个过程中的某些步骤可以省略,但这个流程的大体方向是不会改变的,这个流程包括:电路功能设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布局布线后仿真、板级仿真以及芯片编程与调试等,开发流程的大体结构如图 4-1 所示:图 4-1 FPGA 开发的主流程图本设计开发软件采用 Xilinx 公司推出的设计工具套件 ISE Design Suite 14.5,它的主要功能包括设计输入、综合、仿真、实现和下载,涵盖了 FPGA 开发的全过程,从功能上讲,其工作流程无需借助任何第三方 EDA 软件。开发环境如下:图 4-2 Xilinx ISE

23、 开发的环境根据图 4-2,FPGA 开发的流程具体分为以下几个部分:1 电路功能设计电路功能设计是指在系统设计之前进行的系统方案论证以及芯片选型等工作。根据系统要求选择合理可行的方案,参考价格、功能、等参数选择方案所需的 FPGA 芯片。设计一般采取自顶向下的设计思路,按功能进行逐次向下分解,直到可以用 FPGA 实现每个模块为止。2 设计输入设计输入就是根据模块所实现的功能,以开发软件所认可的语言或其它方式表达出来的过程。FPGA 最常用的两种开发方式是硬件描述语言(HDL)和原理图输入。其中硬件描述语言又包括 Verilog HDL 和 VHDL 两种,它们各自有各自的一套语法格式,该语

24、言移植性较好,使用较广泛。3 功能仿真功能仿真是指在编译之前对用户所设计的电路进行逻辑功能验证,也叫前仿真。方法是在仿真前建立好波形测试文件,然后用仿真软件(本设计用 ISE 自带的仿真软件 ModelSim)进行仿真,观察仿真结果,该结果不包含任何延时只是对设计的功能性验证,若结果不对,对设计输入进行改进直到仿真结果正确。4 综合综合是指将较高级抽象层次的描述转化成较低级层次的描述。将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。可以理解为把设计输入转化编译成由与门、或门、非门、RAM、触发器等基本的逻辑单元组成的逻辑连接网表,并非真正的门级电路。本设计采用

25、 ISE 自带的综合工具 Synplicity)。5 综合后仿真 综合后仿真是将综合生成的标准延时文件反标注到综合仿真模型中,再次利用仿真软件进行仿真。仿真结果报告可以估计门延时。该步骤主要还是用来检查错误。6 设计实现与布局布线该步是指将设计好的逻辑配置放到 FPGA 芯片上,这个逻辑配置是指由综合生成的逻辑网表。这一步真正把设计输入语言与底层硬件单元联系起来。布局布线必须采用芯片开发商提供的工具。7 时序仿真需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序(也叫后仿真),该仿真包含门延时和线延时,能较好的反映芯片的实际工作情况。8 板级仿真和验证该步骤主要用在高速电路设计中,一

26、般都要用到第三方软件作为工具。9 编程下载编程下载是指将生成的比特流文件下载到芯片中进行验证,可以借助第三方软件进行硬件测试以检查设计的实现与否。五设计过程整体结构如图5-1所示:图5-1 整体结构图程序及注释见附录添加程序到ISE软件,双击“Generate Programming File”或右键后点击reRun All运行程序,直到出现三个绿色的勾表示程序编译正确,如图5-2所示:图5-2 编译图将生成的bit格式文件用“Adept”软件下载到开发板,如图5-3所示:图5-3 下载程序六结果被除数显示(当SW1-SW0为00时):除数显示(当SW1-SW0为01时):商显示(当SW1-S

27、W0为10时):余数显示(当SW1-SW0为11时):七设计心得从最开始的毫无头绪,无从下手,到最后在开发板上正常运行,虽然其中可能有不完美,我还是体会到了成功的喜悦。通过这次课设的锻炼使我受益匪浅。在设计的过程中遇到的问题,可以说是困难重重,这毕竟第一次做,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。不过在所遇的问题处理过程中有成功也有失败,但这却实加强了自己的动手能力,最终我还是体会到了成功的喜悦。在实验完成的时候我的心情真是无比的开心,从最初的一无所知到最后一直坚持着实验的做完,感觉自己像是完成了一项伟大的任务,内

28、心无比的激动与自豪。同时,在此过程中我也遇到了不少问题,同学们也都热情的给与了帮助,这也让我感觉到了团队的智慧终究不是单个人所能比拟的。总而言之这次实验,让我收获颇丰。参考文献1 (美)帕尔尼卡(Samir Palnitkar)著 夏宇闻, 胡燕祥, 刁岚松等译. Verilog HDL数字设计与综合:a guide to digital design and synthesis (第二版)M. 北京:电子工业出版社,20092安然. 基于FPGA的除法器的设计和实现D.成都理工大学,2011.八程序附录#InputsNETclkLOC=B8;/时钟接芯片B8管脚#NETclkCLOCK_DE

29、DICATED_ROUTE=FALSE;NETreset LOC=N3;#SW7/SW7为复位键NETenLOC=E2;#SW6/使能开关SW6连芯片上E2管脚NETsw1LOC=L3;#SW1/SW1连芯片的L3管脚NETsw0LOC=P11;#SW0/SW0连芯片的P11管脚NETbtn3LOC=A7;#BTN3/BTN3连芯片上的A7管脚NETbtn2LOC=M4;#BTN2/BTN2连芯片上的M4管脚NETbtn1LOC=C11;#BTN1/BTN1连芯片上的C11管脚NETbtn0LOC=G12;#BTN0/BTN0连芯片上的G12管脚#OutputsNETan0 LOC=F12;/

30、an0连芯片上的F12NETan1 LOC=J12;/an1连芯片上的J12NETan2 LOC=M13;/an2连芯片上的M13NETan3 LOC=K14;/an3连芯片上的K14NETdp LOC=N13;/dp连芯片上的N13NETcg LOC=M12;/cg连芯片上的M12NETcf LOC=L13;/cf连芯片上的L13NETce LOC=P12;/ce连芯片上的P12NETcd LOC=N11;/cd连芯片上的N11NETcc LOC=N14;/cc连芯片上的N14NETcb LOC=H12;/cb连芯片上的H12NETca LOC=L14;/ca连芯片上的L14module c

31、hufaqi(reset,clk,sw1,sw0,btn3,btn2,btn1,btn0,en,an0,an1,an2,an3,dp,cg,cf,ce,cd,cc,cb,ca); input reset,clk,sw1,sw0,btn3,btn2,btn1,btn0; output an0,an1,an2,an3,dp,cg,cf,ce,cd,cc,cb,ca; input en;/定义输入输出管脚reg3:0 disp_data0,disp_data1,disp_data2,disp_data3; wire15:0 dividend;/被除数 wire7:0 divisor;/除数 wire15:0 res;/商 wire7:0rm;/余数reg dividend_key0,dividend_key1,dividend_key2,dividend_key3;reg divisor_key0,divisor_key1;always (*)/所有变量都选,只要有一个为高电平就满足begin if(sw1,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1