一、输入原理图实现1位加法器
创建工程过程
启动 Quartus II 软件,选择File->New Project Wizard,在出现的界面下先Next,填写工程的路径和名称,然后接着Next,直到出现下面界面并进行相应操作。接着一路Next,直到Finish,完成工程的创建。
1.半加器原理图输入
- 绘制过程实现
首先选择File->New,进入后选择Block Diagram/Schematic File
选择元件
添加输入输出,实现如下图一般的效果
保存文件,并编译
通过tool->Netlist Viewers->RTL Viewer,查看电路图
2.仿真实现
创建一个向量波形文件,选择菜单项 File→New->VWF
添加信号
编辑信号
功能仿真效果
时序仿真效果
通过仿真结果,可以发现得到的结果与真值表中是相吻合的。
2.全加器原理图输入
利用半加器元件实现全加器
-
将设计项目设置为可调用的元件
在打开半加器原理图文件half_adder.bdf的情况下,选择菜中File中的Create/Update→CreateSymbolFilesforCurrentFile项,即可将当前文件h_adder.bdf变成一个元件符号存盘,以待在高层次设计中调用
-
绘制过程实现
首先选择File->New,进入后选择Block Diagram/Schematic File
选择元件
添加输入输出,完成效果
保存文件,并编译
通过tool->Netlist Viewers->RTL Viewer,查看电路图
- 仿真实现
创建一个向量波形文件,操作方法与半加器相同
最后得到:
功能仿真效果
时序仿真效果
二、Verilog实现1位加法器
1.创建Verilog文件
2.添加代码
module full_adder(
//输入信号,ain表示被加数,bin表示加数,cin表示低位向高位的进位
input ain,bin,cin,
//输出信号,cout表示向高位的进位,sum表示本位的相加和
output reg cout,sum
);
reg s1,s2,s3;
always @(ain or bin or cin) begin
sum=(ain^bin)^cin;//本位和输出表达式
s1=ain&cin;
s2=bin&cin;
s3=ain&bin;
cout=(s1|s2)|s3;//高位进位输出表达式
end
endmodule
保存并编译文件
通过tool->Netlist Viewers->RTL Viewer,查看电路图
3.仿真实现
创建一个向量波形文件,选择菜单项 File→New->VWF
添加信号
给予时钟信号
功能仿真效果
时序仿真效果
三、烧录测试
芯片引脚配置表
1.输入原理图
-
将设计项目设置为顶层文件
选中对应的设计文件
-
配置引脚
使用3个SW作为输入信号,2个LED作为输出信号
-
烧录
将生成的output文件加人,点击start,进度到100即完成
-
结果效果
通过拨动SW,观察LED的亮灭的效果,发现SW开表示1,关表示0,LED亮表示1,灭表示0。最终,验证的结果为跟其真值表相吻合。
四、总结
此次实验我实现了使用元件直接生成全加器和半加器,以及使用verilog代码实现全加器,并且实现了键程序通过blaster烧录到对应的工程板子上面,进一步提升了我对于FPGA的理解。