文档介绍:加减法运算器的设计实验报告
实验二加减法运算器的设计
一、实验目的
1、理解加减法运算器的原理图设计方法
2、掌握加减法运算器的VERILOG语言描述方法
3、理解超前进位算法的基本原理
4、掌握基于模块的多位加减运算器的层次化设计方法
5、掌握溢出检测方法和标志线的生成技术
6、掌握加减运算器的宏模块设计方法
二、实验任务
用VERILOG设计完成一个4位行波进位的加减法运算器,要求有溢出和进位标志,并封装成模块。模块的端口描述如下:
module lab2_RippleCarry 宽度可定制(默认为4位)的行波进位有符号数的加减法器。
#(parameter WIDTH=4)
( input signed [WIDTH-1:0] dataa,
input signed [WIDTH-1:0] datab,
input add_sub, // if this is 1, add; else subtract
input clk,
lr,
input carry_in, //1 表示有进位或借位
output overflow,
output carry_out,
output reg [WIDTH-1:0] result
)
修改上述运算器的进位算法,设计超前进位无符号加法算法器并封装成模块。模块的端口描述如下:
module lab2_LookaheadCarry // 4位超前进位无符号加法器
(
input [3:0] a,
input [3:0] b,
input c0, //carry_in
input clk,
lr,
output reg carry_out,
output reg [3:0]sum
);
在上述超前进位加法运算器的基础上,用基于模块的层次化设计方法,完成一个32位的加法运算器
,组内超前进位,组间行波进位。
用宏模块的方法实现一个32位加减运算器。
三、实验内容
1、用VERILOG设计完成一个4位行波进位的加减法运算器,要求有溢出和进位标志,并封装成模块。模块的端口描述如下:
1)lr(sw16)设为1[无效],将控制加减的信号add_sub(sw17)设为1[加法],将输入信号dataa(sw3~sw0)和输入信号datab(sw7~sw4)设为几组不同的值,观察输出信号result(ledr3~ledr0),输出信号overflow(ledg[6]),和输出信号carry_out(ledr[7])观察并记录输出;
2)lr(sw16)设为0[有效],将原来的数据清除,观察并记录输出,可以验证清零是否有效;
3)lr(sw16)设为1[无效],将控制加减的信号add_sub(sw17)设为0[减法],将输入信号dataa(sw3~sw0)和datab(sw7~sw4)设为几组不同的值,观察输出信号result(ledr3~ledr0),输出信号overflow(ledg[6]),和输出信号carry_out(ledr[7])观察并记录输出,观察并记录输出。
4)在时钟信号处输入一个上升沿(按下key0),观察并记录输出。
2、超前进位无符号加法算法器并封装成模块
1)lr(sw17)设为