数字逻辑——4-16译码器和8-3优先编码器

实验目的

通过两个实验:理解由小逻辑单元组合成更大逻辑单元的概念,掌握模块例化的语法,了解使能信号的运用;熟悉8-3优先编码器的工作原理,并与3-8译码器进行比较联系。

(一)4-16译码器实现思路

使用两片3-8 DECODER和任意逻辑门实现一个4-16译码器(增加一个使能信号)
74138(3-8译码器)Function Tables:
在这里插入图片描述

(二)8-3优先编码器实现思路

声明输出信号V为有效,当数据输入I0+I1+I2+I3+I4+I5+I6+I7=1 时,V=1

实验内容

(一) 4-16译码器

1.实验流程:

(1)分析实验目的,使用两片3-8 DECODER,在top design中需要调用3-8译码器模块两次,两次调用的输出分别为4-16译码器输出的高八位和低八位。
(2)两次调用的输出是否有效通过G1,G2A,G2B(74138的使能信号)决定,其中G1即4-16译码器四位输入信号的一位,本次实验取最高位为G1,低三位为调用3-8译码器时的输入信号。G2A与G2B可通过拨号开关输入(本次实验采用该方式),也可直接赋值为低电平(赋值为0)。
(3)分析整理好思路后画出真值表,根据真值表进行后续编程操作。
(4)用verilog语言在vivado环境下编写源文件,基于3-8译码器实现4-16译码器。
(5)综合、实现、生成bitstream文件后,将bit文件下载到NEXYS4 DDR开发板上测试功能(六个指定的拨动开关代表输入,上拨值为1,下拨值为0;16个指定的led灯代表输出,灯亮代表H高电平1,不亮代表L低电平0。)

2.Verilog代码分析:

(1)Design source(.v文件):
① top.v:
module top416(
    input [3:0]D,
    input EN1,//G2A
    input EN2,//G2B
    output [15:0]U//16输出

    );
    wire S3;
    wire[2:0]M;
    wire[7:0]YL,YH;
    assign S3=D[3];
    assign M=D[2:0];
    ThrEightymq  m381(S3,EN1,EN2,M,YL);
    ThrEightymq  m382(~S3,EN1,EN2,M,YH);
    assign U[7:0]=YL;
    assign U[15:8]=YH;
endmodule
②3-8.v:
module ThrEightymq(
    input G1,
    input G2A,
    input G2B,   //Enable
    input [2:0]S, //input
    output reg [7:0]Y  //output
    );
    wire G2;
    assign G2=G2A|G2B;
    always@(*)
    begin
    case({G1,G2})
      2'b10:
         begin
           case(S)
           3'b000 : Y = 8'b11111110;
           3'b001 : Y = 8'b11111101;
           3'b010 : Y = 8'b11111011;
           3'b011 : Y = 8'b11110111;
           3'b100 : Y = 8'b11101111;
           3'b101 : Y = 8'b11011111;
           3'b110 : Y = 8'b10111111;
           3'b111 : Y = 8'b01111111;
           default: Y = 8'b00000000;
           endcase
          end
      default: Y=8'b11111111;  
     endcase  
     end
endmodule

.v分析:

Ⅰtop.v文件:
①input一个四位向量D作为4-16译码器的输入信号,其中最高位在调用74138(3-8)译码器时映射到G1,低三位映射到3-8译码器的输入信号。另外input两个使能信号EN1,EN2,在调用3-8译码器模块时分别映射到G2A和G2B。
②output一个十六位向量U作为4-16译码器的输出信号,1代表高电平,0代表低电平,分别

  • 5
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

adriaW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值