**这是本文档旧的修订版!**

实验1.3 卡诺图变换

1.实验目的

  • 熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法 * 通过实验理解基本门电路
  • 掌握用Verilog HDL描述逻辑电路 ===== 2.实验任务 ===== 了解并掌握4变量卡诺图的化简方法

3.实验原理

卡诺图:在真值表的输出列种,每个“1”输出都代表一个相应的乘积项。所以, 如果“1”输出项多余8个,我们就得设法减少乘积项数,使得逻辑函数在器件上得以实现。“卡诺图”是种完成函数化简的非常简单实用的图形化方法,特别是对于含有2、3和4个变量的布尔函数,对于多于4个变量的布尔函数化简,卡诺图的化简方法就开始变得繁琐。 卡诺图画圈原则: 1)对相邻的值为“1”的小方块画包围圈,画若干包围圈;

  a)每个包围圈中必须含有2n个小方块(n=0,1,2,……)
  b)小方块可重复被包围,但每个包围圈中必须含有其他包围圈没有的新小方块
  c)不能漏掉任何值为1的小方块
  d)包围圈所含的小方块数目要尽可能多,包围圈数目要尽可能少
  e)画包围圈的顺序由大→小

2)将每个包围圈中的最小项合并成一项→乘积项; a)留下相同的因子,消去不同的因子 3)对各个包围圈合并成的乘积项求逻辑和;

多输入电路的真值表与对应的卡诺图如下图所示:

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 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(下载前确保下载器驱动成功安装)。 观察开发板现象。