首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA Verilog HDL 设计实例系列连载------8-3优先编码器

FPGA Verilog HDL 设计实例系列连载------8-3优先编码器

Verilog HDL 之 8-3优先编码器

原理:

  在数字系统中,常常会有几个部件同时发出服务请求的可能,而在同一时刻只能给其中一个部件发出允许操作信号。因此,必须根据轻重缓急,规定好这些控制对象允许操作的先后次序,即优先级别。

  编码器有8个输入端,3个输出端。还有一个输入使能EI,输出使能EO和优先编码器工作状态标志GS。编码器以低为有效。当EI=0 时,编码器工作;输出全为高。输入优先级别的次序为7,6,5,…,0。当某一输入端有低电平输入,且比它优先级高的输入没有低电平输入时,输出端才输出相应输入端的代码。

二、实现

在设计文件中输入Verilog代码。

  • `timescale 1 ns / 1 ps
  • module yxbm8_3 ( A ,I ,GS ,EO ,EI );
  • input [7:0] I ;
  • wire [7:0] I ;
  • input EI ;
  • wire EI ;
  • output [2:0] A ;
  • reg [2:0] A ;
  • output GS ;
  • reg GS ;
  • output EO ;
  • reg EO ;
  • always @ ( I  or EI )
  •      if ( EI )
  •          begin
  •              A <= 3'b111;
  •              GS <= 1;
  •              EO <= 1;
  •          end
  •      else if ( I[7] == 0 )
  •            begin
  •              A <= 3'b000;
  •              GS <= 0;
  •              EO <= 1;
  •              end
  •      else if ( I[6] == 0 )
  •          begin
  •                 A <= 3'b001;
  •              GS <= 0;
  •              EO <= 1;
  •          end
  •      else if ( I[5] == 0 )
  •          begin
  •                 A <= 3'b010;
  •              GS <= 0;
  •              EO <= 1;
  •          end
  •      else if ( I[4] == 0 )
  •          begin
  •                 A <= 3'b011;
  •              GS <= 0;
  •              EO <= 1;
  •          end
  •        else if ( I[3] == 0 )
  •          begin
  •               A <= 3'b100;
  •              GS <= 0;
  •              EO <= 1;
  •          end
  •       else if ( I[2] == 0 )
  •          begin
  •                A <= 3'b101;
  •              GS <= 0;
  •              EO <= 1;
  •          end
  •       else if ( I[1] == 0 )
  •          begin
  •                 A <= 3'b110;
  •              GS <= 0;
  •              EO <= 1;
  •              end
  •        else if ( I[0] == 0 )
  •          begin
  •               A <= 3'b111;
  •              GS <= 0;
  •              EO <= 1;
  •          end
  •          else if ( I == 8'b11111111)
  •              begin
  •                A <= 3'b111;
  •              GS <= 1;
  •              EO <= 0;
  •          end
  • endmodule

复制代码
继承事业,薪火相传
返回列表