基于 FPGA的32位除法器设计
基于 FPGA的32位除法器设计

目录摘要 (1)第1章绪论 (2)第2章设计原理 (3)2.1 除法运算分析 (3)2.2 除法器算法的实现 (3)2.2.1除法器无符号数的除法 (3)2.2.2除法器有符号数的除法 (3)第3章软件介绍及设计过程 (4)3.1 Quartus II简介 (4)3.2 程序设计过程 (4)3.3 仿真结果 (6)结论 (7)参考文献 (8)附录1 源程序 (9)摘要介绍了一种使用可编程逻辑器件FPGA和VHDL语言实现32位除法器的设计方法。
该除法器不仅可以实现有符号数运算,也可以实现无符号数的运算。
除法器采用节省FPGA逻辑资源的时序方式设计,主要由移位、比较和减法三种操作构成。
由于优化了程序结构,因此程序浅显易懂,算法简单,不需要分层次分模块进行。
并使用Altera公司的QuartusⅡ软件对该除法器进行编译、仿真,得到了完全正确的结果。
关键词:FPGA;VHDL;除法器;减法;移位第1章绪论EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言 VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA 技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为 3 种描述形式的混合描述,因此 VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用 VHDL来完成。
另外,VHDL还有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理实现;VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用;VHDL的设计不依赖于特定的器件,方便了工艺的转换。
基于FPGA的32位ALU的设计与实现

通过 Q u a r t u s I I 9 . 1 进 行 编译 ,M o d e l s i m 6 . 5 S E进 行 仿 真 ,仿 真 结 果 与预 期 结 果一 致 ,将设 计 下 载
w i t h c o mp l e t e f u n c t i o n wh i c h b a s e d o n p r d e v i c e F P G A a n d h a r d w a r e d e s c ip r t i o n
De s i g n 0 f 3 2 . b i t ALU b a s e d o n FPGA
KONG Z h e.W ANG We i
( I n f o r ma t i o n E n g i n  ̄r i n g S c h o o l , He b e i Un i v e r s i t y o f T e c h n o l o g y , T i a n j i n 3 0 0 4 0 0, C h i n a )
b y Q u a r t u s l I 9 . 1 . a n d he t s i mu l a t i o n c a n b e r e a l i z e d b y Mo d e l s i m6 . 5 S E .T h e s i mu l a t i o n r e s u l t i f t t e d he t
基于FPGA的浮点除法器的研究与实现

D=( 一 1 ) S ( 1 + M) ¥ 2 ( E一 1 2 7) ( 1 )
之间的数据就可以方便 的流动。
在 F P G A电路设 计 中 ,有 专 门针对 浮 点 除法 运 算的 I P核 , 例如 A h r e a 公 司的 A L T F P _ D I V 1 P , 该 模 块 支 持输 人 输 出都 满 足 I E E E 7 5 4标 准 的 浮 点 除 法 运 算 。但 并不 是 所有 的 F P G A芯 片 ( 例 如 MA X系
我 们 针对 F P G A某 些芯 片 无 法 支持 A L T F P _
D I V I P的情 况 , 设 计 出一 种 可 以整 数 输 入 , 浮 点 数 输 出 的 除 法 模 块 ,该 模 块 可 以 直 接 输 出 满 足 I E E E 7 5 4标 准 的二进 制数 。 在 实 际项 目工 程设计 中 , 该模 块有 非 常大 的实 用价 值 ,可 以方便 数 据表 达形 式 的转化 , 大 大地 减轻 程 序设计 人 员 的工作 。
的I P核 , 如 图 2所 示 , 该 核 主要 是 针 对整 数 的除 法 运算 , d e n o m 指 的是 除 法 的 除 数 , n u me r 是 被除数 , 运 算结 果 是 q u o t i e n t 和r e ma i n ,前 者 是 结果 的整 数 部分 , 后 者是余 数 。
还要 减 去 2 l 。
当我 们确 定 了第 一 个 “ l ”出现 的 位置 后 , 剩 下
的 就是 商 的 有效 数 字 , 就是 要 转 化 的单 精 度 的 浮点
数 的尾 数 M。对 于 除 法 的 符 号 运 算来 说 , 满足表 1 所示的关系 , 从 表 中我 们 可 以看 出 , 商 的 符 号 实 际
基于 FPGA的32位除法器设计汇总

目录摘要 (1)第1章绪论 (2)第2章设计原理 (3)2.1 除法运算分析 (3)2.2 除法器算法的实现 (3)2.2.1除法器无符号数的除法 (3)2.2.2除法器有符号数的除法 (3)第3章软件介绍及设计过程 (4)3.1 Quartus II简介 (4)3.2 程序设计过程 (4)3.3 仿真结果 (6)结论 (7)参考文献 (8)附录1 源程序 (9)摘要介绍了一种使用可编程逻辑器件FPGA和VHDL语言实现32位除法器的设计方法。
该除法器不仅可以实现有符号数运算,也可以实现无符号数的运算。
除法器采用节省FPGA逻辑资源的时序方式设计,主要由移位、比较和减法三种操作构成。
由于优化了程序结构,因此程序浅显易懂,算法简单,不需要分层次分模块进行。
并使用Altera公司的QuartusⅡ软件对该除法器进行编译、仿真,得到了完全正确的结果。
关键词:FPGA;VHDL;除法器;减法;移位第1章绪论EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言 VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA 技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为 3 种描述形式的混合描述,因此 VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用 VHDL来完成。
另外,VHDL还有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理实现;VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用;VHDL的设计不依赖于特定的器件,方便了工艺的转换。
基于FPGA的低功耗高速除法器设计

基于FPGA的低功耗高速除法器设计【摘要】本文介绍了一种使用可编程逻辑器件FPGA和Verilog语言实现的32位低功耗高速除法器的设计。
该除法器可以实现有符号数运算和无符号数运算,主要操作有移位、比较和减法操作。
设计中采用了一种新的基-16算法,该算法大幅度减少了除法运算过程中的移位操作,从而提高了除法器的运算速度。
在该设计中加入了门控时钟,从而大幅度减少了动态功耗。
仿真和综合结果表明其功能的正确性,运行频率最高可达530.772MHz,功耗降低了55.98%。
【关键词】低功耗;高速除法器;基-16算法;门控时钟1.引言除法器是是微处理器的核心部件之一,也是数字信号处理领域的基本单元。
同时,除法运算也是四种算术运算中最复杂的运算单元,它的性能好坏直接关系到整个电路的性能。
用FPGA实现的除法器能够以并行运算的工作方式,高速可靠的运行,并可以以IP核的形式被随时调用,所以在性能和应用的灵活性上都有很大优势。
本设计主要从速度和功耗两个方面对除法器进行了优化设计。
在速度方面通过改进算法,减少加法、乘法器的运用来改善速度。
在功耗方面通过分析功耗产生的原因对其进行改善,有针对性的加入门控时钟等方法,最终使电路功耗大幅度降低。
2.高速除法器设计2.1 高速基-16除法器的算法除法器算法主要分为Non-restoring算法(不恢复余数算法)和Restoring算法(恢复余数算法)。
Non-restoring算法因为具有步长固定,控制简单,逻辑鲜明的特点,因而更多的被采用在硬件设计中。
在该算法中,被除数若为负值则要先对其求补码,变为正值再进行运算。
在运算结束后对结果进行调整,得到商和余数。
非恢复操作每一步所执行的加减的判断,取决于上一步部分余数和被除数符号的异或,当结果为1时加上除数,当结果为0时减去除数。
本文将介绍一种基于Non-restoring算法的移位除法器设计。
与传统的每次移1位的算法不同,该设计中每次移动4位被除数,其商的值就会在0~F之间。
《基于FPGA的雕刻机32位运动控制器设计》范文

《基于FPGA的雕刻机32位运动控制器设计》篇一一、引言随着现代制造业的快速发展,雕刻机在各种加工领域中的应用越来越广泛。
为了满足高精度、高速度的加工需求,雕刻机的运动控制器设计显得尤为重要。
本文将介绍一种基于FPGA(现场可编程门阵列)的32位运动控制器设计,以提高雕刻机的加工精度和效率。
二、设计背景与目标传统的雕刻机运动控制器多采用微控制器或DSP(数字信号处理器)进行设计,但这些控制器在处理高精度的运动控制算法时,往往存在处理速度和精度的局限性。
因此,本研究的目标是设计一种基于FPGA的32位运动控制器,以提高雕刻机的加工精度和速度,降低生产成本,并提高系统的稳定性和可靠性。
三、系统架构设计1. 硬件架构:本设计采用FPGA作为核心控制器,通过与雕刻机的电机驱动器、传感器等设备进行连接,实现对雕刻机的精确控制。
硬件架构包括FPGA控制器、电源模块、通信接口、电机驱动器、传感器等部分。
2. 软件架构:软件架构包括嵌入式操作系统、运动控制算法、人机交互界面等部分。
嵌入式操作系统负责管理系统的软硬件资源,运动控制算法负责实现精确的运动控制,人机交互界面则方便用户进行操作和参数设置。
四、FPGA控制器设计1. 接口设计:FPGA控制器通过串口或以太网等通信接口与上位机进行通信,接收上位机发送的加工指令和参数,实现对雕刻机的精确控制。
2. 运动控制算法实现:采用查表法、插补法等算法实现精确的运动控制,确保雕刻机的加工精度和速度。
3. 程序编写与优化:采用硬件描述语言(HDL)进行程序编写,通过仿真和优化,确保程序的正确性和性能。
五、系统实现与测试1. 系统实现:根据设计要求,完成硬件电路的搭建和软件的编写,实现基于FPGA的32位运动控制器。
2. 测试与验证:通过搭建测试平台,对运动控制器的性能进行测试和验证。
测试内容包括加工精度、速度、稳定性等方面。
3. 结果分析:根据测试结果,对运动控制器的性能进行评估,并针对存在的问题进行优化和改进。
基于FPGA的32位循环型除法器设计
基于FPGA的32位循环型除法器设计作者:李文彬陈金鹰王惟洁任小强来源:《物联网技术》2014年第11期摘要:借助于硬件描述语言Verilog HDL语言和FPGA,提出了一种32位循环型除法器的实现方法。
该除法器通过改善程序结构,优化了时序,提高了除法运算速度,克服了传统除法器“吃时钟”的弊端。
且该除法器的移位、相减和比较操作都在一个程序下完成,无需模块划分,节约逻辑资源。
该设计并顺利通过Quartus II编译、综合和仿真工具Modelsim的仿真,达到了预期的结果。
关键词:Verilog HDL;FPGA;循环;除法器中图分类号:TP393 文献标志码:A 文章编号:2095-1302(2014)11-00-020 引言在数据处理过程中,除法是经常用但也是最复杂的四则运算。
特别是针对含有除法器的FPGA设计中,除法器的运算速度,运算精度和占用逻辑资源大小对系统的整体性能具有很大影响[1]。
现有的EDA软件提供的除法模块时钟消耗多,占有逻辑资源量大,且除数受限,只能是2的次幂。
因此,设计一种由Verilog HDL[2]编写的可综合的,可以是任意除数的,运算速度快,逻辑资源占用量小[3,4]的除法器在FPGA数据处理中就显得尤为必要。
1 循环型除法器原理与设计循环性除法器也叫位操作除法器,主要通过移位、相减和比较三种操作实现求商和得余[5]。
无论是乘法器还是除法器都有操作空间,典型的循环型除法器又可分为操作空间可恢复性和不可恢复性,这里采用易于控制,逻辑清晰的操作空间不可恢复型算法。
在上述所采用算法中,首先保证被除数为正值,若为负值,则对被除数正值化,然后进行相应的移位、减法和比较操作,最后再对结果进行调整。
具体实现过程如下:假设除数和被除数都是N位,那么操作空间P的位宽就是2*N,其中P[N-1:0]用来填充被除数,P[2*N-1:N-1]是用来与除数进行递减操作。
此外,为了保证运算结果正确性,还要考虑同步操作,P[2*N-1:N-1]和除数的递减操作应该发生在别的空间,此处命名为D空间,D空间具有和P 空间同样的位宽。
基于FPGA的除法器设计
T 322 P 3 . 中图 分 类 号
D e i n o vi e s g fDi d rBas d o e n FPGA
LU O W ANG Yu Zho g e 。 J A a y n n fi I Xi o u
Ab ta t Diie sn to l h s o mo src vd ri o ny temo tc m n.b tas hemo t o pe o o e ti iia in l o i.I ’ s dt s h tr u lo t s m lxc mp n n ndgtlsg a man t Su e ou et eie— c d aieago ih t mp e n t a d h slwe e l i .Toi r v her a—i ,hi p p ri rd c sad sg ft edgtlc mpe iie tv l rt m oi lme ti,n a o rr a— me t mp o et e ltme t s a e o u e e ino h ii o lxdvd r nt a whc s do ie ra pr i t nag rt m n ihba e n l a p oxmai lo ih a d ROM o k u a l.Co a e ot r dto a eh d,i o n yh stels eou c n o lo - p tbe mp rd t heta iin l t o m t to l a h srs re n e
awiey a p iain i iia ina r c s o i. d l p lc t n dgtlsg lp o e sd man o Ke or F yW ds PGA ,dvd r ie ra prxi ain,lo u a l iie ,ln a p o m to o D p tbe Cls m b r TP 2 a sNu e 33 .2
基于FPGA的32位整数微处理器的设计与实现
收稿日期:2003212225 作者简介:冯海涛,男,1976年生,博士,研究方向为网络处理,大规模逻辑设计,数据采集处理;王永纲,男,1966年生,副教授,研究方向为网络处理,数据信号处理;石江涛,男,1976年生,博士,研究方向为软件无线电,数字信号处理;颜天信,男,1978年生,博士,研究方向为嵌入式系统;王颜方,男,1937年生,博士生导师,研究方向为高速电路,网络处理.基于FPGA 的32位整数微处理器的设计与实现冯海涛,王永纲,石江涛,颜天信,王砚方(中国科学技术大学近代物理系,安徽合肥230027)E 2m ail :fengh t @m ail.ustc .edu .cn 摘 要:CPU “软核”可以根据实际应用需要进行剪裁,因而CPU 软核设计是SoC 设计实现的重要部分.在FPGA 内部设计和调试完全嵌入式的整数微处理器软核,不仅涉及到通常CPU 必需的算术逻辑累加器、寄存器堆、指令缓冲、跳转计数、指令集及指令编译等方面的设计实现,还要针对FPGA 内部的结构特点对设计进行分析优化,例如流水线结构的选择、关键路径延迟的折衷平衡以及整体调试等.在V irtex 1000FG 68024FPGA 上设计实现的32位R ISC 整数微处理器,运行时钟频率可达30M H z ,实现150条指令,占用FPGA 逻辑资源7%.关键词:R ISC 微处理器设计;指令集;调试中图分类号:T P 368.1;T P 302.2 文献标识码:A 文章编号:100021220(2005)0621113205D esign and I m plem en ta tion of 32-b it I n tegra l M icroprocessor Ba sed on FPGAFEN G H ai 2tao ,W AN G Yong 2gang ,SH I J iang 2tao ,YAN T ian 2x in ,W AN G Yan 2fang(D ep art m ent of M od ern P hy sics ,U niversity of S cience and T echnology of Ch ina ,H ef ei 230027,Ch ina )Abstract :T he design and i m p lem en tati on of CPU soft 2co re is necessary fo r SoC design since the soft 2co re can be tailo red to fit actual app licati on s.A 322b it R ISC in tegralm icrop rocesso r soft 2co re that is fu lly em bedded in FPGA is described ,including the design of hardw are structu re ,in structi on set and a si m p le assem b ler .A cco rding to the arch itectu re of the ai m ed FPGA ,the design of p i peline structu re and critical path delay balancing are op ti m ized .Som e debugging techn iques u sed are also discu ssed at the end of the paper .O n X ilinx V irtex 1000FG 68024,the designed m icrop rocesso r runn ing clock is 30M H z w ith 150in structi on s.T he co re occup ies 7%FPGA logic resou rce .Key words :R ISC m icrop rocesso r design ;in structi on set ;debugging1 设计目的在20世纪90年代中期,A S I C 技术从芯片集成的理念发展成为基于嵌入式核的片上系统(SoC )概念.简单地说,SoC 是一种将多个独立的VL S I 设计拼合在一起,来完成某一应用所需的全部功能的集成电路.在SoC 的定义中,明确地强调了服务于多种应用的称为“核”的预先设计的复杂功能模型[1].图1 网络包分类系统框图本文介绍的32位R ISC 整数微处理器软核是为网络包分类系统而设计的,整个分类系统如图1所示.网络数据包送入包解析部分,从各段包头中提取出需要的域(field ),查找树接收来自包解析输出的域,进行递归查找,递归树的结果表明是否有可能命中规则,如果是,需要对此范围内的规则进行线性比较查找,最后根据命中规则的要求处理网络数据包,如没有任何规则命中,则按照缺省规则处理数据包.为了加快处理的速度,递归查找树存储在FPGA 的内存中,而存储空间要求较大的规则部分放在外存.处理器的工作是对递归查找树和在外存中的规则进行实时更新以及部分的系统控制.2 微处理器设计微处理器结构如图2(见下页)所示,主要分为取指令段、译码段和指令执行段.系统设计特点如下:32个32位通用寄存器,两个源操作数和一个结果操作数可以任意独立选取;32位指令,提供16位立即数;哈佛结构,分离的指令和数据总线;32位地址总线;外部数据总线分为4个区(BAN K ),每个区的读和写可 第26卷第6期 2005年6月小型微型计算机系统M I N I -M I CRO SYST E M S V o l 126N o .6 June 2005 以分别独立地设置操作方式和延时;3级流水线,除个别指令外,每时钟周期完成一条指令;可选的指令Cache .2.1 流水线的选取方案设计前对3级和5级流水线进行了调研.3级流水线的优势是结构简单,每次数据操作的结果都可以在一个周期内回到寄存器堆,不存在前后数据相关的问题,但是因为所有的数据操作都要求一个周期内完成,整个系统的时钟周期的改进受制于最长时间的数据处理操作,而且,寄存器堆不容易扩展.图2 微处理器结构框图与3级流水线相反,5级流水线因为可以在流水级中间暂时锁存数据操作的中间结果,稍长的操作可以在各级流水级中均衡的分配,所以系统的时钟频率可以更快,5级流水线的另一个优势是寄存器堆可以做的更大、更灵活、复杂,而不图3 ALU 数据相关通路(前推)示意图影响系统的时序.暂时锁存数据操作的中间结果带来的问题是,每一个操作从开始到回到寄存器堆将不止一个周期,可能存在前后数据相关的数据处理操作必须要加入相关的专用通路(前推)结构,否则,将产生流水线的“气泡”(停顿).在FPGA 逻辑设计中,多路选择逻辑(M U X )是一种比较重要的资源,一般是用查找表(LU T )和小的多路选择器,如M U XF 5,M U XF 6相结合实现稍大的多路器,这种多路选择逻辑时延较大,往往在路径分析时要着重考虑.前推的结构要求任意的源操作数前都要加入多路选择器供上一次运算结果前推,如图3所示,这会稍微降低系统的性能.在5级流水线中,LOAD 到寄存器中的数据不能够立刻被下一条指令引用,这是5级流水线的结构冲突导致的,也可以使用在所有的源操作数前再加入多路选择器的方法来解决这个问题,但是因为结构比较复杂,较少采用,一般使用编译器或者明确要求LOAD 指令后加入一条非相关指令.软核是为嵌入于FPGA 中而设计的,核的时钟频率与系统中其它部分相同或稍高,而对微处理器所要求的操作是硬实时或者准实时的,时钟周期的停顿很可能会造成系统性能的降低和一些不必要的时序上的困扰,另外,微处理器所用逻辑、硬件描述语言编码和调试的方便也成为考虑的因素.最后选用3级流水线的方案.2.2 Am dahl 定律的应用通过改进计算机的某一部分,而使性能提高的量,可以用Am dah l 定律计算出来.Am dah l 定律说:通过使用某种较快的执行方式所获得的性能的提高,受可使用这种较快执行方式的部分所占的比例的限制[2].在软核的设计过程中,充分利用Am dah l 定律提高系统的性能.在FPGA 中实现单周期的任意32位的循环移位非常耗费资源,因为缺少特殊的硬件结构,循环移位只能够依靠多路选择逻辑实现.32位宽的结果寄存器的每一位都需要有路径映射到源操作数的每一位,这就要求有32个32:1的多路选择器.因为FPGA 中布线资源有限以及多路器布线的复杂性,实际所占的面积比32个多路器的面积和要大,这增加了延时和时序的不确定性.另外,32:1的多路器是由更小的4;1和2:1多路器组合而成,其本身的延时就很可观,综合以上,在单指令周期内实现32位宽的任意循环移位在最终的布线后产生了许多难以处理的关键路径信号.把循环移位设计成2周期执行的指令可以解决微处理器时钟频率降低的问题,但是如果运行的指令中循环移位指令较多则会导致核的CP I (执行一条指令所需的平均时钟周期数)明显增加.分析表明,大多数情况的循环移位是偶数次,即2的倍数的,如字节、半字操作,网络包头数据的处理等.另外,微处理器可完全嵌入于FPGA 中,系统中的其它部分可以根据软核处理数据的特点构造和修改数据结构以加快运行.任意位的循环移位在某些时候是必需的,在指令集中加入1位的循环移位作为补充,用偶数次和1位的循环移位的组合实现任意的32位宽的循环移位.这时的操作相当于2周期执行的循环移位指令.但因为非偶数次的移位指令所占比例相当少,根据Am dah l 定律,这种组合的任意位循环指令对总的CP I 的增加也很少.2.3 延时路径的平衡加法和减法需要多级进位逻辑,延时较大.一般设计中ALU 运算的最后一步通过对32位宽的ALU 结果总线求值产生零标志位(ZERO FLA G ),很容易成为ALU 数据通路中的关键路径信号.零标志位一般只被程序流控制指令引用.在设计中发现取指令段的时钟周期冗余较大,可以通过修改指令集“取消”零标志位:ALU 运算的结果存入寄存器,当需要条件控制程序流改变时,根据寄存器的结果在取指令段决定是否需要跳转,整个操作在指令集中隐含了零标志位,产生零标志位的求值操作由执行段移到了取指令段,使核的各流水级更加平衡.4111 小 型 微 型 计 算 机 系 统 2005年在3个流水线中,容易产生关键路径信号的有译码段和执行段的ALU 数据通路.译码段的关键信号是全局的时钟使能线和部分的状态机的控制线.执行段要更复杂些,有效的实现ALU 数据通路的关键是减少各通路的时延和减少多路选择逻辑.在大多数基本的ALU 实现中,各数据通路的操作都是同时并行执行的,并不关心当前执行的是什么指令,在最后由指令译码选择正确的结果输出[3].对于现有的指令集提供的功能,需要的数据通路将会超过20个,多路器在FPGA 中的实现代价很大,这对后端译码选择输出结果的多路选择逻辑造成很大的压力.一个解决方法是尽量地减少核所提供的数据处理功能,进而减少多路器,但这往往又不太现实.因为FPGA 结构的特殊性,可以合并某些数据通路,最终减少多路选择逻辑的使用.如,加法和减法,通过设置进位CA RR Y 和增加对源操作数取反的逻辑可以合并为一个数据通路;逻辑运算利用4输入查找表结构可以使后端选择逻辑减少为原来的1 4~1 3.经过以上的处理,主要的数据通路减少到7~8个.乘除法操作在现有的系统中极少使用,而且乘除法指令是多周期执行,在得到结果前,核不能进行其他操作,在数据通路中加入乘除法更增加了多路选择逻辑的复杂性.为了保持功能的完整性,保留了乘除法指令的空间,利用外部数据空间的区(BAN K )外挂协处理器实现乘除法.图4 执行段ALU 主要数据通路框图各ALU 数据通路的延时稳定后,对所有通路进行组合,原则是各路径加上后端的多路选择逻辑在时延上较为一致,这个工作类似于箍木桶的工作,桶的容量决定于最短的桶片.通过对各数据通路的时延分析和试验,确定的ALU 通路的设计如图4所示.3 微处理器指令软核的指令在设计中更多的考虑到FPGA 结构的特殊性,使指令的实现更容易被优化.多数的指令可以根据需要进行取舍,用户还可以添加一些自定义的指令来控制部分引脚.3.1 数据处理指令数据处理指令完成寄存器中数据的算术和逻辑操作,其他指令只是传送数据和控制程序执行的顺序.因此,数据处理指令是唯一可以修改数据值的指令.数据处理指令一般需要两个源操作数,产生单个结果.所有的操作数都是32位宽,或者来自寄存器,或者来自指令中定义的立即数.每一个源操作数寄存器和结果寄存器都在指令中独立的指定,也就是说,微处理器指令使用3地址模式.所有指令和操作数采用小端(L ittle Endian )编码.数据处理指令分类排列如下:算术操作指令.操作数是无符号数或以二的补码表示的有符号数:ADD (加法),SUB (减法),ADC (带进位加法),SBC (带进位减法),AD K (保留进位加法),SBK (保留进位减法),AD KC (带进位且保留原进位加法),SBKC (带进位且保留原进位减法).逻辑操作指令.对操作数进行指定的布尔逻辑操作:AND (按位与),OR (按位或),XOR (按位异或),ANDN (第二个源操作数先取反,再与第一个源操作数按位与).寄存器移位操作指令.对操作数进行逻辑或算术移位:L SR PT (左移1位,最低位重复填充),L SZ (逻辑左移1位,最低位用0填充),L SC (左移1位,最低位用进位位CA RR Y 填充),L SBRL (循环左移1位,最低位用最高位填充),R SR PT (算术右移1位,最高位用符号位填充),R SZ (逻辑右移1位,最高位用0填充),R SC (右移1位,最高位用CA RR Y 填充),R SBRL (循环右移1位,最高位用最低位填充),以上1位移位指令中,移出的位都送入进位寄存器CA RR Y ;BRL 2X (循环右移位,单周期执行,移位的范围0~32,步长为2,在指令中用立即数或用寄存器指定移位的大小.移位大小为零则不进行移位,相当于复制寄存器指令).字节扩展操作指令.对32位宽的操作数提取任意的字节或半字(16位宽),可同时进行符号位扩展,所要提取的字节或半字在指令中或用寄存器指定:EXT 8(提取操作数中任意的字节),EXT 16(提取操作数中任意的半字),SEXT 8(提取操作数中任意的字节同时进行符号位扩展),SEXT 16(提取操作数中任意的半字同时进行符号位扩展).立即数操作指令.以上数据处理指令除了1位移位指令外,第二个源操作数都可以指定为寄存器或者一个编码于指令中的16位宽立即数(符号扩展为32位宽).16位宽的立即数覆盖了大多数的一般的情形,但有的操作要求32位宽的立即数,不可能在32位宽的指令字内编码32位宽的立即数,所以在指令中添加了立即数扩展指令,即用指令中的16位立即数填充32位宽立即数的高16位,下一条指令再添加低的16位,组成32位宽的立即数.分析表明,超过16位宽的立即数使用量较少,如果这类立即数不超过32个,可以在微处理器译码部分加入一个立即数缓冲池,指令编码稍加改动,可以在不耗费指令周期的情况下提供32位宽立即数.3.2 数据传送和控制指令数据传送指令在寄存器和存储器中间传送数据.软核的外部数据空间划分成4个区(BAN K ),每个BAN K 可以独立的分别设置LOAD 、STOR E 操作方式:固定周期延时或握手方式,如果选择固定周期,可以用软件方式设定0~7个时钟周期延时.多个BAN K 的方式为操作复杂的外围接口提供了可能,并且,较之单一的存储器接口,多个BAN K 独立设置操作方式和延时更加节省资源,快的接口不必因为要迁就慢的51116期 冯海涛等:基于FPGA 的32位整数微处理器的设计与实现 接口而等待.数据传送指令都是基于寄存器间接寻址的: LOAD n(n=0~3)和STOR En(n=0~3)以及相应的使用立即数作为基址或变址的指令:LOAD In(n=0~3)和STOR E In(n=0~3).以从BAN K2中LOAD数据为例:LOAD2 %RC %RA %RB第一步操作是对两个源操作数的地址相加:%RA<=%RA+%RB第二步操作是把%RA寄存器中地址指定的内容根据操作设置寄存器的要求放入%RC寄存器.STOR E指令的第一步与LOAD相同,第二步操作数据流向相反.程序流控制指令.用于确定哪一条指令在下一步执行,控制指令的种类较多,提供了较为灵活的编程方法:JUM P(绝对跳转),JUM PR(相对跳转),CALL(绝对子程序调用), CALL R(相对子程序调用),R T S(子程序返回),R T I(中断返回),R T S conditi onal(conditi onal=EQ,N E,GT,GE,L E, L T;条件子程序返回),JUM P conditi onal(条件绝对跳转), JUM PR conditi onal(条件相对跳转),CALL conditi onal(条件绝对子程序调用),CALL R conditi onal(条件相对子程序调用),以上指令中的源操作数都可以指定为寄存器或编码于指令中的立即数.3.3 未用的指令空间并非所有的232种指令位编码都有确定的含义,除了预留的乘除法指令外,还有部分的指令空间没有使用.这部分空间可以可选的用于配置寄存器,配置堆栈等,用户可以选择部分空间自定义指令,用于完成特定的操作.4 调 试4.1 调试方法设计任何的软核都是一个复杂的工作,设计一个完全嵌入式的微处理器软核更是如此.软核的设计必须可靠,并且经过严格的测试,越晚发现错误,工作流程中反复的代价越大.设计同时要提供后期在嵌入于系统中时调试的方法.以下的方法都有各自的局限性,在实际的使用中,往往是多种方法相互结合.最基本的调试手段是基于FPGA厂商提供的开发和仿真环境.用硬件描述语言编写T ESTBEN CH,构成一个最小运行环境,T ESTBEN CH产生对目标软核的激励,同时记录软核的输出,和预期值进行比对,可以确定核的设计错误.这种方法的好处是实现容易,结果准确,但硬件描述语言编码量较大,为了仿真结果的准确性,无论功能仿真还是时序仿真,仿真的步长都不能太小,结果导致整个系统仿真时间太长,另外,这种调适方法只能对预期的外部条件和内部状态进行处理.全局的时钟使能(CLOCK ENABL E)线和软件断点.可用于后期嵌入于系统中时调试,系统根据某些外部或内部条件或者核自身根据软件断点控制软核的时钟使能线,使核的所有操作处于暂停状态,这时系统可以驱动存储器总线和专用的寄存器寻址线读出存储器和寄存器堆的内容,取得软核在此运行时刻大部分的状态信息.这种方法额外增加设计复杂性并且在操作时必须暂停核的正常工作,只适用于外部条件变化不多或近似静态的环境.总线条件监听.在核的外部数据或指令总线上挂载几个条件监听模块,当数据符合时,将后续数据顺序的存入监听模块内部的缓存中供以后读出分析.每个监听模块对每根总线只增加了一个负载,总线驱动的负担增加的不多,对时序的影响也很少,不会影响处理器和片上正常的操作,这种方法只适用于总线.4.2 汇 编汇编器是为方便软核的调试和工作而开发的.手工编写二进制的机器码很容易出错并且工作量大,很难阅读和使用.在调试的过程中有可能对指令集做部分的修改,这时相应的汇编器也要做改动,所以要求编译器的设计在小部分指令集的修改时导致的对汇编器的修改量不应太大.另外,汇编器的结构和设计尽量做到结构简单性能可靠,在程序中必要的地方可以用堆叠代码的方法实现功能,而不必仔细考虑编程使用的技巧和汇编器的效率问题,因为在软核使用中,一般汇编语言的使用量最多几千条(外挂指令存储器+Cache)或在几百条到两千条之间(完全嵌入式的应用),以目前的PC的计算能力,即使是用最没有效率的编程方法,几千条指令的汇编工作也可以在2秒内完成,在时间上是完全可以接受的.汇编程序对源程序进行两次扫描.第一次扫描记录跳转指令中的标记(LABEL)和程序中其它的标记,并把标记转换成对应的指令地址存入标记2地址转换表中.第二次扫描对输入的源程序逐行进行处理,针对不同的指令翻译机器码,包括指令编码转换、寄存器地址转换、常数数制转换等,如遇到标记,则查找标记2地址转换表,绝对地址指令用相应的地址替换标记,相对地址指令用地址的差值减二(因为延迟槽D elay Slo t)代替标记,最后输出二进制的机器码到结果文件中.在编写汇编语言源代码时,指令助记符以大写字符表示;寄存器以‘%’开头,后接0~31之间的数字指明寄存器,如,%31,%5等;常数项以大写的‘D’、‘B’和‘H’开头,分别代表十进制、二进制和十六进制,后面所跟的数字间可插入下滑线,以方便阅读和使用,如D2,B-0010-1101,H3F-FF;地址标记以‘&’开头,后接字母、数字和下划线的组合,如: CALL R I L T %12 &jump-to-it如果%12寄存器的值小于零,则相对子程序调用指令跳转至jump-to-it处,同时将当前指令地址压入堆栈;行注释以‘#’开头,汇编器将忽略从‘#’到该行行尾的内容;‘<’和‘>’间的内容是块注释,汇编器将自动忽略其内容.4.3 调试结果软核的指令集根据使用的目的不同可适当进行裁减,总的指令条数约150条.除LOAD和STOR E指令外,所有指令都是单周期执行,LOAD和STOR E指令根据BAN K延时的不同执行周期在2到8之间.微处理器的CP I与程序指令的选取有关,假设LOAD和STOR E指令在全部指令中所占的百分比是15%,其它指令占85%,LOAD和STOR E的平均执行周期为4,则根据CP I的计算公式6111 小 型 微 型 计 算 机 系 统 2005年CP I =∑ni =1CP I i ×(IC i程序中总的指令数)n :指令种类数CP Ii :第i 种指令的CP I I C :程序中第i 种指令的条数可得到总的CP I 为1.45,若设LOAD 和STOR E 指令在全部指令中执行频度为20%,平均执行周期为6,则此时CP I 为2.0,可见,CP I 的大小与LOAD 和STOR E 指令在全部指令中的比例和平均延时有直接的关系,CP I 中大于1的部分都是由LOAD 和STOR E 指令贡献的.本设计目前在X ilinx 公司的FPGA V irtex 1000FG 68024上初步运行结果如下(不包括指令存储器占用的BLOCK RAM 和协处理器):基本逻辑单元SL I CE 占用 879(7%)全局时钟输入GCL K 占用1(25%)外部I O BLOCK 占用180(35%)其中,外部I O BLOCK 的使用率只是作为参考来说明核的输入输出引脚的数量,因为核在使用时是嵌入于FPGA 中的,绝大部分的引脚只是在内部的模块间连接,不会连到I O BLOCK .由以上结果可以看出,微处理器核在100万门级的FPGA 中所占资源不超过8%,在定义外部总线结构或加入总线桥模块后,对于某些应用,完全可以在一片FPGA 中嵌入多个软核协同工作.在只对全局时钟GCL K 做约束的情况下,核的工作频率可以达到30M H z .5 结束语SoC 可以有效的降低产品的开发成本,缩短开发周期,是未来工业界将采用的最主要的产品开发方式.在所有的SoC设计中,预先设计的核是基本的部件.本文对一种整数微处理器软核的设计进行了探讨,并介绍其指令集和调试方法.为了方便后期的开发,在设计核的同时开发了相应的汇编器.本设计可嵌入FPGA 在SoC 系统中作为基本的控制或计算部件.软核的调试工作已基本结束,目前正着手整合于网络分类系统中.References :[1]Roch it R ajsum an .System 2on 2a 2ch i p :D esign and test [M ].Beijing :Beihang U niversity P ress ,2003.[2]John L H ennessy ,D avid A Patterson .Computer arch itecture :A quantitative A pp roach (2nd ed .)[M ].Beijing :T singhua U niversity P ress ,2002.[3]Ken Chapm an .C reating em bedded m icrocontro llers [EB OL ].h ttp : www .xilinx .com xlnx xw eb xil -tx -hom e .jsp ,2002,7,28.附中文参考文献:[1]Roch it R ajsum an .SoC 设计与测试[M ].北京:北京航空航天大学出版社,2003,4.[2]John L .H ennessy ,D avid A .Patterson .计算机系统结构:一种定量的方法(第二版)[M ].北京:清华大学出版社,2002.71116期 冯海涛等:基于FPGA 的32位整数微处理器的设计与实现 。
基于FPGA的32位ALU软核设计
基于FPGA的32位ALU软核设计目前许多FPGA 的逻辑资源(LE)都已超过1 万门,使得片上可编程系统SOPC 已经成为可能。
算术逻辑单元ALU 应用广泛,是片上可编程系统不可或缺的一部分。
利用VHDL 语言在FPGA 芯片上设计ALU 的研究较少,文中选用FPGA 来设计32 位算术逻辑单元ALU,通过VHDL 语言实现ALU 的功能。
1 电路总体设计思想算术逻辑单元ALU 采用模块化设计,可以完成32 位有符号数和无符号数的加减乘除,还可以实现9 种逻辑运算、6 种移位操作以及高低字节内容互换等操作。
总体设计图,如图1 所示。
当you_wu=1 时实现有符号数加减乘除运算,否则为无符号数运算。
进行有符号数加减运算时c 为符号位,无符号数加减运算时c 表示进位或借位。
加减法运算和逻辑运算结果存于y1。
乘运算时,y1 放高32 位,y2 放低32 位。
除法运算时y1 放商,y2 放余数。
a,b 表示两路32 位输入数据。
2 主要模块功能分析算术逻辑单元ALU 包含5 个模块:控制模块、逻辑模块、加减法模块、乘法模块和除法模块。
控制模块比较简单,即1 个2 线~4 线译码器,完成其他模块的控制与选择。
当ctr=00 时完成逻辑运算,ctr=01 时完成加减法运算,ctr=10 时完成乘法运算,ctr=11 时完成除法运算。
2.1 逻辑运算模块本模块实现与、或、非、与非、或非、异或、同或、逻辑左移、逻辑右移、算术左移、算术右移、逻辑循环左移、逻辑循环右移以及高低半字(16 位)分别取反和高低字内容互换等操作。
用1 个case 语句即可实现上述全部功能。
2.2 加减法模块加减法模块可根据需要完成32 位有符号数和无符号数的加减运算,在程序开始时先判断所要进行的运算有无符号数,对于有符号数,用符号位将两组数扩展为33 位二进制数,否则用0 扩展为33 位二进制数,其。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (1)第1章绪论 (2)第2章设计原理 (3)2.1 除法运算分析 (3)2.2 除法器算法的实现 (3)2.2.1除法器无符号数的除法 (3)2.2.2除法器有符号数的除法 (3)第3章软件介绍及设计过程 (4)3.1 Quartus II简介 (4)3.2 程序设计过程 (4)3.3 仿真结果 (6)结论 (7)参考文献 (8)附录1 源程序 (9)摘要介绍了一种使用可编程逻辑器件FPGA和VHDL语言实现32位除法器的设计方法。
该除法器不仅可以实现有符号数运算,也可以实现无符号数的运算。
除法器采用节省FPGA逻辑资源的时序方式设计,主要由移位、比较和减法三种操作构成。
由于优化了程序结构,因此程序浅显易懂,算法简单,不需要分层次分模块进行。
并使用Altera公司的QuartusⅡ软件对该除法器进行编译、仿真,得到了完全正确的结果。
关键词:FPGA;VHDL;除法器;减法;移位第1章绪论EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言 VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA 技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为 3 种描述形式的混合描述,因此 VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用 VHDL来完成。
另外,VHDL还有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理实现;VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用;VHDL的设计不依赖于特定的器件,方便了工艺的转换。
VHDL 是一个标准语言,为众多的 EDA 场上支持,因此移植性好[2]。
本次课程设计通过利用 QuartusII 软件实现32位除法器。
从而对 EDA 技术进一步的熟悉、了解和掌握。
通过本课程的学习,可以了解硬件描述语言编程方法 ,掌握 VHDL编程方法。
除法是数值计算和数据分析中最常用的运算之一,许多高级运算如平方根、指数、三角函数等都与其有关。
在FPGA中,有加、减、乘、除的算法指令,但除法中除数必须是2的幂,因此无法实现除数为任意数的除法。
然而除法器是微处理器的一个重要运算单元,除法器的运算速度、性能、功耗等都会影响系统的整体性能,相对于其他运算操作,除法很复杂且其操作的效率很低,所以研究的人很少引,但是对除法的忽视会导致系统整体性能的下降。
因此当前不但应该研究除法,而且研究的重点应该放在提升运算速度上。
如今大部分电子系统的最大位宽只有32位,因此本文用VHDL编写了实现32位数相除的除法器。
本文设计的除法器,不仅能实现有符号数的运算,也可以实现无符号数的运算。
除法器是电子技术领域的基础模块, 在电子电路设计中得到广泛地应用。
然而相对于加法和乘法等其他操作, 除法操作的效率很低。
出现这种情况的原因除了除法本身的复杂性外, 还与人们普遍认为除法是不频繁的操作有关。
作为微处理器的一个重要的运算单元, 除法器的运算速度、性能、功耗等都会影响系统的整体性能, 所以对除法效率的忽视会导致系统整体性能的下降。
硬件除法器的运算速度比软件实现方法快得多, 但为了提升运算速度, 就要以硬件资源的消耗为代价。
第2章设计原理2.1 除法运算分析除法器的算法可分为两类: 基于减法操作和基于乘法操作的算法。
数字循环是最简单, 运用最广泛的一类算法, 以减法为基本的操作, 在每一次迭代中求固定位数的商。
在最早的Resorting 方法中, 每次尝试在余数中减去除数, 然后判断得到的结果, 如果结果为正就上商 1, 否则上商 0, 并恢复余数, 最后移位进行下一次迭代。
Resorting 方法一次迭代的框图如图 1 所示:在这种方法中一次迭代需要 2 次加法运算, 这样增加了不必要延时, Non_resorting 方法把下一次迭代中和减法合并, 这样在每次迭代中根据上一次上商的结果进行操作, 如果上次上商为 1, 这次迭代用余数减去除数, 否则用余数加上除数, 然后和Resorting 方法一样得到本次迭代的商。
还有就是基于乘法的算法, 把除法看成是乘法的逆运算。
如下面的式子所示:A=B×Q+R其中 A 为被除数, B 为除数, Q 为商, R 为余数。
这样的算法主要有 SRT, Newton- Raphson 和 Goldschmidt 算法等。
除法在很多方面与乘法不同, 最重要的区别就是在乘法中所有的部分乘积都可以并行生成, 而在除法中每个商的位都是以一种顺序的过程确定的,因此速度较慢。
而以FPGA为硬件基础,基于减法的除法器算法不仅节省资源,速度也较快。
2.2 除法器算法的实现2.2.1除法器无符号数的除法本设计中的除法器,巧用VHDL语言,将有符号数和无符号数的除法结合在一起,节省了资源,也提高了速度。
其算法如下:对于32位无符号被除数a,先将a 转换成高32位是0低32位是a的数temp_a。
在每个周期开始时temp_a向左移动一位,最后一位补零,然后判断temp_a的高32位是否大于等于除数b,如是则temp_a 的高32位减去b并且加I,得到的新值仍赋给temp_a;如不是直接进入下一步。
上面的移位、比较、减法(减法视情况而定)要进行32次,经过32个周期后,运算结束,所得到的temp_a的高32位为余数,低32位为商。
将移位、比较和相减放在同一个循环中,去除了不必要的延时,增加了设计的可靠性。
2.2.2除法器有符号数的除法对于32位有符号数的除法,算法与上面类似,只是需要判断商和余数是正数还是负数。
令d=a(31)⊕b(31),如果d=0则被除数与除数同为正数或者负数,最终商为正数;如果d=1说明被除数与除数一个为正一个为负,最终商为负数。
被除数是负数时余数为负,否则为正。
有符号数的除法采用的算法是将被除数与除数均变成无符号的32位数,紧接着的计算过程与无符号数除法一样。
最后根据d 的值对商作处理,如果d=0商不需任何处理,如果d=1则将商取反加1才是正确的结果。
余数的调整则根据被除数的符号位进行。
32位除法器的框图如图1。
当you_wu为1时进行有符号数运算,否则进行无符号数运算。
图1 除法器逻辑框图第3章软件介绍及设计过程3.1 Quartus II简介Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
当前官方提供下载的最新版本是v12.1。
Altera Quartus II (3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。
工程师使用同样的低价位工具对Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。
系统设计者现在能够用Quartus II软件评估HardCopy Stratix器件的性能和功耗,相应地进行最大吞吐量设计。
Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus 平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA 供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit 编译选项,推进了网络编辑性能,而且提升了调试能力。
3.2 程序设计过程由设计原理知道本设计用的最多的操作就是移位、比较和减法。
有设计者指出分别用3个模块实现移位、比较和减法,再加上控制模块共4个模块。
可是此方法实现的仅是8位无符号数的运算,不能实现有符号数运算且程序很复杂,占用的FPGA资源也多。
也有人提出将被除数作为被减数、除数作为减数,作减法,差重新置入被减数,反复相减,直到被减数小于减数为止,记录能够相减的次数即得到商的整数部分⋯。
这样做不仅占用的逻辑资源很多,而且随着被除数与除数差值的增大、相减的次数增多,速度也就降低。
本设计不分模块,仅用两个进程,巧妙使用loop语句便可方便的实现32位有符号和无符号数除法。
另外需要注意的是,被除数与除数的临时存储单元temp_a和temp_b必须设为变量,如果设置成信号即使编译完全正确,也得不到正确的仿真结果。
循环变量n的初值不能在设定变量时设置,必须在循环开始前设置,否则程序将成为死循环,只有注意到上面两点,loop语句才能真的起到巧妙的作用。
本设计采用Quartus II编写程序代码、编译、执行结果如下两图所示:图2 程序代码图3 编译、执行结果3.3 仿真结果利用Quartus II软件进行无符号数的运算除法器的仿真图如下:图4 无符号数的运算除法器的仿真图利用Quartus II软件进行有符号数的运算除法器的仿真图如下:图5有符号数的运算除法器的仿真图图4和图5是32位除法器的仿真图。
图4中令you_wu为0,实现无符号数相除,图5中you_wu为1,实现有符号数相除。
本设计运行速度较快,当两个值相差很大的数(不管是有符号数还是无符号数)相除时,速度优势将更加明显。
另外图4和图5中没有任何毛刺,说明该除法器性能很稳定,不仅速度较快,而且没有竞争冒险,是一个成功的设计。
结论在FPGA的设计中,要关心两个参数:逻辑资源的占用率和速度。
本文给出的32位除法器占用的逻辑资源较少;而速度主要取决于系统时钟,如果系统时钟为50 MHz,则完成32位数除法所需时间不到1 txs。
文中有关代码均经Quartus II 编译通过,可以用于实际系统设计。
为期近两周的 EDA 课程设计就这样结束了,设计首先对 EDA 课程的到了复习和应用,并且对所学的知识的到了应用。
本次课程设计通过理论与实践的相结合,对理论知识的掌握更佳的熟练。
最后,感谢学校给我们这次机会,锻炼了我们的动手能力。
通过这次课程设计让我将理论知识应用到实践中,当然也让我意识到自身理论知识的缺乏和动手能力有待提高,让我明白在以后的学习中应该更应该努力钻研。
同时也感谢指导老师在设计过程中的辅导以及同学的帮助参考文献[1]朱卫华,郑留平.可任意设置计算精度的整数除法器的设计[J].国外电子测量技术。