当前,使用FPGA来进行数字逻辑课程实验以及相关动手实践、创新已经被越来越多的老师和学生所接受。学习数字逻辑基础课的同时,掌握FPGA设计的基本流程和技巧也会对后续的学习以及工作有莫大的好处。
EGO1,这一最新的Xilinx口袋实验平台正是为此而生!各位对EGO1还不是很熟悉的小伙伴们,请点击这里详细阅读EGO1口袋实验平台的详细介绍。

EGO1配套教材-《基于Xilinx Vivado的数字逻辑实验教程》
针对初学上手的小伙伴们,EGO1口袋实验平台推荐有多部参考教材。今天要介绍的就是一本来自于哈尔滨工业大学电工电子实验教学中心电子学实验室主任廉玉欣老师精心编写的-《基于Xilinx Vivado的数字逻辑实验教程》。
本书由依元素科技提供技术支持,以Xilinx公司最新的Vivado FPGA集成开发环境为基础,将数字逻辑设计与硬件描述语言Verilog HDL相结合,循序渐进地介绍了基于Xilinx Vivado的数字逻辑实验的基本过程和方法。书中包含了大量的设计实例,内容翔实、系统、全面。
目前该书已在各大平台以及实体书店有售,使用EGO1学习数字逻辑以及FPGA设计的小伙伴们可不要错过噢!

首先假设两个二进制数分别是被乘数A3A2A1A0和乘数B3B2B1B0,我们可以将乘法运算分解为加法运算和移位运算。根据Bi的值决定部分积P与A相加或与0相加,之后进行移位操作,经过四次以上的运算后得到最终的乘积。
我们通过编写Verilog代码Mult4.v模块来完成这个乘法器逻辑电路,然后可以通过编写Testbench文件Mult4_tb.v来给这个乘法器逻辑电路施加测试激励信号,并进行仿真。
4位乘法器的硬件描述Verilog代码如下:
1 module mult4(
2 input [3:0] a,
3 input [3:0] b,
4 output reg [7:0] p
5 );
6 reg[7:0]pv;
7 reg[7:0]ap;
8 integer i;
9 always@(*)
10 begin
11 pv=8'b00000000;
12 ap={4'b0000,a};
13 for(i=0;i<=3;i=i+1)
14 begin
15 if(b[i]==1)
16 pv=pv+ap;
17 ap={ap[6:0],1'b0};
18 end
19 p=pv;
20 end
21 endmodule
4位乘法器电路的仿真激励如下所示:
1 module mult4_tb( );
2 reg[3:0]a;
3 reg[3:0]b;
4 wire[7:0]p;
5 initial
6 begin
7 a=0;
8 b=0;
9 repeat(10)
10 begin
11 #10 a={$random}%16;
12 b={$random}%16;
13 end
14 #10 $stop;
15 end
16 mult4 U1(.a(a),.b(b),.p(p));
17 endmodule
关于实验原理部分的详细讲解,有兴趣的小伙伴们可以查阅参考书的对应章节。
实验源文件准备妥当之后,我们就可以开始动手实践啦。
首先当然是打开Vivado工具咯,这里我们使用最新的2017版本的Vivado开发环境。什么?你还没有安装Vivado么?别担心啦,我们提供有详细的Vivado安装流程,请点击这里查看。
Vivado开发环境成功打开后,它的主界面如下。

接下来就让我们开始使用Vivado完成这个实验吧。如果有对Vivado操作不熟悉的小伙伴们也不用担心啦,我们提供有STEP-BY-STEP的指导噢。
首先,我们进行实验仿真。下面是仿真的结果。

同时,我们可以在Vivado中查看我们RTL所对应的原理图。

在完成Vivado FPGA综合流程后,我们还可以看到这段电路综合后的原理图。

最后,我们完成设计的整体实现,可以看到这段电路在实际的FPGA芯片中的线路图。

接下来,就可以在硬件平台上下载验证啦。当然,我们也有使用EGO1口袋实验平台来进行硬件下载的详细步骤介绍哟,请点击这里查看。
硬件配置完成后,我们就可以在EGO1平台上来验证我们的设计啦,这个设计中我们将EGO1开发板的八个拨码开关分别作为a和b的输入,拨码开关上方的LED灯作为结果输出。比如,我们将SW3和SW4拉高(a=4’b1000,b=4’b0001),运算结果就直接显示在LED上面了。好啦,各位小伙伴们大家看看我们的电路计算正确么?

联系方式:edu@e-elements.com

E-Elements
FPGA我们是认真的!


