FPGA学习(1)-mux2,2选1多路器

news2024/9/28 13:21:39

目录

1 开发板配套资料

1.1学习网址和资料网址

2.创建工程文件

2.1创建过程

2.2写程序及仿真测试

2.2.1 写程序生成电路

2.2.2仿真

2.2.3 生成执行文件并烧录

3.实验现象


买的小梅哥店铺的开发板:xc7z020clg400

看的小梅哥的视频:03C _基于ZYNQ 的FPGA设计流程——二选一多路器板级验证_哔哩哔哩_bilibili

本贴为记录从0开始学习FPGA的过程。

1 开发板配套资料

1.1学习网址和资料网址

【产品资料】【Zynq开发板】小梅哥ACZ702开发板全套资料下载 - ACZ702开发板 - 芯路恒电子技术论坛 - Powered by Discuz! (corecourse.cn)

先看数字逻辑设计与验证课程:https://www.bilibili.com/video/BV1zw41117HS/

再看嵌入式裸机设计和开发教程:  https://www.bilibili.com/video/BV1Ra411q7ww

拿到开发板先看这个文档:01_【用户手册】ACZ702型Zynq SoC FPGA开发板用户手册V2.0.19 进行相关验证与测试。

进行数字逻辑设计时,先看视频,配合02_【逻辑教程】基于HDL的FPGA逻辑设计与验证教程V3.5.2 进行学习

在拿到开发板后,按照01_【用户手册】对开发板各项功能进行了测试,发现在测试某些项时需要连接DC电源才能成功,所以在学习时尽量把DC电源接上。在测试WIFI模块时,安卓手机开热点能成功,苹果不行。

2.创建工程文件

2.1创建过程

1.Quick start—creat project-创建工程名及存放路径。勾选Create project subdirectory,其作用是工程自动创建相关路径,点next/finish。

2.选择 RTL 类型的工程,勾选 Do not specify sources at this time,不在设计创建阶段进行添加源文件。

3.选择开发板型号9(这里开发板型号选错了,是7020,导致后面出现“program_hw_devices' failed due to earlier errors.”的问题。

4. 添加源文件

 命名source的名字,与工程名一致。剩余其他地方都点ok或者finish。

2.2写程序及仿真测试

2.2.1 写程序生成电路

在mux2_1下写程序,assign类似于赋值,int a=之类的。

 点击 Open Elaborated Design,可以看到相关电路。

2.2.2仿真

添加仿真源文件

tb代表test bench文件,没有端口信号,就像一个测试平台,把那些要测试的东西放在上面。

tb处的代码如下:

`timescale 1ns / 1ps 
 //1ns:例如#20,是在仿真的时间线上延时20个ns。1ps:代表可以延时的经度,例如#20.001ns

module mux2_tb();
reg s0;                         //随时需要修改值的地方使用reg来定义
reg s1;
reg s2;
wire mux2_1out;
mux2_1 mux2_1_inst0(              
    .a(s0),                      //例化,让a端口连接至s0
    .b(s1),
    .sel(s2),
    .out(mux2_1out)
);

initial begin
    s2=0;s1=0;s0=0; //sel=s2=0,out=a=s0=0;
    #20;
    s2=0;s1=0;s0=1;//sel=s2=0,out=a=s0=1
    #20;
    s2=0;s1=1;s0=0;//sel=s2=0,out=a=s0=0
    #20;
    s2=0;s1=1;s0=1;//sel=s2=0,out=a=s0=1
    #20;
    s2=1;s1=0;s0=0;//sel=s2=1,out=b=s1=0
    #20;
    s2=1;s1=0;s0=1;//sel=s2=1,out=b=s1=0
    #20;
    s2=1;s1=1;s0=0;//sel=s2=1,out=b=s1=1
    #20;
    s2=1;s1=1;s0=1;//sel=s2=1,out=b=s1=1
    #20;
end
endmodule

“品”代表仿真顶层,要将mux2_tb放在顶层。

 点击run simulation,会出现仿真时序图。将下方的滑钮滑到最左边,点上面的放大按钮。

点击open elaborated design ,右上换成I/O Planning。

 在下方进行管脚约束,对应好相应的IO口。在资料文档的“ACZ702接EDA扩展板V3管脚定义表”文件中有对应IO口。保存并命名。

2.2.3 生成执行文件并烧录

点击Generate Bitstream  ,留两个核做其他事。

只要右上角出现了这个,就代表可以将程序烧录到板子上。然后点击打开硬件管理器。

路径需要记住,有时候需要自己去找。

 发现烧录报错,“program_hw_devices' failed due to earlier errors.”,原因是因为在之前选错了开发板型号导致的,在settings-General中更改开发板型号,然后生成了新的烧录文件,需要在路径上更换。

3.实验现象

开发板拨码开关打到下面为低电平,打到上面为高电平。

1.当SW7=sel=0时,out=led0=SW0,SW1高低电平对输出无影响。

2.SW7=sel=1,out=led0=SW2,SW1高低电平对输出无影响。

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

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

相关文章

提取出散射矩阵归一化相位的含义

散射矩阵的值是从图像中获得的,相位角是距离导致的,所以要归一化,VV/HH VV幅度/HH幅度。 VV相位-HH相位

Java-数据结构-Map与Set-(一) ٩(๑>◡<๑)۶

文本目录: ❄️一、搜索树: ☑ 1、概念: ☑ 2、操作-插入: 代码: ☑ 3、操作-查看: 代码: ☑ 4、操作-删除: 代码: ☑ 5、性能分析: ❄️二、搜索&#…

如何在Ubuntu上查看和刷新DNS缓存

DNS缓存是用于DNS查找的临时存储系统,负责将域名转换为IP地址。进行DNS查询时,系统会检查缓存中的相关信息。如果找到了,那么它会加速域名解析的过程。如果DNS缓存中的数据过时或不正确,则需刷新它以确保使用正确的信息。本文主要…

自己掏耳朵怎么弄干净?双十一必买的四大可视挖耳勺分享

我们在掏耳朵时是不是老是觉得要么掏不干净,要么太进去了弄到痛耳朵。因为耳道属于我们一个盲区,在使用棉签或者普通耳勺容易因为操作不当弄伤耳膜。可能还会照成不可逆的后果。所以自己在掏耳勺更加推荐大家使用可视挖耳勺会更加干净和安全。那么&#…

【MATLAB代码】二维环境下的RSSI定位程序,自适应锚点数量,带图像输出、坐标输出、中文注释

程序描述 MATLAB编写的RSSI定位程序,自适应锚点数量,带图像输出、坐标输出、中文注释。 功能概述: 本程序实现了在二维平面上通过接收信号强度指示(RSSI)进行定位的功能。它使用多个锚节点的信号强度测量来估计未知…

CSS链接

链接是网站的重要组成部分,几乎在每个网页上都能看到不少的链接,合理的设计链接的样式能够给网页的颜值加分。链接有四种不同的状态,分别是 link、visited、active 和 hover,可以通过以下伪类选择器来为链接的四种状态设置不同的样…

CentOS8使用chrony同步网络时间

文章目录 引言I CentOS8使用chrony网络时间同步安装chrony配置间同步服务器地址检查本机的时区设置时区chronyc命令II windows网络时间同步2.1 修改同步服务器2.2 修改同步频率引言 应用场景: 获取服务器时间进行船舶在线率统计 dtos.forEach(item -> {if(item.getDwtime(…

红绿灯倒计时读秒数字识别系统源码分享

红绿灯倒计时读秒数字识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …

数据结构——初识树和二叉树

线性结构是一对一的关系,意思就是只有唯一的前驱和唯一的后继; 非线性结构,如树形结构,它可以有多个后继,但只有一个前驱;图形结构,它可以有多个前驱,也可以有多个后继。 树的定义…

kubeadm部署k8s集群,版本1.23.6;并设置calico网络BGP模式通信,版本v3.25--未完待续

1.集群环境创建 三台虚拟机,一台master节点,两台node节点 (根据官网我们知道k8s 1.24版本之后就需要额外地安装cri-dockerd作为桥接才能使用Docker Egine。经过尝试1.24后的版本麻烦事很多,所以此处我们选择1.23.6版本) 虚拟机环境创建参考…

【LeetCode】动态规划—63. 不同路径 II(附完整Python/C++代码)

动态规划—63. 不同路径 II 前言题目描述基本思路1. 问题定义:2. 理解问题和递推关系:3. 解决方法:3.1 动态规划方法3.2 空间优化的动态规划 4. 进一步优化:5. 小总结: 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 本文将探讨“不同路径 II”这一问…

线性跟踪微分器TD详细测试(Simulink 算法框图+CODESYS ST+博途SCL完整源代码)

1、ADRC线性跟踪微分器 ADRC线性跟踪微分器(ST+SCL语言)_adrc算法在博途编程中scl语言-CSDN博客文章浏览阅读784次。本文介绍了ADRC线性跟踪微分器的算法和源代码,包括在SMART PLC和H5U平台上的实现。文章提供了ST和SCL语言的详细代码,并讨论了跟踪微分器在自动控制中的作用…

深入理解 Nuxt.js 中的 app:error 钩子

title: 深入理解 Nuxt.js 中的 app:error 钩子 date: 2024/9/27 updated: 2024/9/27 author: cmdragon excerpt: 摘要:本文深入讲解了Nuxt.js框架中的app:error钩子,介绍其在处理web应用中致命错误的重要作用、使用方法及实际应用场景。通过创建Nuxt项目、定义插件、触发…

基于nodejs+vue的水产品销售管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

Could not find com.mapbox.mapboxsdk:mapbox-android-accounts:0.7.0.解决

AndroidStudio编译APK出现如下错误: Could not find com.mapbox.mapboxsdk:mapbox-android-accounts:0.7.0. 出现上面错误原因是因为没有打开对应的仓库导致的, 手动添加如下创建地址可解决: maven { url https://maven.aliyun.com/repos…

vue项目中的node、node-sass、sass-loader之间的版本关系

这个报错,想必大部分人都会遇到,版本不适配的问题,记录下解决方案。 版本适配问题 node 与node-sass node-sass与sass-loader sass-loader 4.1.1,node-sass 4.3.0sass-loader 7.0.3,node-sass 4.7.2sass-loader 7.3.…

dify新特性:并行agent/工作流开发与变量存储

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 再谈Agent:Dify智能体实现Txet2SQLMoe模式:或将是最好的大模…

UE5: Content browser工具编写

Extend content browser 创建自定义菜单入口的步骤:create custom menu entry. steps: Load content browser module -> PathViewContextMenuExtenders -> Add in our own delegate -> Bind to our own member functions 基础概念(本文实…

C++【类和对象】(拷贝构造与运算符重载)

1. 拷贝构造 如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。 注意:拷贝构造是用一个已经实例化的对象来初始化一个新对象…