原创 fpga学习日记12,Verilog基础模块之编码译码器

2013-8-27 10:20 1384 16 16 分类: FPGA/CPLD 文集: 数电,FPGA学习

说明:代码均来自于网络

本文涉及8-3线编码器  7段译码器   3-8线译码器

130多个verilog源码文件 见本文附件 

100多个VHDL实例详解

http://download.csdn.net/download/zhufuni7/4170786

 更多实例可参考 

  http://www.cnblogs.com/kongtiao/tag/Verilog%20HDL/

http://www.fpga.com.cn/hdl/verilog_example.htm

http://www.pudn.com/search_db.asp?keyword=verilog&p=&pos=20&t=

8-3线编码器实现

12 `timescale 1 ns / 1 ps
13
14 module bm8_3 ( a ,b );
15
16 input [7:0] a ;
17 wire [7:0] a ;
18
19 output [2:0] b ;
20 reg  [2:0] b;
21 always @ ( a )
22     begin
23     case ( a )
24         8'b0000_0001 : b<=3'b000;
25         8'b0000_0010 : b<=3'b001;
26         8'b0000_0100 : b<=3'b010;
27         8'b0000_1000 : b<=3'b011;
28         8'b0001_0000 : b<=3'b100;
29         8'b0010_0000 : b<=3'b101;
30         8'b0100_0000 : b<=3'b110;
31         8'b1000_0000 : b<= 3'b111;
32         default : b<= 3'b000;
33     endcase
34     end
35        
36 // -- Enter your statements here -- //
37
38 endmodule 

 

 

 

 

 

 

7段LED译码器实现

 

verilog语言: Codee#27705
module bin27seg (data_in ,EN ,data_out );

input [3:0] data_in ;

input EN ;

output [6:0] data_out ;
reg [6:0] data_out ;


always @(data_in or EN )
begin
data_out = 7'b1111111;
if (EN == 1)
case (data_in )
4'b0000: data_out = 7'b1000000; // 0
4'b0001: data_out = 7'b1111001; // 1
4'b0010: data_out = 7'b0100100; // 2
4'b0011: data_out = 7'b0110000; // 3
4'b0100: data_out = 7'b0011001; // 4
4'b0101: data_out = 7'b0010010; // 5
4'b0110: data_out = 7'b0000011; // 6
4'b0111: data_out = 7'b1111000; // 7
4'b1000: data_out = 7'b0000000; // 8
4'b1001: data_out = 7'b0011000; // 9
4'b1010: data_out = 7'b0001000; // A
4'b1011: data_out = 7'b0000011; // b
4'b1100: data_out = 7'b0100111; // c
4'b1101: data_out = 7'b0100001; // d
4'b1110: data_out = 7'b0000110; // E
4'b1111: data_out = 7'b0001110; // F
default: data_out = 7'b1111111;
endcase
end

endmodule

 

3-8线译码器

 

verilog语言: VERILOG 3-8线译码器
`timescale 10ns/1ns

module decode3_8 (data_out,data_in,enable) ;

input [2:0] data_in;

input enable;

output [7:0] data_out;

reg [7:0] data_out;



always @(data_in or enable)

begin

      if (enable==1)

             case (data_in )

             3'b000: data_out=8'b11111110;

             3'b001: data_out=8'b11111101;

             3'b010: data_out=8'b11111011;

             3'b011: data_out=8'b11110111;

             3'b100: data_out=8'b11101111;

             3'b101: data_out=8'b11011111;

             3'b110: data_out=8'b10111111;

             3'b111: data_out=8'b01111111;

             default: data_out=8'bxxxxxxxx;

             endcase

      else

             data_out=8'b11111111;

end



endmodule

 

 

 

 

 

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /2 下一条