基于FPGA的三人表决器设计

Verilog HDL语言

Verilog HDL 是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

任务描述

运用所学的组合逻辑电路的知识完成三人表决器的设计,实现少数服从多数的表决规则,并进行验证测试。熟悉 Verilog HDL 文本设计流程,掌握组合逻辑电路的设计仿真和硬件测试的方法。最后完善一个三人表决器电路的功能描述风格 Verilog HDL 代码。

题目来源

举重比赛有三名裁判,当运动员将杠铃举起后,须有两名或两名以上裁判认可,方可判
定试举成功,若用 A、B、C 分别代表三名裁判的意见输入,同意为 1,否定为 0;F 为裁判
结果输出,试举成功时 F=1,试举失败时 F=0。

实验原理

在三人表决电路中,当表决某个提案时,多数人同意,则提案通过;反之,不通过。
假设 key_1,key_2,key_3 为三个裁判。同意用 1 表示,不同意用 0 表示;输出 LED0 为 1
的时候提案通过;反之,不通过。
1、真值表
A_in B_in C_in F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
2、逻辑表达式
F=B_inC_in+A_inC_in+A_inB_in+A_inB_inC_in)
3、逻辑电路图
三人表决器的逻辑电路图
4、用 Verilog 语言写出该逻辑表达式
F=(B_in&&C_in)||(A_in&&C_in)||(A_in&&B_in)||(A_in&&B_in&&C_in);
在 verilog 语言中,&&代表逻辑与;||代表逻辑或
5、新建工程,将工程名命为:sanrenbiaojue
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、右击,选择 New Source
在这里插入图片描述

7、选择 Verilog Module,并命名为 biaojue
在这里插入图片描述

8、编写代码
在这里插入图片描述

9、运行该程序,检查 RTL 电路
在这里插入图片描述

双击放大如下:
在这里插入图片描述

10、新建仿真文件
先点击 Simulation
在这里插入图片描述

右击,选择 New Source
在这里插入图片描述

选择 Verilog Test Fixture,命名为:sanrenbiaojue
在这里插入图片描述

编写仿真代码
在这里插入图片描述

写完代码,双击 Simulate Behavioral Model
在这里插入图片描述

得到如下仿真波形图:
在这里插入图片描述

根据上面的波形图我们可以知道,
在 0-100ns 之间,A_in=0,B_in=0,C_in=0,F=0;
在 100ns 时,A_in=0,B_in=0,C_in=1,F=0;
在 120ns 时,A_in=0,B_in=1,C_in=0,F=0;
在 140ns 时,A_in=0,B_in=1,C_in=1,F=1;
在 160ns 时,A_in=1,B_in=0,C_in=0,F=0;
在 180ns 时,A_in=1,B_in=0,C_in=1,F=1;
在 200ns 时,A_in=1,B_in=1,C_in=0,F=1;
在 220ns 时,A_in=1,B_in=1,C_in=1,F=1;
在 220ns 之后一直保持 A_in=1,B_in=1,C_in=1,F=1
换言之,F 只有在 A_in,B_in,C_in,中有两个及两个以上的高电平时输出高电平;否
则,F 输出为低电平。
11、进行引脚标注
选择上方工具栏里面的 Tools,接下来点击 PlanAhead,然后选择第一个,如下图所示:
在这里插入图片描述

进入如下界面后,点击红色箭头所指的图标
在这里插入图片描述

在 Site 内输入相对应的引脚位置:
在这里插入图片描述

根据下表输入:
引脚名 引脚位置
A_in L5
B_in M3
C_in L4
F P6
12、下载到开发板,进行实物实验
首先将开发板与电脑连接,再进行如下步骤
双击 Generate Programming File ,如果显示为绿色的勾勾
在这里插入图片描述

双击 Configure Target Device
在这里插入图片描述
点击 OK
在这里插入图片描述
双击 Boundary Scan
在这里插入图片描述

在白色区域内,右击,选择 Add Xilinx Device
在这里插入图片描述

找到相对应的.bit 文件,打开
在这里插入图片描述
在这里插入图片描述

右击上述图片红色箭头指示的位置,选择 Program
在这里插入图片描述

六、实验结论
通过本次实验,我熟悉了 ISE 软件的基本操作,掌握了使用 Verilog HDL 描述电路功能
的编写,学习组合逻辑电路的设计仿真和测试,熟悉了 EDA 实验的基本流程。
七、实验相关代码及代码解释
module biaojue(
//变量名
A_in,
B_in,
C_in,
F
);
//定义输入输出变量
input A_in;
input B_in;
input C_in;
output F;//在这里将 F 默认定义为 wire 类型
assign F=(A_in&&B_in)||(A_in&&C_in)||(B_in&&C_in)||(A_in&&B_in&&C_in);//对
wire 类型变量 F 赋值用 assign 语句
endmodule
仿真测试代码:
module biaojueqi;
// Inputs
reg A_in;
reg B_in;
reg C_in;
// Outputs
wire F;
// Instantiate the Unit Under Test (UUT)
biaojue uut (
.A_in(A_in),
.B_in(B_in),
.C_in(C_in),
.F(F)
);
initial begin
// Initialize Inputs
A_in = 0;
B_in = 0;
C_in = 0;
// Wait 100 ns for global reset to finish
#100;
A_in = 1;
B_in = 0;
C_in = 0;
#20
A_in = 1;
B_in = 1;
C_in = 0;
#20
A_in = 0;
B_in = 1;
C_in = 0;
#20
A_in = 0;
B_in = 1;
C_in = 1;
// Add stimulus here
#20
A_in = 1;
B_in = 1;
C_in = 1;
#20
A_in = 0;
B_in = 0;
C_in = 1;
end
endmodule

  • 11
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值