【连载】 FPGA Verilog HDL 系列实例--------3-8译码器

【连载】 FPGA Verilog HDL 系列实例  

Verilog HDL 之 3-8译码器

一、原理:

  译码是编码的逆过程,它的功能是将特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路成为译码器。
  译码器可分为两种类型,一种是将一系列代码转换成与之一一对应得有效信号。这种译码器可以称为唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码换成一个有效信号,从而选中对应的单元。另一种是将一种代码转换成另一种代码,所以也称为代码变换器。

                  图1.1    3-8译码器真值表

二、实现

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

 1  `timescale 1 ns / 1 ps
2
3 module decoder3_8 ( G1 ,Y ,G2 ,A ,G3 );
4
5 input G1 ;
6 wire G1 ;
7 input G2 ;
8 wire G2 ;
9 input [2:0] A ;
10 wire [2:0] A ;
11 input G3 ;
12 wire G3 ;
13
14 output [7:0] Y ;
15 reg [7:0] Y ;
16 reg s;
17
18 always @ ( A ,G1, G2, G3)
19 begin
20 s <= G2 | G3 ;
21 if ( G1 == 0)
22 Y <= 8'b1111_1111;
23 else if ( s)
24 Y <= 8'b1111_1111;
25 else
26 case ( A )
27 3'b000 : Y<= 8'b1111_1110;
28 3'b001 : Y<= 8'b1111_1101;
29 3'b010 : Y<= 8'b1111_1011;
30 3'b011 : Y<= 8'b1111_0111;
31 3'b100 : Y<= 8'b1110_1111;
32 3'b101 : Y<= 8'b1101_1111;
33 3'b110 : Y<= 8'b1011_1111;
34 3'b111 : Y<= 8'b0111_1111;
35 endcase
36 end
37
38 endmodule

 

 

 

 

 

 

 

 

 

 

posted @ 2011-08-24 10:44  让linux飞一会儿  阅读(7055)  评论(0编辑  收藏  举报