目标任务
基于Quartus-II软件完成一个1位全加器的设计,分别采用:
1)原理图输入 以及
2)Verilog编程 这两种设计方法。
软件基于quartusII 13.0版本,开发板基于Intel DE2-115。
原理图输入
打开quartus
新建工程,按照对应开发板的型号
1.新建一个Block Diagram/Schematic File文件
按照下图构建原理图,使用器件的name为两个half_adder一个OR2
2.编译一遍查看是否报错
3.new一个University Program VWF文件,并添加pins
模拟一遍查看是否有误
4.无误进入下一步
进入Assignment—pin planner
按照开发板与个人需求设置对应的管脚
然后保存
5.下一步烧录程序
刚进来发现什么都没有
需要我们安装USB—Blaster驱动
进入设备管理器从本地安装
USB—Blaster驱动安装目录为你安装Quartus目录下的某个目录
具体路径为D:\Quartus\quartus\drivers\usb-blaster(以我的目录为例)
只要安装了Quartus就有这个
接下来就可以烧录了,下图为完成的截图
实际结果如下:
与预期相符
Verilog编程
参考资料:https://blog.youkuaiyun.com/sinat_42483341/article/details/89005636
新建一个Verilog HDL File文件
全加器的门级Verilog语言描述:
//source program
module myadd(sum,cout,a,b,cin); //output,output,input,input
input a,b; //I change a from 4-bit to 1-bit
input cin;
output cout;
output sum; //I change sum from 4-bit to 1-bit
assign {count,sum} = a+b+cin; //to always give value
endmodule
全加器的行为描述:
//Simulation program
`timescale 1ns/1ns
`include "MyFirstVerilog.v"
module myadd_tb; //测试模块的名字
reg a,b; //测试输入信号定义为 reg 型
reg cin; //测试输入信号进位设置为 reg 型
wire sum; //测试输出信号定义为 wire 型
wire cout; //测试输出信号进位定义为 wire 型
integer i,j;
myadd adder(sum,cout,a,b,cin); //调用测试对象(实例化)
always #5 cin=~cin;//每5ns对cin进行一次取反
//赋值
initial
begin a=0;b=0;cin=0;
#10 a<=1;b<=1;//这里使用非阻塞赋值,如果使用阻塞赋值a=1;b=1无法成功赋值
end
//定义结果显示格式
initial
begin
$monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum);//控制台输出
#20
$finish;
end
endmodule