简介当前,使用FPGA来进行数字逻辑课程实验以及相关动手实践、创新已经被越来越多的老师和学生所接受。学习数字逻辑基础课的同时,掌握F...
当前,使用FPGA来进行数字逻辑课程实验以及相关动手实践、创新已经被越来越多的老师和学生所接受。学习数字逻辑基础课的同时,掌握FPGA设计的基本流程和技巧也会对后续的学习以及工作有莫大的好处。
EGO1,这一最新的Xilinx口袋实验平台正是为此而生!各位对EGO1还不是很熟悉的小伙伴们,请点击这里详细阅读EGO1口袋实验平台的详细介绍。
EGO1配套教材-《基于Xilinx Vivado的数字逻辑实验教程》
针对初学上手的小伙伴们,EGO1口袋实验平台推荐有多部参考教材。今天要介绍的就是一本来自于哈尔滨工业大学电工电子实验教学中心电子学实验室主任廉玉欣老师精心编写的-《基于Xilinx Vivado的数字逻辑实验教程》。
本书由依元素科技提供技术支持,以Xilinx公司最新的Vivado FPGA集成开发环境为基础,将数字逻辑设计与硬件描述语言Verilog HDL相结合,循序渐进地介绍了基于Xilinx Vivado的数字逻辑实验的基本过程和方法。书中包含了大量的设计实例,内容翔实、系统、全面。
目前该书已在各大平台以及实体书店有售,使用EGO1学习数字逻辑以及FPGA设计的小伙伴们可不要错过噢!
展开全文
今日的EGO1动手练习
今天我们EGO1动手练习部分要做的是一个4位比较器实验。这个实验在参考教材《基于Xilinx Vivado的数字逻辑实验教程》的第4章第3节,是组合逻辑实验部分的4位比较器实验,结果有大于、等于和小于三种情况。
4位比较器可以由4个1位比较器构建。本例中使用任务(Task)创建1位比较器,然后在always语句中调用任务实现4位比较器。
我们通过编写Verilog代码comp4t.v模块来完成这个比较器逻辑电路,然后可以通过编写Testbench文件comp4t_tb.v来给这个比较器逻辑电路施加测试激励信号,并进行仿真。
4位比较器的硬件描述Verilog代码如下:
1 module comp4t(
2 input wire [3:0] x,
3 input wire [3:0] y,
4 output reg gt, //x大于y
5 output reg eq, //x等于y
6 output reg lt //x小于y
7 );
8 //内部变量
9 reg [4:0] G;
10 reg [4:0] L;
11 reg [4:0] E;
12 integer i;
13
14 always @ (*)
15 begin
16 G[0] = 0;
17 L[0] = 0;
18 for(i=0;i4;i=i+1)
19 comp1bit(x[i],y[i],G[i],L[i],G[i+1],L[i+1],E[i+1]);
20 gt=G[4];
21 eq=E[4];
22 lt=L[4];
23 end
24 task comp1bit(
25 input x,
26 input y,
27 input Gin,
28 input Lin,
29 output Gout,
30 output Lout,
31 output Eout
32 );
33 begin
34 Gout=x ~y | x Gin | ~y Gin;
35 Eout=~x ~y ~Gin ~Lin | x y ~Gin ~Lin;
36 Lout=~x y | ~x Lin | y Lin;
37 end
38 endtask
39 endmodule
4位比较器电路的仿真激励如下所示:
1 module comp4t_tb( );
2 reg [3:0] x;
3 reg [3:0] y;
4 wire gt;
5 wire eq;
6 wire lt;
7 initial
8 begin
9 x = 0;
10 y = 4'b1001;
11 repeat(100)
12 begin
13 #10 x = x + 1'b1;
14 end
15 #10 $stop;
16 end
17 comp4t U1(
18 .x(x),
19 .y(y),
20 .gt(gt),
21 .eq(eq),
22 .lt(lt)
23 );
24 endmodule
关于实验原理部分的详细讲解,有兴趣的小伙伴们可以查阅参考书的对应章节。
实验源文件准备妥当之后,我们就可以开始动手实践啦。
首先当然是打开Vivado工具咯,这里我们使用最新的2017版本的Vivado开发环境。什么?你还没有安装Vivado么?表担心啦,我们提供有详细的Vivado安装流程,请点击这里查看。
Vivado开发环境成功打开后,它的主界面如下。
接下来就让我们开始使用Vivado完成这个实验吧。如果有对Vivado操作不熟悉的小伙伴们也不用担心啦,我们提供有STEP-BY-STEP的指导噢。请点击这里查看详细的Vivado实验操作流程。
首先,我们进行实验仿真。下面是仿真的结果。
同时,我们可以在Vivado中查看我们RTL所对应的原理图。
在完成Vivado FPGA综合流程后,我们还可以看到这段电路综合后的原理图。
最后,我们完成设计的整体实现,可以看到这段电路在实际的FPGA芯片中的线路图。
接下来,就可以在硬件平台上下载验证啦。当然,我们也有使用EGO1口袋实验平台来进行硬件下载的详细步骤介绍哟,请点击这里查看。
硬件配置完成后,我们就可以在EGO1平台上来验证我们的设计啦,这个设计中我们将EGO1开发板的八个拨码开关分别作为x和y的输入,拨码开关上方的LED灯作为结果输出。比如,我们将SW0和SW7拉高(x=4’b0001,y=4’b1000),运算结果就直接显示在LED上面了。好啦,各位小伙伴们大家看看我们的电路计算正确么?
E-Elements
发表评论