实验2-1 2选1选择器

一、 实验目的


1)熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法
2)通过实验理解和掌握选择器原理
3)掌握用Verilog HDL描述选择器的方法

二、 实验任务


本实验的任务是描述一个2选1的选择器逻辑单元。

三、 实验原理

真值表如下图所示:

实验原理图如下图所示:

当s=0时,输出f=a;当s=1时,输出f=b。根据真值表和卡诺图化简我们可以得到f的逻辑方程: f=~s&a|s&b

四、 代码设计

程序清单mux21.v

程序清单mux21.v

// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------
// File name    : mux21.v
// Module name  : mux21
// Author       : Step
// Description  : mux21.v
// Web          : www.stepfpga.com
// 
// --------------------------------------------------------------------
// Code Revision History :
// --------------------------------------------------------------------
// Version: |Mod. Date:   |Changes Made:
// V1.0     |2015/11/11   |Initial ver
// --------------------------------------------------------------------
module mux21
(
    //INPUT
    a           ,
    b           ,
    s           ,
 
    //OUTPUT
    led         ,
    empty
);
    //*******************
    //DEFINE INPUT
    //*******************
    input         a;
    input         b;
    input         s;
 
    //*******************
    //DEFINE OUTPUT
    //*******************
    output  [9:0]   empty;
    output  [3:0]   led;
 
    wire            y1;
    reg             y2;
    reg             y3;
    wire            y4;
 //plan A, Combinational logic style
    assign y1=~s&a|s&b;     
 
    //plan B, using "always" and "if" 
    always @ (a,b,s)
    if(s==0)
        y2=a;
    else 
        y2=b;
 
    //plan C 
    always @ (*)
    if(s==0)
        y3=a;
    else 
        y3=b;
 
    //plan D
    assign y4=s?b:a;
 
 
    assign  led[0]=~y1;                     //led is low active
    assign  led[1]=~y2;
    assign  led[2]=~y3;
    assign  led[3]=~y4;
 
    assign  empty=10'b11_1111_1111; //led's defualt mode is lighted 
 
endmodule


五、 实验步骤


1.新建工程


双击打开Lattice Diamond软件,点击File—New—Project新建工程,输入工程名称,指定工程保存目录,单击Next,选择设备如下:

  • Family选择MachXO2
  • Device选择LCMXO2-4000HC,
    • Performance grade选择4
    • Package type选择CSBGA132
    • Operating conditions选择Commercial
    • Part NamesLCMXO2-4000HC-4MG132C
    • 选择综合工具Lattice LSE,完成。

    2. 输入Verilog文件


点击File—New—File新建文件,类型选择Verilog Files,输入文件名称,选择保存路径,输入实验中的源代码后保存,编辑器会自动检查有无编辑错误,在下面的Output一栏会输出检查结果,如果有错误更正后重新保存直到没有报错为止。

3. 输入仿真文件


按照步骤(2)新建一个Verilog仿真文件,输入实验例程中仿真文件的代码后保存。在软件File List一栏中,右键单击“仿真文件”—Include for—Simulation,将文件设置为仿真文件(设置完成后文件图标的V会消失)。

4. 功能仿真


点击Tools选择Simulation Wizard或点击图标,按照仿真向导指示新建仿真工程,

  • 输入工程名称,选择工程目录,选择SimulatorActive-HDL
  • Process Stage选择RTL
  • Add and Reorder Source:确认参与仿真的文件列表,Next
  • Parse HDL files for simulation:软件会编译仿真文件,若报错需修改后重新仿真
  • Summary:确认仿真工程信息,勾选Run simulatorAdd top-level signals to waveform display和Run simulation,然后Finish

仿真软件会自动启动、运行仿真并显示仿真结果。查看仿真结果是否符合预期功能,如果不符合电路功能,则修改Verilog代码保存后,在Active-HDL中选择Design—Compile All 重新编译文件,编译通过后,在Simulation中重新开始仿真。

5. 综合


在Lattice Diamond软件的Process一栏,双击第一项Synthesize Design进行综合(确保仿真文件设置为simulation后不参与综合),综合结果会在下面的Output一栏中给出,如果有错误则修改Verilog文件后重新综合直至综合成功为止。

6. 分配管脚


打开Tools—Spreadsheet View或是点击图标Port Assignments一栏中对输入输出信号分配引脚。

7. 布局布线


双击Process一栏的Map DesignPlace & Route Design完成FPGA内部的布局布线。

8. 生成配置文件


勾选并双击JEDEC File生成可下载的jed文件。

9. 下载


打开Tools—Programmer或单击图标,根据下图选择设备和下载文件,点击上面的绿色按钮Program,下载jed文件到FPGA,下载成功后Status状态显示PASS(下载前确保下载器驱动成功安装)。 观察开发板现象。