FPGA入门学习3——编码器——适合新手小白

编码器的使用

数电时候学过优先编码器的功能表
在这里插入图片描述

全体代码如下:

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/04/11 22:38:57
// Design Name: 
// Module Name: Encoder83a
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module Encoder83a(
input   En,
input   [7:0]   I,
output  [2:0]   Y,
output  reg GS
    );
    reg [2:0]   out_coding;//中间信号,中间用reg值进行计算,再复制给Y输出
    assign  Y   =   out_coding;
   //进行8-3译码器编译环节
   always@(I    or En)  begin
    if(En   ==  0)  begin
        out_coding   <=  3'b000;
        GS  <=  1'b0;//表明译码器不工作
     end
     else   begin
     GS <=  1;
     casez(I)
       8'b1???????  :  out_coding   =   3'd7;
       8'b01??????  :  out_coding   =   3'd6;
       8'b001?????  :  out_coding   =   3'd5;
       8'b0001????  :  out_coding   =   3'd4;
       8'b00001???  :  out_coding   =   3'd3;
       8'b000001??  :  out_coding   =   3'd2;
       8'b0000001?  :  out_coding   =   3'd1;
       8'b00000001  :  out_coding   =   3'd0;
       8'b00000000  : begin out_coding   =   3'd0;GS<=0 ;end
       
       
        
     endcase
    end   
   end
    
    
    
endmodule

这里涉及到一个知识点:case函数的使用,以及case函数的变形。casex以及casez将z位当成无关项,也可以用?表示。casex则标是所有z和x都是无关项。

测试激励文件的代码如下:

`timescale 1ns / 1ps
/////////////////////////////////////////////////////////////////////////


module test_Encoder83(

    );
 reg   [7:0]    I;
 reg    En;
 wire   GS;
 wire  [2:0] Y;
    Encoder83a  myencoer1(

    .En(En),
    .I(I),
        .GS(GS),
        .Y(Y)
    );
initial begin
#100 En  =   0;I =   8'b11111111;
#100 En  =   1;I =   8'b11111111;
#100 En  =   1;I =   8'b10000000;
#100 En  =   1;I =   8'b00010000;
#100 En  =   1;I =   8'b00001000;
#100 En  =   1;I =   8'b00001100;
#100 En  =   1;I =   8'b00000001;
end
endmodule

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值