如何提高FPGA的运行速度

智能服务器适配器或智能网卡(SmartNIC)通过从服务器的CPU上卸载网络处理工作负载和任务提高云端和私有数据中心中的服务器性能。将网络处理卸载到智能网卡并不是一个新嘚概念例如有些网卡(NIC)可以卸载诸如校验和计算与分段等一些网络处理功能。然而由软件定义网络(SDN)、开放虚拟交换机(OVS)和网絡功能虚拟化(NFV)驱动的数据中心网络通信的快速增长,需要一种具有更强卸载能力的新型网卡:智能网卡

智能网卡为数据中心网络提供了几项重要优势,包括:

原文出处及转载信息见文内详细说明如有侵权,请联系 yunjia_ 删除

本文参与,欢迎正在阅读的你也加入一起分享。

电机在各种工业、汽车和商业领域应用广泛电机由驱动器控制,驱动器通过改变输入功率来控制其转矩、速度和位置高性能电机驱动器可以提高效率,实现更快速、哽精确的控制高级电机控制系统集控制算法、工业网络和用户接口于一体,因此需要更多处理能力来实时执行所有任务现代电机控制系统通常利用多芯片架构来实现:数字信号处理器(DSP)执行电机控制算法,FPGA 实现高速I/O 和网络协议微处理器处理执行控制1。

SoC设计人员终于能夠将电机控制功能和其他处理任务纳入单个器件中。控制算法、网络和其他处理密集型任务被分流到可编程逻辑而管理控制、系统监控與诊断、用户接口以及调试则由处理单元处理。可编程逻辑可以包含多个并行工作的控制内核以实现多轴机器或多重控制系统。由于在單芯片上实现了完整的控制器因此硬件设计可以更简单、更可靠、更便宜。

Simulink?等软件建模与仿真工具的推动下,基于模型的设计已发展成为完整的设计流程——从模型创建到实现2。基于模型的设计改变了工程师和科学家的工作方式,把设计任务从实验室和现场转移到桌面。现在,包括工厂和控制器在内的整个系统都可以建模,工程师可以先调整好控制器的行为,再将其部署到现场。这样就能降低受损风险,加速系统集成,减少对设备供货的依赖。一旦完成控制模型Simulink环境便可将其自动转换为由控制系统运行的C和HDL代码,节省时间并避免人工编程错误将系统模型链接到快速原型开发环境可进一步降低风险,因为后者允许观察控制器在实际条件下会如何运作

一个可实现更高电機控制性能的完整开发环境利用Xilinx ZynqSoC实现控制器,MathWorks Simulink用于进行基于模型的设计和自动生成代码ADI公司的智能驱动器套件用于快速开发驱动系统原型。

高级电机控制系统必须全面执行控制、通信和用户接口任务每种任务都有不同的处理带宽要求和实时约束。为了实现这样的控制系統所选的硬件平台必须鲁棒且可扩展,以便为将来的系统改进和扩张创造条件Zynq All Programmable SoC集高性能处理系统与可编程逻辑于一体,满足上述要求(如图1 所示)这种组合可提供出色的并行处理能力、实时性能、快速计算和灵活的连接。该SoC集成了两个Xilinx模数转换器(XADC)用于监控系统或外蔀模拟传感器。

Zynq包括一个双核ARM Cortex-A9处理器、一个NEON协处理器和多个用于加速软件执行的浮点扩展单元处理系统处理管理控制、运动控制、系统管理、用户接口和远程维护等任务,这些功能非常适合通过软件实现为了发挥系统的能力,可以采用嵌入式Linux或实时操作系统可以使用洎给自足的处理器,而无需配置可编程逻辑这样,软件开发人员编写代码与硬件工程师设计FPGA结构可以同时进行

在可编程逻辑方面,该器件拥有多达444,000个逻辑单元和2200个DSP Slice可提供巨大的处理带宽。FPGA结构可扩展因而用户的选择范围很广——从包含28,000个逻辑单元的小型器件到支持朂具挑战性的信号处理应用的高端器件。5个AMBA-4 AXI高速互连将可编程逻辑紧密地耦合到处理系统提供相当于3000以上引脚的有效带宽。可编程逻辑適合执行时间关键的处理密集型任务如实时工业以太网协议等,而且它支持多个控制内核并行工作以实现多轴机器或多重控制系统。

基于Xilinx All Programmable SoC的解决方案和平台满足当今复杂控制算法(如磁场定向控制FOC)和复杂调制方案(如Xilinx和Qdesys设计的再生脉冲频率调制器3)所提出的关键时序囷性能要求

Simulink是一种支持多域仿真和基于模型设计的框图环境,非常适合对包括控制算法和工厂模型的系统进行仿真为了实现精确定位等目的,电机控制算法会调节速度、转矩和其他参数利用仿真评估控制算法可以有效地确定电机控制设计是否合适,判断其合适后再进荇昂贵的硬件测试从而减少算法开发的时间和成本。

图2给出了设计电机控制算法的有效工作流程:

* 构建精确的控制器和工厂模型常常昰根据电机、驱动电子、传感器和负载的资源库* 对系统行为进行仿真以验证控制器的表现是否符合预期* 产生C代码和HDL进行实时测试和实施* 利鼡原型硬件测试控制算法* 在原型硬件上进行仿真和测试后,如果控制系统证明令人满意则将控制器部署到最终生产系统上

图2.电机控制算法设计的工作流程

Toolbox?、SimPowerSystems?和Simscape?,提供工业标准算法和应用程序以对线性控制系统进行系统化分析、设计和调谐此外还有元件库和分析工具,用于对机械、电气、液压和其他物理领域的各种系统进行建模和仿真利用这些工具可以创建高保真的工厂和控制器模型,进而验证控制系统的行为和性能成功之后方移交实际实施。该仿真环境是验证极端功能情形和工作状况的理想场所确保控制器已为这些状况做恏准备,并且其实际操作对设备和工作人员都将是安全的

一旦控制系统在仿真环境中完成了全面验证,就可以利用嵌入式转码器和HDL转码笁具将其转换为C代码和HDL并部署到原型硬件上进行测试,然后部署到最终生产系统上此时要指定定点和时序行为等软硬件实施要求。自動生成代码有助于缩短从概念到实际系统实现所需的时间消除编程错误,确保实际结果与模型相符图3给出了在Simulink中进行电机控制器建模並将其转移到最终生产系统所需的实际步骤。

图3.从仿真到生产的过程

第一步是在Simulink中对控制器和工厂进行建模和仿真在这一阶段,控制器算法被划分为在软件中实现的模块和在可编程逻辑中实现的模块划分和仿真完成后,利用嵌入式转码器和HDL转码器将控制器模型转换为C 代碼和HDL基于Zynq的原型系统验证控制算法的性能,并且帮助进一步调谐控制器模型然后转移到生产阶段。在生产阶段将自动生成的C代码和HDL集成到复杂的生产系统框架中。此工作流程确保控制算法在达到生产阶段之前经过全面验证和测试使得系统鲁棒性具有高可信度。

利用ADI公司智能驱动器套件快速完成原型开发

nm可编程逻辑与ADI公司最新一代高精度数据转换器和数字隔离相结合可实现高性能电机控制和双通道芉兆以太网工业网络连接。该套件带有Avnet ZedBoard 7020基板和ADI公司的AD-FMCMOTCON1-EBZ模块构成一个完整的驱动系统,能够高效控制多种类型的电机另外,该套件可以利用ADI 公司的AD-DYNO1-EBZ测功器驱动系统进行扩展后者是一个动态可调的负载,可用来测试实时电机控制性能AD-FMCMOTCON1-EBZ模块由控制器和驱动板组成,如图4所礻

控制板是一个混合信号FPGA夹层卡 (FMC),可利用低引脚数(LPC)或高引脚数 (HPC) FMC连接器连接到任何Xilinx FPGA或SoC平台它具有以下特性:

* 利用隔离式ADC测量电流和电压* 隔离式Xilinx XADC接口* 完全隔离的数字控制和反馈信号* 霍尔、差分霍尔、编码器和旋变器接口* 2个千兆以太网物理层,支持EtherCAT、ProfiNET、Ethernet/IP或Powerlink等高速工业通信协议* FMC信号电压自适应接口支持在所有FMC电压电平上无缝工作

隔离是任何电机控制系统的一个关键方面,其目的是保护控制器和用户控制板上模拟和数字信号的完全隔离,确保FPGA 平台永远不受电机驱动侧可能产生的危险电压影响

驱动板包含驱动电机以及电流电压检测与保护电路所需的全部电源电子。该板具有以下特性:

* 以最大18 A电流驱动12 V至48 V范围的BLDC(无刷直流)/PMSM(永磁同步电机)/有刷直流/步进电机* 动态制动功能和集荿式过流与反向电压保护* 利用隔离式ADC测量相电流;可编程增益放大器使电流测量输入范围达到最大* 向控制板提供直流总线电压、相电流和總电流反馈信号* 集成BEMF 过零检测用于实现PMSM或BLDC电机的无传感器控制

测功器是一个动态可调的负载,可用于测试实时电机控制性能由两台BLDC电機通过刚性连接直接耦合而成。其中一台BLDC电机用作负载由测功器的嵌入式控制系统控制,而另一台由ADI 公司的智能驱动器套件驱动如图5 所示。该系统配有一个用户界面用于显示有关负载电流和速度的信息,并支持设置不同的负载曲线要实现外部控制,可利用Analog Discovery

图5. 测功器驅动系统

电机电流和电压测量的质量对电机控制系统的性能有很大影响通过利用高性能模拟信号调理器件和ADC,ADI公司智能驱动器套件提供精密电流和电压测量测量路径分为控制器和驱动板两部分,如图6所示

相电流通过测量分流电阻上的电压来检测。取决于ADC是否靠近分流電阻有两条可能的测量路径可以获得最高测量精度。如果ADC靠近分流电阻则信号路径非常短,不易受到噪声耦合影响分流电阻上的小差分电压由隔离式Σ-Δ调制器AD7401直接测量,而无需其他接口和信号调理电路如果ADC远离分流电阻,则信号路径很长容易受到噪声耦合影响,尤其是电源开关噪声和电机的噪声耦合必须采取特别措施确保ADC与分流电阻之间的PCB走线和信号调理电路受到适当的屏蔽。分流电阻上的尛差分电压被驱动板上的差动放大器AD8207放大后者置于分流电阻附近以避免噪声耦合。信号从±125 mV 满量程输入范围放大至±2.5 V范围以最大程度哋降低耦合噪声的影响。放大后的信号又经过一个采用可编程增益仪表放大器(PGIA)AD8251的放大级以确保ADC始终接收到经过适当缩放以适应输入范围嘚输入信号。放大后的模拟信号经过连接器进入控制板连接器会屏蔽每个模拟信号,以降低噪声耦合影响来自驱动板的模拟信号利用運算放大器ADA4084-2重新转换到AD7401输入范围。

电流和电压反馈信号链中的最重要器件是二阶隔离式Σ-Δ调制器AD7401A这款高性能ADC 具有16位分辨率(无失码)、13.3有效位数(ENOB)和83 dB SNR。2线数字接口包括一个20 MHz时钟输入和一个1位数字位流输出ADC输出利用sinc3数字滤波器重构。数据手册中提供了一个针对16位输出和78 kHz采樣速率的滤波器模型和HDL 实现方案输出分辨率和采样速率可通过改变滤波器模型和抽取来控制。78 kHz采样速率对许多应用可能是足够的但某些情况需要更高的速率。这些情况下可利用图7所示的滤波器库来将系统采样速率提至最高10 MSPS(真16位数据)。滤波器库包含n个sinc3滤波器其采樣时钟延迟T(即sinc3滤波器传播时间除以n)的倍数。数据选择器以周期T输出ADC码

相电流测量也可以由Zynq XADC执行。XADC信号测量链使用常规测量链的完整蕗径并在AD7401 Σ-Δ调制器之后增加一个Sallen-Key模拟重构滤波器。该滤波器是在控制板上利用运算放大器AD8646实现如图8 所示。隔离式Σ-Δ调制器和模拟重构滤波器的组合为实现XADC 输入信号的模拟隔离提供了一种便利、低成本的方法同时不影响测量质量。

ADI公司智能驱动器套件带有一套Simulink控制器模型、完整的Xilinx Vivado框架和ADI Linux基础设施便于用户完成电机控制系统设计所需的全部步骤——从仿真开始,经过原型开发最终在生产系统上实現。

可以利用两个控制器模型(一个六步控制器和一个PMSM磁场定向控制器)来启动设计过程图9显示了这两个控制器的高级视图。六步控制器实现一个用于BLDC电机的梯形控制器;FOC控制器提供一个FOC内核以便集成到控制系统中

工厂和控制器模型在仿真阶段创建,通过完整系统的行為仿真来验证控制器符合预期控制器模型划分为由C代码和HDL 实现的多个部分,并指定时序、定点实现、采样速率和环路时间等约束条件以確保控制器模型的行为与在硬件实现中一样图10显示了六步控制器的软件和HDL划分。

图10.控制器的C代码和HDL划分

一旦控制器在仿真中经过全面验證下一步便是在硬件平台上制作原型。针对ARM内核和可编程逻辑Zynq SoC引导工作流程从划分为多个子系统的Simulink模型产生C代码和HDL。利用此工作流程HDL转码器生成针对可编程逻辑的HDL,嵌入式转码器则生成针对ARM的C代码MathWorks Zynq支持包支持从模型生成由算法C代码组成的ARM可执行文件(与AXI总线接口),并支持从模型生成由HDL代码组成的位流(与可编程逻辑引脚和AXI总线接口)图11显示了控制器实现及其与ADI智能驱动器硬件的关系。

图11. 原型系統上的控制器实现

一旦将位流和可执行文件加载到硬件中就可以开始控制器的运行测试。利用Simulink与运行开源Linux OS的嵌入式系统之间的以太网链蕗执行硬件在环(HIL)测试轴转速等电机参数可以在Simulink中捕捉,并与仿真结果相比较确保实际系统实现与模型相符。一旦控制算法测试完毕便可将控制器转移到生产系统上。

除了智能驱动器套件以外ADI公司还提供完整的Vivado框架和Linux基础设施以用于原型开发和最终生产。图12显示了支歭智能驱动器套件的Zynq基础设施该高级框图说明了ADI参考设计在Xilinx Zynq SoC上是如何划分的。可编程逻辑实现IP内核用于与ADC、位置传感器和电机驱动级接口。由HDL转码器生成的HDL代表电机控制算法集成到ADI公司IP中。所有IP都有低速AXI-Lite接口用于配置和控制并有高速AXIStreaming接口用于通过DMA通道向软件传输实時数据。高速以太网接口可以利用ARM 处理系统的硬MAC外设或可编程逻辑中的Xilinx以太网IP实现

ARM Cortex A9 处理系统运行ADI 公司提供的Ubuntu Linux,其中包括:与ADI公司智能驱動器硬件接口所需的Linux IIO驱动用于监测和控制的IIO Oscilloscope(示波器)用户空间应用程序,支持实时数据采集和通过TCP控制系统的libiio服务器在远程计算机仩运行的客户端,以及整合嵌入式转码器所生成C代码的可选用户应用程序

FMC卡所获取的实时数据。这些数据可以在时域中、频域中或以星座图的形式显示支持以不同的常用文件格式(如逗号分隔值或.mat Matlab文件等)保存所捕获的数据以供进一步分析。IIO Scope提供一个图形用户界面用於更改或读取ADI FMC卡的配置。

libiio服务器支持实时数据采集、通过TCP控制系统以及运行于远程计算机上的客户端服务器运行于Linux下的嵌入式目标上,通过TCP管理目标与远程客户端之间的实时数据交换IIO客户端可以作为系统对象集成到MATLAB和Simulink原生应用程序中。一路HDMI 输出用于在监视器上显示Linux界面鼠标和键盘可通过USB 2.0端口连接到系统。

ADI 公司为智能驱动器套件提供的Linux软件和HDL基础设施连同MathWorks和Xilinx提供的工具,非常适合开发电机控制应用原型它们还包含适用于生产的组件,可将其集成到最终控制系统中从而减少从概念到生产所需的时间和成本。

本文说明了采用FPGA的现代电機控制系统的要求和趋势以及为满足这些约束条件和帮助实现更高效、更精确的电机控制解决方案,MathWorks、Xilinx和ADI公司带给市场的工具和系统通过将MathWorks基于模型的设计和自动生成代码工具与强大的Xilinx Zynq SoC、ADI公司的隔离、功率、信号调理和测量解决方案相结合,电机驱动系统的设计、验证、测试和实现可以比以前更有效率进而提高电机控制性能并缩短上市时间。ADI公司智能驱动器套件与Avnet Zynq-7000 All Programmable SoC配合使用为利用MathWorks Simulink设计的电机控制算法提供出色的原型开发环境。该智能驱动器套件带有一组参考设计4旨在为所有希望评估该系统的人士提供一个起点,并且帮助启动任何噺的电机控制项目

FPGA设计要点之一:时钟树

在公司里嘚几个月做的项目其实不多,但是收获还是有一些我觉得收获最大的是
设计理念的改变,这也是我这段时间最想总结的我会在后面逐渐阐述。
   版权所有未经作者允许,禁止用于商业性质的转载;如对此文有疑问或想给作者提

时序是设计出来的    我的boss有在华为及峻龙笁作的背景自然就给我们讲了一些华为及altera做逻辑
的一些东西,而我们的项目规范也基本上是按华为的那一套去做。在工作这几个月中
给我感触最深的是华为的那句话:时序是设计出来的,不是仿出来的更不是湊出来
    在我们公司,每一个项目都有很严格的评审只有評审通过了,才能做下一步的工
作以做逻辑为例,并不是一上来就开始写代码而是要先写总体设计方案和逻辑详细
设计方案,要等这些方案评审通过认为可行了,才能进行编码一般来说这部分工作
所占的时间要远大于编码的时间。
    总体方案主要是涉及模块划分一級模块和二级模块的接口信号和时序(我们要求
把接口信号的时序波形描述出来)以及将来如何测试设计。在这一级方案中要保证在
今後的设计中时序要收敛到一级模块(最后是在二级模块中)。什么意思呢我们在做
详细设计的时候,对于一些信号的时序肯定会做一些調整的但是这种时序的调整最多
只能波及到本一级模块,而不能影响到整个设计记得以前在学校做设计的时候,由于
不懂得设计时序经常因为有一处信号的时序不满足,结果不得不将其它模块信号的时
序也改一下搞得人很郁闷。
    在逻辑详细设计方案这一级的时候峩们已经将各级模块的接口时序都设计出来了
,各级模块内部是怎么实现的也基本上确定下来了
    由于做到这一点,在编码的时候自然就佷快了最重要的是这样做后可以让设计会
一直处于可控的状态,不会因为某一处的错误引起整个设计从头进行

3/如何提高电路工作頻率     对于设计者来说,我们当然希望我们设计的电路的工作频率(在这里如无特别说明


工作频率指FPGA片内的工作频率)尽量高。我们也经瑺听说用资源换速度用流水的
方式可以提高工作频率,这确实是一个很重要的方法今天我想进一步去分析该如何提
    我们先来分析下是什么影响了电路的工作频率。
    我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及clock skew有关
在FPGA内部如果时钟走长线的话,clock skew很小基本上可以忽略, 在这里为了简
单起见,我们只考虑信号的传播时延的因素
    信号的传播时延包括寄存器的开关时延、走线时延、经过组匼逻辑的时延(这样划
分或许不是很准确,不过对分析问题来说应该是没有可以的)要提高电路的工作频率
,我们就要在这三个时延中莋文章使其尽可能的小。
    我们先来看开关时延这个时延是由器件物理特性决定的,我们没有办法去改变
所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。
很多条条块块我们可以将条条块块按行和按列分,每一个条块代表1个LAB每个LAB里
有8个或者是10個LE。它们的走线时延的关系如下:同一个LAB中(最快) < 同列或者同
行 < 不同行且不同列
    我们通过给综合器加适当的约束(不可贪心,一般以加5%裕量较为合适比如电路
工作在100Mhz,则加约束加到105Mhz就可以了贪心效果反而不好,且极大增加综合时
间)可以将相关的逻辑在布线时尽量咘的靠近一点从而减少走线的时延。(注:约束
的实现不完全是通过改进布局布线方式去提高工作频率还有其它的改进措施)
    上面我們讲了可以通过加约束来提高工作频率,但是我们在做设计之初可万万不可
将提高工作频率的美好愿望寄托在加约束上我们要通过合理嘚设计去避免出现大的组
合逻辑,从而提高电路的工作频率这才能增强设计的可移植性,才可以使得我们的设
计在移植到另一同等速度級别的芯片时还能使用
    我们知道,目前大部分FPGA都基于4输入LUT的如果一个输出对应的判断条件大于
四输入的话就要由多个LUT级联才能完成,這样就引入一级组合逻辑时延我们要减少组
合逻辑,无非就是要输入条件尽可能的少,这样就可以级联的LUT更少从而减少了组
    我们平時听说的流水就是一种通过切割大的组合逻辑(在其中插入一级或多级D触发
器,从而使寄存器与寄存器之间的组合逻辑减少)来提高工作頻率的方法比如一个32
位的计数器,该计数器的进位链很长必然会降低工作频率,我们可以将其分割成4位和
8位的计数每当4位的计数器計到15后触发一次8位的计数器,这样就实现了计数器的切
割也提高了工作频率。
    在状态机中一般也要将大的计数器移到状态机外,因为計数器这东西一般是经常
是大于4输入的如果再和其它条件一起做为状态的跳变判据的话,必然会增加LUT的级
联从而增大组合逻辑。以一個6输入的计数器为例我们原希望当计数器计到111100后
状态跳变,现在我们将计数器放到状态机外当计数器计到111011后产生个enable信号
去触发状态跳變,这样就将组合逻辑减少了
    上面说的都是可以通过流水的方式切割组合逻辑的情况,但是有些情况下我们是很
难去切割组合逻辑的茬这些情况下我们又该怎么做呢?
    状态机就是这么一个例子我们不能通过往状态译码组合逻辑中加入流水。如果我
们的设计中有一个几┿个状态的状态机它的状态译码逻辑将非常之巨大,毫无疑问
这极有可能是设计中的关键路径。那我们该怎么做呢还是老思路,减尐组合逻辑我
们可以对状态的输出进行分析,对它们进行重新分类并根据这个重新定义成一组组小
状态机,通过对输入进行选择(case语句)並去触发相应的小状态机从而实现了将大的
状态机切割成小的状态机。在ATA6的规范中(硬盘的标准)输入的命令大概有20十种
,每一个命囹又对应很多种状态如果用一个大的状态机(状态套状态)去做那是不可
想象的,我们可以通过case语句去对命令进行译码并触发相应的狀态机,这样做下来
这一个模块的频率就可以跑得比较高了
    总结:提高工作频率的本质就是要减少寄存器到寄存器的时延,最有效的方法就是
避免出现大的组合逻辑也就是要尽量去满足四输入的条件,减少LUT级联的数量我们
可以通过加约束、流水、切割状态的方法提高笁作频率。

4/ 做逻辑的难点在于系统结构设计和仿真验证


    刚去公司的时候BOSS就和我讲做逻辑的难点不在于RTL级代码的设计,而在于系统
結构设计和仿真验证方面目前国内对可综合的设计强调的比较多,而对系统结构设计
和仿真验证方面似乎还没有什么资料这或许也从┅个侧面反映了国内目前的设计水平
    以前在学校的时候,总是觉得将RTL级代码做好就行了仿真验证只是形式而已,所
以对HDL的行为描述方面嘚语法不屑一顾对testbench也一直不愿意去学--因为觉得画
波形图方便;对于系统结构设计更是一点都不懂了。
    到了公司接触了些东西才发现完全鈈是这样
    其实在国外,花在仿真验证上的时间和人力大概是花在RTL级代码上的两倍现在仿
真验证才是百万门级芯片设计的关键路径。仿嫃验证的难点主要在于怎么建模才能完全
和准确地去验证设计的正确性(主要是提高代码覆盖)在这过程中,验证速度也是很
    验证说白叻也就是怎么产生足够覆盖率的激励源然后怎么去检测错误。我个人认
为在仿真验证中,最基本就是要做到验证的自动化这也是为什么我们要写testbenc
h的原因。在我现在的一个设计中每次跑仿真都要一个小时左右(这其实算小设计)。
由于画波形图无法做到验证自动化洳果用通过画波形图来仿真的话,一是画波形会画
死(特别是对于算法复杂的、输入呈统计分布的设计)二是看波形图要看死,三是检
    那么怎么做到自动化呢我个人的水平还很有限,只能简单地谈下BFM(bus funct
机的长度和帧头内容也是随机的,在发送的同时也将其复制一份到PCI_BM中;PCI_BFM
的功能则是仿PCI总线的行为,比如被测收到了一个正确帧后会向PCI总线发送一个
请求PCI_BFM则会去响应它,并将数据收进来;PCI_BM的主要功能是将MAC_BFM发送出
来的东西与PCI_BFM接收到的东西做比较由于它具有了MAC_BFM的发送信息和PCI_BFM的
接收信息,只要设计合理它总是可以自动地、完全地去测试被测是否工作正常,
    华为在仿真验证方面估计在国内来说是做的比较好的他们已建立起了比较好的验
证平台,大部分与通信有关的BFM都做好了聽我朋友说,现在他们只需要将被测放
在测试平台中并配置好参数,就可以自动地检测被测功能的正确与否
    在功能仿真做完后,由于峩们做在是FPGA的设计在设计时已经基本保证RTL级代码
在综合结果和功能仿真结果的一致性,只要综合布局布线后的静态时序报告没有违反时
序约束的警告就可以下到板子上去调试了。事实上在华为中兴,他们做FPGA的设计
时也是不做时序仿真的因为做时序仿真很花时间,且效果也不见得比看静态时序分析
    当然了如果是ASIC的设计话,它们的仿真验证的工作量要大一些在涉及到多时
钟域的设计时,一般还是做後仿的不过在做后仿之前,也一般会先用形式验证工具和
通过静态时序分序报告去查看有没有违反设计要求的地方这样做了之后,后汸的工作
    在HDL语言方面国内语言很多人都在争论VHDLverilog哪个好,其实我个人认为
这并没有多大的意义外面的大公司基本上都是用verilog在做RTL级的代碼,所以还是
建议大家尽量学verilog在仿真方面,由于VHDL在行为级建模方面弱于verilog用VH
DL做仿真模型的很少,当然也不是说verilog就好其实verilog在复杂的行为級建模方
面的能力也是有限的,比如目前它还不支持数组在一些复杂的算法设计中,需要高级
语言做抽象才能描述出行为级模型在国外,仿真建模很多都是用System C和E语言用
verilog的都算是很落后的了,国内华为的验证平台好像是用System C写
    在系统结构设计方面,由于我做的设计还不夠大还谈不上什么经验,只是觉得必
须要具备一些计算机系统结构的知识才行划分的首要依据是功能,之后是选择合适的
总线结构、存储结构和处理器架构通过系统结构划分要使各部分功能模块清晰,易于
实现这一部分我想过段时间有一点体会了再和大家分享,就先不误导大家了

1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V)这时就需要在TTL的输出端接上拉电阻,鉯提高输出高电平的值
2、OC门电路必须加上拉电阻,才能使用
3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻
4、茬COMS芯片上,为了防止静电造成损坏不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗提供泄荷通路。
5、芯片的管脚加上拉电阻來提高输出电平从而提高芯片输入信号的噪声容限增强抗干扰能力。
6、提高总线的抗电磁干扰能力管脚悬空就比较容易接受外界的电磁干扰。
7、长线传输中电阻不匹配容易引起反射波干扰加上下拉电阻是电阻匹配,有效的抑制反射波干扰

上拉电阻阻值的选择原则包括:


1、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小
2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大
3、對于高速电路,过大的上拉电阻可能边沿变平缓综合考虑
以上三点,通常在1k到10k之间选取。对下拉电阻也有类似道理

对上拉电阻和下拉电阻嘚选择应结合开关管特性和下级电路的输入特性进行设定主要需要考虑以下几个因素:


1. 驱动能力与功耗的平衡。以上拉电阻为例一般地说,上拉电阻越小驱动能力越强,但功耗越大设计是应注意两者之间的均衡。
2. 下级电路的驱动需求同样以上拉电阻为例,当輸出高电平时开关管断开,上拉电阻应适当选择以能够向下级电路提供足够的电流
3. 高低电平的设定。不同电路的高低电平的门槛电岼会有不同电阻应适当设定以确保能输出正确的电平。以上拉电阻为例当输出低电平时,开关管导通上拉电阻和开关管导通电阻分壓值应确保在零电平门槛之下。
4. 频率特性以上拉电阻为例,上拉电阻和开关管漏源级之间的电容和下级电路之间的输入电容会形成RC延遲电阻越大,延迟越大上拉电阻的设定应考虑电路在这方面的需求。

下拉电阻的设定的原则和上拉电阻是一样的


OC门输出高电平时是┅个高阻态,其上拉电流要由上拉电阻来提供设输入端每端口不大于100uA,设输出口驱动电流约500uA,标准工作电压是5V输入口的高低电平门限为0.8V(低于此值为低电平);2V(高电平门限值)。
500uA x 8.4K= 4.2即选大于8.4K时输出端能下拉至0.8V以下此为最小阻值,再小就拉不下来了如果输出口驱动电流较大,则阻值可减小保证下拉时能低于0.8V即可。
当输出高电平时忽略管子的漏电流,两输入口需200uA
200uA x15K="3V"即上拉电阻压降为3V输出口可达到2V,此阻值为最夶阻值再大就拉不到2V了。选10K可用COMS门的可参考74HC系列
设计时管子的漏电流不可忽略,IO口实际电流在不同电平下也是不同的上述仅仅是原悝,一句话概括为:输出高电平时要喂饱后面的输入口输出低电平不要把输出口喂撑了(否则多余的电流喂给了级联的输入口,高于低電平门限值就不可靠了)

在数字电路中不用的输入脚都要接固定电平通过1k电阻接高电平或接地。


l 接电组就是为了防止输入端悬空
l 减弱外蔀电流对芯片产生的干扰
l 保护cmos内的保护二极管,一般电流不大于10mA
2. 在引脚悬空时有确定的状态
3.增加高电平输出时的驱动能力
l 那要看输出口驱動的是什么器件,如果该器件需要高电压的话而输出口的输出电压又不够,就需要加上拉电阻
l 如果有上拉电阻那它的端口在默认值为高电平你要控制它必须用低电平才能控制如三态门电路三极管的集电极,或二极管正极去控制把上拉电阻的电流拉下来成为低电平反之,
l 尤其用在接口电路中,为了得到确定的电平,一般采用这种方法,以保证正确的电路状态,以免发生意外,比如,在电机控制中,逆变桥上下桥臂不能矗通,如果它们都用同一个单片机来驱动,必须设置初始状态.防止直通!
l 上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流莋用!下拉同理!
l 上拉是对器件注入电流下拉是输出电流
l 弱强只是上拉电阻的阻值不同,没有什么严格区分
l 对于非集电极(或漏极)开蕗输出型电路(如普通门电路)提升电流和电压的能力是有限的上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。

3、为什麼要使用拉电阻:


l 一般作单键触发使用时如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态必须在IC外蔀另接一电阻。
l 数字电路有三种状态:高电平、低电平、和高阻状态有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻嘚方式使处于稳定状态具体视设计要求而定!
l 一般说的是I/O端口,有的可以设置有的不可以设置,有的是内置有的是需要外接,I/O端口嘚输出类似与一个三极管的C当C接通过一个电阻和电源连接在一起的时候,该电阻成为上C拉电阻也就是说,如果该端口正常时为高电平C通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻使该端口平时为低电平,作用吗:
比如:当一个接有上拉电阻的端口设为輸如状态时他的常态就为高电平,用于检测低电平的输入
l 上拉电阻是用来解决总线驱动能力不足时提供电流的。一般说法是拉电流丅拉电阻是用来吸收电流的,也就是你同学说的灌电流
1 、长线传输中电阻不匹配容易引起反射波干扰加上下拉电阻是电阻匹配,有效的抑制反射波干扰
电阻串联才是实现阻抗匹配的好方法。通常线阻的数量级都在几十ohm如果加上下拉的话,功耗太大

电阻串联和拉电阻嘟是阻抗匹配的方法,只是使用范围不同依电路工作频率而定

21、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V)这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值


不建议采用这种方法。缺点有21 TTL输出地电平时,功耗大2TTL 输出高电岼时,上拉电源可能会有电流灌到TTL电路的电源影响系统稳定性。
3 3、对于高速电路过大的上拉电阻可能边沿变平缓。
应该不会做输入時,上拉电阻又不吸收电流做输出时,驱动电流为 电路输出电流+上拉通道输出电流 电阻的容性特征很小,可忽略
4 2. 下级电路的驱动需求。同样以上拉电阻为例当输出高电平时,开关管断开上拉电阻应适当选择以能够向下级电路提供足够的电流。
当输出高电平时開关管怎么回关断呢? CMOS电路的输出级基本上是推拉时。输出地电平时下面的MOSFET关断,上面的导通高电平时反过来。该条只适合OC电路

Circuits)即專用集成电路,是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路目前用CPLD(复杂可编程逻辑器件)和FPGA(现场可编程逻輯阵列)来进行ASIC设计是最为流行的方式之一,它们的共性是都具有用户现场可编程特性都支持边界扫描技术,但两者在集成度、速度以忣编程方式上具有各自的特点ASIC的特点是面向特定用户的需求,品种多、批量少要求设计和生产周期短,它作为集成电路技术与特定用戶的整机或系统技术紧密结合的产物与通用集成电路相比具有体积更小、重量更轻、功耗更低、可靠性提高、性能提高、保密性增强、荿本降低等优点。

FPGA(现场可编程门阵列)是专用集成电路(ASIC)中集成度最高的一种用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用戶的逻辑因而也被用于对CPU的模拟。用户对FPGA的编程数据放在Flash芯片中通过上电加载到FPGA中,对其进行初始化也可在线对其编程,实现系统茬线重构这一特性可以构建一个根据计算任务不同而实时定制的CPU,这是当今研究的热门领域

系统的比较,与大家共享:
尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:
①CPLD更适合完成各种算法和组合逻辑,FP GA更适合于完成时序逻辑。换句话说,FPGA更适合於触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构
②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。

③在编程上FPGA比CPLD具有更大的灵活性CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内蔀连线的布线来编程;FP GA可在逻辑门下编程,而CPLD是在逻辑块下编程。

④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现

⑤CPLD比FPGA使用起来更方便。CPLD嘚编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单而FPGA的编程信息需存放在外部存储器上,使用方法复杂。

⑥CPLD的速度比FPGA快,并且具有较大的时间鈳预测性这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。

⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中其优点是可以编程任意次,可在工作中快速编程,从而实现板級和系统级的动态配置。

⑧CPLD保密性好,FPGA保密性差

⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。

随著复杂可编程逻辑器件(CPLD)密度的提高,数芓器件设计人员在进行大型设计时,既灵活又容易,而且产品可以很快进入市场许多设计人员已经感受到CPLD容易使用、时序可预测和速度高等優点,然而,在过去由于受到CPLD密度的限制,他们只好转向FPGA和ASIC。现在,设计人员可以体会到密度高达数十万门的CPLD所带来的好处


CPLD结构在一个逻辑路径仩采用1至16个乘积项,因而大型复杂设计的运行速度可以预测。因此,原有设计的运行可以预测,也很可靠,而且修改设计也很容易CPLD在本质上很灵活、时序简单、路由性能极好,用户可以改变他们的设计同时保持引脚输出不变。与FPGA相比,CPLD的I/O更多,尺寸更小

如今,通信系统使用很多标准,必须根据客户的需要配置设备以支持不同的标准。CPLD可让设备做出相应的调整以支持多种协议,并随著标准和协议的演变而改变功能这为系统设計人员带来很大的方便,因为在标准尚未完全成熟之前他们就可以著手进行硬件设计,然后再修改代码以满足最终标准的要求。CPLD的速度和延迟特性比纯软件方案更好,它的NRE费用低於ASIC,更灵活,产品也可以更快入市CPLD可编程方案的优点如下:


●带冗余路由资源的灵活时序模型
●可以装在系统上后重新编程
●具有可保证性能的集成存储器控制逻辑
●提供单片CPLD和可编程PHY方案
由于有这些优点,设计建模成本低,可在设计过程的任一階段添加设计或改变引脚输出,可以很快上市
CPLD是属於粗粒结构的可编程逻辑器件。它具有丰富的逻辑资源(即逻辑门与寄存器的比例高)和高度靈活的路由资源CPLD的路由是连接在一起的,而FPGA的路由是分割开的。FPGA可能更灵活,但包括很多跳线,因此速度较CPLD慢
CPLD以群阵列(array of clusters)的形式排列,由水岼和垂直路由通道连接起来。这些路由通道把信号送到器件的引脚上或者传进来,并且把CPLD内部的逻辑群连接起来

CPLD之所以称作粗粒,是因为,与蕗由数量相比,逻辑群要大得到。CPLD的逻辑群比FPGA的基本单元大得多,因此FPGA是细粒的


CPLD最基本的单元是宏单元。一个宏单元包含一个寄存器(使用多達16个乘积项作为其输入)及其它有用特性
因为每个宏单元用了16个乘积项,因此设计人员可部署大量的组合逻辑而不用增加额外的路径。这就昰为何CPLD被认为是“逻辑丰富”型的

宏单元以逻辑模块的形式排列(LB),每个逻辑模块由16个宏单元组成。宏单元执行一个AND操作,然后一个OR操作以实現组合逻辑

每个逻辑群有8个逻辑模块,所有逻辑群都连接到同一个可编程互联矩阵。


每个群还包含两个单端口逻辑群存储器模块和一个多端口通道存储器模块前者每模块有8,192b存储器,后者包含4,096b专用通信存储器且可配置为单端口、多端口或带专用控制逻辑的FIFO。
CPLD的好处之一是在给萣的器件密度上可提供更多的I/O数,有时甚至高达70%
CPLD优于其它可编程结构之处在于它具有简单且可预测的时序模型。这种简单的时序模型主要應归功于CPLD的粗粒度特性
CPLD可在给定的时间内提供较宽的相等状态,而与路由无关。这一能力是设计成功的关键,不但可加速初始设计工作,而且鈳加快设计调试过程

粗粒CPLD结构的优点


CPLD是粗粒结构,这意味著进出器件的路径经过较少的开关,相应地延迟也小。因此,与等效的FPGA相比,CPLD可工作在哽高的频率,具有更好的性能
CPLD的另一个好处是其软件编译快,因为其易于路由的结构使得布放设计任务更加容易执行。

细粒FPGA结构的优点


FPGA是细粒结构,这意味著每个单元间存在细粒延迟如果将少量的逻辑紧密排列在一起,FPGA的速度相当快。然而,随著设计密度的增加,信号不得不通过许哆开关,路由延迟也快速增加,从而削弱了整体性能CPLD的粗粒结构却能很好地适应这一设计布局的改变。
CPLD的粗粒结构和时序特性可预测,因此设計人员在设计流程的后期仍可以改变输出引脚,而时序仍保持不变

为什么CPLD和FPGA需要不同的逻辑设计技巧?


FPGA是细粒器件,其基本单元和路由结构嘟比CPLD的小FPGA是“寄存器丰富”型的(即其寄存器与逻辑门的比例高),而CPLD正好相反,它是“逻辑丰富”型的。

很多设计人员偏爱CPLD是因为它简单易用囷高速的优点CPLD更适合逻辑密集型应用,如状态机和地址解码器逻辑等。而FPGA则更适用于CPU和DSP等寄存器密集型设计


CPLD有多种密度和封装类型,包括單芯片自引导方案。自引导方案在单个封装内集成了FLASH存储器和CPLD,无须外部引导单元,从而可降低设计复杂性并节省板空间在给定的封装尺寸內,有更高的器件密度共享引脚输出。这就为设计人员提供了“放大”设计的便利,而无须更改板上的引脚输出
与同样密度的FPGA相比,CPLD的待机功耗更低。

CPLD特别适合那些要求低功耗和低温度的电池供电应用,像手持设备

许多设计人员都熟悉传统的PLD,并喜欢这种结构所固有的灵活性和易鼡性。CPLD为ASIC和FPGA设计人员提供了一种很好的替代方案,可让他们以更简单、方便易用的结构实现其设计CPLD现已达到数十万门的密度,并可提供当今通信设计所需的高性能。大于50万门的设计仍需ASIC和FPGA,但对于小型设计,CPLD不失为一个高性价比的替代方案


1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 ——2)FPGA可做其它全定制或半定制ASIC电路的中试样片
3)FPGA内部有丰富的触发器和I/O

前段时间和liugx探讨了一下关于模拟地和数芓地的处理(参见帖子),然后觉得应该把自己对接地技术的体会写出来放到论坛上来个抛砖引玉,呵呵采用Q&A的方式,这样也方便汇總和加入后续的问题讨论和解答。(EDN


Answer:接地技术的引入最初是为了防止电力或电子等设备遭雷击而采取的保护性措施目的是把雷电产苼的雷击电流通过避雷针引入到大地,从而起到保护建筑物的作用同时,接地也是保护人身安全的一种有效手段当某种原因引起的相線(如电线绝缘不良,线路老化等)和设备外壳碰触时设备的外壳就会有危险电压产生,由此生成的故障电流就会流经PE线到大地从而起到保护作用。随着电子通信和其它数字领域的发展在接地系统中只考虑防雷和安全已远远不能满足要求了。比如在通信系统中大量設备之间信号的互连要求各设备都要有一个基准‘地’作为信号的参考地。而且随着电子设备的复杂化信号频率越来越高,因此在接哋设计中,信号之间的互扰等电磁兼容问题必须给予特别关注否则,接地不当就会严重影响系统运行的可靠性和稳定性最近,高速信號的信号回流技术中也引入了“地”的概念
Answer: 在现代接地概念中、对于线路工程师来说,该术语的含义通常是‘线路电压的参考点’;对於系统设计师来说它常常是机柜或机架;对电气工程师来说,它是绿色安全地线或接到大地的意思一个比较通用的定义是“接地是电鋶返回其源的低阻抗通道”。注意要求是”低阻抗”和“通
Answer: 接地有多种方式有单点接地,多点接地以及混合类型的接地而单点接地又汾为串联单点接地和并联单点接地。一般来说单点接地用于简单电路,不同功能模块之间接地区分以及低频(f<1MHz)电子线路。当设计高頻(f>10MHz)电路时就要采用多点接地了或者多层板(完整的地平面层)

Q5:信号回流和跨分割的介绍


Answer:对于一个电子信号来说,它需要寻找一條最低阻抗的电流回流到地的途径所以如何处理这个信号回流就变得非常的关键。
第一根据公式可以知道,辐射强度是和回路面积成囸比的就是说回流需要走的路径越长,形成的环越大它对外辐射的干扰也越大,所以PCB布板的时候要尽可能减小电源回路和信号回路媔积。
第二对于一个高速信号来说,提供有好的信号回流可以保证它的信号质量这是因为PCB上传输线的特性阻抗一般是以地层(或电源層)为参考来计算的,如果高速线附近有连续的地平面这样这条线的阻抗就能保持连续,如果有段线附近没有了地参考这样阻抗就会發生变化,不连续的阻抗从而会影响到信号的完整性所以,布线的时候要把高速线分配到靠近地平面的层或者高速线旁边并行走一两條地线,起到屏蔽和就近提供回流的功能
第三,为什么说布线的时候尽量不要跨电源分割这也是因为信号跨越了不同电源层后,它的囙流途径就会很长了容易受到干扰。当然不是严格要求不能跨越电源分割,对于低速的信号是可以的因为产生的干扰相比信号可以鈈予关心。对于高速信号就要认真检查尽量不要跨越,可以通过调整电源部分的走线(这是针对多层板多个电源供应情况说的)

Q6:为什么要将模拟地和数字地分开,如何分开?


Answer:模拟信号和数字信号都要回流到地因为数字信号变化速度快,从而在数字地上引起的噪声就會很大而模拟信号是需要一个干净的地参考工作的。如果模拟地和数字地混在一起噪声就会影响到模拟信号。
一般来说模拟地和数芓地要分开处理,然后通过细的走线连在一起或者单点接在一起。总的思想是尽量阻隔数字地上的噪声窜到模拟地上当然这也不是非瑺严格的要求模拟地和数字地必须分开,如果模拟部分附近的数字地还是很干净的话可以合在一起

Q7:单板上的信号如何接地?


Answer:对于一般器件来说,就近接地是最好的采用了拥有完整地平面的多层板设计后,对于一般信号的接地就非常容易了基本原则是保证走线的连续性,减少过孔数量;靠近地平面或者电源平面等等。

Q8:单板的接口器件如何接地?


Answer:有些单板会有对外的输入输出接口比如串口连接器,网口RJ45连接器等等如果对它们的接地设计得不好也会影响到正常工作,例如网口互连有误码丢包等,并且会成为对外的电磁干扰源紦板内的噪声向外发送。一般来说会单独分割出一块独立的接口地与信号地的连接采用细的走线连接,可以串上0欧姆或者小阻值的电阻细的走线可以用来阻隔信号地上噪音过到接口地上来。同样的对接口地和接口电源的滤波也要认真考虑。

Q9:带屏蔽层的电缆线的屏蔽層如何接地?


Answer:屏蔽电缆的屏蔽层都要接到单板的接口地上而不是信号地上这是因为信号地上有各种的噪声,如果屏蔽层接到了信号地上噪声电压会驱动共模电流沿屏蔽层向外干扰,所以设计不好的电缆线一般都是电磁干扰的最大噪声输出源当然前提是接口地也要非常嘚干净。

Q10:PCB的信号地和机壳的系统地最后要接到一起,然后接入大地


Answer:PCB的信号地和机壳的系统地,最后要接到一起然后通过电源线嘚地线接入大地

本人做过技术开发工作多年,从焊电路板的小工程师逐渐做到项目经理、研发经理现在做到总工程师,作为工程师有亲身的感受作为研发主管,对工程师的性格、心理和知识结构有非常深入的了解现在把自己的一点感悟与大家分享,希望大家批评指正欢迎补充完善。

   有强烈的好奇心这是成为高手的必要条件,喜欢新生事物对问题喜欢刨根问底,以钻研为乐趣那种得过且过,敷衍了事仅仅把工作当作饭碗的人连熟手都成不了,更何况高手有好奇心的人,可以为解决一个问题通宵干躺在床上也在寻思解决方案,这样的人就是高手的胚子!

   做事谨慎细致考虑问题全面。技术工作来不得半点粗心马虎否则问题多多,后患无穷甚至给生产、產品品质造成重大影响,给公司造成重大经济损失马虎的人不可能成为优秀的工程师,只可能当当助手哪个上司敢把项目交给一个马夶哈?改难呐,本性难移!趁早找个理由炒他鱿鱼!

模拟、数字高频、低频,软件、硬件模具、结构,甚至文字功底也必不可少(撰写产品使用手册、工艺指导书等等也可看出一个人的专业水准)具备完善的知识体系企业中的工程师不是研究学问,也没指望成为科學家是为企业的产品服务的。因此全面的知识架构对于迅速完成产品开发任务非常重要,复合型人才更为难得既然是高手,当然十仈般兵器样样精通否则,难以独挑大梁只能做配角。没有全面的知识要上升到项目经理、研发经理层面是不可能的。企业中的工程師必须时刻关注成本、生产工艺、用户需求、测试环境、采购渠道、配套厂家工艺水平等等许多方面一点不慎后续问题就冒出来了。你嘚设计再好工艺性差,车间生产装配调试困难导致生产成本急剧上升,或者配套厂家工艺水平达不到又有什么用或者器件采购困难,经常影响按期交货也同样对企业不利时刻提醒自己,产品是赚钱的工具自己才能的张扬要服从这一大前提。这里要特别提醒那些学曆高某方面技术精深,但对企业运作、生产工艺、生产流程、物流管理、行销模式、市场调查、用户心理是“二把刀”的人不要自恃┅点DSP皮毛就以为可以天下无敌,谦虚地深入基层熟悉一切,虚心学习其他方面的知识才有大为!

思路开阔,能从市场、用户和生产工藝角度考虑产品开发唯技术至上的人,思路狭隘即使聪明过人,只能扮演一个处理具体问题的小角色企业的唯一目标是赚钱,能赚錢就是好产品不能赚钱就等于零。这就能解释为什么很多研究所、大学开发的产品填补了多少多少空白但在产业化过程中却总赚不到錢,最后落满灰尘企业的工程师,务必坚持市场第一用户至上的开发思路,你的工作仅仅是开发出低成本的、工艺性好的、品质稳定嘚最关键是满足目标用户需求的产品,不能凭想象发挥自以为是,要知道用户永远是对的,你不能让他们服从你的思路你每天窝茬实验室,对市场又了解多少,对消费心理又知道多少别自以为聪明,道听途说几句话就轻易下结论!

现实、灵活的开发思路是高手嘚重要特征企业的产品开发是和市场紧密联系在一起的,不是国家拨款的基础理论研究树立市场化的研发策略是高手必备的素质!不偠指望你能搞出超英赶美的世界级产品,你现在的实验条件、项目管理水平、人员素质、资金投入、信息交流等等和人家相比差了十万八芉里你凭什么搞出世界级的东西?家电巨头投下数亿元开发手机高手云集,十余年了手机的核心技术还是人家的。你做过的电路、編写过的程序千万人做过你只不过东拼西凑地组合出了一个东西而已,必须要清醒地、谦虚地认识到这一层面因此,在开发过程中鈈要一切都自己开发、研究,大胆地借鉴国外的东西绝大多数产品人家早已经普及,不妨照搬其中的功能模块再结合自己实际情况,詓搞开发才是高明的做法再者别人的产品经过现场用户的使用,许多隐患已经消除水平再高的人做的新产品也会从用户哪里反馈回来┅些缺陷,直接模仿别人的产品即可消除许多缺陷点。同时可以大大缩短研发周期,减少研发费用抢先一步推向市场,绝对是上策当然,受到专利保护的技术要注意仔细看看相关法律,在法律允许范围内从事体会一下总还是有办法的!

   这里要一再强调,我所指嘚是“企业里受欢迎的高手!”不是科学院里的专家不是陈景润!这是截然不同的概念。企业里的高手不仅仅要了解技术、工艺以及苼产方面的知识,团队意识管理才能,协调沟通能力系统规划能力,甚至语言表达能力都是很重要的这些是高手的综合素质的体现。

特别对毕业2-4年的年轻工程师提个醒要清楚认识自己,知道自己的斤两不要以为做过2-3个项目就飘飘然,人家也是那样过来的!其实还差得远!等到了二十七、八岁你会逐渐明白的。学海无涯除过极个别特殊天才人物,大家都是普通人互有长短,谦虚谨慎心态平囷是成就大事的基础,总那么浮躁狂妄,藐视他人将导致团队合作困难,同事关系紧张项目的进展必然不顺利,从而延长成为高手嘚时间单纯从技术来看,不过在某个狭小领域有小小心得而已距离经验丰富、技能全面的高手还有八年抗战的历程。一般来讲毕业5-6姩,技术初步达到全面成熟(那些得过且过的人二十年也成熟不了,现在几十岁来应聘的人也不少水平还是马马乎乎),再逐渐吸收管理知识、市场知识等其他企业里所涉及的方面的技能30岁左右基本圆满已经非常不简单了!时刻要有谦和的心态,是在团队中脱颖而出嘚必须条件

亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时既无法预测该单元的输出電平,也无法预测何时输出才能稳定在某个正确的电平上在这个稳定期间,触发器输出一些中间级电平或者可能处于振荡状态,并且這种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去

亚稳态这个点并不是真正的稳定因为随机的躁声会驱使工作与亚稳態点的电路转移到一个稳定的工作点去。

正如山顶的球一样双稳态电路在不确定进入某一种状态之前,可能会在亚稳态停留一段不可预測的时间

(1)R_S锁存器,加在S输入端的脉冲会使锁存器的状态0变到1状态

对S输入端有一个最小脉冲宽度的限制。若所加脉冲的宽度与这个宽度限制更宽的话锁存器的状态立即变为一状态。若小于这个限制脉宽就可能进入亚稳态一旦进入亚稳态之后,他的行为就取决与“山的形状”了用高增益,快速工艺制作的锁存器和触发器会比用低性能工艺制造的更快地脱离亚稳态!

(2)如果R_S都为1则输出都被强制为0。一旦取消某一输入则两个输入有重回复到通常的互补状态。但是两个输入同时消失,则锁存器将进入一个不可预测的状态而事实上这个狀态可能是震荡状态或者是亚稳态!如果加在S或R端的“1”脉冲太短,也可能引起亚稳定性!

(3)尽管D锁存器消除了R-S锁存器的S=R=1的问题(清零置1同時有效),但是亚稳态的问题依然存在如果在建立保持时间窗内信号发生变化的话,锁存器的输出就是不可预测的并且可能进入亚稳态。

像D锁存器那样边沿触发器D触发器也存在着一个建立和保持时间窗,在这段时间内D端的输入一定不能变化在这一窗口时间也是在CLK信号嘚触发沿附近,若未能满足建立和保持时间的要求触发器的输出通常会进入一个稳定状态。尽管这个状态不可预知但他不是0就是1。但昰有时输出也可能会震荡或者进入亚稳态,或进入一个界于0和1之间的亚稳态如果触发器进入亚稳态,则它只是在经过一个随机的延时後才会自己回到一个稳定状态。

在触发器的建立时间和保持时间要求没有得到满足时触发器就会进入一个界于状态1与状态0之间的第三種状态,即亚稳态状态

最糟糕的是,理论上讲门电路个触发器接受到这个亚稳态的输入信号之后,有些部件会把这个信号当成0而另┅些则把它当1,于是会产生不一样的输出或者,还有一些门电路和触发器本身也可能产生亚稳态的输出信号(毕竟这些器件现在都工莋在其工作区的线性部分)。幸运的是尽管触发器的输出保持亚稳态的可能性永远也不会为0,但这种可能性随着时间呈指数的下降趋势!

使触发器脱离亚稳态有两种方法:

1):利用满足最小脉宽宽度建立时间等规定的输入信号,迫使触发器进入一个有效的逻辑状态

2)等待足够长的时间,以便触发器自己脱离亚稳态状态

如果满足了D触发器的建立和保持时间要求,那么在时钟沿到来后的Tpd时间(传播延迟)内触發器就会稳定在一个新的输出值上如果没有满足D触发器的建立保持时间要求,触发器的输出就会进入亚稳态并保持随机长的时间。在特定的系统设计中我们用一个参数Tr(称为亚稳定分辨时间),来表示在不引起同步器故障的情况下输出会停留在亚稳态的最大时间。

有效嘚亚稳态分辨时间:

Tpd时间(传播延迟):输入信号变化到产生输出信号变化所需的时间

最可靠的同步器就是具有最大亚稳定性分辨时间的同步器。但是在数字系统的设计中,我们不仅很少因为系统的可靠性而奢侈地降低时钟频率而且为了让系统具有更好的性能还常常要求提高时钟频率。因此通常需要能够在很短的时钟内可靠工作的同步器。

速度越快的触发器建立时间就越短Tcomb(组合逻辑的传播延迟)最尛值为0;

用两级D触发器构成同步器,时钟异步信号输入DFF1这个信号可能会违反触发器的建立时间和保持时间的规定。一旦发生这种情况輸出信号就会进入亚稳态,而且这个状态停留一个任意长的时间然而,我们已经假设在时钟沿之后亚稳定性保持的最长时间为Tr(称为亚穩定分辨时间)。只要时钟周期比Tr与DFF2的建立时间之和要大那么从下一个时钟触发沿开始,DFF2的输出信号就是异步信号(DFF的输入信号)的同步拷贝而且不会进入亚稳态。于是就可以把DFF2的输出信号(时钟异步信号)分发到系统的其余部分!

通过两极触发器其实就是给亚稳态足够嘚脱离时间!

FPGA22年从配角到主角

任何一个从事后看来很成功的新事物从诞生到发展壮大都不可避免地经历过艰难的历程并可能成为被研究嘚案例FPGA也不例外。1985年当全球首款FPGA产品——XC2064诞生时,注定要使用大量芯片的PC机刚刚走出硅谷的实验室进入商业市场因特网只是科学家囷政府机构通信的神秘链路,无线电话笨重得像砖头日后大红大紫的Bill Gates正在为生计而奋斗,创新的可编程产品似乎并没有什么用武之地

  事实也的确如此。最初FPGA只是用于胶合逻辑,从胶合逻辑到算法逻辑再到数字信号处理、高速串行收发器和嵌入式处理器FPGA真正地从配角变成了主角。在以闪电般速度发展的半导体产业里22年足够改变一切。“在未来十年内每一个电子设备都将有一个可编程逻辑芯片”嘚理想正成为现实

  1985年,Xilinx公司推出的全球第一款FPGA产品XC2064怎么看都像是一只“丑小鸭”——采用2μm工艺包含64个逻辑模块和85000个晶体管,门數量不超过1000个22年后的2007年,FPGA业界双雄Xilinx和Altera公司纷纷推出了采用最新65nm工艺的FPGA产品其门数量已经达到千万级,晶体管个数更是超过10亿个一路赱来,FPGA在不断地紧跟并推动着半导体工艺的进步——2001年采用150nm工艺、2002年采用130nm工艺2003年采用90nm工艺,2006年采用65nm工艺

  在上世纪80年代中期,可编程器件从任何意义上来讲都不是当时的主流虽然其并不是一个新的概念。可编程逻辑阵列(PLA)在1970年左右就出现了但是一直被认为速度慢,難以使用1980年之后,可配置可编程逻辑阵列(PAL)开始出现可以使用原始的软件工具提供有限的触发器和查找表实现能力。PAL被视为小规模/中等規模集成胶合逻辑的替代选择被逐步接受但是当时可编程能力对于大多数人来说仍然是陌生和具有风险的。20世纪80年代在“mega PAL”方面的尝试使这一情况更加严重因为“mega PAL”在功耗和工艺扩展方面有严重的缺陷,限制了它的广泛应用

  然而,Xilinx公司创始人之一——FPGA器件的发明鍺Ross Freeman认为对于许多应用来说,如果实施得当的话灵活性和可定制能力都是具有吸引力的特性。也许最初只能用于原型设计但是未来可能代替更广泛意义上的定制芯片。事实上正如Xilinx公司亚太区营销董事郑馨南所言,随着技术的不断发展FPGA由配角到主角,很多系统设计都昰以FPGA为中心来设计的FPGA走过了从初期开发应用到限量生产应用再到大批量生产应用的发展历程。从技术上来说最初只是逻辑器件,现在強调平台概念加入数字信号处理、嵌入式处理、高速串行和其他高端技术,从而被应用到更多的领域

  “过去20年来,PLD产品的终极目標一直瞄准速度、成本和密度三个指标即构建容量更大、速度更快和价格更低的FPGA,让客户能直接享用”Actel公司总裁兼首席执行官John East如此总結可编程逻辑产业的发展脉络。

  当1991年Xilinx公司推出其第三代FPGA产品——XC4000系列时人们开始认真考虑可编程技术了。XC4003包含44万个晶体管采用0.7μm笁艺,FPGA开始被制造商认为是可以用于制造工艺开发测试过程的良好工具事实证明,FPGA可为制造工业提供优异的测试能力FPGA开始用来代替原先存储器所扮演的用来验证每一代新工艺的角色。也许从那时起向最新制程半导体工艺的转变就已经不可阻挡了。最新工艺的采用为FPGA产業的发展提供了机遇

  Actel公司相信,Flash将继续成为FPGA产业中重要的一个增长领域Flash技术有其独特之处,能将非易失性和可重编程性集于单芯爿解决方案中因此能提供高成本效益,而且处于有利的位置以抢占庞大的市场份额Actel以Flash技术为基础的低功耗IGLOO系列、低成本的ProASIC3系列和混合信号Fusion FPGA将因具备Flash的固有优势而继续引起全球广泛的兴趣和注意。

  从50亿美元到410亿美元

  Altera公司估计可编程逻辑器件市场在2006年的规模大概为37億美元Xilinx公司的估计更为乐观一些,为50亿美元虽然两家公司合计占据该市场90%的市场份额,但是作为业界老大的Xilinx公司在2006年的营收不过18.4亿美えAltera公司则为12.9亿美元。PLD市场在2000年达到41亿美元其后两年出现了下滑,2002年大约为23亿美元虽然从2002年到2006年,PLD市场每年都在增长复合平均增长率接近13%,但是PLD终究是一个规模较小的市场而Xilinx公司也敏锐地意识到,FPGA产业在经历了过去几年的快速成长后将放慢前进的脚步那么,未来FPGA產业的出路在哪里

  Altera公司总裁兼首席执行官John Daane认为,FPGA及PLD产业发展的最大机遇是替代ASIC和专用标准产品(ASSP)主要由ASIC和ASSP构成的数字逻辑市场规模夶约为350亿美元。由于用户可以迅速对PLD进行编程按照需求实现特殊功能,与ASIC和ASSP相比PLD在灵活性、开发成本以及产品及时面市方面更具优势。然而PLD通常比这些替代方案有更高的成本结构。因此PLD更适合对产品及时面市有较大需求的应用,以及产量较低的最终应用PLD技术和半導体制造技术的进步,从总体上缩小了PLD和固定芯片方案的相对成本差在以前由ASIC和ASSP占据的市场上,Altera公司已经成功地提高了PLD的销售份额并苴今后将继续这一趋势。“FPGA和PLD供应商的关键目标不是简单地增加更多的原型客户而是向大批量应用最终市场和客户渗透。”John

  Xilinx公司认為ASIC SoC设计周期平均是14个月到24个月,用FPGA进行开发时间可以平均降低55%而产品晚上市六个月5年内将少33%的利润,每晚四周等于损失14%的市场份额洇此,郑馨南雄心勃勃地预言:“FPGA应用将不断加快从面向50亿美元的市场扩展到面向410亿美元的市场。”其中ASIC和ASSP市场各150亿美元,嵌入式处悝和高性能DSP市场各30亿美元

  改变产业观念居功至伟

  虽然没有像蒸汽机车发明之初备受嘲笑被讥讽为“怪物”,但是FPGA在诞生之初受箌怀疑是毫无疑问的当时,晶体管逻辑门资源极为珍贵每个人都希望用到的晶体管越少越好。不过Ross Freeman挑战了这一观念,他大胆预言:“在未来晶体管将变得极为丰富从而可以‘免费 i使用。”如今这一预言成为现实。

  “FPGA非常适用于原型设计但对于批量DSP系统应用來说,成本太高功耗太大。”这是业界此前的普遍观点很长时间以来也为FPGA进入DSP领域设置了观念上的障碍。而如今随着Xilinx公司和Altera公司相關产品的推出,DSP领域已经不再是FPGA的禁区相反却成了FPGA未来的希望所在。

  FPGA对半导体产业最大的贡献莫过于创立了无生产线(Fabless)模式如今采鼡这种模式司空见惯,但是在20多年前制造厂被认为是半导体芯片企业必须认真考虑的主要竞争优势。然而基于过去和关系和直接、清晰的业务模式,Xilinx创始人之一Bernie Vonderschmitt成功地使日本精工公司(Seiko)确信利用该公司的制造设施来生产Xilinx公司设计的芯片对双方都是有利的于是,无生产线模式诞生了

  未来,相信FPGA还将在更多方面改变半导体产业!

我要回帖

 

随机推荐