作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
在前两篇关于 Python 切片的文章中,我们学习了切片的基础用法、高级用法、使用误区,以及自定义对象如何实现切片用法(相关链接见文末)。本文是切片系列的第三篇,主要内容是迭代器切片。
迭代器是 Python 中独特的一种高级特性,而切片也是一种高级特性,两者相结合,会产生什么样的结果呢?
1、...
技术
关于 FinTech
Fintech 是一个合成词,是 Financial technology 的缩写,直译过来 Fintech 的中文就是“金融科技”。其本质是指用来提高金融服务效率的科技手段,比如大数据、云计算、智能投顾、区块链、移动支付等现代技术,它们的出现大大提高了传统金融服务的速度和效率。
现场可编程门阵列 (FPGA) 对于金融机构来说是一种理想的技术,...
作者:胡永怀 ,来源:FPGA开源工作室
1、命名规则
① 首先每个文件只包含一个module,而且module名要小写,并且与文件名保持一致;
② 除parameter外,信号名全部小写,名字中的两个词之间用下划线连接,如receive_clk_b;
③ 由parameter定义的常量要求全部字母大写,自己定义的参数、类型用大写标识,...
今天咱们来聊一聊FPGA里面的XADC功能。XADC即Xilinx公司的FPGA里集成的一个ADC模块、温度传感器、电压传感器的集合。在7系列FPGA里,除了少数spartan系列的低端FPGA没有XADC外,其它所有的7系列FPGA里都有XADC模块。
XADC包含2个通道的模拟差分输入、每个通道的采样率都为1MSPS,其功能模块如下图所示:
从上图可以看出,...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
切片是 Python 中最迷人最强大最 Amazing 的语言特性(几乎没有之一),在《Python进阶:切片的误区与高级用法》中,我介绍了切片的基础用法、高级用法以及一些使用误区。这些内容都是基于原生的序列类型(如字符串、列表、元组……),那么,我们是否可以定义自己的序列类型并让它支持切片语法呢?更进一步,...
上一篇咱们说了slice,提到了其与全局时钟在一起就可以实现任意的组合逻辑和时序逻辑功能,但很多时候咱们还需要将FPGA内部的数据暂时存储,用作它用。Slice作为FPGA最基本的单元,也是能够完成数据存储的功能,但显然有些大材小用,因此xilinx公司在其FPGA内部专门集成了很多存储器模块,称作Block RAM,其犹如slice海洋当中的一颗颗明珠,专门实现数据暂存功能,...
Xilinx 及其联盟成员提供嵌入式工具与运行时环境可帮助您高效快速地将概念转化为生产。我们可为您提供使用 Xilinx Zynq® SoC 和 Zync UltraScale+ MPSoC 器件、MicroBlaze™ 处理器内核和 Arm Cortex-M1/M3 微控制器创建嵌入式系统所需的所有组件,包括开源操作系统和裸机驱动程序、多运行时和多操作系统环境、高级集成型开发环境、编译器、...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串、列表、元组…)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢?
切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象。通常来说,切片的作用就是截取序列对象,然而,...
Vitis 加速库
Vitis™ 统一软件平台包括一组广泛的、性能优化的开源库,这些库提供了即开即用的加速功能,并且对现有应用实现最小化代码更改或零更改。
常见的 Vitis 加速库(用于数学、统计、线性代数和 DSP)为各种应用提供了一系列核心功能。
特定领域 Vitis 加速库为视觉及图像处理、定量金融、数据库及数据分析以及数据压缩等工作负载提供了开箱即用的加速功能...
Vitis™ AI 是 Xilinx 的开发平台,适用于在 Xilinx 硬件平台(包括边缘设备和 Alveo 卡)上进行人工智能推断。它由优化的 IP、工具、库、模型和示例设计组成。Vitis AI 以高效易用为设计理念,可在 Xilinx FPGA 和 ACAP 上充分发挥人工智能加速的潜力。
您的开发如何与人工智能协作:
支持主流框架和最新的模型,能够执行不同的深度学习任务...
作者: OpenSLee
来源:FPGA开源工作室
在 Flow Navigator 中点击设置, 然后选择Synthesis,或者 selectFlow > Settings > Synthesis Settings。
如图1所示:
1、综合约束
在“设置”对话框的“约束”部分下,选择“默认约束设置”作为活动约束设置;包含在Xilinx设计约束(...
Vitis 统一软件平台简介
Vitis 统一软件平台包括:
全面的内核开发套件,可无缝构建加速的应用
完整的硬件加速开源库,针对 Xilinx 硬件平台进行了优化
插入特定领域的开发环境,可直接在熟悉的更高层次框架中进行开发
不断发展的硬件加速合作伙伴库和预建应用生态系统
重要组件
Vitis AI 开发环境
一个专门的开发环境,用于在...
来源:FPGA难得一P(CSDN)
芯片型号:XC7Z010-1CLG400C
Vivado版本:2016.1
点亮流水灯,共使用了三种方式:
(1)PS通过MIO点亮PS端LED
(2)PS通过EMIO点亮PL端LED
(3)PS通过AXI点亮PL端LED。
1. MIO与EMIO
首先来理清楚MIO与EMIO的关系。MIO是PS的I/O引脚,一共有54个,...
FPGA是可编程芯片,因此FPGA的设计方法包括硬件设计和软件设计两部分。硬件包括FPGA芯片电路、 存储器、输入输出接口电路以及其他设备,软件即是相应的HDL程序以及最新才流行的嵌入式C程序。
FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。
典型FPGA开发流程与注意事项
典型FPGA的开发流程一般如图所示,包括功能定义/器件选型、设计输入、...
作者:romme
1、PCI Express总线架构
如果将计算机比作人的话,CPU就是人的大脑,而PCIe就是人的神经中枢,负责内部数据信息的传输。下图是PCIe总线结构。
处理器系统首先使用一个虚拟的PCI桥分离处理器系统的存储器域与PCI总线域。FSB总线下的所有外部设备都属于PCI总线域。
RC由两个FSB-to-PCIe桥和存储器控制器组成。...
作者:romme
PCI,英文全称:PeripheralComponent Interconnect,外围组件互联,由Intel于1991年提出。随着Intel Pentium处理器诞生而迅速发展,当时几乎所有的外围设备,从硬盘控制器、声卡、显卡和网卡,都使用PCI插槽来连接到计算机的主板上。
PCI总线是并行、同步、数据地址复用总线。32bit/33MHz峰值带宽为132MB/s,...
来源:铭云石(CSDN博主)
-flatten_hierarchy
full: 综合时将原始设计打平,只保留顶层层次,执行边界优化
none: 综合时完全保留原始设计层次,不执行边界优化
rebuilt: 综合时将原始设计打平,执行边界优化,综合后将网表文件按照原始层次显示,故与原始层次相似。
当-flatten_hierarchy为none时消耗的寄存器最多,...
Verilog中提供了四种循环语句,可用于控制语句的执行次数,分别为:for,while,repeat,forever。其中,for,while,repeat是可综合的,但循环的次数需要在编译之前就确定,动态改变循环次数的语句是不可综合的。forever语句是不可综合的,主要用于产生各种仿真激励。
一、repeat语句
repeat语句执行指定循环数,如果循环计数表达式的指不确定,...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
连续几篇文章都在写 Python 字符串,这出乎我的意料了。但是,有的问题,不写不行,特别是那种灵机一动想到的问题,最后你发现,很多人根本不懂却又误以为自己懂了。那就继续刨根问底,探究个明白吧。
在上一篇文章《你真的知道Python的字符串怎么用吗?》里,我突发奇想,将字符串跟列表做了比较,...
Fanout,即扇出,指模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛。因此,在写代码时应尽量避免高扇出的情况。但是,在某些特殊情况下,受到整体结构设计的需要或者无法修改代码的限制,则需要通过其它优化手段解决高扇出带来的问题。
以下就介绍三个这样的方法:
首先来看下面这个实例,...
静态时序分析是检查IC系统时序是否满足要求的主要手段。以往时序的验证依赖于仿真,采用仿真的方法,覆盖率跟所施加的激励有关,有些时序违例会被忽略。此外,仿真方法效率非常的低,会大大延长产品的开发周期。静态时序分析工具很好地解决了这两个问题。它不需要激励向量,可以报出芯片中所有的时序违例,并且速度很快。
通过静态时序分析,可以检查设计中的关键路径分布;...
在fpga工程中加入时序约束的目的:
1、给quartusii 提出时序要求;
2、quartusii 在布局布线时会尽量优先去满足给出的时序要求;
3、STA静态时序分析工具根据你提出的约束去判断时序是否满足的标准。
举个形象的比喻:就好比我要让代工厂(类比quartus ii)给我加工一批零件,要求长宽高为10x10x10cm,误差不超过1mm(类比时序约束条件)。...
作者:Buyi_Shizi
来源:CSDN
在Xilinx ISE中不同的操作都有不同的文件类型对应,例如综合、布局、布线、生成比特流等都会产生特定格式的文件,在vivado中也是一样,只不过在vivado中,文件的格式相比于ISE中更加同一。
1、 .dcp文件,在ise中每个过程都会产生特定格式的文件,例如.ncd, .pcf, .ngd等等,但是在vivado中,...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
正如《你真的知道Python的字符串是什么吗?》所写,Python 中字符串是由 Uniocde 编码的字符组成的不可变序列,它具备与其它序列共有的一些操作,例如判断元素是否存在、拼接序列、切片操作、求长度、求最值、求元素的索引位置及出现次数等等。
除此之外,它还有很多特有的操作,值得我们时常温故学习,所以...
一、两者的关系
一个程序块可以有多个initial和always过程块。每个initial和always说明语句在仿真的一开始同时立即开始执行;initial语句只执行一次,而always语句则不断重复的活动着,直到仿真结束。但always块语句后面跟着的过程快是否运行,满足则运行一次,满足则运行一次,直到程序结束。一段程序中使用的initial和always语句的次数不受限制,...
IBUFDS、IBUFGDS和OBUFDS都是差分信号缓冲器,用于不同电平接口之间的缓冲和转换。
1. IBUFG 即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUFG单元,否则在布局布线时会报错。IBUFG支持AGP,CTT,GTL,GTLP,HSTL,LVCMOS,LVDCI,LVPECL,LVTTL,PCI,PCIX,,...
M-PCIe即Mobile PCIe,主要应用对象是智能手机等嵌入式设备。PCI-SIG在PCIe Spec V3.1中引入基于MIPI M-PHY V2.0的M-PCIe。相比于标准的PCIe总线,M-PCIe ECN主要的改动在物理层,通过引入M-PHY,旨在获得更低的功耗以适应嵌入式设备的低功耗要求。
M-PCIe的主要特性如下:
M-PCIe的上层协议层、...
作者:默宸 ,来源:FPGA开源工作室
在大部分的教科书中,都会提到如何分频,包括奇数分频,偶数分频,小数分频等。
1、DDS相位累加器
(1)DDS合成流程
首先讲述DSS(直接频率合成法)的原理。
DDS是重要的频率合成方法,在波形发生器中有极其重要的应用。DDS主要由以下几部分组成:
a) 相位累加器
b) RAM数据读取
c) D/A转换器
d)...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
在《详解Python拼接字符串的七种方式》这篇推文里,我提到过,字符串是程序员离不开的事情。后来,我看到了一个英文版本的说法:
There are few guarantees in life: death, taxes, and programmers needing to deal with...
作者:同年纪_
来源:CSDN
我们知道xilinx FPGA的selectio中有ilogic和ologic资源,可以实现iddr/oddr,idelay和odelay等功能。刚入门时可能对xilinx的原语不太熟练,在vivado的tools-> language templates中搜索iddr idelay等关键词,可以看到A7等器件下原语模板。复制出来照葫芦画瓢,...
作者:鹏哥DIY
来源:CSDN
在ZYNQ进阶之路3中我们讲解了PL端UART 发送的设计,本节我们讲解PL端实现串口UART的接收设计;
下面主要是uart接收模块的编码讲述,uart接收模块设计主要分为波特率控制计数逻辑和按位接收逻辑,其具体编码如下所示:
波特率控制计数逻辑:
其中325是根据主时钟频率为100Mhz,这里设置波特率为115200,...
1、发起沿和捕获沿(Launch edge...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
上周的PyCoder's Weekly上分享了一篇小文章,它里面提到的冷知识很有意思,作者稍作补充,分享给大家。
它提到的部分问题,读者们可以先思考下:
• 若两个元组相等,即 a==b 且 a is b,那么相同索引的元素(如a[0] 、b[0])是否必然相等?...
作者:鹏哥DIY
来源:CSDN
在ZYNQ进阶之路2中我们讲解了PL端PWM呼吸灯的设计,本节我们讲解PL端实现串口UART的发送设计;
首先新建一个串口发送的工程,工程建立在ZYNQ进阶之路1中已经讲述,这里不再累述;
下面主要是uart发送模块的编码讲述,uart发送模块设计主要分为波特率控制计数逻辑和按位发送逻辑,其具体编码如下所示:
波特率控制计数逻辑...
作者:默宸 ,来源:FPGA开源工作室
时序不满足约束,会导致以下问题:
• 编译时间长的令人绝望
• 运行结果靠运气——时对时错
导致时序问题的成因及其发生的概率如下表:
由上表可见,造成时序问题的主要原因除了约束不完整,就是路径问题,本文就时序路径分析问题作一介绍:
1、...
1. 连续赋值语句(Continuous Assignments)
连续赋值语句是Verilog数据流建模的基本语句,用于对线网进行赋值,等价于门级描述,是从更高的抽象角度来对电路进行描述。连续赋值语句必须以关键词assign开始。
连续复制的主要特点是:
连续赋值语句的左值可以是一下类型之一:
①标量线网
②向量线网
③矩阵中的一个元素(该矩阵可以是标量线网类型的,...
一、简介
RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能、 低引脚数、 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准。RapidIO主要应用于嵌入式系统内部互连,支持芯片到芯片、板到板间的通讯,可作为嵌入式设备的背板(Backplane)连接。
RapidIO协议由逻辑层、传输层和物理层构成。...
作者:高志凯
一次常规调试中发现上电后交换机多个口同时打流会导致卡死的现象,最后一步步分析问题出现的原因是位宽不够导致的溢出。这让我回想起团队已经量产的某款芯片,也是因为某个寄存器位宽设置过小的原因,导致组播组设置的时候不能超过31,否则就会溢出,只能想办法通过软件来解决这个问题。这次出现问题的交换机是基于共享缓存的架构,希望后面引以为戒,设计每个小的寄存器时都要考虑全面。
背景...
作者:dongdongnihao_
来源:CSDN
在高速的同步电路设计中,时序决定了一切,要求所有时序路径都必须在约束限制的时钟周期内,这成为设计人员最大的难题,因此,首先确定和分析基本时序路径有助于设计者快速,准确地计算时序裕量,使系统稳定工作,XILINX公司提倡的几种常用基本路径。
(1)Clock-to-Setup路径:
clock-to-...
作者:鹏哥DIY
来源:CSDN
在ZYNQ进阶之路1 中我们讲解了PL端LED流水灯的工程的建立,编码,综合和下载!本节主题,PL端PWM输出设计,讲解怎么用ZYNQ PL端简单实现2通道PWM波输出,其中工程创建过程以及综合生成bit文件过程不再累述!
首先,PWM需要调节的参数有1、频率,2、占空比,
其中频率,和占空比的调节实际是调节计数值,其PWM模块代码如下所示...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
1、来自C语言的%方式
print('%s %s' % ('Hello', 'world'))
>>> Hello world
%号格式化字符串的方式继承自古老的C语言,这在很多编程语言都有类似的实现。上例的%s是一个占位符,它仅代表一段字符串,并不是拼接的实际内容。...
作者:bleauchat
在设计仿真激励文件时,为了满足和外部芯片接口的时序要求,经常会用到延时赋值语句,由于不同的延时赋值语句在仿真过程中行为不同,会产生不同的激励输出,如果不认真区分不同表达式引起的差异,就可能产生错误的激励,无法保证仿真结果的正确,本文就是区分各种延时赋值语句的差异,并给出比较结果。
1:阻塞式左延时赋值语句
举例说明如下:
module...
由于ZYNQ架构和常用接口IP核经常出现 AXI协议,赛灵思的协议手册讲解时序比较分散。所以笔者收藏AXI协议的几种时序,方便编程。
1、AXI_LITE协议:
( 1) 读地址通道, 包含ARVALID, ARADDR, ARREADY信号;
( 2) 读数据通道, 包含RVALID, RDATA, RREADY, RRESP信号;
( 3) 写地址通道,...
作者:鹏哥DIY
来源:CSDN
对ZYNQ的学习的渴望由来已久,前不久买了一个基于xc7z010的开发板,现在将自己的学习的进阶之路记录在此,希望能给想要入门的ZYNQ学习者一点帮助,本人也刚开始学习,能力有限,其中若有不足之处希望大家多多交流,以便共同进步!
xilinx ZYNQ-7000系列芯片将处理器的软件可编程能力与FPGA的硬件可编程能力实现了完美结合,...
引子
谈到视频的编解码,我们会自然地想到H.264、HEVC/H.265这些权威的视频编解码标准;谈到标准,有人觉得这个是有专门机构去研究的,我们关心应用就好;即使有兴趣读了标准和相关技术,面对更多的是各种数学公式和术语,如协方差、傅立叶变换、高频、滤波等等,需要花更多时间去理解。通常更为实际的做法是,我们只要调研如何应用这些标准,如何做好软硬件编码方案的选型,...
作者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
(一)
最近,我突然想到一个问题:相比其它语言,有哪些概念或习惯叫法是 Python 特有的?
在朋友圈提出这个问题后,我得到最多的回复是——Pythonic 。这个回复一点都不意外,名字中自带 Python 的,当然是特有的啦,与它相似的,还有 Pythonista 。
这两个词是啥意思呢?...
1)使用Vivado 工具生成 .hdf文件,比如ZU9_cpu.hdf
2)使用SDK工具生成FSBL。FSBL的作用主要是初始化PLL,DDR,MIO管脚分配,烧写FPGA,运行uboot等。核心代码代码位于psu_init.c中。
3)生成uboot
4)使用bootgen工具生成BOOT.BIN文件,bootgen需要使用.bif文件做输入。bif指导那个文件用作输入,...
今天,我们聊聊双核通信。双核通信的基础是已经建立好了双核工程,且配置完成。两个CPU之间传递数据,采用了共享内存,共享内存设置在OCM(On Chip Memory)内。
在没有做其他设置的情况下,ZYNQ上电后地址空间分别如下图所示:
OCM共256KB按照64KB分为4块,其中前三块在SDK中表述为RAM0占192KB处于地址空间的最开头和DDR共用地址空间,...
作者: OpenSLee,来源:FPGA开源工作室
典型的时序模型由发起寄存器、组合逻辑和捕获寄存器3部分组成,如图1所示形成了三条时钟路径:原时钟路径(Source Clock path)、数据时钟路径(Data path)、目的时钟路径(Destination Clock path)。
图1 时序模型1
1、建立时间(setup)和保持时间(hold)
如图1所示,...
作者:romme
来源:FPGA干货架
DDR对于做项目来说,是必不可少的。一般用于数据缓存和平滑带宽。今天介绍下Xilinx DDR控制器MIG IP核的例化及仿真。
FPGA芯片:XC7K325T(KC705)
开发工具:Vivado 2014.4
1、IP Catalog中搜索MIG,点击相应IP进入如下配置界面。
(1)DDR控制器的个数,...