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

FPGA学习(3)-38译码器实现

目录

1.38译码器概述

2.VIVADO步骤 

2.1创建工程,添加源文件

2.2添加仿真文件,并进行仿真

​2.3添加管脚约束

2.4生成bit文件 

2.5 烧录程序

3.实验结果 


1.38译码器概述

即三个输入A2A1A0,输出的十进制数,例如LHL(010)=2,即Y2非为低电平,其他都为高电平。等价于Y2为高电平,其他都为低电平。

2.VIVADO步骤 

2.1创建工程,添加源文件

decoder_3_8代码:

module decoder_3_8(
    A2,
    A1,
    A0,
    Y0,
    Y1,
    Y2,
    Y3,
    Y4,
    Y5,
    Y6,
    Y7
);

input A2;
input A1;
input A0;
output Y0;
output Y1;
output Y2;
output Y3;
output Y4;
output Y5;
output Y6;
output Y7;
reg Y0; reg Y1; reg Y2; reg Y3;
reg Y4; reg Y5; reg Y6; reg Y7;
always@(*)
    begin
        case({A2,A1,A0})
        3'b000:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0001;
        3'b001:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0010;
        3'b010:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0100;
        3'b011:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_1000;
        3'b100:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0001_0000;
        3'b101:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0010_0000;
        3'b110:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0100_0000;
        3'b111:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b1000_0000;
        default:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0000;
        endcase
        end  
endmodule

2.2添加仿真文件,并进行仿真

凡是always这种语句块中要修改值的信号一律用reg类型。为什么test bench不需要端口声明,因为在仿真里面已经形成了闭环,不需要输入输出。代码如下:

`timescale 1ns / 1ps

module decoder_3_8_tb( );
reg A2;reg A1;reg A0;
wire Y0; wire Y1; wire Y2; wire Y3;
wire Y4; wire Y5; wire Y6; wire Y7;
decoder_3_8 decoder_3_8_inst0(
    .A2(A2),
    .A1(A1),
    .A0(A0),
    .Y0(Y0),
    .Y1(Y1),
    .Y2(Y2),
    .Y3(Y3),
    .Y4(Y4),
    .Y5(Y5),
    .Y6(Y6),
    .Y7(Y7)
);
initial begin
    A2=0;A1=0;A0=0;
    #20;
    A2=0;A1=0;A0=1;
    #20;
    A2=0;A1=1;A0=0;
    #20;
    A2=0;A1=1;A0=1;
    #20;
    A2=1;A1=0;A0=0;
    #20;
    A2=1;A1=0;A0=1;
    #20;
    A2=1;A1=1;A0=0;
    #20;
    A2=1;A1=1;A0=1;
    #20;
    $stop;
end
endmodule

$stop的作用是停止仿真,不然会像二选1数据选择器仿真一样,后面仿真波形如下,与预期一致。

有时候这样看起很麻烦,直接将输入信号合成一个。

2.3添加管脚约束

在RTL ANALYSIS下添加I/O口。硬件上SW0~SW2,代表A0~A2,Y0~Y7代表LED0~LED1。

2.4生成bit文件 

点击 Generate Bitstream,等待右上角出现write_bitstream Complete

2.5 烧录程序

3.实验结果 

1.SW2,SW1,SW0=000,LED0灯亮,其他灯灭。

2.SW2,SW1,SW0=110=6,LED6亮,其他灯灭。


http://www.kler.cn/a/322984.html

相关文章:

  • 【Pikachu】XML外部实体注入实战
  • ThinkPHP 模型如何更新数据
  • 营销手段的变革:开源 AI 智能名片与 S2B2C 商城小程序在新趋势下的机遇与挑战
  • 类和对象——拷贝构造函数,赋值运算符重载(C++)
  • Tensorflow基本概念
  • 金山云Java 开发面试题及参考答案
  • LLM基础概念:Prompt
  • LeetCode --- 416周赛
  • Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)
  • 常用性能优化方法
  • jdk tomcat 镜像制作
  • Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全
  • Maya没有Arnold材质球
  • Docker的实践应用举例
  • C++并发编程实战
  • re轻松拆分四则运算expression(^从头匹配、(?:xxxx)非捕获组、| 交替运算符联合演习)
  • 空间计算/XR的现状:Meta Orion的优势与挑战
  • 【微服务即时通讯系统】——etcd一致性键值存储系统、etcd的介绍、etcd的安装、etcd使用和功能测试
  • 基于微信小程序的竞赛答题小程序开发笔记(一)
  • PHP静态绑定和超全局变量(superglobals)
  • 找最小数 - 华为OD统一考试(E卷)
  • php基础语法
  • 下载配置Android Studio(2024年9月)
  • MongoDB-索引的使用和索引类型
  • 如何在 Windows PC 或笔记本电脑上恢复未保存的 Word 文档
  • Chromium webui如何与c++接口通信