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

news2024/10/7 8:24:15


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.coloradmin.cn/o/870904.html

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

相关文章

微信小程序页面交互

目录 案例:登陆——>跳转到个人中心(并展示个人信息) 登陆流程 一、前端页面标签 二、收集前端页面数据 三、前端验证账号密码是否合规 四、根据账号密码向后端发送请求 1.请求工具 2.请求调用 3.根据回调得到的状态进行处理 五.成…

第一章:计算机与编程导论

1.1引言 如何解决问题:通过一组精确陈述的指令来设计问题的解决方案。 程序:一组指令以计算机可以接收和执行的格式描述时。 例如:百货商店管理,编写一套指令,在商品购进和售出时对其跟踪。如果这些指令是正确的&…

某行业CTF一道流量分析题

今晚看了一道题,记录学习下。 给了一个hacktrace.pcapng,分析主要内容如下: 上传两个文件,一个mouse.m2s,一个mimi.zip,将其导出。 mimi.zip中存放着secret.zip和key.pcapng 不过解压需要密码&#xff…

FLStudio21水果最新中文版升级下载

FLStudio21最新中文版是一款非常专业的后期编曲音频处理软件,对于音乐编辑处理的领域内的人而言,是非常能够满足需求的一款工具。FL Studio21拥有强大且专业的创作工具,这是先进的创作工具,让你的音乐突破想象力的限制。FL Studio…

Redis缓存雪崩、击穿、穿透?

我们谈谈Redis在实际项目中用作缓存时经常碰到的,也是经常面试的三大问题:缓存穿透、缓存击穿、缓存雪崩,以及这些问题的常用解决方法。 在介绍这三大问题之前,我们需要先了解Redis作为一个缓存中间件,在项目中是如何…

阿里云服务器竞价实例是什么意思?优缺点对比_选择攻略

腾讯云服务器CVM计费模式分为包年包月、按量计费和竞价实例,什么是竞价实例?竞价实例和按量付费相类似,优势是价格更划算,缺点是云服务器实例有被自动释放风险,腾讯云服务器网来详细说下什么是竞价实例?以及…

【动态map】牛客挑战赛67 B

登录—专业IT笔试面试备考平台_牛客网 题意: 思路: 考虑动态的map 可以先定义一个状态,然后用map统计前缀这个状态的出现次数 在这里,定义{a,b}为cnt1 - cnt0和cnt2 - cnt0 当cnt0 和 cnt1都和cnt2相同时,统计贡献…

人机交互中的混合多重反馈

人机交互中态、势、感、知的混合多重反馈是指在交互过程中综合运用不同方面的反馈信息,包括用户态度(态)、行为动势(势)、情感体验(感)和认知反馈(知)。这种多重反馈可以…

《机器学习系统:设计与实现》读书笔记一

最近几年一直在做算法工程的工作,对机器学习系统有所涉猎,也很感兴趣。近期发现一本开源书籍《机器学习系统:设计与实现》。去图书馆找了它的纸质版,发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇,主…

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…

Karmada 多云容器编排引擎支持多调度组,助力成本优化

根据 Flexera 最新发布的《2023 年云现状调查报告》,在受访的750家企业中,使用多云的企业比例高达87%: 在使用多云的受访者中,排在前两位的多云挑战分别是:孤立在不同云上的应用程序和云之间的灾难恢复/故障切换。在所…

Spring源码系列:核心概念解析

前言 本文旨在为读者解析Spring源码中的关键类,以便读者在深入阅读源码时,能够了解关键类的作用和用途。在阅读Spring源码时,经常会遇到一些不熟悉的概念,了解关键类的作用可以帮助读者更好地理解这些概念。 BeanDefinition Be…

力扣:61. 旋转链表(Python3)

题目: 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 示例&…

有人真敢编,有人真敢信。

前几天发过一篇旅游小攻略 自由行的一些小tips 其实提到了一些关于泰国的话题,说实话,我知道有人编泰国噶腰子的小作文,但我一直以为只有一小撮人会信这种,然后从知乎上发现,挺让人无语的,什么去泰国被绑架…

运维监控学习笔记5

Linux的内存是虚拟内存,是物理内存和交换分区swap。 内存: 页:4K, 硬盘:块。 寻址: 空间:内存的合并。大页内存。 free命令: [rootvm1 ~]# free -htotal used fre…

AI项目一:mediapipe测试

若该文为原创文章,转载请注明原文出处。 一. 引言 MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 YouTube、Google Lens、ARCore、Google Home 以及 Nest,都已深度整合了…

自我介绍的重要性:留下深刻的第一印象

标题:自我介绍的重要性:留下深刻的第一印象 摘要: 自我介绍是我们在社交和职业场合中常常需要面对的一项任务。一个出色的自我介绍可以帮助我们在短时间内给他人留下深刻的第一印象,从而建立良好的人际关系和职业机会。本论文旨在…

Java多线程(4)---死锁和Synchronized加锁流程

目录 前言 一.synchronized 1.1概念 1.2Synchronized是什么锁? 1.3Synchronized加锁工作过程 1.4其他优化操作 二.死锁 2.1什么是死锁 2.2死锁的几个经典场景 2.3死锁产生的条件 2.4如何解决死锁 🎁个人主页:tq02的博客_CSDN博客…

19-求正数数组的最小不可组成和

题目 给定一个全是正数的数组arr,定义一下arr的最小不可组成和的概念: arr的所有非空子集中,把每个子集内的所有元素加起来会出现很多的值,其中最小的记为min,最大的记为max;在区间[min,max]上&#xff0…

腾讯云香港服务器租用_2核2G20M_2核4G30M

腾讯云香港服务器租用费用表,目前中国香港地域轻量应用服务器可选配置2核2G20M、2核2G30M、2核4G30M,操作系统可选Windows和Linux,不只是香港云服务器,新加坡、硅谷、法兰克福和东京服务器均有活动,腾讯云服务器网分享…