**这是本文档旧的修订版!**
实验二 基本组合逻辑电路
一、 实验简介
本教程以实验为主,结合相应的实验案例,以详细的讲解和实验步骤让大家尽快熟悉FPGA开发的基本流程、Lattice Diamond软件平台的使用方法以及本节实验相关模块的工作原理。 组合逻辑电路是数字电路的重要部分,电路的输出只与输入的当前状态相关的逻辑电路,常见的有选择器、比较器、译码器、编码器、编码转换等等。通过对组合逻辑电路实验的学习,掌握以下知识要点: 熟悉和掌握FPGA开发的基本流程 掌握Lattice Diamond软件平台的基本使用方法 掌握常见组合逻辑电路的原理和设计方法 掌握使用Verilog HDL语言描述组合逻辑电路的方法
二、 背景知识
组合逻辑电路的特点是任一时刻的输出信号只和当时的输入信号有关。 时序电路种类很多,常见的有选择器、译码器、比较器、编码器等等,这里我们用Verilog HDL来描述几个典型的组合逻辑电路,通过实例的方式学习组合逻辑电路的Verilog HDL建模方法。 在用Verilog HDL描述组合电路时,可以在逻辑门级通过内置的逻辑门元件进行描述,也可以使用数据流描述语句和行为级描述语句进行描述。
三、 实验环境
硬件环境:STEP FPGA 实验平台 软件环境:Lattice Diamond 开发环境
四、 实验部分
4.1 2选1选择器
4.1.1 实验目的
1)熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法
2)通过实验理解和掌握选择器原理
3)掌握用Verilog HDL描述选择器的方法
4.1.2 实验任务
本实验的任务是描述一个2选1的选择器逻辑单元。
4.1.3 实验原理
真值表如下图所示:
四、 代码设计
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 | 测试文件 |