打开vivado 2017.4
选择Quick Start---create project 或者点击左上角的 File---New project创建新项目
创建工程名称与工程目录(不能含中文)
选择开发板类型
接下来,就可以编写我们的第一个程序啦
点击加号创建程序文件
点击create file,编辑程序名(不能包含中文,建议与模块名相同)
定义模块输入输出
我们要创建的是2位数的半加器,a和b是二位输入,sum是三位输出
port name:参数列表 Direction:输入/输出 Bus:不选中表示标量,长度为1;选中表示向量,使用的比特在后面标出。
1.编辑程序文件源码
module task1( input [1:0] a, input [1:0] b, output [2:0] sum ); assign sum=a+b; // assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。 endmodule
2.生成仿真文件
功能:·准备所有数据 ·测试程序文件正确与否
注意仿真文件不需要输入输出端口,所有数据均内部创建
打开仿真文件后是这样的:
编辑仿真文件:
module sim1(
);
reg [1:0] a1,b1;
wire [2:0] sum1;
initial//初始化模块,只执行一次
begin //与end连在一起类似于大括号
a1=2'b01;//2'b表示位宽,由于时序元件只能存储二值电平,因此计算位宽都要转成二进制来计算。如4'h0,它的0是十六进制的,表示二进制的4'b0000,所以是4位;16'h4012每个数字表示4位,所以共16位。
b1=2'b10;
#10 a1=2'b11;
#10 b1=2'b01;
end
task_1 myadder(a1,b1,sum1);//“模块名 实例名(参数1,参数2,……)”(按照端口位置进行连接)“模块名 实例名 (.端口名1(参数1),.端口名2(参数2),……)”(按照端口名进行连接)
endmodule
点击Run Simulation运行仿真文件
图中的a1、b1、sum1表示各对象最终值
也可以通过以下两种仿真文件分别查看所有可能输入组合与随机输入组合
module sim2;
reg[3:0] data;
wire[1:0] a,b;
wire[2:0] sum;
assign a = data[3:2];
assign b = data[1:0];
initial
data=4'b0000;
always #10
data=data+1;
task_1 myadder(a,b,sum);
endmodule
module sim3;
reg[1:0] a,b;
wire[2:0] sum;
always #10
begin
a={$random}%4;
b={$random}%4;
end
task_1 myadder(a,b,sum);
endmodule
初次完结!zlt.lyf