【计算机组成原理】 Verilog语言编写32位并行加法器的理解
近日,为了完成本学期的计算机组成原理课程大作业的要求,我开始学习利用verilog语言编写的一套32位并行加法器以完成在整个项目中提高运算速度的基本要求。考虑到verilog语言和硬件设计的关联性,我们需要从结构上完成对并行加法器的理解。
32位加法器注重逻辑结构的顺序,本文主要简单介绍了加法器的逻辑顺序并附上代码说明,较为简单。
加法器结构
首先,并行加法器的特点基本决定了其组成结构,每一位均由对应的一位全加器确定输出结果,且每一位的对应进位输入将由超前进位加法器(CLA)在本位的运算开始前计算得到。
CLA基本功能:输入各位级的值,在全加器计算之前先行计算出各位级对应的进位输入,便于全加器计算并得到输出的值。
整个代码的流程框架为:
基础-1位全加器模块add;4位CLA模块cla
进阶1-使用1位全加器和4位CLA构成4位全加器
进阶2-使用4位CLA模块构成16位CLA模块
应用-使用16位CLA模块构成32位并行加法器
代码展示与理解
下文附上整理为逻辑顺序架构的32位超前进位加法器的整体代码,语句的基本注释已经附在代码块中。
//基础-设置一位全加器模块
module add(X,Y,Cin,F,Cout);
input X,Y,Cin;
output F,Cout;
assign F = X ^ Y ^ Cin;
assign Cout = (X ^ Y) & Cin | X & Y;
endmodule
//一位全加器输入x