欢迎来到格策美文网

实验二 加减法运算器的设计实验报告.docx 10页

更新日期:2025-06-08 00:15

实验二

写作核心提示:

在撰写一篇关于实验二“加减法运算器的设计”实验报告时,为了确保内容完整、结构清晰、逻辑严谨,以下是一些需要注意的事项:
1. "格式规范": - 确保文档格式符合学校或实验指导书的要求,包括页边距、字体、字号、行间距等。 - 标题、摘要、关键词、目录、正文、参考文献等部分要按照规范格式设置。
2. "内容完整性": - 报告应包含实验目的、实验原理、实验方法、实验步骤、实验结果、实验讨论、实验结论等部分。 - 每个部分都要详细阐述,确保报告内容全面。
3. "结构清晰": - 按照引言、实验原理、实验方法、实验步骤、实验结果、实验讨论、实验结论、参考文献等顺序进行撰写。 - 使用标题、副标题和编号等手段,使报告结构清晰,便于阅读。
4. "逻辑严谨": - 实验目的明确,实验原理正确,实验方法合理,实验步骤清晰。 - 实验结果与分析要相互呼应,确保逻辑严密。
5. "实验原理": - 详细介绍加减法运算器的工作原理,包括硬件电路设计、软件算法等。 - 引用相关文献,证明实验原理的正确性。
6. "实验方法": - 介绍实验

实验二 加减法运算器的设计实验报告.docx 10页

加减法运算器的设计实验报告实验二 加减法运算器的设计一、实验目的 1、理解加减法运算器的原理图设计方法2、掌握加减法运算器的VERILOG语言描述方法3、理解超前进位算法的基本原理4、掌握基于模块的多位加减运算器的层次化设计方法5、掌握溢出检测方法和标志线的生成技术6、掌握加减运算器的宏模块设计方法二、实验任务用VERILOG设计完成一个4位行波进位的加减法运算器,要求有溢出和进位标志,并封装成模块。模块的端口描述如下:module lab2_RippleCarry 宽度可定制(默认为4位)的行波进位有符号数的加减法器。 #(parameter WIDTH=4)( input signed dataa,input signed datab,input add_sub, // if this is 1, add; else subtractinput clk,input cclr,input carry_in, //1 表示有进位或借位output overflow,output carry_out, output reg result)修改上述运算器的进位算法,设计超前进位无符号加法算法器并封装成模块。

模块的端口描述如下:module lab2_LookaheadCarry // 4位超前进位无符号加法器(input a,input b,input c0, //carry_ininput clk,input cclr,output reg carry_out,output reg sum);在上述超前进位加法运算器的基础上,用基于模块的层次化设计方法,完成一个32位的加法运算器,组内超前进位,组间行波进位。用宏模块的方法实现一个32位加减运算器。三、实验内容1、用VERILOG设计完成一个4位行波进位的加减法运算器,要求有溢出和进位标志,并封装成模块。模块的端口描述如下:1)将清零信号cclr(sw16)设为1,将控制加减的信号add_sub(sw17)设为1,将输入信号dataa(sw3~sw0)和输入信号datab(sw7~sw4)设为几组不同的值,观察输出信号result(ledr3~ledr0),输出信号overflow(ledg),和输出信号carry_out(ledr)观察并记录输出;2)将清零信号cclr(sw16)设为0,将原来的数据清除,观察并记录输出,可以验证清零是否有效;3)再将清零信号cclr(sw16)设为1,将控制加减的信号add_sub(sw17)设为0,将输入信号dataa(sw3~sw0)和datab(sw7~sw4)设为几组不同的值,观察输出信号result(ledr3~ledr0),输出信号overflow(ledg),和输出信号carry_out(ledr)观察并记录输出,观察并记录输出。

4)在时钟信号处输入一个上升沿(按下key0),观察并记录输出。2、超前进位无符号加法算法器并封装成模块1)将清零信号cclr(sw17)设为1,将输入信号a(sw3~sw0)和b(sw7~sw4)和c0(sw15)设为几组不同的值,观察输出信号sum(ledg~ledg)和carry_out(ledg7),观察并记录输出;2)将清零信号cclr(sw17)设为0,观察是否可以清零,验证清零是否有效,观察并记录输出。3、用基于模块2的层次化设计方法,完成一个32位的加法运算器,组内超前进位,组间行波进位。 1)调用一个32计数器模块并封装,引用两个该计数器,分别给的加数和被加数输入,将低位来的进位c0(sw0)设为0,加法器清零信号cclr(sw)设为0,计数器的使能控制端enable(sw15)设为 1,计数器的复位信号reset1(sw)设为0,观察并记录观察结果; 2)在1)的基础上,将低位来的进位c0(sw0)设为1,加法器清零信号cclr(sw)设为0,计数器的使能控制端enable(sw15)设为 1,计数器的复位信号reset1(sw)设为0,观察并记录观察结果; 3)在1)的基础上,将低位来的进位c0(sw0)设为0,加法器清零信号cclr(sw)设为1,计数器的使能控制端enable(sw15)设为 1,计数器的复位信号reset1(sw)设为0,观察并记录观察结果; 4)在1)的基础上,将低位来的进位c0(sw0)设为0,加法器清零信号cclr(sw)设为0,计数器的使能控制端enable(sw15)设为 0,计数器的复位信号reset1(sw)设为0,观察并记录观察结果; 5)在1)的基础上,将低位来的进位c0(sw0)设为0,加法器清零信号cclr(sw)设为1,计数器的使能控制端enable(sw15)设为 1,计数器的复位信号reset1(sw)设为1,观察并记录观察结果;4、用宏模块的方法实现一个32位加减运算器 1)引用一个32位的加减法器,并将其封装成模块,仍用任务三中的32位计数器给加数和被加数值; 2)将输入信号cclr(sw16)设为0,加减法控制信号add_sub(sw17)设为1,计数器的使能信号enable(sw15)设为1,计数器的复位信号reset1(sw0)设为0,观察在信号检测中引出的观察对象; 3)将输入信号cclr(sw16)设为0,加减法控制信号add_sub(sw17)设为0,计数器的使能信号enable(sw15)设为1,计数器的复位信号reset1(sw0)设为0,观察在信号检测中引出的观察对象; 4)将输入信号cclr(sw16)设为0,加减法控制信号add_sub(sw17)设为1,计数器的使能信号enable(sw15)设为1,计数器的复位信号reset1(sw0)设为1,观察在信号检测中引出的观察对象; 5)将输入信号cclr(sw16)设为0,加减法控制信号add_sub(sw17)设为1,计数器的使能信号enable(sw15)设为0,计数器的复位信号reset1(sw0)设为1,观察在信号检测中引出的观察对象。

四、实验仪器及设备:一、电脑( QuartusⅡ 10.0) 二、DE2_115开发板 五、实验步骤1 根据自己预习情况,编写VERILOG代码2进行功能仿真进行分析与综合,排除语法上的错误建立波形仿真文件,输入激励生成功能仿真网表进行功能仿真,观察输出结果3选择器件选择DE2_115开发板的CYCLONE IV 4CE1154 分配管脚5 下载验证DE2_115开发板的下载:使用USB-Blaster进行下载按照实验要求设置波段开关,观察LEDR0的显示,验证任务一、二的功能是否正确。按照实验原理进行仿真,验证任务三、四的结果,仿真图像如下:任务三任务四六、实验心得通过本次加减法运算器的设计的实验,我进一步了解了Verilog语言的基本语法,利用Verilog语句实现了用VERILOG设计的带有溢出和进位标志的一个4位行波进位的加减法运算器,超前进位无符号加法算法器,并将其封装为模块,调用实现了32位的加法计数器(组内超前,组间行波行进),以及用宏模块的方法实现一个8位加减运算器。在验证试验准确性时,学会了如何利用DE2_115开发板进行检测。另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。

七、思考题1、加减运算电路中减法是如何实现的?:在加减运算电路中,一个数减去另一个数是由一个数加上另一个数的补码(即加上这个数取反再加1)来实现的。超前进位的原理是什么?:超前进位加法器是利用输入信号同时计算出每一位的进位产生信号和进位传递信号,各级的进位彼此独立产生,只与输入数据和C0有关,将各级间的进位级联传播给去掉了,因此减小了进位产生的延迟,实现了各位的并行运算。令Gi 为进位产生信号, Pi 为进位传递信号则Ci+1= Gi+ Pi *Ci即:C1=G0 + P0·C0C2=G1 + P1·C1 = G1 + P1·G0 + P1·P0 ?C0C3=G2 + P2·C2 = G2 + P2·G1 + P2·P1·G0 + P2·P1·P0·C0C4=G3 + P3·C3 = G3 + P3·G2 + P3·P2·G1 + P3·P2·P1·G0 + P3·P2·P1·P0·C0列出三种溢出检测算法?:(1)根据操作数的符号位来检测 fa和fb分别表示两个操作数的(a,b)的符号位,fs表示结果的符号位,则溢出信号为OVL =,若OVL=1则表示有溢出,若为0则没有溢出。

(2)根据进位来检测Ci表示符号位的进位,C表示数值最高位的进位,则溢出信号OVL=Ci⊕C,若OVL=1则表示有溢出,若为0则没有溢出。(3)双符号位法fs1和fs2表示结果的双符号位,则则溢出信号OVL=fs1⊕fs2,若OVL=1则表示有溢出,若为0则没有溢出。标志线的生成方法是什么?:在此我们的设计方案中采取双符号位法,对输入数据进行双符号位表示,标志位取最终结果高两位的异或值,若结果为1,表示存在溢出;否则,表示没有溢出。如何理解模块封装和层次化的设计思想?:将一个设计分为不同的层次进行设计,然后对每一部分的设计进行封装,最后在总的设计中进行调用。模块化的设计很好的体现了自上而下的设计思想。对于较大的工程,可以清洗的明白设计的逻辑,另外封装好的模块可以多次调用,节省了设计时间。宏模块的设计有何优点与缺点?应在何时使用?:优点:直接调用系统的模块,大大节省了设计者的时间,并且减少了设计者出错的可能性,方便快捷。 缺点:宏模块都是已经定以设计好的,用户不能根据自己的需要进行修改,因此具有一定的局限性。 何时使用:在设计对模块内部构造要求不高时,可以使用宏模块,以减少设计的工作量。

八、Verilog代码1、实现用VERILOG设计完成一个4位行波进位的加减法运算器,要求有溢出和进位标志,并封装成模块。module lab_2_1#(parameter WIDTH=4)(input signed dataa,input signed datab,input add_sub, // if this is 1, add; else subtractinput clk,input cclr,input carry_in,output overflow,output carry_out,output reg result);wire dataa_temp;wire datab_temp;reg ci_temp;reg result_temp;reg carry_in_temp;integer i; integer temp;assign dataa_temp= {dataa,dataa};assign datab_temp=(add_sub==1)?{datab,datab}:~{datab,datab};assign overflow = (result_temp^result_temp)? 1'b1:1'b0; assign carry_out=ci_temp;always @ (dataa_temp or datab_temp or carry_in )begincarry_in_temp=(add_sub==1)?{carry_in}:~{carry_in};ci_temp=carry_in_temp;temp=carry_in_temp;result_temp= dataa_temp^datab_temp^ci_temp; for (i=0;i

热门标签

相关文档

文章说明

本站部分资源搜集整理于互联网或者网友提供,仅供学习与交流使用,如果不小心侵犯到你的权益,请及时联系我们删除该资源。

一键复制全文
下载