【【萌新的FPGA学习之快速回顾 水 水 】】

萌新的FPGA学习之快速回顾 水 水

上一条FPGA的更新在9 25 并且2个礼拜没写 verilog 了 正好 刷新一下记忆

FPGA CPU DSP 的对比
在数字电路发展多年以来,出现了 CPU、DSP 和 FPGA 三种经典器件,每个都是具有划时代意义的器件。CPU、DSP 和 FPGA 都有各自的擅长领域,很多新人对这三个器件到底有啥区别,到底应该学习哪个有点懵。为此,我们梳理了三个器件的概念和区别。由于我们前面已经介绍过 FPGA,此处我们只介绍 CPU和 DSP。
我们先来了解下 CPU:
CPU 一般都是基于指令流水线的架构,从存储器中进行指令的读取,指令的解析,指令的执行这样的流程。因此,在了解 CPU 之前,我们需要去了解 CPU 的指令集,再去了解指令的具体执行方式,然后针对具体的芯片了解其外围电路。
指令集是 CPU 用来计算和控制计算机系统的一套指令的集合。目前常用的指令集主要分为两种,一个是复杂指令集(CISC),另一个是精简指令集(RISC)。其中复杂指令集是早期 intel 使用的指令集,即使到现在,大部分的 PC 中使用的依然是复杂指令集。与其相对的是精简指令集,业界普遍认为精简指令集具有较高的执行效率。
CPU 一般包括几种:
1、单片机(也叫微处理器),比如早期的 intel 8051 单片机,近几年比较火的 ST 的 STM32 单片机。
2、通用 CPU,比如 intel 和 AMD 的台式机 CPU。
3、高性能 ARM CPU,比如 ARM Coretex A53/57 内核,一般用在手机或者手持设备中。
4、RISC-V 处理器,近期 RISC-V 比较火,优势是开源且高性能,吸引了国内外很多家公司在研究。
ARM 目前还是占了很大的市场份额,甚至很多人常常使用 ARM 代替 CPU,下面单独说下 ARM:ARM 设计了大量的高性能、廉价、功耗低的 RISC 处理器,相关的技术以及软件。ARM 架构是面向低预算市场设计的第一款 RISC 微处理器,它能够提供一系列的内核、体系扩展、微处理器和系统芯片方案,这四个功能模块可供生产商根据不同的用户要求来配置生产。ARM 是 32 位单片机,其内部的硬件资源性能较高,可以加载操作系统是其主要特点,加载操作系统之后,可以向 PC 一样进行多任务的实时处理,不会相互影响。
我们再来了解下 DSP:DSP 通常负责数字信号(视频、音频和其他的传感器获得的数字信号)处理,在日常生活中,常见的数字电视机机顶盒、MP3、MP4 和光模块等都广泛使用了 DSP。由于设计的专一化,DSP 可以在较低的成本下,执行比较复杂的编解码信号处理工作。DSP 其实是一种独特的 CPU,只是拥有自己的完整指令系统,是可以处理大量数字信号的器件。最大的特点就是 DSP 内部有专门的硬件乘法器和哈佛总线结构,对大量的数字信号处理速度比较快。DSP 处理器包括有控制单元、运算单元、各种存储器、以及一定数量的存储单元,并能够与一定数量的外部设备互相通信。DSP 采用的是哈佛设计,数据总线与地址总线分开,这样程序和数据能够分别存储在两块独立的空间中,允许取指令与执行指令完全重叠,就是说在 CPU 在执行上一条指令的同时也取出了下一条指令,并完成了译码工作,提高微处理器的执行速率。此外还允许在程序空间和数据空间进行数据传输,增加器件的灵活性,具体的工作原理是将接收到的模拟信号转换成 01 的数字信号,再对数据信号进行修改、删除、强化等工作,最终在其他芯片中把数字信号解读回实际环境需要的格式,运行速度可以达到每秒千万调复杂的指令,其主要特点如下:
⚫ 在一个指令周期内可以完成一次乘法和加法运算
⚫ 程序和数据分开,同时访问指令和数据
⚫ 片内具有快速 RAM,通常能够通过独立的数据总线在两块中同时访问
⚫ 具有低开销或无开销循环以及跳转指令的硬件支持
⚫ 快速的中断处理以及硬件 IO 支持
⚫ 能够在单周期内操作多个硬件地址产生器
⚫ 可以并行执行多个操作
⚫ 支持 pipeline 操作,取值译码和执行操作可以同时执行在了解了 CPU、DSP 和 FPGA 基本概念后,我们再来看下 CPU、DSP 和 FPGA 的区别:CPU 具有比较强的事务管理功能,可以用来跑 UI 以及应用程序,CPU 优点主要在于擅长控制。DSP 主要是来做计算,例如加解密算法,调制解调等,其优势是强大的数据处理能力和较高的运行速度。FPGA 主要使用 Verilog 进行编程,灵活性强,并行处理度高,可编程,可以做到很高的带宽处理。
在这里插入图片描述

CPU DSP FPGA 的区别
CPU 具有比较强的事务管理功能,可以用来跑 UI 以及应用程序,CPU 优点主要在于擅长控制。DSP 主要是来做计算,例如加解密算法,调制解调等,其优势是强大的数据处理能力和较高的运行速度。FPGA 主要使用 Verilog 进行编程,灵活性强,并行处理度高,可编程,可以做到很高的带宽处理。

AXI 突发传输的意思 : 本篇文章我们将讨论有关 AXI 总线的突发传输机制( burst ),在 AXI 总线中的突发传输是指,在地址总线上进行一次地址传输后,进行多次数据传输( transfer,这个有点搞,突发传输 and 传输?)。第一次地址传输中的地址作为起始地址,根据突发传输类型的不同,后续数据的存储地址在起始地址的基础上递增(INCR 模式);或者首先递增,到达上限地址后回到起始地址,继续递增(WRAP 模式);又或者后续数据都将不断写入起始地址,刷新起始地址上的数据。(FIXED 模式)
在这里插入图片描述

FPGA 开发流程 基本步骤

1)需求分析:做一个项目之前,我们首先需要对项目需求进行详细分析,提取项目需求需要实现什么功能;
2)系统设计:根据项目需求我们就可以进行系统架构设计,架构设计主要是将系统分为哪些模块,数据流怎么走,控制流怎么走,以及计算系统运行的带宽和评估系统的工作频率;
3)硬件选型:根据系统架构分析结果,我们就可以来选择合适规模和性能的 FPGA 芯片,这个工作称为 FPGA 器件选型,然后根据 FPGA 型号选择合适的 FPGA 板卡。FPGA 器件选型是一个综合性的工作,和项目成本、FPGA 容量和性能、FPGA 器件熟悉程度等都有关系,等大家成为大牛后可能才会有一些切身体验;
4)绘制系统框图:确定系统内各个子模块的结构层次,梳理系统对外的输入输出信号和子模块之间的交互信号;
5)绘制波形图:根据该模块的功能并且结合芯片的数据手册或者接口协议,确定模块接口信号的时序关系,然后使用绘图软件绘制各个模块的时序波形图;
6)编写 RTL 代码:使用代码编辑软件严格按照上面的波形图编写各模块的代码;
7)软件仿真:首先按照 RTL 代码的输入激励需求,编写对应的仿真代码,然后使用仿真工具对编写的RTL 代码进行仿真。仿真过程中如果 RTL 代码有语法错误,仿真工具下面的提示框会显示语法报错详细信息,可以对照该信息修改 RTL 代码,直至 RTL 代码语法错误修改完毕,才能出现仿真波形。然后观察仿真的波形图是否与我们绘制的时序波形一致,如果两者一致,接下来就可以新建工程,如果不一致,则需要通过修改代码使仿真波形与我们绘制的时序波形一致。
8)新建工程:使用 FPGA 开发平台新建工程并添加我们前面编写的 RTL 代码;
9)分析与综合:对工程进行综合编译,通过观察综合编译生成的报告可以帮助避免最常见的设计错误,以便对设计进行分析和改进;
10)约束输入:在 FPGA 开发平台对工程引脚进行约束,引脚约束完成后就可以进行布局布线与生成下载文件;
11)设计实现:就是工程布局和布线的过程。它的作用是将综合生成的逻辑网表配置到具体的 FPGA 芯片上。布局布线完成后,就可以生成下载文件了,下载文件生成成功就可以进行下一步的上板验证。
12)上板验证及调试:连接好开发板与下载器,将生成的下载文件通过下载器下载到开发板,然后观察开发板的实物运行是否正常,如果上板实验现象正常,则说明前期设计与代码编写都正常;如果上板实验现象不正常,可以通过迭代前面设计的每一步来查找问题,如果发现前面的步骤都没有问题,那么这时候可以通过在线调试来查找问题,直到解决问题,上板验证现象正常。

我的testbench的写法能力比较差 现在学习一下 tb的编写
`timescale 1ns / 1ns //仿真单位/仿真精度
这个 仿真单位是 我们在波形图上能够看到的单位
仿真精度是我们所能预见的最小精度
在这里插入图片描述

对于XDC 管脚约束文件的编写 我们可以在系统中配置完 让它自动生成xdc文件

Name:工程中顶层端口的名称。
Direction:说明管脚是输入还是输出。
Neg Diff Pair:负差分对,差分信号在 I/O Ports 窗口中只显示在一行里中(只会显示 P 端信号,N 端信号显示在 Neg Diff Pair 属性栏中)。
Package Pin:配置管脚封装。
Fixed:每一个端口都有 Fixed 属性,表明该逻辑端口是由用户赋值的。端口必须保持锁定状态,才能避免生成比特流时不会发生错误。
(Bank,I/O Std,Vcco,Slew Type,Drive Strength:显示 I/O 端口的参数值。)
Bank:显示管脚所在的 Bank。I/O
Std:配置管脚的电平标准,常用电平标准有 LVTTL 和 LVCMOS、SSTL、LVDS 与 HSTL 等
Vcco:选择的管脚的电压值。
Vref:在我们的设计中,硬件上 VREF 引脚悬空。
Drive Strength:驱动强度,默认 12mA。
Slew Type:指上升下降沿的快慢,设置快功耗会高一点,默认设置慢(slow)。
Pull Type:管脚上下拉设置,有上拉、下拉、保持与不设置。
Off-Chip Termination:终端阻抗,默认 50Ω。
IN-TERM:是用于 input 的串联电阻。

verilog 的逻辑值 的设计
Verilog 的逻辑值我们先看下逻辑电路中有四种值,即四种状态:
逻辑 0:表示低电平,也就是对应我们电路的 GND;
逻辑 1:表示高电平,也就是对应我们电路的 VCC;
逻辑 X:表示未知,有可能是高电平,也有可能是低电平;
逻辑 Z:表示高阻态,外部没有激励信号是一个悬空状态。

再次重申晶振 与系统时钟 之间的 关系 我们 发现晶振是 50MHz 那么 这样 算下来 时钟周期 就是 1/50M = 0.02us
0.02 微秒 就是 20ns
1秒等于10亿纳秒 我们 会发现
计算 0.5s 就是用 0.5/20ns = 25000000 个时钟周期

添加时钟约束的方法
约束的方法是在 XDC 文件中添加如下语句:create_clock -period 20.000 -name sys_clk [get_ports sys_clk]
“create_clock”是该命令的名称,它会创建一个时钟
;其后的“-name sys_clk”、“-period 20”、“[get_ports sys_clk ]”都是该命令的各个参数
,分别表示所创建时钟的名称是“sys_clk”、时钟周期是20ns
、时钟源是 sys_clk 端口,一般只对输入的时钟做周期约束。
在这里插入图片描述

点击“Edit Timing Constraints”按钮后,Vivado 就会打开“Timing Constraints”界面,我们点击该界面下的“+”号按键就可以添加时钟约束了,如下所示:
在这里插入图片描述

点击“+”号后,弹出的“Create Clock”界面如下所示:
在这里插入图片描述

“Create Clock”界面中各参数定义如下:
1、Clock name:时钟名称,用于为所创建的时钟约束命名。为了可以一眼看出该时钟约束的约束源,
通常情况下其命名与被约束的时钟信号名相同,因为我们要对系统时钟(sys_clk)进行约束,所以这里我们
将其命名为 sys_clk。
2、Source objects:源对象,用于指定被约束的时钟对象,具体操作我们稍后进行讲解。
3、Waveform:波形,用于设置时钟的周期(Period),上升沿(Rise at)、下降沿(Fall at)以及勾选
Add this clock to the existing clock(是否将该时钟添加到现有时钟中)。因为我们的系统时钟为 50MHz(即
一个时钟周期为 20ns),占空比为 50%,所以 Period 设置为 20,Rise at 设置为 0,Fall at 设置为 10。因为
Add this clock to the existing clock 选项是在同一个约束源时钟存在多个时钟频率且每个时钟频率都需要进行
约束的情况下才需要勾选的,而我们的系统时钟只有一个频率,所以无需勾选。
4、Command:命令,即通过我们上述的配置后,vivado 自动生成的约束命令,该命令是可以直接复制
粘贴到 XDC 文件中使用的。
下面我们就来介绍下如何指定被约束的时钟对象,这里需要点击“Source objects”框后的“…”指定时
钟源对象,如下图所示:

点击“…”后弹出的“Specify Clock Source Objects”界面如下所示:

“Specify Clock Source Objects”界面中“Find”之上的各个选项主要用于设置筛选条件,因为系统时钟
来自于 IO 口,所以“Find names of type(寻找名称类型)”选择“I/O Port”,其余选项保持默认,我们直
接点击“Find”按钮,如下所示:

在找到的信号中,我们选择需要约束的系统时钟信号(sys_clk)然后点击“→”按钮将其添加到右侧窗
口,如下图所示

之后我们点击“Set”即可将该信号定义为源对象,此时的“Create Clock”界面如下所示:

至此,时钟约束配置完成,我们点击“OK”即可添加约束并关闭“Create Clock”界面。此时的“Timing
Constraints”界面如下所示:

在这里插入图片描述

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

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

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

相关文章

QT 操作Windows系统服务

Windows服务是在Windows操作系统上运行的后台应用程序,它们在系统启动时自动启动,并在后台持续运行,不需要用户交互。Windows服务的作用包括但不限于以下几个方面:1. 提供系统功能:许多Windows服务提供了系统级的功能和…

大数据技术学习笔记(二)—— Hadoop运行环境的搭建

目录 1 模版虚拟机准备1.1 修改主机名1.2 修改hosts文件1.3 修改IP地址1.3.1 查看网络IP和网关1.3.2 修改IP地址 1.4 关闭防火墙1.5 创建普通用户1.6 创建所需目录1.7 卸载虚拟机自带的open JDK1.8 重启虚拟机 2 克隆虚拟机3 在hadoop101上安装JDK3.1 传输安装包并解压3.2 配置…

腾讯地图基本使用(撒点位,点位点击,弹框等...功能) 搭配Vue3

腾讯地图的基础注册账号 展示地图等基础功能在专栏的上一篇内容 大家有兴趣可以去看一看 今天说的是腾讯地图的在稍微一点的基础操作 话不多说 直接上代码 var marker ref(null) var map var center ref(null) // 地图初始化 const initMap () > {//定义地图中心点坐标…

不想加班的小伙伴们,请把这四个神器焊在电脑上~

今天又来给大家分享干货啦,如果你下载视频没渠道,写方案没灵感思路,做表格太慢,做海报太复杂,那你一点要看这一篇,今天分享的四个宝藏网站专门解决以上问题,一起来看看吧! 一、WeDow…

SAP-QM-动态检验规则

Dynamic Modification Rule (动态修改规则) 1、决定样本大小的方式有3种: 手动输入比例大小采样过程 物料主数据质量视图 2、采样过程的创建方式有2种 跟批量大小有关系:百分比/AQL跟批量大小没有关系:固定值 而当…

【RNA biology】RNA的多功能性与早期生命进化

文章目录 RNARNA plays core functions in Central Dogma of BiologyrRNAsnRNA RNA worldReplication催化作用感知环境变化并作出响应 来自Manolis Kellis教授(MIT计算生物学主任)的课 油管链接:6.047/6.878 Lecture 7 - RNA folding, RNA wo…

概念解析 | 心脏电活动和机械活动之间的关系

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:心脏电活动和机械活动之间的关系。 心跳的交响乐:心脏电活动与机械活动之间的关联 一、背景介绍 心脏通过不断跳动将血液输送到我们身体的每一个角落。而这个跳动过程,是…

3D测量之圆孔测量 拟合圆 点云变换

0. 效果展示 1. 圆孔测量介绍 此文中的圆孔测量是一项3D视觉技术,旨在精确测量物体表面上的圆孔的直径和中心坐标。通过使用高精度3D相机(线激光轮廓仪或结构体等)采集原始点云数据,通过3D视觉算法能够快速、准确地分析物体上的圆孔特征,为制造和工程领域提供了强大的测量…

插入排序(学习笔记)

插入排序 每一轮插入排序后的结果与打扑克牌取牌原理相似,将取到的牌插入到合适的位置,但在程序实现方面还是基于交换的算法。 它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。 import java.util.…

【(数据结构)—— 基于单链表实现通讯录】

(数据结构)—— 基于单链表实现通讯录 一.通讯录的功能介绍1.基于单链表实现通讯录(1). 知识要求(2). 功能要求 二.通讯录的代码实现1.通讯录的底层结构(单链表)(1).思路展示(2).底层代码实现(单链表)1.单链表头文件 —— (函数的定义&#x…

Hive安装配置 - 内嵌模式

文章目录 一、Hive运行模式二、安装配置内嵌模式Hive(一)下载hive安装包(二)上传hive安装包(三)解压缩hive安装包(四)配置hive环境变量(五)关联Hadoop&#x…

【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】

准备工作:CentOS 7系统,并确保可以联通网络 1、获取MySQL 5.7 Community Repository软件包 注意:这里使用的是root用户身份。 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2、安装软件包 rpm -ivh mysql5…

华为荣耀手机,开启开发者选项,hbuilder调试依然找不到

我的手机是华为荣耀50,其他华为手机不知道是不是这个问题哦 解决办法:usb配置,选择音频来源 然后就可以了

2020年江西省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书样题

2020年江西省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 样题 赛项时间 9:00-12:00,共计3小时。 赛项信息 赛项内容 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 平台搭建与安全设备配置防护 任务1 网络平台搭建 9:00-12:00 1…

MS17010(永恒之蓝)漏洞实战

曾因苦难多壮志,不教红尘惑坚心。 工具检测 实战过程 使用搜索命令,搜索ms17_010 search ms17_010 搜索网段中主机漏洞 use auxiliary/scanner/smb/smb_ms17_010 照例,show options 看一下配置 设置网段,run运行就行了 使用攻…

浅谈云原生

目录 1. 云原生是什么? 2. 云原生四要素 2.1 微服务 2.2 容器化 2.3 DevOps 2.4 持续交付 3. 具体的云原生技术有哪些? 3.1 容器 (Containers) 3.2 微服务 (Microservices) 3.3 服务网格 (Service Meshes) 3.4 不可变基础设施 (Immutable Inf…

Debian衍生桌面项目SpiralLinux12.231001发布

导读SpiralLinux 是一个从 Debian 衍生出来的桌面项目,其重点是在所有主要桌面环境中实现简洁性和开箱即用的可用性。 spiral Linux 是为刚接触 Linux 世界的人们量身定制的发行版。这是 GeckoLinux 开发人员的创意,他更喜欢保持匿名。尽管他不愿透露姓…

网安周报|OpenSSF 推出恶意软件包存储库

1.OpenSSF 推出恶意软件包存储库 为了应对恶意开源软件包日益增长的威胁,开源安全基金会 ( OpenSSF ) 推出了一项名为“恶意软件包存储库”的新计划。该存储库可能会成为打击恶意代码的主要参与者,旨在增强开源软件生态系统的安全性和完整性。该存储库已…

linux-守护进程daemon

linux-守护进程daemon 代码实现 main.c运行结果 代码实现 main.c //pName&#xff1a;程序名 //facility&#xff1a; 守护进程&#xff0c;输出日志类型 302页 #include<signal.h> #include<syslog.h> #include<fcntl.h> static int daemon_proc 0; #defin…

景联文科技语音数据标注:AUTO-AVSR模型和数据助力视听语音识别

ASR、VSR和AV-ASR的性能提高很大程度上归功于更大的模型和训练数据集的使用。 更大的模型具有更多的参数和更强大的表示能力&#xff0c;能够捕获到更多的语言特征和上下文信息&#xff0c;从而提高识别准确性&#xff1b;更大的训练集也能带来更好的性能&#xff0c;更多的数据…