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