当前位置: 首页 > article >正文

【从零开始学习计算机科学】硬件设计与FPGA原理

硬件设计

硬件设计流程

在设计硬件电路之前,首先要把大的框架和架构要搞清楚,这要求我们搞清楚要实现什么功能,然后找找有否能实现同样或相似功能的参考电路板(要懂得尽量利用他人的成果,越是有经验的工程师越会懂得借鉴他人的成果)。如果你找到了的参考设计,最好还是先看懂并理解,这一方面能提高我们的电路理解能力,而且能避免设计中的错误。

在开始做硬件设计前,根据自己的项目需求,可以去找能够满足硬件功能设计的,有很多相关的参考设计。如果没有找到,也可以自行设计。

硬件电路设计的大环节必不可少,主要都要经过以下这几个流程:原理图设计、PCB设计和制作物料清单(BOM)表。原理图设计,其实就是将前面的思路转化为电路原理图。pcb涉及到实际的电路板,它根据原理图转化而来的网表(网表是沟通原理图和pcb之间的桥梁),而将具体的元器件的封装放置(布局)在电路板上,然后根据飞线(也叫预拉线)连接其电信号(布线)。完成了pcb布局布线后,要用到哪些元器件应该有所归纳,所以我们将用到BOM表。在硬件电路设计中,还需要利用一些现有的工具,比如选择一些PCB设计工具,如Altium。

以protel为例,以下为一下具体的设计步骤:

一、原理图建立+网表生成

1、原理图库建立。要将一个新元件摆放在原理图上,我们必须得建立改元件的库。库中主要定义了该新元件的管脚定义及其属性,并且以具体的图形形式来代表。

2、有了充足的库之后,就可以在原理图上画图了,按照datasheet和系统设计的要求,通过wire把相关元件连接起来。在相关的地方添加line和text注释。wire和line的区别在于,前者有电气属性,后者没有。wire适用于连接相同网络,line适用于注释图形。

3、做完这一步,就可以生成netlist了,这个netlist是原理图与pcb之间的桥梁。原理图是我们能认知的形式,电脑要将其转化为pcb,就必须将原理图转化它认识的形式netlist,然后再处理、转化为pcb。

4、得到netlist,先做ERC。ERC是电气规则检查的缩写。它能对一些原理图基本的设计错误进行排查,如多个output接在一起等问题。

5、然后就可以从netlist中得到了pcb。

6、确定板框大小。在keepout区(或mechanic区)画个板框,这将限制了你布线的区域。

**二、PCB布局布线 **

1、确定完板框之后,就该元件布局了,布局这步极为关键。它往往决定了后期布线的难易。哪些元器件该摆正面,哪些元件该摆背面,都要有所考量。

2、接下来就是布线。这与布局往往是互动的。有经验的人往往在开始就能看出哪些地方能布线成功。如果有些地方难以布线还需要改动布局。对于fpga设计来说往往还要改动原理图来使布线更加顺畅。布线和布局问题涉及的因素很多,对于高速数字部分,因为牵扯到信号完整性问题而变得复杂,但往往这些问题又是难以定量或即使定量也难以计算的。所以,在信号频率不是很高的情况下,应以布通为第一原则。

3、使用DRC检查,这是一定要检查的。DRC对于布线完成覆盖率以及规则违反的地方都会有所标注,按照这个再一一的排查,修正。

4、最后的pcb文件转成gerber文件就可交付pcb生产了。

5、准备bom表,其一般能直接从原理图中导出。但是需要注意的是,原理图中哪些部分元件该上,哪些部分元件不该上,要做到心理有数。

三、电路板调试

1、拿到板第一步做什么,先拿万用表看看关键网络是否有不正常,主要是看电源与地之间有否短)。其实短路与否不光pcb有关,在生产制作的任何一个环节可能导致这个问题。

2、若电源网络没有短路,则检查电源输出是否是自己理想的值。

3、若电源网络短路了,这需要我们仔细检查自己原理图是否有可能这样的情况,同时结合割线的方法一步步排查倒底是什么地方短路了,是pcb的问题,还是装配的问题,还是自己设计的问题。

4、若电源输出正常了,还需要检查一下电源的输出跳变是否正常。也就是抓取开电的瞬间,看看电源从无到有的情况。

四、电源设计

电源设计是整个电路板最重要的一环。在电源设计用得最多的场合是,从一个稳定的高电压得到一个稳定的低电压。这也就是经常说的DC/DC,其中用得最多的电源稳压芯片有两种,一种叫LDO(低压差线性稳压器),另一种叫PWM(脉宽调制开关电源)。

而目前,基本上全部的硬件都是通过EDA工具进行设计的。

在电子设计自动化出现之前,设计人员必须手工完成集成电路的设计、布线等工作,这是因为当时所谓集成电路的复杂程度远不及现在。工业界开始使用几何学方法来制造用于电路光绘(photoplotter)的胶带。到了1970年代中期,开发人应尝试将整个设计过程自动化,而不仅仅满足于自动完成掩膜草图。第一个电路布局、布线工具研发成功。设计自动化研讨会(Design Automation Conference)在这一时期被创立,旨在促进电子设计自动化的发展。

电子设计自动化发展的下一个重要阶段以卡弗尔·米德(Carver Mead)和琳·康维于1980年发表的论文《超大规模集成电路系统导论》(Introduction to VLSI Systems)为标志。这一篇具有重大意义的论文提出了通过编程语言来进行芯片设计的新思想。如果这一想法得到实现,芯片设计的复杂程度可以得到显著提升。这主要得益于用来进行集成电路逻辑仿真、功能验证的工具的性能得到相当的改善。随着计算机仿真技术的发展,设计项目可以在构建实际硬件电路之前进行仿真,芯片布局、布线对人工设计的要求降低,而且软件错误率不断降低。直至今日,尽管所用的语言和工具仍然不断在发展,但是通过编程语言来设计、验证电路预期行为,利用工具软件综合得到低抽象级(或称“后端”)物理设计的这种途径,仍然是数字集成电路设计的基础。

从1981年开始,电子设计自动化逐渐开始商业化。

1984年的设计自动化会议(Design Automation Conference)上还举办了第一个以电子设计自动化为主题的销售展览。Gateway设计自动化在1986年推出了一种硬件描述语言Verilog,这种语言在现在是最流行的高级抽象设计语言。1987年,在美国国防部的资助下,另一种硬件描述语言VHDL被创造出来。现代的电子设计自动化设计工具可以识别、读取不同类型的硬件描述。根据这些语言规范产生的各种仿真系统迅速被推出,使得设计人员可对设计的芯片进行直接仿真。后来,技术的发展更侧重于逻辑综合。

数字集成电路的设计都比较模块化(参见集成电路设计、设计收敛(Design closure)和设计流(Design flow (EDA)))。半导体器件制造工艺需要标准化的设计描述,高抽象级的描述将被编译为信息单元(cell)的形式。设计人员在进行逻辑设计时尚无需考虑信息单元的具体硬件工艺。利用特定的集成电路制造工艺来实现硬件电路,信息单元就会实施预定义的逻辑或其他电子功能。半导体硬件厂商大多会为它们制造的元件提供“元件库”,并提供相应的标准化仿真模型。相比数字的电子设计自动化工具,模拟系统的电子设计自动化工具大多并非模块化的,这是因为模拟电路的功能更加复杂,而且不同部分的相互影响较强,而且作用规律复杂,电子元件大多没有那么理想。Verilog AMS就是一种用于模拟电子设计的硬件描述语言。此文,设计人员可以使用硬件验证语言来完成项目的验证工作最新的发展趋势是将集描述语言、验证语言集成为一体,典型的例子有SystemVerilog。

随着集成电路规模的扩大、半导体技术的发展,电子设计自动化的重要性急剧增加。这些工具的使用者包括半导体器件制造中心的硬件技术人员,他们的工作是操作半导体器件制造设备并管理整个工作车间。一些以设计为主要业务的公司,也会使用电子设计自动化软件来评估制造部门是否能够适应新的设计任务。电子设计自动化工具还被用来将设计的功能导入到类似现场可编程逻辑门阵列的半定制可编程逻辑器件,或者生产全定制的专用集成电路。

现今数字电路非常模组化(参见集成电路设计、设计收敛、设计流程 (EDA)),产线最前端将设计流程标准化,把设计流程区分为许多“细胞”(cells),而暂不考虑技术,接着细胞则以特定的集成电路技术实现逻辑或其他电子功能。制造商通常会提供组件库(libraries of components),以及符合标准模拟工具的模拟模型给生产流程。模拟 EDA 工具较不模组化,因为它需要更多的功能,零件间需要更多的互动,而零件一般说较不理想。

在电子产业中,由于半导体产业的规模日益扩大,EDA 扮演越来越重要的角色。使用这项技术的厂商多是从事半导体器件制造的代工制造商,以及使用 EDA 模拟软件以评估生产情况的设计服务公司。目前,EDA 工具也应用在现场可编程逻辑门阵列的程序设计上。

EDA工具中重要的一部分便是工艺映射,工艺映射主要有以下三步:

分解。将综合优化后的布尔网络转换成具有特定K输入的约束的布尔网络。由于要使用K-LUT,布尔网络必须满足每个节点的扇入不超过K。

划分。将只含有原子门的网络划分为具有约束条件的块,每个块代表复杂的门,即查找表。其中约束条件是事件延时和查找表的数量。

映射。利用上一步的划分获得复杂门的具体实现,即调用设备数据库中的具体组件来来实现复杂门。

高层次综合(High Level Synthesis)

目前,设计复杂硬件的EDA工具是HLS。高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++、SystemC等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如Verilog、VHDL、SystemVerilog等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前ASIC或FPGA设计最为普遍使用的电路建模和描述方法。

然而,HLS技术在近十年来获得了大量的关注和飞速的发展,尤其是在FPGA领域。纵观近年来各大FPGA学术会议,HLS一直是学术界和工业界研究最集中的领域之一。

HLS实现了一种将高层次功能定义转换成优化的寄存器传输层(RTL)描述的、提升硬件实现效率的自动化设计流程。其优点有以下三点:降低设计复杂度、加快仿真速度;一份源代码可以实现多份硬件;快速的设计空间探索以及更好的结果品质。

高层次综合在C语言的基础上进行了硬件专用化,其具有数据类型定制,包含任意精度的定点数、定制的浮点数;通信接口定制,包含流式接口、存储映射的I/O;存储定制化,包含数组划分、数据重用;计算定制化,包含循环展开(ILP/DLP技术),流水线(ILP/DLP/TLP技术),数据流(TLP技术),多线程(DLP/TLP技术)等等功能。

目前,可综合的C/C++子集如下:

1,基础类型:(u)char,(u)short,(u)int,(u)long,


http://www.kler.cn/a/577084.html

相关文章:

  • uni-app基础拓展
  • 【无人机三维路径规划】基于CPO冠豪猪优化算法的无人机三维路径规划Maltab
  • 生物电阻抗技术:精准洞察人体营养的“智能窗口”
  • 如何设计评论系统
  • 使用Arduino和ESP8266进行基于物联网的垃圾箱监控
  • 【UI自动化技术思路分析】【总纲】UI自动化代码完整设计思路
  • STM32常见外设的驱动示例和代码解析
  • 计算机毕业设计SpringBoot+Vue.js码头船只货柜管理系统(源码+文档+PPT+讲解)
  • 【mysql】1273错误,Unknown collation: ‘utf8mb4_0900_ai_ci‘...
  • 你了解时间轮(Time Wheel)吗?有哪些应用场景?
  • LeetCode 解题思路 13(Hot 100)
  • 【后端开发面试题】每日 3 题(八)
  • ‌工业智能网关,七大领域驱动数智化升级
  • 使用 ResponseBodyEmitter 实现异步响应式数据流处理
  • Intent3D
  • 《实战AI智能体》Deepseek可以做什么?自然语言理解与分析
  • 计算机网络——交换机
  • golang坐标转换 gomap3d库
  • Flink之Barrier对齐会影响执行效率,怎么跳过Barrier对齐,跳过后还能保证‌Exactly-Once语义吗?
  • 阿里云服务器监控