FPGA Verilog HDL 系列实例--------8-3优先编码器

Verilog HDL 之 8-3优先编码器

原理:

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

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

二、实现

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

复制代码
 1   `timescale 1 ns / 1 ps
 2 
 3 module yxbm8_3 ( A ,I ,GS ,EO ,EI );
 4 
 5 input [7:0] I ;
 6 wire [7:0] I ;
 7 input EI ;
 8 wire EI ;
 9 
10 output [2:0] A ;
11 reg [2:0] A ;
12 output GS ;
13 reg GS ;
14 output EO ;
15 reg EO ;
16 
17 always @ ( I  or EI )
18     if ( EI )
19         begin 
20             A <= 3'b111;
21             GS <= 1;
22             EO <= 1; 
23         end
24     else if ( I[7] == 0 )  
25           begin 
26             A <= 3'b000;
27             GS <= 0;
28             EO <= 1; 
29             end
30     else if ( I[6] == 0 ) 
31         begin 
32                A <= 3'b001;
33             GS <= 0;
34             EO <= 1; 
35         end
36     else if ( I[5] == 0 ) 
37         begin 
38                A <= 3'b010;
39             GS <= 0;
40             EO <= 1; 
41         end
42     else if ( I[4] == 0 ) 
43         begin 
44                A <= 3'b011;
45             GS <= 0;
46             EO <= 1; 
47         end
48       else if ( I[3] == 0 ) 
49         begin 
50              A <= 3'b100;
51             GS <= 0;
52             EO <= 1; 
53         end
54      else if ( I[2] == 0 ) 
55         begin 
56               A <= 3'b101;
57             GS <= 0;
58             EO <= 1; 
59         end
60      else if ( I[1] == 0 ) 
61         begin 
62                A <= 3'b110;
63             GS <= 0;
64             EO <= 1;   
65             end
66       else if ( I[0] == 0 ) 
67         begin 
68              A <= 3'b111;
69             GS <= 0;
70             EO <= 1; 
71         end
72         else if ( I == 8'b11111111)      
73             begin 
74               A <= 3'b111;
75             GS <= 1;
76             EO <= 0; 
77         end
78 endmodule
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值