基于VHDL的8位除法器的实现
veriloghdl简单计算器设计

V e r i l o g H D L简单计算器设计(总13页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除目录第一章设计目的及任务要求 (1)1.1 设计目的 (1)1.2 设计任务 (1)1.3 课设要求 (1)第二章设计思路 (2)2.1 设计总体框图 (2)2.2 设计原理 (2)2.2.1 计算其原理 (2)2.2.2 数码显示原理 (2)2.2.3 八位数码管扫描的原理 (3)第三章设计源程序及分析 (4)3.1 计算器模块 (4)3.1.1 计算器源程序 (4)3.1.2 计算器程序分析 (4)3.2 数码管显示部分 (5)3.2.1 数码管显示源程序 (5)3.2.2 数码管显示程序分析 (5)3.3 循环扫描模块 (6)3.3.1 循环扫描程序 (6)3.3.2 循环程序分析 (6)3.4 总程序及其分析 (7)第四章时序仿真和结果验证 (10)4.1 计算器时序仿真及其分析 (10)4.2 数码管时序仿真及分析 (10)4.3 总体时序仿真图 (11)4.4 结果验证 (11)第五章心得体会 (12)第一章设计目的及任务要求1.1 设计目的(1)进一步加强熟练EDA基础知识。
(2)熟练掌握Quartus 6.0软件的使用以及用该软件编程和仿真的全过程。
(3)培养独立思考问题,解决问题的能力以及查阅相关资料和资料的正确使用能力,为明年的毕业设计打下良好的设计基础。
1.2 设计任务设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。
1.3 课设要求(1)说明题目的设计原理和思路、采用方法及设计流程。
(2)系统框图、Verilog语言设计程序或原理图。
(3)对各子模块的功能以及各子模块之间的关系做较详细的描述。
8位CPU的设计-VHDL语言-综合性实验实验报告

综合性实验报告计算机组成原理年级专业班级:10级软工R3班小组号: 5完成日期:2012-06-06【分工包括:、、执行(ALU相关)、通用寄存器组、存储器等】(一)实验类型:验证性+设计性(二)实验类别:综合性专业基础实验(三)实验学时数:8学时(四)实验目的理解和验证参考代码,并在其基础上,通过适当改造,尝试设计一个简单的CPU,并测试其结果。
(五)实验内容设计一个能验证计算机CPU工作原理的实验系统,包括取指部分、指令译码部分、执行部分、通用寄存器组以及存储器,并测试其结果。
(六)实验要求根本目标:缩小到8位的数据通路,也即是4位OP和4位的地址码。
(参考代码是16位数据通路,也即8位OP和8位的地址码)(参见实践报告.doc中的9-11页的指令系统总体说明)学生按照实验要求,在实验平台上实现具有存储与运算功能的计算机系统,并能通过测试,以验证其正确性。
具体要求如下:(1)取指及调试(组长兼任)。
熟悉指令取指过程,并把16位的部分改为8位。
使用DebugController和系统中的调试模块(reg_testa.vhd,reg_test.vhd)。
(2)熟悉电原理图的连接,以通用寄存器组部分为例。
实现上,用实验4所用的简单通用寄存器组(4个寄存器+1个2-4译码器+2个4选1多路开关)设计方法,替代参考代码中的通用寄存器组部分。
(3)学习和掌握控制逻辑。
设计一套指令集(可在原参考代码指令集的基础上做删减,从中选取16条基本的指令),并修改控制器中指令集的译码部分。
(4)执行部件,ALU的改造。
可在原参考代码的基础上,改变某些运算功能的实现方式,比如加、减、增1、减1等算术运算。
实现上,原参考代码采用了最少编码量的“+”、“-”号实现。
可以改用通过port map语句调用系统自带的加法器,也可以进一步自己编写加法器,然后用port map语句调用。
(5)存储器部分的加入。
原参考代码采用的带外部存储器的模式。
高效除法器

一、实验目的及要求用verilog实现一个被除数为8位,除数为4位的高效除法器。
二、实验设备(环境)及要求实验室计算机及modelsim仿真软件,最后用synplify进行综合仿真得到图形。
三、实验内容与步骤1.实验总体设计思路1、先定义被除数为dividend,除数为divisor,商为Rtient,余数为Qainer,举个例子假如被除数与除数分别为1111与0100。
2、将被除数赋给寄存器变量Q=1111,再将除数赋给变量Dr=0100,设置商的变量R 初始值为 4’b0000,则{R,Q}为{00001111}。
3、首先将{R,Q}左移一位,即{00011110},现在R=0001,Q=1110;4、比较R与除数Dr的大小,如果R>Dr,则R=R-Dr,并且{R,Q}再左移一位并且Q[0]=1,反之{R,Q}左移一位Q[0]=0。
5、继续上述过程,循环4次{R,Q}={00111100},{01111000},{01110001},{01100011}。
6、此时商Rtient=Q,而余数Qainer=(R>>1)(即余数等于R向右移一位),所以此例结果为Rtient=0011,Qainer=0011。
检验:对应于十进制,是15除以4,商为3,余数为3.2.系统结构和模块划分,关键子模块之间的接口实现定义。
输入端口:Clk,Rst,dividend,divisor;输出端口:quotient,remainer;寄存器变量:R,Q,Dr;Verilog 代码如下:module chufa(dividend,divisor,Clk,Rst,quotient,remainer); //端口定义input [7:0] dividend; //定义被除数input [7:0] divisor ; //定义除数input Clk; //时钟信号input Rst; //复位信号output [7:0] quotient; //定义商数output [7:0] remainer; //定义余数reg [7:0]Q;reg [7:0]R;reg [7:0]Dr; //定义寄存器变量wire [7:0]quotient;wire [7:0]remainer;integer i;parameter SIZE = 8;always@(posedge Clk or negedge Rst)beginif(!Rst) //复位信号为0时置0。
基于VHDL八位频率计设计

SIGNAL TSTEN:STD_LOGIC; SIGNAL CLR_CNT:STD_LOGIC; SIGNAL LOAD:STD_LOGIC; SIGNAL CARRY1:STD_LOGIC; SIGNAL CARRY2:STD_LOGIC; SIGNAL CARRY3:STD_LOGIC; SIGNAL CARRY4:STD_LOGIC; SIGNAL CARRY5:STD_LOGIC; SIGNAL CARRY6:STD_LOGIC; SIGNAL CARRY7:STD_LOGIC; SIGNAL CARRY8:STD_LOGIC; SIGNAL DIN:STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL DOUT:STD_LOGIC_VECTOR(31 DOWNTO 0);
• • • • • • • • • • • • •
ELSIF CLK'EVENT AND CLK= '1' THEN IF ENA= '1' THEN IF CQI<9 THEN CQI<=CQI+1; ELSE CQI<=0;END IF; --大于9,则计数器清零 END IF; END IF; END PROCESS; PROCESS (CQI) BEGIN IF CQI=9 THEN CARRY_OUT<= '1'; --进位输出 ELSE CARRY_OUT<= '0';END IF; END PROCESS; CQ<=CQI;
• 频率测量的基本原理是计算每秒钟内待测信号的 脉冲个数。这就要求TESTCTL的计数使能信号 TSTEN能产生一个1秒脉宽的周期信号,并对频率 计的每一计数器CNT10的ENA使能端进行同步控 制。当TSTEN高电平时,允许计数;低电平时,停止 计数,并保持其所计的数。在停止计数期间,首先需 要一个锁存信号LOAD的上跳沿将计数器在前1秒 钟的计数值锁存进32位锁存器REG32B中,并由外 部的7段译码器译出并稳定显示。锁存信号之后, 必须有一清零信号CLR_CNT对计数器进行清零, 为下1秒钟的计数操作作准备。为了产生这个时序 图,需首先建立一个由D触发器构成的二分频器,在 每次时钟CLK上沿到来时其值翻转。
高效除法器verilog实现

整理文本西北工业大学《 FPGA 技术实验》实验报告二(高效除法器 )学院:软件与微电子学院学号:姓名:专业:微电子学实验时间:2011.10.12实验地点:毅字楼 335指导教师:王少熙西北工业大学2010年 10 月一、实验目的及要求实验目的 : 1.进一步了解熟悉verilog 语句语法掌握条件语句在简单建模中的应用,学会建模仿真综合 .2.熟练运用 modelsim进行调试模拟仿真 .3.初步学会运用综合工具进行综合,熟悉 synplify.实验要求 :用verilog实现一个被除数为8 位,除数为 4 位的高效除法器 .二、实验设备(环境)及要求ModelSim SE 6.2b及 Synplify Pro 9.6.2三、实验内容与步骤1.实验总体设计思路由于只有加法器 ,除法在计算机中是通过部分余数左移加除数补码或 0 实现 ,我们由此可以得到启示 ,也按照如此的思路进行 .整体思路是先将八位 (本来余数是四位的但是我们这里的余数不仅仅充当余数 ,还当中间变量把被除数从最高位一位一位的移到余数里 )余数清零 ,然后把被除数的最高位拼接到余数后面 ,此时余数与除数比较 , 若余数大于除数 ,则把他们俩的差作为新的余数 ,且把对应的商值为记 1; 若余数小于除数 ,则把对应位的商值记 0;进行下一步之前把被除数的第二高位继续拼接到余数后面 ,如此进行 ,循环八次即可 .最后结果是得到商和余数的形式 .其算法流图如下所示 :Start余数 rem=0;商 quo=0; i=7rem={rem[6:0],did[i]}是否rem>disquo[i]=1;i=i-1;quo[i]=0;rem=rem-dis;rem=rem;i=i-1;i<0否是得到 quo,rem.是 4 位,除数 (dis)是 2 位,商(quo)是 4 位 ,余数 (rem)是 4 位,设 did=0110,dis=10,我们来看看是怎么执行的.首先余数和商都清零 ,即 rem=0,quo=0;把被除数的最高位0 拼接到 rem的最低位 ,此时 rem=0000B,由于 rem 小于除数 dis=10,则商 quo[3]=0;下面进行第二次计算,把 did[2]拼接到 rem 最低位 ,此时 rem=0001,dis=10>rem,故 quo[2]=0;继续计算 , 把 did[1]拼接到 rem 最低位 ,此时 rem=0011,dis=10<rem,故quo[1]=1,rem=rem-quo=0011-10=0001;进行最后一轮运算 , 把 did[0]拼接到 rem 最低位 ,此时 rem=0010,dis=10=rem,因此 quo[0]=1,rem=rem-dis=0010-10=0000,至此我们已计算完毕商quo=0011,余数 rem=0000;计算简单快速 .2.测试平台设计模块设计`timescale 1ns/1nsmodule divider_8_4(did,// Divident被除数dis,// Divisor除数quo,// Quotient商rem,// Remainder 余数error//错误,如果除数为0.则error置1);parameter M=7;//被除数,余数,商的位数parameter N=3;//除数的位数input [M:0] did;input [N:0] dis;output [M:0] quo;output [M:0] rem;output error;reg [M:0] quo;reg [M:0] rem;reg error;integer i;//整数,用于计数always @(did or dis)//被除数,除数beginquo=0;rem=0;//开始余数和商清零if(dis==0)error=1;//若除数为0则显示错误else if(did<dis)//为了提高效率,在被除数小于除数时begin//商0,余数为除数rem=dis;quo=0;error=0;endelsebeginerror=0;for (i=8;i>0;i=i-1) //循环8次beginrem={rem[M-1:0],did[i-1]}; //把did[i-1]连接到rem后quo=quo<<1;//商左移一位if(rem>=dis)//若拼接后rem>=除数disbeginquo=quo+1; //商值自加1rem=rem-dis; //新余数变为旧余数减除数endendendend//结束endmoduleTesebench如下 :`timescale 1ns/1nsmodule divider_bench;reg [7:0] did;reg [3:0] dis;wire [7:0] quo;wire [7:0] rem;integer i;//整数,用于控制被除数变化integer j;//整数,用于控制除数变化divider_8_4 d1(did,dis,quo,rem,error); //实例化initialbeginfor(i=0;i<=255;i=i+1)//被除数从0到255begindid=i;for(j=0;j<=15;j=j+1)//除数从0到15变化#1 dis=j;endendinitialbegin$monitor($time,"divident=% divisor=%d quotient=%dremainder=%d",did,dis,quo,rem) ;endinitialbegin#1000 $finish;// 1000ns 时停止仿真endendmodule四、实验结果与数据处理1.Modelsim 仿真结果,波形图,代码覆盖率图等为了严谨 ,把所有的数值都测了一遍 (did 从 0 到 255,dis 从 0 到 15),从modeldim 仿真结果看到程序的正确性 ,鉴于数据较多这里只选择几组数据给予展示 :上图中从上到下一次代表被除数,除数 ,错误 ,商和余数 ,当被除数是 4.除数分别是 9,10,11,12,13,14,15时商为 0,余数分别 9,10,11,12,13,14,15.当被除数为 147,除数分别为 1,2,3,4,5,6,7时 ,商分别为 147,73,49,36,29,24,21,余数分别为 0,1,0,3,2,3,0结.果正确 .由上图可见代码覆盖率已达100%,非常好 .2.综合结果,布局布线结果,关键路径,资源利用率等。
05第6章 VHDL设计应用实例(8位加法器的设计)

第6章 VHDL设计应用实例•6.1 8位加法器的设计实验一:8位加法器的设计• 1. 实验目的• (1) 学习MAX+plus 软件的基本使用方法。
• (2) 学习实验开发系统的基本使用方法。
• (3) 了解VHDL程序的基本结构。
• 2. 实验内容•设计并调试好一个由两个4位二进制并行加法器级联而成的8位二进制并行加法器,并用EDA实验开发系统进行硬件验证。
• 3. 实验要求• (1) 画出系统的原理框图,说明系统中各主要组成部分的功能。
• (2) 编写各个VHDL源程序。
• (3) 根据选用的软件编好用于系统仿真的测试文件。
• (4) 根据选用的软件及EDA实验开发装置编好用于硬件验证的管脚锁定文件。
• (5) 记录系统仿真、硬件验证结果。
• (6) 记录实验过程中出现的问题及解决办法。
实验连线全加器的17个输入所对应的管脚同17位拨码开关相连,16个输入管脚是a0~a7、b0~b7,其中a0~a7、b0~b7代表两个8位二进制数,cin代表低八位来的进位位;9个输出所对应的管脚同9位发光二极管相连,9个输出管脚是sum0~sum7和cout:其中sum0~sum7代表相加结果,cout代表进位位。
000000001111111110000000011111110100000000......00000001 (1)00000000000000001111111111111111101111111011111110000000000......00000001 000000000000000000CoutS8(7..0)A8(7..0)B8(7..0)C in实验结果输入8位加法器的设计过程• 1.设计思路•加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。
多位加法器的构成有两种方式:并行进位和串行进位。
并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。
vhdl语言的除法用法

VHDL语言的除法用法1.引言在硬件描述语言(HD L)中,V HD L是一种广泛使用的工业标准。
它提供了一种描述数字电路行为的方法。
V HDL语言强大而灵活,能够很好地支持多种数字逻辑设计需求。
本文将探讨V HD L语言中除法的用法,介绍如何在V HD L代码中实现除法功能。
2.除法的基本概念除法是一种基本的数学运算,用于将一个数(被除数)分成若干等分(除数)。
在数字电路设计中,除法运算常常涉及到位操作和时序控制。
V H DL语言提供了一种方便的方法来描述和实现除法操作。
3. VH DL语言中的除法操作3.1整数除法在V HD L语言中,整数除法可以通过使用`/`操作符来实现。
例如,假设我们要计算被除数A除以除数B的商C:C<=A/B;需要注意的是,这种整数除法会直接截断小数部分,只保留整数部分。
如果想要保留小数部分,可以使用浮点数类型。
3.2浮点数除法V H DL语言也支持浮点数除法。
浮点数除法可以通过使用`rea l`或`r ea lt yp e`类型来实现。
以下是一个示例:s i gn al A,B,C:re al;...C<=A/B;在进行浮点数的除法运算时,VH DL会保留小数部分,并将其存储在指定的信号中。
3.3时序控制在进行除法运算时,特别是在时序控制电路中,需要考虑时钟信号和状态机的操作。
例如,可以使用V HD L中的进程(pr oc es s)语句结合时钟信号和状态机来实现除法运算的时序控制。
p r oc es s(cl k)b e gi ni f ri si ng_e dg e(clk)th eni f re se t='1't he n--复位...e l se--进行除法运算...e n di f;e n di f;e n dp ro ce ss;通过结合时钟信号和状态机,可以实现对除法运算的精确控制和同步操作。
4.除法的应用场景除法运算在数字电路设计中有很多应用场景。
八位运算器实验报告

《组成原理》实验报告姓名:***____________专业:网络工程________学号:**********______日期:2014年11月25日实验一:8位运算器的设计1,设计目的:1)学习并练习verilog语言2)了解8位加法器实现原理2,设计目标:1)使用verilog语言编写8为运算器并进行仿真模拟3,模块设计规格及输入输出端变量说明1)3模块设计规格及输入输出端变量说明:输入:[2:0]s(操作指令), LDA,LDB(输入控制), [7:0]IN(输入数);输出:[7:0]A,B(操作数), ALU(结果寄存器),FZ(判零), FC(进位);2)操作指令表:4,程序原理连接图5,程序代码Module test (T4,s,A,B,LDA,LDB,FZ,FC,IN,ALU);input [2:0] s;input LDA,LDB,T4;input [7:0] IN;output [7:0] A,B,ALU;output FZ,FC;reg [7:0] A,B,ALU;reg FZ,FC;/** 输入模块,当clk上升沿时,如果LDA为1,则把IN的值给A,否则赋给B */always @ (posedge CLK)beginif(LDA==1'b1)beginA<=IN;endelse if(LDB==1'b1)beginB<=IN;endend/**计算模块,根据操作数s的不同值为A和B进行八种不同的计算,其中当A+B *进行加法计算时,把进位值赋给FC*/always @ (s[2] or s[1] or s[0])begincase ({s[2],s[1],s[0]})3'b000:ALU<=A;//直接赋值3'b001:ALU<=A&B;//A与B按位与3'b010:ALU<=A|B;//A与B按位或3'b011:ALU<=~A;//非A3'b100:ALU<=(A<<1);//A左移一位3'b101:{FC,ALU}<=A+B;//ALU=A+B,FC为A+B的进位3'b110:ALU<=A+1;//加一操作3'b111:ALU<=A-1;//减一操作endcaseend/**该模块的作用是判断ALU是否为,若是FZ赋为1*/always @ (negedge T4)beginif(ALU==8'b00000000)FZ<=1'b1;elseFZ<=1'b0;endendmodule6时序仿真图:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于VHDL的8位除法器的实现
The Design of 8 Division With VHDL
摘要:介绍了利用VHDL实现八位除法,采用层次化设计,给出了实现除法的子模块程序。
使用Altera公司的MAX+PLUSII10.2开发软件进行功能仿真并给出仿真波形。
关键词:二进制除法 VHDL MAX+PLUS2
Abstract:The design of division(8/8) by hierarchy technique is proposed. Schematic documents and submodule program with VHDL language are also given. At the end of the article, using MAX+PLUS2, the flow char is given and the simulation result is attached.
Keywords: division VHDL MAX+PLUS2
引言
除法是数值计算和数据分析中最常用的运算之一,许多高级运算如平方根、指数、三角函数等都与其有关。
在FPGA中,有加、减、乘、除的算法指令,但除法中除数必须是2的幂,因此无法实现除数为任意数的除法。
本文用VHDL编写了除法运算,可实现任意八位数的除法。
除法器的设计
本文所采用的除法原理是:
对于八位无符号被除数A,先对A转换成高八位是0低八位是A的数C,在时钟脉冲的每个上升沿C向左移动一位,最后一位补零,同时判断C的高八位是否大于除数B,如是则C的高八位减去B,同时进行移位操作,将C的第二位置1。
否则,继续移位操作。
经过八个周期后,所得到的C的高八位为余数,第八位为商。
从图(1)可清楚地看出此除法器的工作原理。
此除法器主要包括比较器、减法器、移位器、控制器等模块。
1、比较模块
设计中所用的八位比较器是由两个四位比较器级联而成的。
比较器的原理是先对高位进行比较,如果不相等,则得出结论,否则,再对下一位进行比较。
设计的四位比较器可以级联成任意位的比较器。
比较器输出信号决定减法器是否进行减法运算。
2、运算控制模块
控制模块的主要在外部运算时钟和起始信号的作用下,产生控制其他模块所需的数据调用、运算同步时钟以及乘法运算结束标志信号等。
其VHDL语言描述如下: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ARICTL IS ——除法运算控制器
PORT(CLK,START:IN STD_LOGIC;
CLKOUT,RSTALL,ARIEND:OUT STD_LOGIC);
END ARICTL;
ARCHITECTURE BEHAV OF ARICTL IS
SIGNAL SIGN:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
RSTALL<=START;
CLKOUT<=CLK;
PROCESS(CLK,START)
BEGIN
IF START='1'THEN ——高电平清零计数器
SIGN<="0000";
ELSIF CLK'EVENT AND CLK='1'THEN
IF SIGN<8 THEN ——小于八则计数,等于八则表
明运算已经结束
SIGN<=SIGN+1;
END IF;
END IF;
END PROCESS;
PROCESS(CLK,SIGN,START)
BEGIN
IF START='0' THEN
IF SIGN<8 THEN ——除法运算正在进行
ARIEND<='0';
ELSE
ARIEND<='1'; ——如果余数小于除数则运算结束,否
则,再进行一个周期的运算
END IF;
ELSE ARIEND<='0';
END IF;
END PROCESS;
END BEHAV;
图(1)
3、减法器
减法器接收比较器所输出的信号,如果A B,则进行减法,输出A-B,否则输出A,减法器的输出到移位器中进行循环。
4、移位器
这是除法器实现中的核心部分,主要实现数据的移位和最后结果的输出,其VHDL程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY REG16B IS
PORT(CLK,CIN,LOAD,ARIEND:IN STD_LOGIC;
A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
QL,QH:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END REG16B;
ARCHITECTURE BEHAV OF REG16B IS
SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
PROCESS(CLK,LOAD,ARIEND)
BEGIN
IF(CLK'EVENT AND CLK='1') THEN
IF(ARIEND='0')THEN
IF LOAD='1'THEN ——装载新数据
R16S(15 DOWNTO 0)<="00000000"&A(7 DOWNTO 0);
ELSIF(LOAD='0')THEN
R16S(15 DOWNTO 9)<=D(6 DOWNTO 0);
R16S(8 DOWNTO 1)<=R16S(7 DOWNTO 0); ——数据左移
R16S(0)<='0'; ——最后一位补0
IF(CIN='1')THEN ——如果比较器的输出为1,
则第二位值为1
R16S(1)<='1';
END IF;
END IF;
ELSE
IF(CIN='1')THEN ——最后余数如果大于除数则
再进行一次减法
R16S(15 DOWNTO 8)<=D(7 DOWNTO 0);
R16S(7 DOWNTO 0)<=R16S(7 DOWNTO 0)+1;——商加1
END IF;
END IF;
END IF;
END PROCESS;
QH<=R16S(15 DOWNTO 8); ——余数的输出
QL<=R16S(7 DOWNTO 0); ——商的输出
END BEHAV;
MAX+PLUS2仿真
采用ALTERA公司的MAX+PLUS2 对除法器进行仿真,图(2)为仿真波形图。
结论 由于除法运算包含了减法、试商、移位等多种操作过程,因此运算比较复杂,在现有的参考资料中,主要都基于乘法器的设计,除法器设计资料较少。
本文作者的创新点是:参考文献[3]的乘法器设计,利用VHDL 语言实现了八位数的除法器设计,该除法器采用了VHDL 的混合输入方式,将除法器分成若干个子模块后,对各个子模块分别设计,各自生成功能模块,最后用一个图形文件调用这些子模块的功能模块,完成整体设计,实现了任意八位无符 号数的除法。
参考文献:
[1]赵岩岭,刘春,曹源等.在MAX+PLUS2 平台下用VHDL 进行数字电路设计[J].微计算机信息,2004,20(4):9-11
[2] 陈耀和. VHDL 语言设计技术[M].北京:电子工业出版社,2004.
[3] 于敦山,田 泽. 32⨯8 乘法器完成32⨯32 乘加器的算法及实现[J].微电子学与计算机,2002,3:21-23.
[4]冯涛,王程.可编程逻辑器件开发技术—MAX+PLUS2入门与提高[M].北京:人民邮电出版社,2002
图(2)。