**这是本文档旧的修订版!**
实验一 2输入逻辑门电路
一、 实验简介
本教程以实验为主,结合相应的实验案例,以详细的讲解和实验步骤让大家尽快熟悉FPGA开发的基本流程、Lattice Diamond软件平台的使用方法以及本节实验相关模块的工作原理。 组合逻辑电路是数字电路的重要部分,电路的输出只与输入的当前状态相关的逻辑电路,常见的有选择器、比较器、译码器、编码器、编码转换等等。通过对组合逻辑电路实验的学习,掌握以下知识要点: 熟悉和掌握FPGA开发的基本流程 掌握Lattice Diamond软件平台的基本使用方法 掌握常见组合逻辑电路的原理和设计方法 掌握使用Verilog HDL语言描述组合逻辑电路的方法
二、 实验原理与内容
三、 硬件连接
LED也叫发光二极管,可以把电能转化成光能,因为是二极管的一种,由一个PN结组成,具有单向导电性。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过二极管的电流,LED的亮度与电流有关,一般LED能够承受的最大电流为20mA(具体需要看使用的LED的参数),本设计使用的限流电阻为1K。下图为LED的硬件电路:
本实验中我们需由LD1,LD2,LD3,LD4,LD5,LD6的状态表示输出的结果,由上图可知当控制信号LED1端为高电平时D1熄灭,当控制信号LED1端为低电平时LD1点亮。 LED与FPGA的引脚连接关系如下:
LD1:管脚N13 | LD2:管脚M12 | LD3:管脚P12 |
LD4:管脚M11 | LD5:管脚P11 | LD6:管脚N10 |
由上图可知,开关导通状态处于高电平。 LED与FPGA的引脚连接关系如下:
SW1:管脚M7 | SW2:管脚M8 | SW3:管脚M9 | SW4:管脚M10 |
小脚丫仿真原理:开关SW1,SW2处于四种不同状态,代表两个输入信号的4种不同取值情况,LED1~LED6,分别代表6个逻辑门的输出情况。
四、 代码设计
LED默认状态为点亮,若其他LED不加控制,则会常亮。以下代码目的为改变其默认状态,使之常灭:
assign empty=8'b1111_1111; //led's defualt mode is lighted
由于LED为低电平触发,若直接将z连接在LED管脚上,LED亮将代表输入为低电平,LED灭代表输入为高电平。所以有如下代码,使之更符合我们的思维习惯:
assign led=~z; //led is low active
逻辑门电路的函数表达式如下所示:
assign z[5]=a&b; //AND assign z[4]=~(a&b); //NAND assign z[3]=a|b; //OR assign z[2]=~(a|b); //NOR assign z[1]=a^b; //XOR assign z[0]=a~^b; //XNOR
原理图如下所示,其中“与非门”和“或非门”是将“与门”和“或门”取反所得 :
五、 仿真波形
六、 资源报告
资源 | 数量 | 比例 | 说明 |
---|---|---|---|
LUTs | 7 | 0% | |
寄存器 | 0 | 0% | |
存储器 | 0 | 0% | |
IO管脚 | 26 | 23% | |
时钟频率 | 12MHz |
七、 源文件
文件名称 | 功能 |
---|---|
gates.v | 逻辑门 |
gates_tb.v | 测试文件 |