你的第一个基于Vivado的FPGA开发流程实践——二选一多路器

news2024/10/5 16:26:27

你的第一个基于Vivado的FPGA开发流程实践——二选一多路器

1 原理图

image-20221112000238201

2 开发流程

  • 首先我们先打开安装好的Vivado软件
image-20221112000439561
  • 创建一个文件
image-20221112000529464 image-20221112000621872 image-20221112000704982
  • 选择你的开发板
image-20221112000753236
  • 创建一个源文件

现在我们就可以根据原理使用Verilog代码实验这个功能了

module mux2(  //端口列表
  a,
  b,
  sel,
  out
      );
    //交代端口类型
    input a;
    input b;
    input sel;
    output out;
    
    //赋值
    assign out = (sel==1)?a:b;
    
endmodule
  • 运行综合(Run Synthesis)
image-20221112001418652
  • 然后我们可以观察一下综合运行完生成的report

image-20221112001515376

这里可以看出没什么问题,没有报错

  • 仿真的意义

首先我们需要用一张图说明仿真测试的原理/意义

image-20221112002355705

现在开始编写仿真代码,我们首先要知道的是

a、b、sel 共有8组取值,分别是

absel
000
001
010
011
100
101
110
111
  • 创建仿真文件

image-20221112002712975

  • 仿真代码
`timescale 1ns / 1ps

module mux2_tb(
    //仿真中括号里不用写端口
 );  
    //定义仿真文件中的变量
         //输入
         reg a;
         reg b;
         reg sel;
         //输出
         wire out;
    mux2 UUT(   //相当于把源文件的变量映射(例化)到仿真文件,mux2是源文件的名字,必须一致
        .a(a),     //源文件的a 对应到 仿真文件 是 a
        .b(b),
        .sel(sel),
        .out(out)
    );
    
    initial begin 
       a=0;b=0;sel=0;
       #200; //延迟200ns
       
       a=0;b=0;sel=1;
       #200; //延迟200ns
       
       a=0;b=1;sel=0;
       #200; //延迟200ns
       
       a=0;b=1;sel=1;
       #200; //延迟200ns
       
       a=1;b=0;sel=0;
       #200; //延迟200ns
       
       a=1;b=0;sel=1;
       #200; //延迟200ns
       
       a=1;b=1;sel=0;
       #200; //延迟200ns              
       
       a=1;b=1;sel=1;
       #200; //延迟200ns
       
    end
endmodule
  • 功能仿真
image-20221112004231892

image-20221112004725902

我们可以根据左边的这些值 判断功能是否能达成

  • 布局布线/运行实现(Run Implementation)
image-20221112005144533
  • 时序仿真——要在布局布线之后
image-20221112005303494

image-20221112005533656

通过时序仿真我们可以看到 out的变化滞后于信号的变化,这说明out的变化是有一定延迟的,这是合理的

image-20221112005731525

我们还能看到毛刺,原理是(a、b、sel都在变,只要某一次变化中,其中一个的变化优先于另外两个,就会有毛刺)

  • 分配管脚

首先open设计

image-20221112010023972

然后分配

image-20221112010055532

选择合适的管脚(要看板子)

image-20221112010245964

然后ctrl+s 保存管脚约束文件

image-20221112010415778

就生成了这样的约束文件

  • 创建bit流文件

image-20221112010709824

  • 下载文件到板子

首先连接板子到电脑

image-20221112010818725

然后refresh device 再 program device

image-20221112010914041

  • 检验

image-20221112011333916
图中展示的为 sel = 1 ,a = 1的情况 (out = a = 1 灯亮)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ第二个实操小案例——WorkQueue

文章目录RabbitMQ第二个实操小案例——WorkQueueRabbitMQ第二个实操小案例——WorkQueue 讲第二个案例之前,我们先看下前面第一个案例的模型: 可以看到,我们只有一个发布者和一个消费者,通过Queue队列,实现最简单的消…

02 【nodejs开发环境安装】

02 【nodejs开发环境安装】 1.版本介绍 在命令窗口中输入 node -v 可以查看版本0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特…

e智团队实验室项目-第三周-经典的卷积神经网络的学习

e智团队实验室项目-第三周-卷积神经网络的学习 赵雅玲 *, 张钊* , 李锦玉,迟梦瑶,贾小云,赵尉,潘玉,刘立赛,祝大双,李月,曹海艳, (淮北师范大学计算机科学与技术学院&am…

【树莓派不吃灰】基础篇⑱ 从0到1搭建docker环境,顺便安装一下emqx MQTT Broker、HomeAssistant、portainer

目录1. 前言2. 搭建docker环境3. docker简介3.1 docker解决什么问题?3.2 docker VS vm虚拟机3.2.1 vm虚拟机3.2.2 docker3.3 docker如何解决问题?3.4 docker运行架构3.4.1 镜像 : image3.4.2 容器 : container3.4.3 仓库 : repository3.5 国内镜像加速3.…

python easygui怎么修改默认按钮名字

1.执行以下代码找到easygui安装位置 import easyguiprint(easygui.__file__)2.打开上述路径下boxes文件夹下需要修改的组件 如此时想要修改选项栏的默认按钮名字 则打开choice_box.py文件 执行如下图 可以看到有Cancel、SelectALL、ClearALL、OK四个默认按钮,可否…

Linux下动静态库的制作与使用

学习导航一、关于动静态库的基本认识二、设计库的工程师角度(1)制作静态库(2)制作动态库二、使用库的用户角度(1)使用静态库(2)使用动态库三、理解的角度一、关于动静态库的基本认识 1.静态库 静态库以 .a 作为文件后缀程序在编译链接的时候,将静态库的代码拷贝到…

[TCP/IP] Linux 搭建服务器局域网

文章目录[TCP/IP] Linux 搭建服务器局域网1. 使用python内置库http.server2. 使用Http-Server[TCP/IP] Linux 搭建服务器局域网 1. 使用python内置库http.server python3: http.server 命令行启动: # python 3 python -m http.server 8000 # python 2 python -m S…

ZYNQ_FPGA_SPI通信协议多种实现方式

文章目录PLPSSPIGPIOAXI-GPIOAXI-Quad-SPI(待测试)本文记录一下在使用AD9363中的SPI通信问题,同时针对在ZYNQ系列开发板上实现SPI的方法做一个总结。ZYNQ系列包含了PL端和PS端,因为本科阶段有一定的ARM的开发经验,便想…

2022年,软件测试已经不吃香了吗?

最近因为疫情等各种原因,大厂裁员,失业等等频频受到关注。 不解释,确实存在,各行各业都很难,但是,说软件测试行业不吃香,我还真不认同(不是为培训机构说好话,大环境不好…

JVM从入门到入魔,这份JVM必知必会的完整版带你彻底玩懂JVM

市面上各类 JVM 相关的资料虽多如牛毛,但是明显都很难让大家系统性地学明白,同时一线大厂技术面试现在 JVM 知识也是必考科目。 在大厂摸爬滚打 10 多年的 Java 高级技术专家全面梳理了系统化学习 JVM 的知识和经验,从入门到入魔&#xff0c…

位运算常用技巧以及练习

几个有趣的操作 利用或操作|和空格将英文字符转换成小写 // 可以变成小写i : a | fmt.Printf("%c\n", i)j : A | fmt.Printf("%c\n", j)利用与操作&和下划线把英文字符转换成大写 // 可以变成大写m : b & _n : B & _fmt.Printf("%c\n…

大数据ClickHouse进阶(二十七):ClickHouse服务监控

文章目录 ClickHouse服务监控 一、系统表 1、metrics 2、events 3、asynchronous_metrics

【爬虫系列】Python 爬虫入门(2)

接上篇,继续梳理 Python 爬虫入门的知识点。这里将重点说明,如何识别网站反爬虫机制及应对策略,使用 Selenium 模拟浏览器操作等内容,干货满满,一起学习和成长吧。 1、识别反爬虫机制及应对策略 1.1 测试网站是否开启…

项目中如何配置 Maven 为国内源

目录 1. 创建出一个 Maven 项目 2. 打开项目配置界面, 检查并配置国内源 2.1 打开配置界面 (当前项目界面和新项目配置界面) 2.2 搜索 "Maven" 2.3 设置 setting.xml (给此 xml 中添加国内源) 2.4 把上面的步骤 (2.1~2.3) 在新项目的配置界面中重新配置一遍. …

【MySQL】MySQL事务隔离机制与实现原理详解(MySQL专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

加权黑猩猩优化算法(WChOA)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

Java实现五子棋(附源码)

文章目录一、游戏介绍二、效果展示三、代码展示1、登录页面2、算法程序3、棋盘实现四、资源下载五、文末总结一、游戏介绍 今天给大家分享一个用java写的小游戏——《五子棋》 (完整代码可在【资源下载】目录查看) 。五子棋是一种两人对弈的纯策略型棋类…

中缀表达式转后缀表达式

1 后缀表达式 一种不需要括号的表达式方法,也把它称为 逆波兰表达式,是波兰逻辑学家卢卡西维奇(Lukasiewicz)发明的一种表示表达式的方法。 2 中缀表达式 中缀表达式也就是我们常见的表达式书写方法,比如“8(2-1)352”就是一个中…

HTML期末大作业——游戏介绍(HTML+CSS+JavaScript) web前端开发技术 web课程设计网页规划与设计 Web大学生网页成品

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

前端爱心代码跟个风

光棍节new一个对象发给Ta <!DOCTYPE html> <html><head><title></title> </head> <style>* {padding: 0;margin: 0;}html,body {height: 100%;padding: 0;margin: 0;background: rgb(2, 2, 2);}canvas {position: absolute;width: …