当前位置: 首页 > news >正文

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输出 Y7
00010000000
00101000000
01000100000
01100010000
10000001000
10100000100
11000000010
11100000001

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实现三八译码器

相关文章:

  • unity学习62,尝试做一个flappy bird
  • 打造个人知识库(Page Assist版)- 私人专属AI-本地化部署deepseek
  • Leetcode 49: 字母异位词分组
  • vue原理面试题
  • 浏览器注入可以实现同时进行n个浏览器注入的方案
  • JavaWeb-社区版Idea安装配置
  • Spring Boot 与 MyBatis 版本兼容性
  • 简述下Spark中的自带的standalone集群管理的任务执行流程
  • 【决策树】分类属性的选择
  • Linux端口映射
  • 图解KV Cache:解锁LLM推理效率的关键
  • NVIDIA GPU 系列简单介绍
  • Vue盲区扫雷
  • oracle decode
  • WireGuard搭建网络,供整个公司使用
  • 自动计算相机pose,pyrender渲染例子
  • QILSTE H6-C210TCG高亮翠绿光LED灯珠 发光二极管LED
  • 使用 `#pragma comment(lib, “xxx.lib“)` 简化 DLL 依赖管理
  • (十 八)趣学设计模式 之 观察者模式!
  • vscode通过ssh远程连接(linux系统)不能跳转问题
  • 五一假期上海口岸出入境客流总量预计达59.4万人,同比增约30%
  • 停电催生商机,中国品牌 “照亮” 西班牙
  • 国家医保局副局长颜清辉调任人社部副部长
  • 百年传承,再启新程,参天中国迎来2.0时代
  • 白云山一季度营收净利双降,此前称今年将挖掘盘活自身资源
  • 4月人文社科联合书单|天文学家的椅子