Zynq开发实践(Verilog、仿真、FPGA和芯片设计)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        zynq最大的优势,就是把arm和fpga结合在一起了。这样一颗soc里面,就可以用软件去驱动外设ip,这是之前没有过的体验。因为以前,arm和fpga通信,大多数都是分列式设计,arm是单独的一颗soc,fpga也是单独的芯片,两者通过外部总线沟通,比如pcie等等。现在有了zynq,直接借助于axi总线就能通信。但是很多小伙伴呢,还是不太明白fpga该怎么开发,以及verilog、仿真、fpga和芯片设计的关系,正好借此机会聊一下。

1、verilog

        verilog是一门描述语言,和它类似的还有vhdl。有了描述语言,我们就可以描述时序电路、组合逻辑电路,这两部分都是设计的基础。再加上输入接口、输出接口、时钟、复位、状态机,不管是硬件协议,还是算法电路,都可以去实现了。所以学好verilog的前提是数字电路,只要掌握了数字电路,就可以明白verilog的基本原理了。至于语法中的阻塞、非阻塞,以及综合、不可综合,这些概念遇到的时候处理一下即可。

2、仿真

        verilog的仿真,就类似于c语言port到嵌入式开发板子前,先用windows平台仿真一下是一个道理。仿真不仅可以模拟出各种激励信号,还能实现自动化测试,非常适合上板之前的功能确认。从工具层面,verilog不考虑布局布线,也不考虑功耗,只是从功能层面确认下实现是否ok。而且,仿真的效率一般非常之高,有兴趣的小伙伴甚至可以自己写一个仿真器。

        从大的地方说,仿真就是按照复位信号,组合逻辑、时序逻辑、组合逻辑一步一步往前走,按照这个思路,自己就可以写一个最简单的仿真器。比如,我们出现这样一个电路,

assign d = a ? b : c;

        如果改成c语言,基本就是这样的组合逻辑,

int get_data(int a, int b, int c)
{if(a){return b;}else{return c;}
}int d = get_data(a,b,c);

        哪怕是时序逻辑,也可以处理。计算的时候,如果clock没有到,先计算组合逻辑,然后clock来临之后,把组合逻辑的结果赋值给寄存器,这样就可以实现时序仿真了。

3、fpga

        fpga是介于软件和硬件的产物。本质上fpga是由一个一个的lut查找表、开关连线、外设三部分组成。当然,除了这三部分,还是pll、rom、ram、fifo、dsp等资源。最主要的部分,还是刚才说的lut、switch box、io。

        其中lut本质上就是查找表,它不知道什么与或非,我们需要什么功能,工具帮忙编译成对应的lut就可以了。比如一个或门,就可以是 0 0 0/ 0 1 1/ 1 0 1/ 111。前面两个输入,最后一个是输出。当然除了组合逻辑之外,lut内部一般还有d触发器,这个用来处理时序电路。因此,我们写的组合逻辑和时序逻辑都是由这样一个一个lut拼起来的。

        既然是拼起来的lut,那么就会涉及到模块和模块的互联。比如下面这句话,

assign flag = (a|b) & (c|d);

        这个flag信号的处理,来自于a、b、c、d。假设lut最大只能处理两路信号,那么这个电路就需要三个lut才能实现。第一个lut处理a和b,第二个lut处理c和d,然后两个lut的处理结果送到第三个lut,这样才实现了基本的flag输出。那么lut直接按怎么通信呢,其实内部可以看成是这样一个结构,

        有了swich box之后,就可以这样一直把信号传递下去。当然,换一个角度来看,switch box也是一种特殊的lut。至于输入输出模块也是一样,只不过这种输入、输出要涉及到fpga的引脚,本质上也是一种特殊的lut。

4、asic芯片

        verilog本身作为描述语言,可以描述fpga,也可以描述芯片的设计。fpga下面除了lut,还有pll、dsp、fifo、rom、ram等很多资源,所以fpga看上去更像是搭积木,fpga的工具就是把用户的verilog的描述映射到这一个一个资源上面。虽然整体很方便,不过也容易出问题,比如布局布线,信号和信号之间会不会距离太长,需不需要加时间约束等等。所以对于fpga来说,前端设计和后端设计是一体的,后端设计是fpga厂家的工具帮助自动完成的。因此,很多芯片设计开发功能的时候,都是用fpga来做前端设计的,甚至是几块fpga芯片一起来仿真。

        而asic设计,看上去更像是从0到1开始造房子。虽然也是用verilog开发,但是底层实现来自于代工厂的工艺库,里面有组合逻辑、时序逻辑、rom、ram模块等等。工艺库就是实实在在的mos管逻辑电路,而不是fpga那种查表机制的lut了。不过,soc里面有些ip需要从第三方购买,有些ip需要自己设计,这些ip都ok之后,通过总线连接在一起之后,这才相当于完成了基本的soc逻辑设计。接下来就是后端工程师的工作。

        芯片的前后端设计,非常类似于电路的前后端设计,电路的前端设计就是原理图设计,电路的后端设计就是pcb layout。原理图ok不见得pcb就ok。比如电源摆放是不是合理,模数有没有分开,高频、低频有没有分开,发热有没有提前布局,这都是pcb layout考虑的。后端芯片设计也是一样,比如pin脚布局、时钟树设计、电源信号处理等等,既要有利于生产、提高良品率,也要考虑到后续客户的使用习惯。哪怕现在很多芯片后端设计都是外包的,至少发包方要在关键指标上提出明确诉求,不然很容易烂尾掉,毕竟芯片流片也不便宜。

        fpga本身依赖于查表和ram机制,这是它自身的可编程性决定的,也是fpga得以存在的基础。因此不管是功耗上,还是频率上,都不如asic。但是fpga胜在一个灵活,因此只有量大的场景才会asic化,如果是非标类的应用,一般用fpga就可以了,尤其是图像和通信类领域。

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

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

相关文章

LabVIEW刺激响应测量解析

​该 LabVIEW 程序用于刺激 - 响应测量,实现测试信号生成、响应采集及测量分析,涵盖信号同步、并行处理等概念,用于设备总谐波失真(THD)等电信号特性测量场景,借助 LabVIEW 图形化编程优势,将复…

Boosting(提升法)详解

一、引言在集成学习(Ensemble Learning)中,Boosting(提升法) 是一种非常经典且强大的方法。它通过将多个弱学习器(Weak Learners)进行迭代组合,逐步提升整体的预测性能,从…

宠物智能手机PetPhone技术解析:AI交互与健康监测的系统级创新

当你的宠物通过AI自主接听视频通话,背后是计算机视觉与边缘计算的技术融合。全球首款宠物智能手机正在重新定义跨物种人机交互。近日,亚洲宠物展览会上亮相的PetPhone引发了技术社区的广泛关注。这款专为宠物设计的智能设备集成了多项技术创新&#xff0…

智慧零售商品识别误报率↓74%!陌讯多模态融合算法在自助结算场景的落地优化

原创声明:本文为原创技术解析文章,核心技术参数与架构设计引用自 “陌讯技术白皮书”,禁止未经授权的转载与篡改。文中算法逻辑与实战方案均基于陌讯视觉算法 v3.2 版本展开,所有实测数据均来自智慧零售场景下的真实部署环境。一、…

ArcGIS学习-9 ArcGIS查询操作

前置操作加载数据修改坐标系修改单位属性查询单条件查询打开安徽省县界的属性表多条件查询值得注意的是,不加括号和前面加括号,查出来的结果一致(35条记录)而后面加括号,查询结果与之前的不一致(25条记录&a…

A-Level物理课程全解析:知识点、学习计划与培训机构推荐

A-Level物理课程是国际教育体系中的重要科目,不仅为大学理工科专业打下基础,也培养学生的科学思维与实验能力。本文将从核心知识点解析、高效学习计划制定,以及优质培训机构推荐三个方面,为学生和家长提供全面、实用的指南。一、A…

Linux 进阶之性能调优,文件管理,网络安全

一、系统性能调优系统性能调优是 Linux 管理中的关键技能,它能显著提升系统在不同应用场景下的表现。通过针对性的调优,可以解决资源瓶颈问题,提高服务响应速度,优化资源利用率。(一)CPU 性能调优知识点详解…

【科普向-第五篇】MISRA C实战手册:规则与指令全解析

目录 引言 1.1 起源与目的 1.2 规则体系结构 一.变量与类型(Rule 1–9) Rule 1.1 — 变量必须显式初始化(Mandatory) Rule 1.2 — 使用固定宽度整数类型(Mandatory) Rule 1.3 — 避免未定义行为的类…

Custom SRP - Shadow Masks

截图展示的是:近处实时阴影,远处烘焙阴影1 Baking Shadows阴影让场景更具层次感和真实感,但是实时阴影渲染距离有限,超出阴影距离的世界由于没有阴影显得很“平”.烘焙的阴影不会受限于阴影距离,可以与实时阴影结合解决该问题:最大阴影距离之内使用实时阴影最大阴影距离之外用烘…

Python爬虫实战:研究spidermonkey库,构建电商网站数据采集和分析系统

1 引言 1.1 研究背景 互联网数据已成为商业决策、学术研究的核心资源,网络爬虫作为数据获取的主要工具,在静态网页时代发挥了重要作用。然而,随着 AJAX、React、Vue 等技术的广泛应用,超过 70% 的主流网站采用 JavaScript 动态生成内容(如商品列表滚动加载、评论分页加载…

智能驾驶规划技术总结

前言 本文主要对智能驾驶规划技术相关知识进行初步探究和总结,以加深理解,及方便后续学习过程中查漏补缺。 分层规划策略 寻径 A*算法 概念 节点:网格化后的每一个最小单元父节点:路径规划中用于回溯的节点列表:需要不…

05 网络信息内容安全--对抗攻击技术

1 课程内容 网络信息内容获取技术网络信息内容预处理技术网络信息内容过滤技术社会网络分析技术异常流量检测技术对抗攻击技术 2 对抗攻击概述 2.1 对抗攻击到底是啥? 咱们先举个生活例子: 你平时看苹果能认出来 —— 红颜色、圆溜溜、带个小揪揪。但如果…

【FPGA】VGA显示-贪吃蛇

这个项目实现了一个完整的贪吃蛇游戏,使用Verilog HDL在FPGA上构建。项目包含了VGA显示控制、按键消抖处理、游戏逻辑和图形渲染等多个模块,展示了数字逻辑设计的综合应用。 项目概述 该设计使用硬件描述语言实现了经典贪吃蛇游戏的所有核心功能&#…

从PostgreSQL到人大金仓(KingBase)数据库迁移实战:Spring Boot项目完整迁移指南

📖 前言 在国产化浪潮的推动下,越来越多的企业开始将数据库从国外产品迁移到国产数据库。本文将以一个真实的Spring Boot项目为例,详细介绍从PostgreSQL迁移到人大金仓(KingBase)数据库的完整过程,包括遇到…

Docker 入门指南:从基础概念到常见命令及高级工具详解

Docker 入门指南:从基础概念到常见命令及高级工具详解 大家好!今天我们来聊聊 Docker 这个强大的容器化工具。如果你是一个开发者、运维工程师,或者只是对云计算和容器技术感兴趣的人,Docker 绝对值得你深入了解。它可以帮助你轻松…

Redis数据持久化——RDB快照和Aof日志追加

Redis数据持久化数据持久化:将内存中的数据保存到磁盘中。作用:让Redis服务重启后可以恢复之前的数据。一、Redis数据持久化的方式:RDB(快照):将内存中Redis缓存的所有数据,都以二进制字符串的方…

浅聊达梦数据库物理热备的概念及原理

达梦数据库(DM Database)的物理热备份,核心是在数据库不中断业务(联机) 的前提下,通过对数据库物理文件(如数据文件、控制文件、日志文件等)的增量或全量复制,实现数据备…

C++ 中 ::(作用域解析运算符)的用途

C 中 ::(作用域解析运算符)的应用场景详解 在 C 中,:: 被称为 作用域解析运算符(Scope Resolution Operator),用于明确指定某个名字(变量、函数、类型等)所属的命名空间或类作用域&a…

鸿蒙中CPU活动分析:CPU分析

1 CPU分析的核心概念与重要性 CPU活动分析(CPU Profiling)是性能优化的核心手段,它通过测量代码执行时间,帮助开发者定位性能瓶颈。应用的响应速度直接影响用户体验,过长的加载时间或卡顿会导致用户流失 1.1 为什么C…

十大经典 Java 算法解析与应用

在 Java 开发的世界里,算法就如同构建大厦的基石,它们支撑着各种复杂应用的高效运行。无论是处理海量数据的排序,还是在庞大结构中精准查找信息,合适的算法都能大幅提升程序的性能。接下来,我们将深入解析十大经典的 J…