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

FPGA自学——二选一多路选择器

FPGA自学——二选一多路选择器

文章目录

  • FPGA自学——二选一多路选择器
  • 一、使用工具
  • 二、软件使用
    • 一)对界面的了解
    • 二)创建新工程
    • 三)创建HDL文件
    • 四)查看verilog文件
  • 三、二选一多路器功能编写
    • 一)实现图表:
    • 二)实现功能要求:
    • 三)代码实现
    • 四)分析RTL
    • 五)测试文件编写
    • 六)仿真
    • 七)波形分析

一、使用工具

vivado2018.3

二、软件使用

一)对界面的了解

在这里插入图片描述

二)创建新工程

1.点击create project,并点击next

在这里插入图片描述

2.修改文件名称+路径,以及对应的注意事项

在这里插入图片描述

3.选择RTL工程

在这里插入图片描述

4.选择芯片

在这里插入图片描述

5.核对信息,创建工程

在这里插入图片描述

三)创建HDL文件

1.新建Verilog文件

在这里插入图片描述

2.选择编写verilog代码

  • constraints : 管脚约束,物理相关信息
  • design sources : verilog代码 || 第三方提供的网表文件 ……
  • simulation sources : 创建仿真文件

在这里插入图片描述

3.创建新的.v文件

在这里插入图片描述

4.verilog文件命名

在这里插入图片描述

5.添加成功

在这里插入图片描述

6.选择引脚,跳过即可

在这里插入图片描述

四)查看verilog文件

在这里插入图片描述

三、二选一多路器功能编写

一)实现图表:

在这里插入图片描述

二)实现功能要求:

当 sel == 0 时 ,out == a

当 sel == 1 时 ,out == b

三)代码实现

在这里插入图片描述

module mux2(a       ,b       ,sel     ,out
);input   a       ;input   b       ;input   sel     ;output  out     ;//赋值语句 assignassign out = (sel == 0) ? a : b ;endmodule

四)分析RTL

在这里插入图片描述

在这里插入图片描述

五)测试文件编写

1.创建测试文件

在这里插入图片描述
在这里插入图片描述

2.测试文件的编写

`timescale 1ns / 1ns  //时间精度module mux2_tb(); //不需要端口名称reg     S0,S1,S2;wire    mux2_out;
//例化
mux2 mux2_inst1(.   a       (S0)        ,.   b       (S1)        ,.   sel     (S2)        ,.   out     (mux2_out)
);//产生激励信号
initial begin//a b selS0 = 0; S1 = 0; S2 = 0;//mux2_out =0#20 //时间间隔描述S0 = 1; S1 = 0; S2 = 0;//mux2_out =1#20S0 = 0; S1 = 1; S2 = 0;//mux2_out =0#20S0 = 0; S1 = 0; S2 = 1;//mux2_out =0#20S0 = 1; S1 = 1; S2 = 0;//mux2_out =1#20S0 = 1; S1 = 0; S2 = 1;//mux2_out =0#20S0 = 0; S1 = 1; S2 = 1;//mux2_out =1#20S0 = 1; S1 = 1; S2 = 1;//mux2_out =1endendmodule

3.设置测试文件为顶层

在这里插入图片描述

六)仿真

在这里插入图片描述

点击全局视图,
在这里插入图片描述

七)波形分析

在这里插入图片描述
最后仿真的mux2_out结果为:01001011,与期望值相同

http://www.xdnf.cn/news/15755.html

相关文章:

  • 南洋理工空中导航零样本迁移与泛化!VLFly:基于开放词汇目标理解的无人机视觉语言导航
  • 1. Spring AI概述
  • 论文略读:Are Large Language Models In-Context Graph Learners?
  • 100条常用SQL语句
  • javaweb的几大常见漏洞
  • YOLOv11改进 | DWRSeg扩张式残差助力小目标检测
  • 3.条件判断:让程序学会做选择
  • gitlab+jenkins
  • 【数据结构】栈(stack)
  • Uniapp之自定义图片预览
  • Linux --进程信号
  • 初识C++——开启新旅途
  • 【51单片机学习】LED、独立按键
  • ENSP路由综合实验 + 思科(cisco)/华为(ensp)链路聚合实验
  • C++中的vector(2)
  • 基于Python的口腔正畸健康教育聊天机器人开发与评估研究
  • PyCharm + AI 辅助编程
  • 深度学习图像分类数据集—六十种植物病害分类
  • 基于单片机宠物喂食器/智能宠物窝/智能饲养
  • Typecho博客Ajax评论功能实现全攻略
  • 车载诊断架构 --- OEM对于DTC相关参数得定义
  • FastAPI遇上GraphQL:异步解析器如何让API性能飙升?
  • 【iOS】编译和链接、动静态库及dyld的简单学习
  • 5.组合模式
  • Node.js net.Socket.destroy()深入解析
  • 4.循环结构:让电脑做重复的事情
  • 探秘边缘安全架构设计要点解析
  • Redis 如何保证高并发与高可用
  • 【计算机网络架构】树型架构简介
  • 车载传统ECU---MCU软件架构设计指南