上一节中分别独立实验了Zynq的PS端和PL端,并初步实验了PS端先硬件再软件的开发流程和IP核设计的设计方法。第一节中提及到:Zynq是以PS端的ARM处理器系统为核心的,PS端和PL端是通过AXI总线,并且Xilinx已经提供了各种AXI通信的IP核,接下来的实验中将会更加明确的体验到利用IP核设计的设计方法。
FPGA设计的时候,我们需要考虑功耗,功耗自然与温度相关,还需要考虑电源供电电压的稳定性以满足高低温的环境,有没有考虑过,怎么监控FPGA内部的温度和电压变化情况,这对项目的优化和评估用处很大
文章是对官方文档Resource Manger部分的总结,写得不是很有条理,仅是自己对这部分学习认识的一个总结,希望对看到的人有所帮助。
QNX OS是微内核操作系统,其内核仅仅提供进程调度、进程通讯等服务。文件访问、设备驱动等服务都属于用户空间的任务,下图是QNX系统的架构图
视频简要描述了 Alveo U200 和 U250 灵活应变加速器卡,并逐步介绍了硬件和软件安装步骤,包括下载安装包以验证开发板和软件安装。
<iframe src='//players.brightcove.net/17209957001/SywTPUVC_default/index.html?videoId=5856915694001' allowfullscreen frameborder=0 width="600" height="338"></iframe>
本篇主要介绍LVDS、CML、LVPECL三种最常用的差分逻辑电平之间的互连。
下面详细介绍第二部分:不同逻辑电平之间的互连。
1、LVPECL的互连
1.1、LVPECL到CML的连接
一般情况下,两种不同直流电平的信号(即输出信号的直流电平与输入需求的直流电平相差比较大),比较提倡使用AC耦合,这样输出的直流电平与输入的直流电平独立。
<font color="#FF8000">作者:Mculover666</font>
在上一篇中提到,Pynq是为了降低开发人员的门槛,但是作为一个学习嵌入式开发的学生,当然要一步一个脚印打好基础,所以选择从Zynq入手学习,等跑起来Linux系统再运用Python开发也不迟,知其然也知其所以然,开发效率更高,所以接下来的几篇都是关于Zynq的,如果想直接玩Pynq可直接跳过,毫无影响。
1.Zynq的架构
在开始实验之前对Zynq芯片有一个基本的认识,如果想深入了解关于Zynq的理论部分,推荐参考The Zynq Book,有英文版和中文版,在此对于Zynq的理论浅尝辄止,不做深究,重点放在实验应用上。
Zynq中包含两大功能块:PS部分和PL部分。
Algo-Logic 在 UltraScale + 架构上的新 Key Value Store(KVS)为内存中的对象存储提供了创纪录的延迟和吞吐量性能。
<iframe src='//players.brightcove.net/17209957001/SywTPUVC_default/index.html?videoId=5859430546001' allowfullscreen frameborder=0 width="600" height="338"></iframe>
上一节我们体验了一把PS和PL是怎样联合开发的,这种ARM和FPGA联合设计是ZYNQ的精华所在。这一节我们实现一个稍微复杂一点的功能——测量未知信号的频率,PS和PL通过AXI总线交互数据,实现我们希望的功能。
如何测量数字信号的频率
最简单的办法——在一段时间内计数
在我们设定的时间(Tpr) 内对被测信号的脉冲进行计数, 得Nx, Fx=Nx/Tpr。
Tpr 越大,测频精度越高。这种方法适合于高频信号,因为这里可能会有一个被测信号周期的误差,测量高频信号时误差小。
另一个变种——在一个周期内计数
上一篇中提到了SLICEL和SLICEM都可用作ROM,后者还可以作为分布式RAM(Distribute RAM,DRAM)。本篇主要总结的是块状Memory(Block Memory),实际上就是FPGA内部独立于逻辑单元的专用存储器,更像是一种硬核。