差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
实验2-1_2选1选择器 [2017/02/24 09:59]
zhijun 创建
实验2-1_2选1选择器 [2017/03/02 10:45] (当前版本)
zhijun
行 20: 行 20:
  
 实验原理图如下图所示: 实验原理图如下图所示:
- {{ :​2选1输入电路原理图.png |}} + {{ :​2选1输入电路原理图.png |}}\\ 
-===== 四、 实验分=====+ 
 +当s=0时,输出f=a;当s=1时,输出f=b。根据真值表和卡诺图化简我们可以得到f的逻辑方程: 
 +f=~s&​a|s&​b 
 + 
 +===== 四、 代码设计===== 
 + 
 +==== 程序清单mux21.v ==== 
 + 
 +==== 程序清单mux21.v ==== 
 + 
 +<code verilog>​ 
 +// -------------------------------------------------------------------- 
 +// >>>>>>>>>>>>>>>>>>>>>>>>>​ 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 ​     
 + 
 +</​code> ​   
 + 
 +  
 +  
 +===== 五、 实验步骤===== 
 +\\ 
 + 
 +=== 1.新建工程 === 
 +\\ 
 +双击{{:​diamond图标.png?​28|}}打开Lattice Diamond软件,点击**File—New—Project**新建工程,输入工程名称,指定工程保存目录,单击**Next**,选择设备如下:\\ 
 + 
 +  * **Family**选择**MachXO2**, 
 +  * **Device**选择**LCMXO2-4000HC**,​  
 +  * **Performance grade**选择**4**, 
 +  * **Package type**选择**CSBGA132**, 
 +  * **Operating conditions**选择**Commercial**, 
 +  * **Part Names**为**LCMXO2-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**或点击图标,按照仿真向导指示新建仿真工程, 
 +  * 输入工程名称,选择工程目录,选择**Simulator**为**Active-HDL**, 
 +  * **Process Stage**选择**RTL**, 
 +  * **Add and Reorder Source**:确认参与仿真的文件列表,**Next** 
 +  * **Parse HDL files for simulation**:软件会编译仿真文件,若报错需修改后重新仿真 
 +  * **Summary**:确认仿真工程信息,勾选**Run simulator**、**Add 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**或是点击图标{{::​分配管脚.png|}}在**Port Assignments**一栏中对输入输出信号分配引脚。 
 +\\ 
 +\\ 
 +=== 7. 布局布线 === 
 +\\ 
 +双击**Process**一栏的**Map Design**和**Place & Route Design**完成**FPGA**内部的布局布线。 
 +\\ 
 +\\ 
 +=== 8. 生成配置文件 === 
 +\\ 
 +勾选并双击**JEDEC File**生成可下载的**jed**文件。 
 +\\ 
 +\\ 
 +=== 9. 下载 === 
 +\\ 
 + ​打开**Tools—Programmer**或单击图标,根据下图选择设备和下载文件,点击上面的绿色按钮**Program**,下载**jed**文件到FPGA,下载成功后**Status**状态显示**PASS**(下载前确保下载器驱动成功安装)。 
 +{{:​下载成功.png|}} 
 +观察开发板现象。
  
-[[4.1 2选1选择器]] \\ 
-[[4.2 4位比较器]] \\ 
-[[4.3 译码器]]\\ 
-[[4.4 编码器]] ​ \\