4.Verilog HDL建模描述
程序清单gates.v
// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------
// File name : gates.v
// Module name : gates
// Author : Step
// Description : Logic gates
// Web : www.stepfpga.com
//
// --------------------------------------------------------------------
// Code Revision History :
// --------------------------------------------------------------------
// Version: |Mod. Date: |Changes Made:
// V1.0 |2015/11/11 |Initial ver
// --------------------------------------------------------------------
module gates
(
//INPUT
a ,
b ,
//OUTPUT
led ,
empty
);
//*******************
//DEFINE INPUT
//*******************
input a,b;
//*******************
//DEFINE OUTPUT
//*******************
output [7:0] empty;
output [5:0] led;
wire [5:0] z;
//Combinational logic style
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
assign led=~z; //led is low active
assign empty=8'b1111_1111; //led's defualt mode is lighted
endmodule
仿真程序清单gates_tb.v
//********************************************************
//
// 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
五、 实验步骤
1.新建工程
双击打开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或是点击图标在Port Assignments一栏中对输入输出信号分配引脚。
7. 布局布线
双击Process一栏的Map Design和Place & Route Design完成FPGA内部的布局布线。
8. 生成配置文件
勾选并双击JEDEC File生成可下载的jed文件。
9. 下载
打开Tools—Programmer或单击图标,根据下图选择设备和下载文件,点击上面的绿色按钮Program,下载jed文件到FPGA,下载成功后Status状态显示PASS(下载前确保下载器驱动成功安装)。 观察开发板现象。 |