vivado.2020-Verilog两个半加器实现一个全加器-数字逻辑实验-IP核的使用
这篇文比较适合还没搞懂verilog的小白,说的比较具体,我会指明操作步骤,跟着一步一步做就好,做完之后希望大家可以通过这个较为完整的过程大致了解verilog的一些简单操作。
1. 首先,新建一个项目作为半加器
如何创建新项目还请小可爱们自行搜索,这里不做阐述啦~
在Add Sources中创建一个Design Source,作为半加器。
半加器的实现如下:
module adder_half(a,b,S,C);
input a,b;
output S,C;
assign S=a^b;
assign C=a&b;
endmodule
点击open elaborated design我们可以看到这样的一个元件:
这就是我们刚刚完成的半加器,a,b为半加器的输入端,S,C为半加器的输出端,其中S表示求得的和,C表示进位。接下来我们进行下一步。
2. 将半加器生成为一个IP核,用于全加器的构造
在主界面中Tools选择Create and package new IP,如图:
接下来的窗口点击Next
再接下来的窗口选择Package your current project,然后点击Next,然后继续Next,(这里记得要记一下IP核的存储位置,方便一会寻找),最后点击Finish,IP核封装完成!
于是我们终于获得了一个IP核,全加器的完成又近了一步!
3.使用半加器的IP核构造全加器
退出当前文件,新建一个空白的即将用于实现全加器的项目。
在Design Source中新建一个文件。
然后在PROJECT MANAGER中选择点击Settings,点击IP,点击Repository,如图:
点击小加号,如图:
然后按照刚刚我们说要记下来的地址,寻找到封装好的IP核,点击Select添加IP核,弹窗点击OK,这样IP核就初步加入到我们的阵营中了。
nice!
接下来,在PROJECT MANAGER 中点击IP Catalog,就是下图中前面有一个小图标的那个~
然后在User Repository下的文件夹中我们可以找到刚刚添加进来的IP核,如图:
双击这个IP核,弹窗点击OK,弹窗再OK,最后点击Generate生成!Yes,IP核成了
下一步要继续搞代码啦~~
4.全加器的实现
打开我们第三步最开始创建的空白文件,在里面写入全加器的代码:
代码如下:
module fad(a,b,cin,S,C);
input a,b,cin;
output S,C;
wire m,e,n;
adder_half_0 u1(a,b,m,e);
adder_half_0 u2(m,cin,S,n);
assign C = e|n;
endmodule
其中a,b为全加器的两位输入,cin为进位,S,C分别为和项与进位项。
代码中的adder_half_0 u1(a,b,m,e); adder_half_0 u2(m,cin,S,n);
两句就是对IP核的调用,全加器的实现需要两个半加器,这里如果不懂的话可以去复习一下全加器与半加器。
Control S保存!
这时候点击RTL ANALYSIS下的Open Elaborated Design,弹窗OK,然后我们可以看到这样一个东西:
这就是全加器了,我用箭头指出来的两个就是调用的半加器,以IP核的形式展示。
5.最后一步,仿真
如果你想看看仿真波形对不对?
好,上才艺:
又来到Add Sources,这次我们加一个simulation sources,然后写进去个仿真代码:
module sim_fad();
reg a,b,c;
wire S,C;
fad f1(a,b,c,S,C);
initial
begin
a = 0; b = 0; c = 0;
end
always #10 {a,b,c} = {a,b,c}+1;
endmodule
保存!然后找到SIMULATION下的Run Smulation,然后我们得到了仿真波形,来瞧瞧:
诶嘿,好家伙,还不错,结束~
注:代码的实现方式不局限。
哪里有写的不对的地方还请多多指教!感谢!敬礼∠(°ゝ°)