显示页面 讨论 修订记录 反向链接 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 <WRAP center 60%> ====== 实验二 基本组合逻辑电路 ====== </WRAP> ===== 一、 实验简介 ===== 本教程以实验为主,结合相应的实验案例,以详细的讲解和实验步骤让大家尽快熟悉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描述选择器的方法 ===== 四、 代码设计 ===== LED默认状态为点亮,若其他LED不加控制,则会常亮。以下代码目的为改变其默认状态,使之常灭:\\ <code verilog> assign empty=8'b1111_1111; //led's defualt mode is lighted </code> 由于LED为低电平触发,若直接将z连接在LED管脚上,LED亮将代表输入为低电平,LED灭代表输入为高电平。所以有如下代码,使之更符合我们的思维习惯: <code verilog> assign led=~z; //led is low active </code> 逻辑门电路的函数表达式如下所示:\\ <code verilog> 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 </code> 原理图如下所示,其中“与非门”和“或非门”是将“与门”和“或门”取反所得 : {{ :wiki:实验一简单逻辑门原理图.jpg?700 |原理图}} ===== 五、 仿真波形 ===== a,b两项输入的真值表如第二部分所示,产生如下波形:\\ {{:实验一仿真.jpg?600|仿真}} 如下图所示,开关SW1为0,SW2为1,对应波形图中z=010110。对应的LD2、LD4、LD5发光。此时,或非门、或门、与非门为真。\\ {{:实验一简单逻辑门实物图.jpg?500|实物图}} ===== 六、 资源报告 ===== ^ 资源 | 数量 | 比例 | 说明 | ^ LUTs | 7 | 0% | | ^ 寄存器 | 0 | 0% | | ^ 存储器 | 0 | 0% | | ^ IO管脚 | 26 | 23% | | ^ 时钟频率 | 12MHz | | | ===== 七、 源文件 ===== ^ **文件名称** | **功能** | ^ **[[gates.v]]** | **逻辑门** | ^ **[[gates_tb.v]]** | **测试文件** |