差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
实验1-1_2输入基本门电路 [2017/02/24 16:19] zhijun |
实验1-1_2输入基本门电路 [2017/02/24 16:55] (当前版本) zhijun |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== 实验1-1 2输入基本门电路 ====== | + | <WRAP center 60%> |
+ | ====== 实验1.1 基本组合逻辑电路 ====== | ||
+ | </WRAP> | ||
===== 1.实验目的 ===== | ===== 1.实验目的 ===== | ||
- | * 熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法// | + | * 熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法 |
- | * 通过实验理解基本门电路// | + | * 通过实验理解基本门电路 |
- | * 掌握用Verilog HDL数据流基本门电路的方法// | + | * 掌握用Verilog HDL数据流基本门电路的方法 |
===== 2.实验任务 ===== | ===== 2.实验任务 ===== | ||
- | 利用Verilog语言实现不同的2输入基本逻辑门。// | + | 利用Verilog语言实现不同的2输入基本逻辑门。 |
===== 3.实验原理 ===== | ===== 3.实验原理 ===== | ||
- | // 与门,或门,与非门,或非门,异或门,同或门真值如下表所示: | + | 与门,或门,与非门,或非门,异或门,同或门真值如下表所示: |
+ | |||
+ | {{ :2选1选择器逻辑单元真值表.png |}} | ||
+ | |||
+ | 原理图如下所示: | ||
+ | |||
+ | {{ :2选1输入电路原理图.png |}} | ||
- | // | ||
===== 4.Verilog HDL建模描述 ===== | ===== 4.Verilog HDL建模描述 ===== | ||
行 76: | 行 85: | ||
==== 仿真程序清单gates_tb.v ==== | ==== 仿真程序清单gates_tb.v ==== | ||
- | ===== 5.实验步骤 ===== | + | |
- | ==== (1)新建工程 ==== | + | <code verilog> |
- | 双击{{:diamond图标.png|28}}打开Lattice Diamond软件,点击**File—New—Project**新建工程,输入工程名称,指定工程保存目录,单击Next,选择设备如下: | + | //******************************************************** |
+ | // | ||
+ | // Copyright(c)2016, STEP FPGA | ||
+ | // All rights reserved | ||
+ | // | ||
+ | // File name : gates_tb.v | ||
+ | // Module name : gates_tb | ||
+ | |||
+ | // Author : STEP | ||
+ | // Email : info@stepfpga.com | ||
+ | // Data : 2016/08/19 | ||
+ | |||
+ | // Version : V1.0 | ||
+ | // Description : testbench module | ||
+ | // | ||
+ | // Modification history | ||
+ | // ---------------------------------------------------------------------------- | ||
+ | // Version Data(2016/08/19) V1.0 | ||
+ | // Description | ||
+ | // | ||
+ | //******************************************************** | ||
+ | // | ||
+ | // | ||
+ | //******************* | ||
+ | //DEFINE MODULE PORT | ||
+ | //******************* | ||
+ | `timescale 1ns/100ps | ||
+ | module gates_tb; | ||
+ | |||
+ | reg a,b; | ||
+ | wire [5:0] led; | ||
+ | initial | ||
+ | begin | ||
+ | a=0; | ||
+ | b=0; | ||
+ | #50; | ||
+ | a=0; | ||
+ | b=1; | ||
+ | #50; | ||
+ | a=1; | ||
+ | b=0; | ||
+ | #50; | ||
+ | a=1; | ||
+ | b=1; | ||
+ | #50; | ||
+ | end | ||
+ | gates gates_tb_uut( | ||
+ | .a (a), | ||
+ | .b (b), | ||
+ | .led (led), | ||
+ | .empty () | ||
+ | ); | ||
+ | endmodule | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== 五、 实验步骤===== | ||
+ | \\ | ||
+ | |||
+ | === 1.新建工程 === | ||
+ | \\ | ||
+ | 双击{{:diamond图标.png?28|}}打开Lattice Diamond软件,点击**File—New—Project**新建工程,输入工程名称,指定工程保存目录,单击**Next**,选择设备如下:\\ | ||
* **Family**选择**MachXO2**, | * **Family**选择**MachXO2**, | ||
* **Device**选择**LCMXO2-4000HC**, | * **Device**选择**LCMXO2-4000HC**, | ||
- | * **Performance grade**选择4, | + | * **Performance grade**选择**4**, |
* **Package type**选择**CSBGA132**, | * **Package type**选择**CSBGA132**, | ||
* **Operating conditions**选择**Commercial**, | * **Operating conditions**选择**Commercial**, | ||
* **Part Names**为**LCMXO2-4000HC-4MG132C**。 | * **Part Names**为**LCMXO2-4000HC-4MG132C**。 | ||
- | * 选择综合工具**Lattice LSE**,完成。 | + | * 选择综合工具**Lattice LSE**,完成。\\ |
- | + | ||
- | ==== (2)输入Verilog文件 ==== | + | |
- | 点击**File—New—File**新建文件,类型选择**Verilog Files**,输入文件名称,选择保存路径,输入实验中的源代码后保存,编辑器会自动检查有无编辑错误,在下面的Output一栏会输出检查结果,如果有错误更正后重新保存直到没有报错为止。 | + | |
- | ==== (3)输入仿真文件 ==== | + | === 2. 输入Verilog文件 === |
- | 按照步骤2)新建一个Verilog仿真文件,输入实验例程中仿真文件的代码后保存。在软件**File List**一栏中,右键单击“仿真文件”—**Include for—Simulation**,将文件设置为仿真文件(设置完成后文件图标的V会消失)。 | + | |
- | ==== (4)功能仿真 ==== | + | \\ |
- | + | 点击**File—New—File**新建文件,类型选择**Verilog Files**,输入文件名称,选择保存路径,输入实验中的源代码后保存,编辑器会自动检查有无编辑错误,在下面的**Output**一栏会输出检查结果,如果有错误更正后重新保存直到没有报错为止。\\ | |
- | 点击Tools选择Simulation Wizard,按照仿真向导指示新建仿真工程, | + | \\ |
+ | === 3. 输入仿真文件 === | ||
+ | \\ | ||
+ | 按照步骤**(2)**新建一个**Verilog**仿真文件,输入实验例程中仿真文件的代码后保存。在软件File List一栏中,右键单击“仿真文件”**—Include for—Simulation**,将文件设置为仿真文件(设置完成后文件图标的V会消失)。\\ | ||
+ | \\ | ||
+ | === 4. 功能仿真 === | ||
+ | \\ | ||
+ | 点击**Tools**选择**Simulation Wizard**或点击图标,按照仿真向导指示新建仿真工程, | ||
* 输入工程名称,选择工程目录,选择**Simulator**为**Active-HDL**, | * 输入工程名称,选择工程目录,选择**Simulator**为**Active-HDL**, | ||
* **Process Stage**选择**RTL**, | * **Process Stage**选择**RTL**, | ||
- | * **Add and Reorder Source**:确认参与仿真的文件列表,Next | + | * **Add and Reorder Source**:确认参与仿真的文件列表,**Next** |
* **Parse HDL files for simulation**:软件会编译仿真文件,若报错需修改后重新仿真 | * **Parse HDL files for simulation**:软件会编译仿真文件,若报错需修改后重新仿真 | ||
- | * **Summary**:确认仿真工程信息,勾选**Run simulator**、**Add top-level signals to waveform display**和**Run simulation**,然后Finish | + | * **Summary**:确认仿真工程信息,勾选**Run simulator**、**Add top-level signals to waveform display和Run simulation**,然后**Finish** |
- | * 仿真软件会自动启动、运行仿真并显示仿真结果。查看仿真结果是否符合预期功能,如果不符合电路功能,则修改Verilog代码保存后,在**Active-HDL**中选择**Design—Compile All**重新编译文件,编译通过后,在**Simulation**中重新开始仿真。 | + | 仿真软件会自动启动、运行仿真并显示仿真结果。查看仿真结果是否符合预期功能,如果不符合电路功能,则修改Verilog代码保存后,在**Active-HDL**中选择**Design—Compile All** 重新编译文件,编译通过后,在**Simulation**中重新开始仿真。 |
- | + | \\ | |
- | ==== (5)综合 ==== | + | \\ |
- | 在**Lattice Diamond**软件的**Process**一栏,双击第一项**Synthesize Design**进行综合(确保仿真文件设置为**simulation**后不参与综合),综合结果会在下面的Output一栏中给出,如果有错误则修改Verilog文件后重新综合直至综合成功为止。 | + | === 5. 综合 === |
- | + | \\ | |
- | ==== (6)分配引脚 ==== | + | 在Lattice Diamond软件的**Process**一栏,双击第一项**Synthesize Design**进行综合(确保仿真文件设置为**simulation**后不参与综合),综合结果会在下面的**Output**一栏中给出,如果有错误则修改Verilog文件后重新综合直至综合成功为止。 |
- | 打开**Tools—Spreadsheet View**或是点击图标{{:分配管脚.png|}}在**Port Assignments**一栏中对输入输出信号分配引脚。 | + | \\ |
- | + | \\ | |
- | ==== (7)布局布线 ==== | + | === 6. 分配管脚 === |
- | 双击**Process**一栏的**Map Design**和**Place & Route Design**完成FPGA内部的布局布线。 | + | \\ |
- | + | 打开**Tools—Spreadsheet View**或是点击图标{{::分配管脚.png|}}在**Port Assignments**一栏中对输入输出信号分配引脚。 | |
- | ==== (8)生成配置文件 ==== | + | \\ |
+ | \\ | ||
+ | === 7. 布局布线 === | ||
+ | \\ | ||
+ | 双击**Process**一栏的**Map Design**和**Place & Route Design**完成**FPGA**内部的布局布线。 | ||
+ | \\ | ||
+ | \\ | ||
+ | === 8. 生成配置文件 === | ||
+ | \\ | ||
勾选并双击**JEDEC File**生成可下载的**jed**文件。 | 勾选并双击**JEDEC File**生成可下载的**jed**文件。 | ||
+ | \\ | ||
+ | \\ | ||
+ | === 9. 下载 === | ||
+ | \\ | ||
+ | 打开**Tools—Programmer**或单击图标,根据下图选择设备和下载文件,点击上面的绿色按钮**Program**,下载**jed**文件到FPGA,下载成功后**Status**状态显示**PASS**(下载前确保下载器驱动成功安装)。 | ||
+ | {{:下载成功.png|}} | ||
+ | 观察开发板现象。 | ||
- | ==== (9)下载 ==== | ||
- | 打开**Tools—Programmer**或单击图标,根据下图选择设备和下载文件,点击上面的绿色按钮**Program**,下载jed文件到FPGA,下载成功后**Status**状态显示PASS(下载前确保下载器驱动成功安装)。 | ||
- | {{:下载成功.png|}} | ||