主页 > 游戏开发  > 

FPGA学习(二)——三八译码器

FPGA学习(二)——三八译码器
FPGA学习(二)—— 三八译码器

文章目录 FPGA学习(二)—— 三八译码器一、三八译码器原理1、三八译码器的真值表2、逻辑表达式3、Verilog代码实现4、RTL原理图5、波形仿真 二、点亮数码管1、数码管的介绍2、代码实现3、引脚配置4、测试结果

一、三八译码器原理 1、三八译码器的真值表 输入 A输入 B输入 C输出 Y0输出 Y1输出 Y2输出 Y3输出 Y4输出 Y5输出 Y6输出 Y70001000000000101000000010001000000110001000010000001000101000001001100000001011100000001 2、逻辑表达式

3、Verilog代码实现 module _38yima(a, b, c, out); input a; // 输入端口a input b; // 输入端口b input c; // 输入端口c output [7:0] out; // 输出端口out,8位宽 reg [7:0] out; // 声明out为寄存器类型 // 或者可以直接写成:output reg [7:0] out; // always块:当a、b或c发生变化时触发 always @(a, b, c) begin // case语句:根据{a, b, c}的组合值选择输出 case ({a, b, c}) 3'b000: out = 8'b0000_0001; // 当{a, b, c}为000时,out输出0000_0001 3'b001: out = 8'b0000_0010; // 当{a, b, c}为001时,out输出0000_0010 3'b010: out = 8'b0000_0100; // 当{a, b, c}为010时,out输出0000_0100 3'b011: out = 8'b0000_1000; // 当{a, b, c}为011时,out输出0000_1000 3'b100: out = 8'b0001_0000; // 当{a, b, c}为100时,out输出0001_0000 3'b101: out = 8'b0010_0000; // 当{a, b, c}为101时,out输出0010_0000 3'b110: out = 8'b0100_0000; // 当{a, b, c}为110时,out输出0100_0000 3'b111: out = 8'b1000_0000; // 当{a, b, c}为111时,out输出1000_0000 endcase end endmodule 4、RTL原理图

5、波形仿真

二、点亮数码管 1、数码管的介绍

2、代码实现 /*实现38译码器 module _38yima(a, b, c, out); input a; // 输入端口a input b; // 输入端口b input c; // 输入端口c output [7:0] out; // 输出端口out,8位宽 reg [7:0] out; // 声明out为寄存器类型 // 或者可以直接写成:output reg [7:0] out; // always块:当a、b或c发生变化时触发 always @(a, b, c) begin // case语句:根据{a, b, c}的组合值选择输出 case ({a, b, c}) 3'b000: out = 8'b0000_0001; // 当{a, b, c}为000时,out输出0000_0001 3'b001: out = 8'b0000_0010; // 当{a, b, c}为001时,out输出0000_0010 3'b010: out = 8'b0000_0100; // 当{a, b, c}为010时,out输出0000_0100 3'b011: out = 8'b0000_1000; // 当{a, b, c}为011时,out输出0000_1000 3'b100: out = 8'b0001_0000; // 当{a, b, c}为100时,out输出0001_0000 3'b101: out = 8'b0010_0000; // 当{a, b, c}为101时,out输出0010_0000 3'b110: out = 8'b0100_0000; // 当{a, b, c}为110时,out输出0100_0000 3'b111: out = 8'b1000_0000; // 当{a, b, c}为111时,out输出1000_0000 endcase end endmodule */ //利用38译码器点亮8段数码管 module _38yima( input wire [2:0] sw, // 3位输入开关,用于选择数码管显示的数字 output reg [6:0] seg // 8位输出,连接到数码管的段选信号(a-g + dp) ); // 数码管段选信号定义(共阳极) // seg[6:0] 分别对应数码管的 g, f, e, d, c, b, a // 共阳极数码管:0 点亮,1 熄灭 always @(sw) begin case (sw) 3'b000: seg = 8'b1100_0000; // 显示数字 0 3'b001: seg = 8'b1111_1001; // 显示数字 1 3'b010: seg = 8'b1010_0100; // 显示数字 2 3'b011: seg = 8'b1011_0000; // 显示数字 3 3'b100: seg = 8'b1001_1001; // 显示数字 4 3'b101: seg = 8'b1001_0010; // 显示数字 5 3'b110: seg = 8'b1000_0010; // 显示数字 6 default: seg = 8'b1111_1111; // 默认全灭 endcase end endmodule 3、引脚配置

4、测试结果

FPGA实现三八译码器

标签:

FPGA学习(二)——三八译码器由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“FPGA学习(二)——三八译码器