FPGA实践 ——Verilog基本实验步骤演示


0x00 回顾:AND/OR/NOT 逻辑的特性

AND:与门可以具有两个或更多的输入,并返回一个输出。当所有输入值都为 1 时,输出值为 1。如果输入值中有任何一个为 0,则输出值为 0。

OR:或门可以具有两个或更多的输入,并返回一个输出。如果输入值中至少有一个为 1,则输出值为 1。如果所有输入值都为 0,则输出值为 0。

NOT:非门具有一个输入和一个输出。当输入值为 1 时,输出值为 0;当输入值为0时,输出值为1。

晶体管级逻辑门 AND/OR/NOT 的结构:

0x01 扇出的概念(Fan-out)

扇出 (fan-out) 是一个定义单个逻辑门能够驱动的数字信号输入最大量的专业术语。

扇出即输出可从输出设备输入信号的电路的数量。它的英文含义是“分散”。扇出的大小表示一个输出被多个其他逻辑门的输入使用。如果删除太大,电路可能会受损或信号无法正确传递,因此需要解决这个问题。可以通过将一个信号分割为两个部分进行处理或创建缓冲区等方法来减小扇出的影响。

0x02 传播延迟(Propagation Delay)

传播延迟 (Propagation Delay) 是指逻辑电路从接收输入信号到产生输出结果所需的平均时间。它受逻辑门的数量及其延迟时间的影响,表示如下:

T_{PD}=(T_{PHL}+T_{PLH})\cdot \frac{1}{2}

其中,T_{PD}Propagation Delay)是传播延迟时间,T_{PHL}(Propagation delay time from High to Low)是输出响应输入信号从逻辑 1 变为逻辑 0 所需的时间,T_{PLH}(Propagation delay time from Low to High)是输出响应输入信号从逻辑 0 变为逻辑 1 所需的时间。

延迟时间随着通过门数的增加而增加,因此在设计逻辑电路时必须牢记这一点,以提高效率。

0x03 Verilog 中的 task 和 function

Verilog 中的任务 (task) 和函数 (function) 是用来减少代码重复的关键字,就像 C 语言中的函数一样。换句话说,在具有大量相同行为的项目中,任务和函数可以用来简化代码。任务和函数都可以有局部变量、全局变量、寄存器、时间变量、整数、实数等,但不能有导线。 它们也只包含行为语法,没有始终和初始语法。具体区别如下:

① task:

  • 可以使用 task 和 endtask 将开始和结束包围起来进行声明。
  • 可以包含延迟、时序和事件控制语句。
  • 可以有一个或多个输入、输出、input 等参数,也可以没有任何参数。
  • 内部可以同时调用任务(task)和函数(function)。
  • 如果不使用时间延迟功能,可以进行综合。
  • 可以在非零仿真时间下执行。
  • 可以通过命令语句调用,但不能在表达式内部使用。

② function:

  • 可以使用 "function" 和 "endfunction" 将开始和结束包围起来进行声明。
  • 不能包含延迟、时序和事件控制语句。
  • 至少有一个以上的输入,并且只有一个返回值。
  • 内部只能调用函数(function)。
  • 可以进行综合,并用于组合电路建模。
  • 总是在仿真时间为 0 时执行。

0x04 FPGA 的工作原理

描述FPGA的工作原理:使用Vivado和Verilog语言验证FPGA工作时,可以使用以下程序。

Verilog 编码(Verilog Coding)

在 Vivado 中编写 Verilog 设计源代码和测试平台代码来控制门的行为。在这种情况下,变量值中的 0 或 1 可以作为 FPGA 中的 "开关 "来实现。(开关打开 = 1,开关关闭 = 0,等等)。

设备分配(Device assignment)

要操作FPGA,需要为项目分配相应的器件。在 Vivado 中,这可以在 Project Manager > Settings > Project device 菜单中完成,设备应为 xc7a75tfgg484-1 (Artix7)。Artix-7 FPGA 是 FPGA 器件,可为逻辑、信号处理、嵌入式存储器、LVDS I/O、存储器接口和收发器提供优化的性能。

引脚分配(Pin assignment)

引脚只是 Verilog 代码中的输入和输出变量。您可以通过 Vivado 的 Project Manager > Add Sources > Add或create constraints > Create File 创建一个 .xdc 文件,并从 FPGA 引脚列表和Verilog 源的端口链接您要分配的引脚。举个例子:

set_property -dict {PACKAGE_PIN G21 IOSTANDARD LVCMOS33} [get_ports a] [get_ports a] [get_ports a] [get_ports a [get_ports a]

综合/实现(Synthesis/Implement)

在 Vivado 中,可以通过 Synthesis > Run Synthesis、Implementation > Run Implemented > Open Implemented Design 创建综合设计和布线设计。

器件配置(Device Configuration)

设备配置可以通过 Vivado 中的“编程和调试”>“生成比特流”>“打开硬件管理器”来完成。

FPGA 行为

在 Vivado 中,单击 Program and debug > Open Hardware Manager > Open Target > Auto Connect,然后在 Project[title] > Project[title]_runs > impl_1 文件夹中添加 debug_nets.ltx 文件。
Program and debug > Program Device > Debug probes file > Select the debug_nets.ltx file added above and specify the Program device(xc7a75t_0) to connect to the external FPGA device。

0x05 具体操作过程

Device assignment:

Device assignment → Device : xc7a75tfgg484

Pin assignment

链接你希望在 FPGA pin list 中分配的 Pin 和 Verilog 源端口:

set_property -dict {PACKAGE_PIN G21 IOSTANDARD LVCMOS33} [get_ports a]
set_property -dict {PACKAGE_PIN F15 IOSTANDARD LVCMOS33} [get_ports y]

 

 

Synthesis / Implementation:

Device configuration:

我的板子比较老,是 FPGA Starter Kit Ⅲ:

初始化状态如下所示:

Open Target →  点击 auto connect,自动连接:

选择 Program Device:

🚩 输出结果演示:

📌 [ 笔者 ]   王亦优
📃 [ 更新 ]   2022.9.20
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

Introduction to Logic and Computer Design, Alan Marcovitz, McGrawHill, 2008

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湘大 XTU OJ 1290 Alice and Bob 题解(非常详细):字符串 分类讨论 简单模拟

一、链接 1290 Alice and Bob 二、题目 题目描述 Alice和Bob玩剪刀-石头-布的游戏,请你写个程序判断一下比赛的结果。 输入 第一行是一个整数K,表示样例的个数。 以后每行两个单词,rock表示石头,paper表示布,scis…

山东布谷科技直播程序源码使用Redis进行服务器横向扩展

当今,直播程序源码平台作为新媒体时代主流,受到了世界各地人民的喜爱,这也使得直播程序源码平台用户数量的庞大,也难免会出现大量用户同时访问服务器,使服务器过载的情况,当服务器承受不住的时候&#xff0…

Win11中使用pip或者Cython报错 —— error: Microsoft Visual C++ 14.0 is required.

第一步:下载Visual Studio 2019 下载地址: https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 第二步:安装组件 选择单个组件,勾选以下两个组件 其他错误: 无法打开文件“python37.li…

VMware虚拟机NAT模式Ubuntu无法上网解决方案

发现只要NAT模式,ping地址时就报网络不可达,且右上方网络图标消失,但是外部USB网络设备又只能在NAT模式下使用。。。 博主的解决方案如下: 按WinR键入services.msc, 找到VMware DHCP Service、VMware NAT Service和V…

Unity数字可视化学校_昼夜(三)

1、删除不需要的 UI using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class EnvControl : MonoBehaviour {//UIprivate Button btnTime;private Text txtTime; //材质public List<Material> matListnew Li…

Mybatis-plus动态条件查询QueryWrapper的使用

Mybatis-plus动态条件查询QueryWrapper的使用 一&#xff1a;queryWrapper介绍 queryWrapper是mybatis plus中实现查询的对象封装操作类&#xff0c;可以封装sql对象&#xff0c;包括where条件&#xff0c;order by排序&#xff0c;select哪些字段等等&#xff0c;他的层级关…

华为运动健康,十年创新天地宽

我听一位朋友讲过这样一个故事。某天早上&#xff0c;急诊科的医生迎来了一位患者&#xff0c;患者进来后直接说&#xff1a;“大夫&#xff0c;我房颤了。” 这位医生非常诧异&#xff0c;因为心脏房颤确实非常危急&#xff0c;但很多时候并没有明显的生理体征&#xff0c;患者…

【C++】开源:abseil-cpp基础组件库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍abseil-cpp基础组件库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#…

Confluence(wiki)搭建遇到创建的文档乱码问题的解决

在公司使用这个知识管理协同的工具的时候&#xff0c;感觉用起来还不错&#xff0c;自己就想着搭建一套玩玩&#xff1b; 用的是docker搭建&#xff0c;具体就是搞docker compose文件管理起来&#xff0c; 但是当我搭建完毕之后创建学习目录的时候发现全是&#xff1f;&#x…

Spring Boot配置文件中的配置项加密jasypt使用

在Spring Boot中&#xff0c;有很多口令需要加密&#xff0c;如数据库连接密码、访问第三方接口的Token等。常见的方法就是用jasypt对口令进行加密。 实际上&#xff0c;jasypt可以对配置文件中任意配置项的值进行加密&#xff0c;不局限于对密码的加密。 1.在pom.xml中添加ja…

什么是P2P?

P2P (Peer-to-Peer) 是一种分布式的网络架构&#xff0c;其中各个节点&#xff08;通常被称为“peers”或“节点”&#xff09;直接进行数据共享和交换&#xff0c;而无需依赖中央服务器。P2P 网络强调平等的参与和共享&#xff0c;每个节点既可以是数据的消费者&#xff08;下…

8月9日上课内容 nginx反向代理与负载均衡

负载均衡工作当中用的很多的&#xff0c;也是面试会问的很重要的一个点 负载均衡&#xff1a;通过反向代理来实现&#xff08;nginx只有反向代理才能做负载均衡&#xff09; 正向代理的配置方法&#xff08;用的较少&#xff09; 反向代理的方式&#xff1a;四层代理与七层代…

51单片机学习--红外遥控(外部中断)

需要利用下面这个红外接收头&#xff0c;OUT口会发出红外信号对应的高低电平&#xff0c;由于发送的速度很快&#xff0c;所以需要把OUT引脚接在外部中断引脚上&#xff0c;当OUT一旦产生下降沿&#xff0c;马上进中断&#xff0c;这样响应会更及时。 外部中断引脚位于P3_2和P…

实例 -- Loadrunner实现Android / IOS 手机APP压力测试

随着手机APP用户量的增大&#xff0c;大的手机APP一般都需要进行压力测试&#xff0c;这几天用了Loadrunner 12进行了手机APP的压力测试&#xff0c;整理了下&#xff0c;大家可以参考参考怎样给Andorid / IOS手机APP进行压力测试&#xff0c;以下是操作实例。 先前我的一个帖…

数据通信——VRRP

引言 之前把实验做了&#xff0c;结果发现我好像没有写过VRRP的文章&#xff0c;连笔记都没记过。可能是因为对STP的记忆&#xff0c;导致现在都没忘太多。 一&#xff0c;什么是VRRP VRRP全名是虚拟路由冗余协议&#xff0c;虚拟路由&#xff0c;看名字就知道这是运行在三层接…

【Linux命令详解 | chmod命令】 chmod命令用于修改文件或目录的权限,保护文件安全性。

文章目录 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 修改用户权限2. 修改用户组权限3. 修改其他用户权限4. 同时修改多个权限5. 使用数字模式设置权限6. 递归修改目录权限 总结 简介 在Ubuntu系统中&#xff0c;chmod命令是一个强大的工具&#xff0c;用于修改文件…

Vim学习(三)—— Git Repo Gerrit

Git、Gerrit、Repo三者的概念及使用 三者各自作用&#xff1a; git&#xff1a;版本管理库&#xff0c;在git库中没有中心服务器的概念&#xff0c;真正的分布式。 repo&#xff1a;repo就是多个git库的管理工具。如果是多个git库同时管理&#xff0c;可以使用repo。当然使用…

JMeter 的并发设置教程

JMeter 是一个功能强大的性能测试工具&#xff0c;可以模拟许多用户同时访问应用程序的情况。在使用 JMeter 进行性能测试时&#xff0c;设置并发是非常重要的。本文将介绍如何在 JMeter 中设置并发和查看报告。 设置并发 并发是在线程组下的线程属性中设置的。 线程数&#…

基于SSM的小型仓库库存管理系统

C00142基于SSM的小型仓库库存管理系统 项目简介项目获取开发环境项目技术运行截图 项目简介 该系统有三类用户分别是管理员、员工、客户。 管理员&#xff08;登陆后台&#xff09;&#xff1a;可以对以上6个模块进行相应操作&#xff0c;还可以修改自己的密码。 员工&#xf…

软考高级架构师——5、系统规划分析与设计方法

系统计划主要用于描述从项目提出、选择到确立的过程&#xff0c;包括系统项目的提出与可行性 分析&#xff0c;系统方案的制订、评价和改进&#xff0c;新旧系统的分析和比较&#xff0c;以及现有软件、硬件和数据 资源的有效利用等问题。 1、项目的提出与选择 项目的立项目标…