差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
实验1-3_卡诺图变换 [2017/02/24 16:49]
zhijun
实验1-3_卡诺图变换 [2017/02/24 16:54] (当前版本)
zhijun
行 30: 行 30:
 多输入电路的真值表与对应的卡诺图如下图所示: 多输入电路的真值表与对应的卡诺图如下图所示:
  
-{{::​卡诺图真值表.png|}}+{{ ::​卡诺图真值表.png |}}
  
 ===== 4.Verilog HDL建模描述 ===== ===== 4.Verilog HDL建模描述 =====
  
-==== 程序清单gates.v ====+LED默认状态为点亮,若其他LED不加控制,则会常亮,影响显示状态。以下代码目的为改变其默认参数,使之常灭:
  
-<code verilog>​ +    assign empty=8'​b1111_1111; ​
-// -------------------------------------------------------------------- +
-// >>>>>>>>>>>>>>>>>>>>>>>>>​ 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  +
- +
-</​code> ​   +
- +
-==== 仿真程序清单gates_tb.v ==== +
- +
- +
-<code verilog>​ +
-//​******************************************************** +
-// +
-//   ​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> ​  +
  
 +由于LED为低电平触发,若直接将z连接在LED管脚上,LED亮将代表输入为低电平,LED灭代表输入为高电平。所以有如下代码,使之更符合我们的思维习惯:
  
 +    assign led=~z;
 +本实验代码编写比较简单,只需一个f的组合逻辑即可,重点在卡诺图简化:
  
 +    assign f=b&​c&​d|a&​c&​d|a&​b&​d|a&​b&​c;​
 +由上述逻辑表达式构成的原理图,如下图所示:
 +{{ ::​卡诺图原理图.png |}}
  
 ===== 五、 实验步骤===== ===== 五、 实验步骤=====