时间:2024-07-29 来源:网络搜集 关于我们 0
之前我们有介绍了通过小脚丫FPGA来进行门电路的实验过程。当然,我们还可以画出更多复杂的门电路组合,并且通过小脚丫FPGA轻松实现对应的输入/输出特性的定义。现在,我们利用小脚丫来学习更多具有特定功能的实用组合逻辑电路。
本篇中,我们希望设计一个二进制比较器,通过小脚丫FPGA搭建实验电路并验证结果。
顾名思义,二进制比较器就是比较两个二进制数的大小,因此对于一个两位输入的比较器来说,其输出结果不外乎有小于,大于和等于三种可能。因此我们列出这个电路的真值表。
A
B
Y2(A<B)
Y1(A>B)
Y0(A=B)
0
0
0
0
1
0
1
1
0
0
1
0
0
1
0
1
1
0
0
1
相信学习上过数字电路课程的同学都知道如何将该电路进行逻辑运算,化简并画出对应的门电路组合,因此该步骤我们不在此过多赘述,直接上图。
通过Verilog代码,我们对该电路进行硬件描述。这次我们采用Data-flow的写法,代码中出现的!&^等符号,实际上就是等于同直接对数据进行逻辑运算,并分别对应NOT, AND, OR。希望大家之后对这些符号的熟悉程度就如同看¥$€等符号一样亲切。
module comparer1
(
input wire A, //定义输入的两个数a、b
input wire B,
output wire Y2, //定义三种输出结果对应的led
output wire Y0,
output wire Y1
);
assign Y2 = (!A) & B; //对应A<B
assign Y1 = A & (!B); //对应A>B
assign Y0 = !(A^B); //对应A=B
endmodule
在完成代码编译后,我们将输入变量A和B以及输出变量Y2,Y1,Y0分别对应至小脚丫的板载外设上。
变量
小脚丫
A
SW1
B
SW2
Y2
L1
Y1
L2
Y0
L3
这样,我们就在小脚丫上构建了一个二进制比较器,我们可以通过调节输入编码开关,并观察LED灯的现象来验证我们的设计。
文章的最后我们提两个问题:
1. 如果我们将开关SW1, SW2拨至如下图所示,L1,L2,L3所对应的状态应该是怎样的?注意,小脚丫板载的LED是低电平点亮,也就是说,当输出为1时,LED熄灭,反之则亮。
2. 假如现在小脚丫上的L2和L3被点亮,那么拨码开关SW1和SW2现在应该是什么状态?(图中将拨码开关放置中间位置仅为示意作用,实际不存在中间状态)。
今天的内容到此结束,下一篇我们会介绍如何通过小脚丫实现一些更多实用且有趣的组合逻辑电路实验,敬请期待。