一、实验目的
1、掌握门级建模方式的Verilog HDL语言的编程方法;
2、掌握模块实例化的具体操作;
3、通过4位全加器的门级电路设计熟悉Quartus Ⅱ软件的使用方法。
二、实验内容
1、基于Verilog HDL利用门级建模方式首先实现一位全加器;
2、采用模块实例化方法通过调用一位全加器实现四位全加器。
三、实验原理
全加器除了加数和被加数外,还要考虑低位的进位。
一位全加器原理图:

一位全加器功能表:

四位全加器原理图:

四、实验设备
安装QuartusII软件的PC机
五、实验步骤
1、设计编写功能模块
File→New →Verilog HDL file→输入编写好的程序→另存为→选择存储路径(注意路径不要含有中文)

图1 File→New →Verilog HDL file建立新程序编写文件

图2 输入编写好的程序


图3 另存为→选择存储路径(注意路径不要含有中文,文件名一定要与模块名一致)
参考程序:
①一位全加器子程序
module fulladd(S,Cout,Cin,A,B);
output S,Cout;
input Cin,A,B;
wire and1,and2,and3,and4;
xor (S,Cin,A,B);
and (and1,Cin,A);
and (and2,A,B);
and (and3,Cin,B);
or (Cout,and1,and2,and3);
endmodule
②四位全加器主程序
module add4(S,COUT,CIN,X,Y);//四位全加器
output COUT;
output [3:0] S;
input CIN;
input [3:0]X,Y;
wire c0,c1,c2;
fulladd add0(.S(S[0]), .Cout(c0), .Cin(CIN), .A(X[0]), .B(Y[0]));
fulladd add1(.S(S[1]), .Cout(c1), .Cin(c0), .A(X[1]), .B(Y[1]));
fulladd add2(.S(S[2]), .Cout(c2), .Cin(c1), .A(X[2]), .B(Y[2]));
fulladd add3(.S(S[3]), .Cout(COUT), .Cin(c2), .A(X[3]), .B(Y[3]));
endmodule
2、建工程文件
保存后弹出对话框”Do you want to create a new project with this file” →点击“是”→Next→设置路径、项目及顶层模块名称→Next→在弹出的对话框中单击File栏后的按钮,将编写好的Verilog程序加入此工程→Next→选择目标芯片(例:CycloneⅢ系列→Ep3C55F4884C8)→Next→EDA工具设置窗口→Next→finish


图4 建立本设计项目工程文件→next项目工程信息→next



图5 设置路径、项目及顶层模块名称→Next 图6 单击File栏后的…按钮,添加Verilog程序→Next


图7 点击add按键将add.v文件添加入下面对话框中→Next



图8 选择目标芯片→Next→EDA工具设置窗口→Next→finish
3、编译验证(验证程序编写是否有错误)


图9 点击编译按键进行编译
4、功能仿真File→New →vector waveform file→保存

图10 点击File→New →vector waveform file→保存,建立波形仿真文件

图11 双击Name下方空白处弹出Insert Node or Bus对话框,点击Node Finder…



图12 点击List加载模块输入输出引脚→OK

图13 点击OK→添加输入信号信息
5、添加输入信号信息


图14 点击左侧工具栏添加输入信号信息


图15 点击Assignments→Settings…→将Timing改成Functional


图15 点击Processing→Generate Functional Simulation Netlist→网表文件生成成功


图16 点击波形仿真按钮进行仿真
6、产生功能波形

图17 四位全加器参考波形
V