20220407——组合逻辑电路 3-8线译码器

译码器:扩展控制
输入3位二进制,输出为8个二进制位
        A2 A1 A0 ,   Y0 Y1 Y2...Y8
被选中为低电位0  
片选端、使能端,控制信号,是否被激活
译码器还具有两个控制端,为G1 G2,当G1为1且G2为0时,译码器按左侧真值表输出;否则全1

设计:

  1. 行为级(高级、抽象)
  2. 数据流描述(RTL描述)
  3. 结构描述(元件例化)

- Verilog HDL代码
输入信号:3位编码输入端A、B、C
                使能输入端G1,G2
输出信号:8位编码输出端Y[7:0]
/*******声明*******
文件名称
创建日期
功能描述:输入为3位二进制码,输出为8个二进制位
硬件平台:E4CE6R22N FPGA开发板
版本号:V1.0
*******************/

module decoder38(A,B,C,G1,G2,Y);//decoder38 为工程名,顶层实体名,文件名❗一致
             inputA,B,C;//3位2进制编码输入端,按键按下为0,C为最高位
             inputG1,G2;
             output[7:0]Y;//8位编码输出端,接LED8-LED1,输出0为亮
             reg[7:0]Y;//reg只能做输出,不能接收信号,不能用于A/G
             always@(A or B or C or G1 or G2)//电平触发 组合逻辑特征
             begin
             if(G1==0)Y=8'b11111111;// 如果G1为0,则Y输出11111111
             else if(G2==1)Y=8'b11111111;  //如果G2为0,则Y输出11111111
             case({C,B,A})
              3'b000:Y[7:0]=8'b11111110;
              3'b001:Y[7:0]=8'b11111101;
              3'b010:Y[7:0]=8'b11111011;
              3'b011:Y[7:0]=8'b11110111;
              3'b100:Y[7:0]=8'b11101111;
              3'b101:Y[7:0]=8'b11011111;
              3'b110:Y[7:0]=8'b10111111;
              3'b111:Y[7:0]=8'b01111111;
              endcase
              end
endmodule


 


- 数据流描述

module decoder38(A,B,C,G1,G2,Y);
             input A,B,C;
             input G1,G2;
             output [7:0]Y;
             wire [7:0]Y; //被赋值量必须为wire型
              wire               S;//S门控信号
              assign S=G1&~G2
              assign Y=……
endmodule


①assign连续赋值语句,被赋值语句的信号数据类型必须是wire型
②位连接运算符{}很有用,注意被连接量中间用逗号隔开
③过长语句可回车分成几行,编译系统可分辨


- 例化门元件

decoder38(A,C,B,G1,G2,Y);
input A,B,C;
input G1,G2;
output[7:0]Y;

wire [7:0]Y;
wire  NC,NB,NA,NG2,S;

not        u0(NG2,G2); //反相器
not        u1(NA,A);  //反相器
not        u2(NB,B);  //反相器
not        u3(NC,C); //反相器
and       u4(S,G1,NG2);  //二输入与门
nand     u5(Y[0],NC,NB,NA,S); //四输入与非门,输出Y
nand     u6(Y[1],NC,NB,NA,S);
nand     u7(Y[2],NC,NB,NA,S);
nand     u8(Y[3],NC,NB,NA,S);
nand     u9(Y[4],C,NB,NA,S);
nand     u10(Y[5],C,NB,A,S);
nand     u11(Y[6],C,B,NA,S);
nand     u12(Y[7],C,B,A,S);

endmoule

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值