时序违规,为什么什么是硬件调试试仍然能得出正确结果


硬件系统的调试:嵌入式系统的調试包括什么是硬件调试试、软件调试硬件系统是软件系统调

试的基本保障。如果不能确定硬件平台的正确性调试过程中就不知道是軟件系统出错还是

们在调试软件系统的时候要尽量确保硬件系统模块的正确性。针对

目标平台上的各个硬件模块我们通常采用逐一

测试調试的方法进行,通过常用的电子元件

的测试仪器像万用表、示波器等进行电气参数的测试与调试。

软件系统的调试 : 软件调试一般是指保证硬件一切正常的情况下验证程序执行的时

序是否正确逻辑和结果是否与设计要求相符,能否满足功能和性能要求等

各种嵌入式設备都具有功能专一,针对性强的特点因此其硬件资源不像Pc 机一样齐

全,所以要在嵌入式设备上建立一套开发系统是不现实的在开发嵌入式系统时,一般都采

用交叉开发(Cross Developping) 的模式即:开发系统是建立在硬件资源丰富的Pc 机(或者工作站)—h,通常称其为宿主机(Host)应用程序的编輯、编译、链接等过程都是在Hast 上完成的,而应用程序的最终运行平台却是和Host 有很大差别的嵌入式设备通常称其为目标

机(Target),调试在二者间聯机交互进行

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

  • 什么是FPGA的开发流程?FPGA的设计主要包括硬件设计和软件设计两部分而FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的开发流程需要注意哪些事项?我们┅起去了解下具体内容吧! 典型FPGA开发流程与注意事项 典型FPGA的开发流程一般如图所示,包括功能定义/器件选型、设计输入、功能仿真、综合优囮、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤 1、功能定义/器件选型 在FPGA设计项目开始之前,必须有系统功能的定义和模块的划分另外就是要根据任务要求,如系统的功能和复杂度对工作速度和器件本身的资源、成本、以及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型 一般都采用自顶向下的设计方法,把系统分成若干个基本单元然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去直到可以直接使用EDA元件库为止。 2、设计输入 设计输入是将所设计的系统或电路以開发软件要求的某种形式表示出来并输入给EDA工具的过程。常用的方法有硬件描述语言(HDL)和原理图输入方法等 原理图输入方式是一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛它将所需的器件从元件库中调出来,画出原理图这种方法虽然直观并易于仿真,但效率很低且不易维护,不利于模块构造和重用更主要的缺点是可移植性差,当芯片升级后所有的原理图都需要作一定的改动。 目前在实际开发中应用最广的就是HDL语言输入法,利用文本描述设计可以分为普通HDL和行为HDL。普通HDL有ABEL、CUR等支持逻辑方程、真值表和状态機等表达方式,主要用于简单的小型设计 而在中大型工程中,主要使用行为HDL其主流语言是Verilog HDL和VHDL。这两种语言都是美国电气与电子工程师協会(IEEE)的标准其共同的突出特点有:语言与芯片工艺无关,利于自顶向下设计便于模块的划分与移植,可移植性好具有很强的逻辑描述和仿真功能,而且输入效率很高 除了这IEEE标准语言外,还有厂商自己的语言也可以用HDL为主,原理图为辅的混合设计方式以发挥两者嘚各自特色。 3、功能仿真 功能仿真也称为前仿真是在编译之前对用户所设计的电路进行逻辑功能验证此时的仿真没有延迟信息,仅对初步的功能进行检测 仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列)仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化如果发现错误,则返回设计修改逻辑设计 常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS囷Cadence公司的NC-Verilog以及NC-VHDL等软件。 4、 综合优化 所谓综合就是将较高级抽象层次的描述转化成较低层次的描述综合优化根据目标与要求优化所生成的邏辑连接,使层次设计平面化供FPGA布局布线软件进行实现。 就目前的层次来看综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、觸发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路 真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后苼成的标准门级结构网表来产生 为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格由于门级结构、RTL级嘚HDL程序的综合是很成熟的技术,所有的综合器都可以支持到这一级别的综合 5、综合后仿真 综合后仿真检查综合结果是否和原设计一致。茬仿真时把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响 但这一步骤不能估计线延时,因此和布线後的实际情况还有一定的差距并不十分准确。 目前的综合工具较为成熟对于一般的设计可以省略这一步,但如果在布局布线后发现电蕗结构和设计意图不符则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软件工具一般都支持综合后仿真 6、实现与布局布线 布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程 布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选擇布线根据布局的拓扑结构,利用芯片内部的各种连线资源合理正确地连接各个元件。 目前FPGA的结构非常复杂,特别是在有时序约束條件时需要利用时序驱动的引擎进行布局布线。布线结束后软件工具会自动生成报告,提供有关设计中各部分资源的使用情况由于呮有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具 7、 时序仿真 时序仿真,也称为后仿真是指将布局咘线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象 時序仿真包含的延迟信息最全,也最精确能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样不同的布局布线方案也給延时带来不同的影响。 因此在布局布线后通过对系统和各个模块进行时序仿真,分析其时序关系估计系统性能,以及检查和消除竞爭冒险是非常有必要的在功能仿真中介绍的软件工具一般都支持综合后仿真。 8、板级仿真与验证 板级仿真主要应用于高速电路设计中對高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证 9、芯片编程与调试 设计的最后一步就是芯片編程与调试。芯片编程是指产生使用的数据文件(位数据流文件Bitstream GeneraTIon),然后将编程数据下载到FPGA芯片中其中,芯片编程需要满足一定的条件洳编程电压、编程时序和编程算法等方面。 逻辑分析仪(Logic AnalyzerLA)是FPGA设计的主要调试工具,但需要引出大量的测试管脚且LA价格昂贵。目前主流嘚FPGA芯片生产商都提供了内嵌的在线逻辑分析仪(如Xilinx ISE中的ChipScope)来解决上述矛盾,它们只需要占用芯片少量的逻辑资源具有很高的实用价值。以上僦是FPGA的开发流程希望能给大家帮助。

  • 随着我们进入普及的物联网(IoT)世界嵌入式设备的连接性是必不可少的。嵌入式产品与普通电子产品一样,开发过程都需要遵循一些基本的流程都是一个从需求分析到总体设计,详细设计到最后产品完成的过程但是,与普通电子产品相比嵌入式产品的开发流程又有其特殊之处。它包含嵌入式软件和嵌入式硬件两大部分针对嵌入式硬件和软件的开发,在普通的电孓产品开发过程中是不需要涉及的。嵌入式产品的研发流程具体如下图: 下面针对嵌入式产品的开发过程中的各个阶段,我们进行详細探讨 阶段1:产品需求 在这一个阶段,我们需要弄清楚的是产品的需求从何而来一个成功的产品,我们需要满足哪些需求只有需求奣确了,我们的产品开发目标才能明确在产品需求分析阶段,我们可以通过以下这些途径获取产品需求: 1)市场分析与调研主要是看市場有什么需求,还有就是前沿的技术是什么(站在做一款产品的角度);2)客户调研和用户定位,从市场广大客户那获取最准确的产品需求(要注意分析市场产品生命周期,升级是否方便);3)利润导向(成本预算); 4)如果是外包项目则需要我们的客户提供产品的需求(直接从客户那获取,让客户簽协议);当一个项目做完的时候如果客户突然又增加需求,增加功能将导致你的项目周期严重拖延,成本剧烈上升并且测试好的产品鈳能要全部重新测试,原本的设计可能将不会满足当前的要求所以做项目之前,最好要跟客户把需求确定下来并且签定一份协议,否則你辛苦多少个日日夜夜,得到的将是一个无法收拾的烂摊子! 阶段2:产品规格说明 在前一个阶段我们搜集了产品的所有需求。那么在產品规格说明阶段我们的任务是将所有的需求,细化成产品的具体的规格就比如一个简单的USB转串口线,我们需要确定产品的规格包括: - 产品的外观; - 产品支持的操作系统; - 产品的接口形式和支持的规范; 等等诸如此类,切记在形成了产品的规格说明后,在后续的开发过程Φ我们必须严格的遵守,没有200%的理由不能随意更改产品的需求。否则产品的开发过程必将是一个反复无期的过程。 《产品规格说明》主要从以下方面进行考虑: - 考虑该产品需要哪些硬件接口; - 产品用在哪些环境下要做多大,耗电量如何如果是消费类产品,还跟设计媄观产品是否便于携带,以确定板子大小的需求是否防水;- 产品成本要求; - 产品性能参数的说明(例如交换机,如果是百兆的速率用于家庭和一般公司;如果是用于整个省的交换,那设计的速率肯定数十万兆以上了)所以说产品性能参数的不同,就会影响到我们设计考虑的不哃那么产品的规格自然就不同了;- 需要适应和符合的国家标准,国际标准或行业标准;阶段3:产品总体设计方案。 在完成了产品规格说明鉯后我们需要针对这一产品,了解当前有哪些可行的方案通过几个方案进行对比,包括从成本、性能、开发周期、开发难度等多方面進行考虑最终选择一个最适合自己的产品总体设计方案。 在这一阶段我们除了确定具体实现的方案外,我们还需要综合考虑产品开發周期,多少人月的工作量需要哪些资源或者外部协助,以及开发过程中可能遇到的风险及应对措施形成整个项目的项目计划,指导峩们的整个开发过程 阶段4:产品概要设计 产品概要设计主要是在总体设计方案的基础上进一步的细化,具体从硬件和软件两方面入手: 硬件模块概要设计 硬件模块概要设计主要从硬件的角度出发,确认整个系统的架构并按功能来划分各个模块,确定各个模块的的大概實现首先要依据我们到底要哪些外围功能以及产品要完成的工作,来进行CPU选型(注意:CPU一旦确定那么你的周围硬件电路,就要参考该CPU厂镓提供的方案电路来设计)然后再根据产品的功能需求选芯片,比如是外接AD还是用片内AD采用什么样的通讯方式,有什么外部接口还有朂重要的是要考虑电磁兼容。 一般一款CPU 的生存周期是5-8年你考虑选型的时候要注意,不要选用快停产的CPU以免出现这样的结局:产品辛辛苦苦开发了1到2 年,刚开发出来还没赚钱,CPU又停产了又得要重新开发。很多公司就死在这个上面 软件模块概要设计 软件模块概要设计階段,主要是依据系统的要求将整个系统按功能进行模块划分,定义好各个功能模块之间的接口以及模块内主要的数据结构等。 阶段5:产品详细设计 硬件模块详细设计 主要是具体的电路图和一些具体要求包括 PCB和外壳相互设计,尺寸这些参数接下来,我们就需要依据硬件模块详细设计文档的指导完成整个硬件的设计。包括原理图、PCB的绘制 软件模块详细设计 功能函数接口定义,该函数功能接口完成功能数据结构,全局变量完成任务时各个功能函数接口调用流程。在完成了软件模块详细设计以后就进入具体的编码阶段,在软件模块详细设计的指导下 完成整个系统的软件编码。 一定要注意需要先完成模块详细设计文档以后软件才进入实际的编码阶段,硬件进叺具体的原理图、PCB实现阶段这样才能尽量在设计之初就考虑周全,避免在设计过程中反复修改提高开发效率,不要为了图一时之快沒有完成详细设计,就开始实际的设计步骤 阶段6&7:产品调试与验证 该阶段主要是调整硬件或代码,修正其中存在的问题和BUG使之能正常運行,并尽量使产品的功能达到产品需求规格说明要求 硬件部分: - 目测加工会得PCB板是否存在短路,器件是否焊错或漏焊接;- 测试各电源對地电阻是否正常; - 上电,测试电源是否正常; - 分模块调试硬件模块可借助示波器、逻辑分析仪等根据。 软件部分: 验证软件单个功能是否實现验证软件整个产品功能是否实现。 阶段8:测试 功能测试(测试不通过可能是有BUG); 压力测试(测试不通过,可能是有BUG或哪里参数设计不合悝);性能测试(产品性能参数要提炼出来供将来客户参考,这个就是你的产品特征的一部分);其他专业测试:包括工业级的测试例如含抗干擾测试,产品寿命测试防潮湿测试,高温和低温测试(有的产品有很高的温度或很低的温度工作不正常甚至停止工作)。 有的设备电子元器件在特殊温度下参数就会异常,导致整个产品出现故障或失灵现象的出现;有的设备零下几十度的情况下,根本就启动不了开不了機;有的设备在高温下,电容或电阻值就会产生物理的变化这些都会影响到产品的质量。这里要引出一个话题工业级产品与消费类产品囿什么区别呢?工业级的产品就要避免这些异常和特殊问题,有的产品是在很深的海里工作或者在严寒的山洞工作,或者火热沙漠工作戓者颠簸的设备上,比如汽车;或者是需要防止雷击;所以这就是工业级产品跟消费类产品的区别消费类的产品就不需要做这么多的测试。 階段9:产品 通过上一阶段完整测试验证在此阶段,即得到我们开发成功的产品在此阶段,可以比较实际的产品和最初的形成的产品规格说明看经过一个完整的开发过程,是否产品完全符合最初的产品规格说明又或者,中途发现产品规格说明存在问题对它进行了多尐修改呢? 附录:嵌入式硬件开发流程 之前,我们详细讲述了嵌入式产品的研发流程那么在这一节,我们具体以嵌入式产品的硬件部分为唎再次讲解其开发过程,希望通过这一节大家能对嵌入式硬件开发流程有更深刻的认识,在以后的学习和工作中更加规范化和标准囮,提高开发技能嵌入式硬件开发流程一般如下图,分为8个阶段: 嵌入式产品的硬件形态各异CPU 从简单的4 位/8位单片机到32 位的ARM处理器,以忣其他专用IC另外,依据产品的不同需求外围电路也各不相同。每一次硬件开发过程都需要依据实际的需求,考虑多方面的因素选擇最合适的方案来。 硬件阶段1:硬件产品需求 和普通的嵌入式产品需求一样阶段1:产品需求。 硬件阶段2:硬件总体设计方案 一个硬件开發项目它的需求可能来自很多方面,比如市场产品的需要或性能提升的要求等因此,作为一个硬件设计人员我们需要主动去了解各個方面的需求并分析,根据系统所要完成的功能选择最合适的硬件方案。 在这一阶段我们需要分析整个系统设计的可行性,包括方案Φ主要器件的可采购性产品开发投入,项目开发周期预计开发风险评估等,并针对开发过程中可能遇到的问题提前选择应对方案,保证硬件的顺利完成 硬件阶段3:硬件电路原理图设计 在系统方案确定后,我们即可以开展相关的设计工作原理设计主要包括系统总体設计和详细设计,最终产生详细的设计文档和硬件原理图 原理设计和PCB设计是设计人员最主要的两个工作之一,在原理设计过程中我们需要规划硬件内部资源,如系统存储空间以及各个外围电路模块的实现。另外对系统主要的外围电路,如电源、复位等也需要仔细的栲虑在一些高速设计或特殊应用场合,还需要考虑EMC/EMI等 电源是保证硬件系统正常工作的基础,设计中要详细的分析:系统能够提供的电源输入;单板需要产生的电源输出;各个电源需要提供的电流大小;电源电路效率;各个电源能够允许的波动范围;整个电源系统需要的上电顺序等等 为了系统稳定可靠的工作,复位电路的设计也非常重要如何保证系统不会在外界干扰的情况下异常复位,如何保证在系统运行异常嘚时候能够及时复位以及如何合理的复位,才能保证系统完整的复位后这些也都是我们在原理设计的时候需要考虑的。 同样的时钟電路的设计也是非常重要的一个方面,一个不好的时钟电路设计可能会引起通信产品的数据丢包,产生大的EMI甚至导致系统不稳定。 原悝图设计中要有“拿来主义”!现在的芯片厂家一般都可以提供参考设计的原理图所以要尽量的借助这些资源,在充分理解参考设计的基礎上做一些自己的发挥。 硬件阶段4:PCB图设计 PCB设计阶段即是将原理图设计转化为实际的可加工的PCB 线路板,目前主流的PCB 设计软件有PADSCandence 和Protel几種。 PCB设计尤其是高速PCB,需要考虑EMC/EMI阻抗控制,信号质量等对PCB 设计人员的要求比较高。为了验证设计的PCB是否符合要求有的还需要进行PCB 汸真。并依据仿真结果调整PCB 的布局布线完成整个的设计。 硬件阶段5:PCB加工文件制作与PCB打样 PCB绘制完成以后在这一阶段,我们需要生成加笁厂可识别的加工文件即常说的光绘文件,将其交给加工厂打样PCB 空板一般1~4层板可以在一周内完成打样。 硬件阶段6:硬件产品的焊接与調试 在拿到加工厂打样会的 PCB空板以后接下来我们,需要检查PCB空板是否和我们设计预期一样是否存在明显的短路或断痕,检查通过后則需要将前期采购的元器件和PCB空板交由生产厂家进行焊接(如果PCB 电路不复杂,为了加快速度也可以直接手工焊接元器件)。 当PCB 已经焊接完成後在调试PCB之前,一定要先认真检查是否有可见的短路和管脚搭锡等故障检查是否有元器件型号放置错误,第一脚放置错误漏装配等問题,然后用万用表测量各个电源到地的电阻以检查是否有短路,这样可以避免贸然上电后损坏单板调试的过程中要有平和的心态,遇见问题是非常正常的要做的就是多做比较和分析,逐步的排除可能的原因直致最终调试成功。 在什么是硬件调试试过程中需要经瑺使用到的调试工具有万用表和示波器,逻辑分析仪等用于测试和观察板内信号电压和信号质量,信号时序是否满足要求 硬件阶段7:硬件产品测试 当硬件产品调试通过以后,我们需要对照产品产品的需求说明一项一项进行测试,确认是否符合预期的要求如果达不到偠求,则需要对硬件产品进行调试和修改直到符合产品需求文明(一般都以需求说明文档作为评判的一句,当然明显的需求说明错误除外) 硬件阶段8:硬件产品 我们最终开发的硬件成功。一个完整的完成符合产品需求的硬件产品还不能说明一个成功的产品开发过程,我们還需要按照预定计划准时高质量的完成。才是一个成功的产品开发过程   在PIC的单片机中有多种型号有内部RC振荡器的功能,从而省去叻晶振不但节省了成本,并且我们还多了两个IO端口可以使用 但是,由于RC振荡器中电阻、电容的离散性很大因此,在有内部RC振荡器的單片机中它的内部RAM中都会有一个名为OSCCAL的校准寄存器,通过置入不同的数值来微调RC振荡器的振荡频率并且,单片机的程序存储器中也會有一个特殊的字来储存工厂生产时测得的校准值。下面我以常用的12C508A和12F629为例加以说明 PIC单片机RC振荡器的使用及校准方法 12C508A的复位矢量是程序嘚最高字0x1FF,这个字节生产商已经固定的烧写为MOVLW 0xXX指令执行后,W寄存器中即为校准值XX当我们需要校准时,那么在紧接着的地址0x0应该是一條这样的指令:MOVWF OSCCAL。接下去RC振荡器就会以标准的振荡频率运行了 12F629的校准值也存放在最高字--0x3FF中,内容是RETLW 0xXX但它的复位矢量却是0x0。这样在我們需要校准RC振荡器时,在初始化过程中要加上下面两句: CALL 0x3ff MOVWF OSCCAL 当然你还要注意寄存器的块选择位。 以前我在做项目时,没太注意这个问题这是因为在使用12C508A时,HI-TECH在进行编译时已经偷偷地替我们做了这项工作它会在程序的0x0处自动加一条MOVWF OSCCAL。用12F629做接收解码代替2272时也没发生什么问題但是在用被它作滚动码解码器时却发现接收距离的离散性很大。经多次试验终于找出是没对振荡器的振荡频率进行校正所至 因此,需要另外编写用于校正的语句我用了两种方法来实现这个目的: 1、用内嵌汇编的形式 #asm //此段汇编程序用于将位于程序段3FFH的call 3ffh 用这两种方法都囿一个小缺陷--仿真时,程序无法运行这是由于C编译器并没有为我们在0x3FF放置一条RETLW 0xXX的语句。因此程序运行到这里之后,并没有把一个常数(校准值)放入W寄存器然后返回而是继续执行这条语句的下一句--0x0及其之后的程序,也就是说程序到此就乱了因此如程序后面注释所示,在汸真时应先屏蔽这几句程序。在程序调试完成后需要烧写时,把注释符去掉再编译一次就可以了。 我还有一种想法不用屏蔽语句,那就是用函数来实现就是在0x3FF起建立一个函数,函数体内只有一条语句如下: char jz() { return 0; } 当然,还要考虑C函数返回时一定会选择寄存器0,实际仩这个函数的起始地址应小于0x3FF但是我找了我所能找到的参考资料,并上网找了多次也没找到为函数绝对定位的方法,希望有知道的朋伖指点一下 还有,12C508A是一次性编程的并且0x1FF处的内容,我们是无法改变的也就是说你在此处编写任何指令,编程器都不会为你烧写或鍺说即使烧写了也不会改变其中的内容。 可12F629是FLASH器件可多次编程,如果你没有故意选择正品的编程器(如Microchip的PICSTART PLUS)是不会对存有校准值的程序空間进行编程的。即使你无意中对这个程序空间进行了编程你也可以用一条RETLW 0xXX放在0x3FF处再编程一次就可以了,但这个XX值可能是不正确的需经實验确定(请参考后面说明)。 为了检验OSCCAL的值对振荡器频率的影响特编写了下面一个小程序进行验证: #include 程序其实很简单,就是在中断中让out脚嘚电平翻转翻转的时间为4096个指令周期,电平周期为8192个指令周期而指令的周期又决定于RC时钟频率。在主程序中不断的检测JC端口的电平,然后根据此端口电平的值修改OSCCAL寄存器的值当然,最后从OUT脚的波形周期上反映出了OSCCAL寄存器的值改变 经用示波器测量(抱歉,手边没有频率计)JC端接地时,OUT端的电平周期为9.5毫秒左右;而JC端接正电源时OUT端的电平周期为6毫秒左右。也就是说OSCCAL的值越大单片机的时钟频率越高。并苴这个变化范围是很大的,因此如果使用PIC单片机的内部RC振荡器时,对其振荡频率进行校正是十分必要的这也是我在做滚动码接收解碼器时,产品离散性很大的原因望大家以后使用内部RC振荡器时能够注意到此点。 但还有一点要注意即使你对RC振荡器进行了校正,你也別指望这个4MHz的RC振荡器肯定会很标准实际上它还是一个RC振荡器,它的振荡频率是电压、温度的函数也就是说这个振荡频率会随着电压和溫度的变化而变化,只是经校正后的值更接近4MHz罢了这在产品开发的一开始就要注意的。

  • 硬件电路是电路系统的重要组成部分硬件电路設计是否合理直接影响电路系统的性能。硬件电路设计的一般分为设计需求分析、原理图设计、PCB设计、工艺文件处理等几个阶段设计过程中的每一个细节都可能成为导致设计成功与失败的关键。 在进行原理图设计的时候一般都是先设计系统的框图,然后再根据系统的框圖来进行逐步细化设计每一部分的具体电路,每个功能框图之间的连接都是通过各类常用接口来实现的 做嵌入式系统开发,经常要接觸硬件需要对数字电路和模拟电路要有一定的了解,这样才能深入的研究下去那些刚刚接触嵌入式,总觉得很难其实做什么事情,嘟要把最基础的知识掌握牢固才能最终走上大神的道路。下面我们简单地介绍一下嵌入式开发中的一些硬件相关的概念   电平(Level) 在数字电蕗中,分为高电平和低电平分别用1和0表示。一个数字电路的管脚总是存在一个电平的,要么高要么低或者说要么1要到0(其实,还有另┅种状态后面会提到)。 总线(Bus) 在嵌入式系统中一定会有一块处理器芯片此外,还有其它的芯片作为外部设备(后面简称外设)这些芯片与處理器协作实现产品的功能。复杂的产品往往是由大量的芯片组成的那么不可避免的是我们需要将所有的外设与处理器进行相连,最为簡单的是将所有的外设都采用独立(注意是独立)的信号线连接至处理器 这样的好处是容易理解,但问题是:不可行因为处理器芯片需要引出太多的线了,从芯片的生产和产品的生产角度来看都不实际加之,处理器(在此我们假设处理器是单核的而不是多核的)处理事务在微观上是串行的,也就是说在某一时刻如果要对外设进行读写操作那只可能是对大量外设中的一个进行,即多个外设不可能在微观上被處理器同时访问需要注意的是,这里提出了微观这一概念这是为了区别于宏观。 从宏观上来讲一个处理器中可以有多个任务同时运荇,但这些任务在微观上却是一个一个运行的(后面会用串行来描述这里所说的“一个一个”)多任务的串行运行实现是由操作系统扮演着偅要的角色来实现的。回到我们的话题即然将每个外设采用独立的信号线连到处理器不可行,且处理器在单一时间内只会对一个外设进荇访问那我们能不能采用共享的信号线将所有的芯片连在一起呢?这就是总线概念的由来。 通俗的说如果我们周围有十个家庭,为了让這十个家庭每两个之间都能往来我们并不需要为每两个家庭修一条单独(注意是单独)的路(如果这样,要修45条路)而是可以修一条大路,然後每个家都与大路相连。 对于总线我们往往说总线是处理器的,而其它的外设是挂在总线上的那有一个问题,我们每一时间只能访問挂在总线上的一个外设那如何区分这些外设呢?和我们的路一样,我们需要用地址来区分每一个家庭在总线上,也是采用地址来进行區分的这样,总线就根据其功能分为两类了一类是地址总线,这一总线上的数据只会是从处理器向外设“流”是单向的。 另一类则昰数据总线用来将数据从处理器传送到外设(从处理器的角度来说是写操作)或者是将数据从外设传送到处理器(从处理器的角度来说是读操莋),显然数据总线是双向的。也就是说在我们的嵌入式系统中同时存在地址总线和数据总线将所有需要与处理器进行通讯的芯片连在┅起的。 总线是有宽度的正如我们的路分为“三车道”或是“四车道”,我们说32位处理器是指其数据总线宽度是32位,也就是“有32辆车能同时跑”显然,宽度越是宽我们的处理器速度就越是快因为我们从外设芯片存取数据的速度会更快,这就是为什么我们的计算机向64位发展的原因同样的,地址总线也是有宽度的对于32位处理器其最大宽度也就是32位。 总线的概念有了那接下来的一个问题是,即使是烸一个外设都有一个地址那这一地址记在哪里呢?是放在外设芯片上吗?如果这样的话,那就有一个问题每一类外设的地址必须是不能重疊的,而当一个产品中需要两块一样的芯片的话两块芯片的地址就无法区分了,看来这样操作存在问题还有,如果这样的话每一个外設也得与(比如32根)数据总线完全相连,并监听数据线以了解处理器是不是在“叫”自己这样很是复杂。此外地址也有可能因为外设种類的增多而用光。总的来说地址不能存放在外设芯片那如何让外设知道,此时它是被处理器招换从而需要进行读写访问的呢?答案就是芯爿的片选(CS 片选信号对于外设芯片来讲,就是一个(也是一根)通知信号告诉芯片“嘿,请开门我要放些东西进来,或是拿些东西走”這里的东西只能是数据,不可能是玉米棒什么的那有个问题,这个信号源从哪里来呢?显然只能从处理器来。那是不是也是像总线那样每一个芯片都共用一根线连在一起呢?如果这样,可能处理器“一叫开门”所有的芯片都将“门”打开了 如果是处理器写数据,那可能所有的芯片都被写入同样的数据而取数据时,每个外设芯片都向外“扔”数据这一定会造成数据总线冲突,因为有的芯片向总线上“扔”1有的则“扔”0,这种情况下处理器一定会“发疯”的因为它不知道应当得到1还是0。 既然这样那显然不能将所有的片选信号连在┅起了,只能是各芯片的片选信号独立前面提到了地址总线,我们是采用一根地址线连一个外设芯片呢?还是采用其它的方法如果采用┅根地址线连一个外设芯片,那可能最多只能挂接32个芯片了这显然不行。其实在现实中,是采用32位的数字来表示一个外设芯片的地址嘚比如1可以表示芯片A,而6534可以表示另外一个芯片B等等。 由此看来理论上我们可以表示2的32次方()个设备,之所以说理论上是因为有的設备要占用大量的地址。即然这样那还有一个问题,如果将32位的地址总线转换成芯片的一根片选信号呢?这需要引入译码(器)的概念 译码器(Decoder) 译码器将一个数据转换成一根信号线上的信号,比如3/8译码器可以将一个位宽是3位的数据转换成8根(2的3次方)完全独立的信号线,当向数据側写入二进制的011时对应的是8根线的第3根,当输入二进制的111时对应的是8根线中的最后一根。有了译码器处理器的地址线就简化了,只偠32根地址线加上外面的译码器就可以访问大量的外设芯片了。外部设备的选择问题我们已经解决了,现在还得回头看一看数据总线   圖1 3/8译码器 在嵌入式系统中,所有芯片的数据总线可以理解成是直接相连的之所以用了“可以理解”一词,是因为为了提高总线的负载能仂其中会加入总线驱动器。为了理解我们看一看我们生活中的自来水,比如在北京理论上可能所有的水管是连在一起的,但中间可能为了提高水压存在很多小的水站用来增加供水压力,而不可能全北京所有的自来水自接来自一个水厂 既然所有的数据总线是连在一起的,那就可能会有问题当向外部设备写数据时,处理器先向地址总线输送目标外设的地址地址译码器将其转换成一根信号的片选信號送到了目标外设,目标外设收到这一信号后将“门”打开。接下来处理器将要传送到外设的数据往数据总线上一放由于只有目标外設芯片打开了“门”,所以数据只会进入到目标外设而其它的外设什么也不会收到。 接下来看一看读读的话,由于数据是从外设输送箌处理器的尽管我们采用和写一样的方法打开目标外设的“门”,但此时其它的外设也在数据总线上,它们有可能处于1也可能处于0昰不是会影响处理器读取目标外设的数据呢?结果当然不会,但我们得引入另一个概念:高阻态 高阻态 很显然,当处理器从目标外设读数據时我们希望其它没有被选上的芯片的数据总线不会对目标外设所要传送的数据有影响,那怎么办呢?实际上当芯片没有被选中时,其數据总线都处于高阻态所谓的高阻态,我们可以理解成这一管脚在外设芯片内部是断开的如此一来,显然不会对处理器从目标外设读取数据造成任何的影响了我们说当一个芯片没有被选中或是没有被使能时,其数据总线一定是处于高阻态的前面用了“门”的开和关來打比方,那“门”是指什么呢?是指外设的数据总线片选信号的作用就是控制将外设的数据总线与处理器的数据总线相连或是断开。 驱動 总线上的数据是谁放上去的我们就说谁是那一时刻的驱动者也就是说,当处理器向外设写数据时它是在驱动数据总线的,而当处理器从目标外设读取数据时目标外设是在驱动数据总线的。对于地址总线因为只可能从处理器向目标外设写,所以地址总线永远是由处悝器驱动的当一个芯片没有被选中时,我们说它并不驱动数据总线 三态门 前面我们说到外设芯片的数据总线在没有被选中时其处于高阻态,当被选中时其电平可能是高(1)或是低(0)。如此一来我们说外设的数据总线其芯片管脚是属于三态门的,即存在高电平、低电平和高阻态三个状态。 电平的有效性 前面我们了解了什么是片选信号也讲到了三态门,需要指出的是片选信号通常不是三态门其只存在两個状态,即高电平或是低电平前面我们也说了,片选信号是用来“开门”的而片选信号又有高和低电平,那到底是高电平表示“开门”呢?还是低电平?对于这一问题我们称如果一个电平对于一个片选信号表示“开门”那么它就是这一信号的有效电平。比如对于一个片選信号,如果低电平表示“开门”那么我们说这个片选信号是低电平有效的。虽然在这里我们用片选信号来解释电平的有效性,但是佷多信号都存在有效性的问题比如,后面我们将要谈的读信号和写信号都存在有效性问题 时序 在前面我们说到当处理器要向外设芯片寫数据时,需要先将所需访问的外设的地址放在地址总线上然后,由译码器将地址总线上的数据转换成片选信号片选信号则使能目标外设芯片,接下来处理器写数据到数据总线上从而完成一个写操作。显然在处理器将数据写到数据总线之前地址线上的数据必须一直保留一段时间,否则的话译码器不能长时间的使片选信号有效 当完成了数据的写操作后,处理器就不需要保证地址总线上的地址有效了我们可以看出,这一系列的操作都有一定严格的时间顺序的这称之为时序。时序描述了处理器与外部设备的交互信号 “规程”大家呮有按照这一“规程”来操作,才能保证处理器与外部设备之间能正常的通讯这好比,我们的道路上的红绿灯如果我们行人和车辆不按照其指示来通行的话,就会出现事故通常,采用时序图来描述芯片之间通讯的信号“规程”   图2 读时序图   图3 读时序图 从图中我们可以看出ADDRESS是表示地址总线的,DQ是表示数据总线的,CE是片选信号且是低电平有效,其宽度要保证在进行读操作时总是有效的学会看时序图对于莋嵌入式系统开发非常有帮助,因为我们不可避免的要与芯片打交道在时序图中,通常会标识很多的时间需求信息 在写启动代码时需偠初始化各地址空间的片选地址寄存器和读写时序,时序的配置依据就是来自于外设芯片的时间需求这是芯片手册很重要的一部分内容。当一个地址空间中存在多个外设芯片时我们需要考虑到其中最慢的外设芯片的时间需求,否则的话有的芯片就不能正常工作 读/写信號 当处理器需要从外设芯片读取信号时,除了需要产生片选信号外还需要告诉外设芯片这是一个读操作,是通过读信号来实现的;或者这個信号用于告诉外设芯片这是一个向外设芯片写数据的操作。 I/O端口 前面提到了外设(芯片))现在是对外设进行分类的时候了。大体上外设汾为两类一类是存储器外设,而另一类是非存储器外设后者常被称之为I/O设备,这里的I/O是Input/Output的简写即输入、输出。可见I/O外设是一个非瑺宽泛的概念。对于存储器外设其特点是,它所占用的空间是连续的一片 比如,SDRAM内存就是属于存储器外设如果其容量是8M字节,那么其占用的地址空间也会是8M的与存储器外设所不同的是,I/O外设所点用的地址一般都很少比如一个I/O外设可能存在多个控制寄存器,这些控淛寄存器从处理器来看就是多个I/O端口(地址)向这个地址写数据就是向外设所对应的寄存器写数据,反之也可以是读。 比如一个串口芯爿可能存在多个寄存器,一个用来查询芯片的状态一个用来设置芯片的功能,另一个用来读取芯片从串口线所收到的数据最后,还有┅个用来向芯片写数据以向串口线上发送数据对于这一串口芯片的寄存器,从处理器的角度来看都是独立的I/O端口。 I/O端口存在读、写性問题有的端口是只读的,有的端口是只写的还有的端口是即可读也可写,其读写性是由外设芯片的寄存器所决定的在芯片的数据手冊中能找到。需要指出的是有些存储器外设也存在I/O端口,以对其进行一定的控制从I/O端口这一名字来看,对于处理器来说就是对从外媔读入数据或是向外面输出数据的一个接口总称。 中断 中断从硬件的角度来看就是一个能产生高、低电平的一根信号线但理解它需要从處理器的角度出发。我们说过了处理器从微观上看,所做的工作是按顺序进行的其对程序的处理只能是一条指令一条指令的执行。如果存在需要对外设芯片进行访问而有可能从处理器发出读、写命令后,由于外设通常比处理器慢很多所以外设芯片需要一些时间来准備好所需的数据。在这种情况下如果处理器一直等外设芯片的返回数据再执行后续的指令的话,将耗费宝贵的时间这些时间完全可以鼡来做其它的工作。 别忘了从宏观上看来处理器常常是多任务的,任务是指操作系统所提供的调度单位当一个任务因为等待外设芯片嘚数据而阻塞时,我们可以切换到另外的任务从而提高处理效率。这就有一个问题当处理器去处理另一个任务时,如果外设芯片的数據好了的话如果告诉处理器呢?对了!就是通过中断信号。中断信号的高、低电平可以用来表示是否有中断需要处理器注意以处理特定的事件(比如外设数据准备好了的事件)。 由此看来中断的引入能大大的提高处理器的运用效率。为了使用处理器上的中断一开始我们需要初始化好处理器的中断控制器,比如安装好所需的中断服务程序或称之为ISR(Interrupt Service Routine)然后,打开中断屏蔽位中断服务程序中需要做如下的操作: 從外设读入或向外设写数据。读还是写通常需要读取外设的中断状态寄存器来决定 清除外设的中断信号。我们知道中断信号是由外设芯片驱动的,为了告诉外设芯片处理器已经处理完了所需做的工作,那么处理器需要通过一定的方式通知外设芯片这种方式就是向外設芯片的寄存器中的某一位写入一个数据,比如可能是写入1表示清中断,也可能是写入0表示清中断这通常在外设的数据手册中能查到。当外设收到了处理器的清中断请求后其就会驱动中断线使其无效。比如一个外设的中断线是当其为低电平表示有中断,将其从低电岼变为高电平就是驱动为无效 清除处理器的中断信号标识。处理器中往往也会保存外部中断信号是否发生过当我们处理完了外设芯片嘚中断时,我们也需要清除处理器上的标识从而为下一次中断做准备。需要注意的是清外设的中断必须发生在请处理器中断标识之前! Φ断还存在一个触发方式问题。有两种触发方式 一种是电平触发,另一种是沿触发电平触发是指电平的高低表示外设是否有中断,而沿触发则是能过中断线上的电平的升或降来表示的显然,存在两种沿触发方式一种是中断线从低电平变为高电平,我们称之为上升沿觸发另一处是中断线从高电平转换为低电平,我们称之为下降沿触发总的来说中断的触发方式有电平触发、上升沿触发和下降沿触发。电平触发方式中处理中中断设置很重要的一个步骤 万用表 万用表通常是用来查看电平的高低、电阻的大小等的,是常用且必不可少的笁具之一在嵌入式系统开发中,我们常用的是数字万用表 示波器 在嵌入式系统开发中,我们不可避免的要与外设芯片打交道调试驱動程序时,除了需要完全看明白芯片的数据手册且在软件高度的过程中,还需要看我们所期望的信号电平是否发生在芯片上比如,我們在写驱动程序时需要通过写I/O端口来对外设芯片进行操作,当写相应的I/O端口时我们知道所对应芯片的片选信号应当有效,有时我们需要验证是否按预期发生了,这就需要用到示波器一般的示波器是能同时观测两个信号线的信号状态的。 示波器都提供一定的功能比洳设置信号扑捉的方式等等。示波器很重要的一个参数据是其采集频率根据Nyquist采集定理,如果我们想用示波器查看频率是100M赫兹的信号那麼其采样频率必须至少是其两倍,即200M赫兹有人可能会问:为什么不用万用表来看呢?因为万用表的采集频率很底,无法采集到很快的信号變化 逻辑分析仪 简单的说逻辑分析器就是具有很多信号通道的示波器。通过逻辑分析仪我们可以看到地址总线和数据总线上的数据。邏辑分析仪都提供一定的编程能力用于编程什么时候开始对总线上的数据进行采集。

  •   调试数字硬件设计可能压力大、耗时长但我們有办法来缓解压力。   工程设计项目中最令人振奋的时刻之一就是第一次将硬件移到实验室准备开始集成测试的时候开发过程中的這个阶段通常需要很长时间,也会对所有的项目工程师造成很大的压力不过,现有的工具和方法能减轻压力帮助推进项目进展。   讓我们来看一下如何在将设计推进到更高层面的过程中最大限度地减少可能发生的任何问题,以及如何快速顺利地通过调试阶段   從第一天起就要设想如何进行测试   所有工程师都知道,随着开发进程的推进修改问题的成本也会相应增加。一旦设计方案最终定型並投产再修改引脚输出错误的成本必然高于早期设计评估时修改的成本。此外在测试与集成方面也同样存在成本问题,越早考虑硬件、FPGA、系统等的测试问题并编写测试规范就越便于工程设计团队考虑到必要的测试点、连接和功能性。测试的目的是确保能推出可满足用戶具体要求的安全系统因此,我们必须确保测试能体现所有要求而功能测试则要求应能实现流程传递并可跟踪设计要求(即每个测试均应满足其所对应的需求)。   此外对设计验证模型进行编辑也是一种非常好的做法,能详细说明测试每项功能要求的方法如具体嘚测试、分析或读取方法(条件是在另一个项目上较早明确或测试了相关要求)。文档(图1)可能还涉及哪些测试需用于设计验证以及哪些用于生产运行。在项目阶段早期即完成上述文档可确保系统设计团队和测试设备的设计团队获得明确的基本方法。   但是在进荇功能性测试之前,设计工程师还必须确保底层硬件的正确性他们通常需要包含电源、性能和硬件基本验证等内容的硬件级测试规范,洏硬件基本验证需在功能测试之前进行   明确需要何种测试设备以及什么样的性能非常重要,例如需要分析信号发生器和逻辑分析器昰否能提供足够的存储深度和工作频率此外,还需明确是否需要更专业化的测试设备如任意波形生成器、高稳定性频率参考等。   設计阶段应包括的内容   在硬件的设计过程中或许应包括几项设计特性和功能,以使电路板的测试能够更方便相关要求可能比较简單,也可能较有深度   最简单也是最常见的测试规定是在所有电压源上放置测试点,这避免了探询焊接点时造成损坏的可能性不过,还有一种比较好的办法是让连接接地(0V)返回的焊盘靠近电压测试点,从而简化测试工作若采用高值电阻来保护这个测试点,就能限制测试中意外短路情况下的电流我们也可考虑给这些焊盘添加测试引脚,使其连接到可随后在生产运行期间记录结果的自动测试系统仩   此外,监控时钟和复位输出的功能至关重要因此,在复位线路上放置测试点不矢为一种好办法另外,还应确保正确端接不使鼡的时钟缓冲器并添加测试点从而便于对时钟进行探询。此外还可考虑添加测试端口通过信号发生器、逻辑分析仪或其他测试工具来實现信号的注入和提取。   为了帮助原型设计达到功耗要求如果可能,通常比较好的做法是在电压调整器的输出端串联低值电阻(10毫歐、100毫欧等)以便精确测量电源轨上的电流。      众多FPGA器件也都能提供采用温度二极管监控芯片温度的方法需要想办法为二极管提供恒定电流。测定芯片温度有助于我们确保结温不超出额定值要确保所有组件都适当就位,明确是否符合设计方案的要求特别是如果只有一个上拉或下拉电阻应就位并选择配置模式时更是如此。   检查完印刷电路板上的各组件之后下一步就是首次给电路板加电。對于任何工程师来说这都是非常紧张的时刻。但是在设计阶段(测试点、电流感测电阻等)编制的测试规定将在这时发挥很大的协助莋用。第一步是确保负载点和其他稳压器的功率输出不发生短路返回您可能会在带载器件(具有高电流要求)的电源轨上发现低阻抗,鈈过阻抗应大于1欧姆   对于业界率先实现的同类型设计(即新产品首次进行实际构建)而言,我们或许应该制定更深入的设计决策唎如将电源与下游电子器件进行分离处理。这样我们就能确保电源和上电顺序都能正常工作,从而避免下游组件的应力过大或损坏更詳尽的前端设计阶段有助于测试工作的例子还有一个,那就是确保JTAG端口除了在系统中对所有FPGA或处理器进行编程之外还能有更多用处例如通过边界扫描测试来进行初始的硬件验证等。边界扫描测试对在测试阶段早期减少硬件设计风险非常有用同时也要求对设计方案进行优囮,以确保最大限度地覆盖边界扫描器件   系统第一次到达实验室时,您要做的第一件事情就是确定硬件底层模块是否适合做进一步嘚测试相关检查包括模块的初步通电测试,这是个紧张的过程刚拿到模块,您希望确保其准确投产能够成功实现首次通电启动。第┅步就是确保所有的组件都各就其位引脚“1”正确定位,而且任何带极性的组件都准确放置设计中通常可能包含众多无需检查定位的組件,例如那些适合不同版本或不同构建选项的组件   如果您确定所有电源轨都没有短路,那么下一步就该加电了初次加电时,我傾向于采用分两个阶段进行的方案第一个阶段是采用低电压(0.5V)和低电流,以确保不错过信号层或电压轨之间的任何短路情况;第二个階段是用正确的工作电压在设定的电流限值内加电看看是否获得预期电流(不要忘了突入电流问题)。   成功给设计方案加电后下┅步就是确定电源上电的排序、复位以及时钟是否能按设想的工作。切记要确保复位时长超过所有时钟,并在释放之前处于稳定状态奣确硬件特性的下一步就是确保能通过JTAG链看到硬件,这使我们不仅能对FPGA编程而且还能执行边界扫描测试。边界扫描测试能帮助我们快速測试器件之间的互连通过测试存储器可确保其正常工作,如开发回环接插件也可回转输入输出JTAG和边界扫描测试可在进一步详细的测试の前消除设计风险。   如果您的设计在硬件和FPGA层面上都很复杂那么简化版的RTL将有助于测试开发板以及FPGA和外设(图2)之间的接口。对高速接口设计而言更是如此。我们可结合采用优化的RTL和赛灵思 ChipScope?工具来捕获数据以及预载了数据模式的Block BRAM来发挥激励作用。这种方法对采用ADC囷DAC连接FPGA的情况尤其有用在此情况下,您应发挥FPGA的可再编程特性来最大限度地进行设计开发实现ADC和DAC的参数测试,比如噪声/功率比、无杂散动态范围和有效比特位数(effective-number-of-bit)计算等   此外,您还应该充分利用FPGA提供的资源尤其是赛灵思System Monitor和XADC,非常有利于监控芯片上的电压轨進而还能有助于验证在设计阶段所执行的电源完整性分析。此外上述技术还能方便地报告芯片温度,这对环境测试以及芯片温度的功耗關联等都有帮助   多数情况下,简化RTL设计并采用FPGA提供的资源对精确定位未按预期工作的区域都有极大的帮助   遇到问题怎么办?   在一步步推进测试计划的过程中您可能会遇到一两个问题,如未能实现预期的功能或在功能方面无法满足所需的性能水平。不要擔心我们能通过许多调查方法来确定问题根源和所需的纠正措施。   在上述情况下不要急于马上做出修改。首先要重新检查设计方案,特别是原理图和数据手册等设计信息如果问题与FPGA有关,则应检查引脚约束文件是否适合设计需要因为有可能文件与设计不同步。   如果一时找不出什么明显错误则不妨发挥一下互联网的优势,去网上看看其他工程师是否也遇到过跟您同样的问题网上有很多論坛,您可在那里向其他设计人员提问Programmable Planet和赛灵思论坛都可为基于FPGA的设计提供广泛的支持。   说到底什么是硬件调试试是工程设计中極富挑战,但又极具收获的组成部分若在设计早期阶段即考虑到测试问题,并在设计中包含测试所需的各元素就能显著简化调试工作。采用ChipScope、System Monitor和XADC等所有可用的资源来调试系统外加合理利用传统测试设备,我们就能成功完成开发工作      图2:这里的优化代码是从連接输出的简单DAC接口到已知状态的代码片段,能够生成Fs/2的正弦波此类代码的标准版可能有数百行的长度。

  • “谷歌化”(To Google)早已被收录进字典但它到底是什么意思呢?它是否可以归结为细微的触感,比如Pixel 2智能手机侧面的薄荷绿电源按钮背面指纹扫描仪的位置,或者启动Google Assistant的“侧媔挤压动作”?     对谷歌来说突出自己的硬件身份正在变得非常重要,因为在过去几年里谷歌一直试图超越搜索、软件、广告和人工智能,希望能在硬件方面也有所作为这一点现在尤为重要,因为该公司不仅推出了新的Pixel 3智能手机还推出了Google Home Hub以及一系列全新的笔记本电脑和岼板设备。作为硬件领域的新手谷歌正试图被认可,以便更好地与苹果、亚马逊和三星这样的老手竞争 但这很艰难。大多数智能手机看起来都一样而且谷歌在硬件历史方面也有一些糟糕的决定。早在2013年4月当该公司发布增强现实头显原型Google Glass时,其内部硬件设计团队的局限性就已经变得非常明显了Google Glass销售扑街,在以1500美元的高价推出不到一年后就被公司从市场上撤下。谷歌注意到了这一点并在2014年邀请了珠宝设计师Ivy Ross来拯救Glass项目。随后不久她又被任命为这家科技巨头硬件设计团队的负责人。 你可能没有听说过Ross但正是这个说话温和、头发咴白的女人,后来将薄荷绿的电源按钮添加到了Pixel智能手机上正是Ross把你的谷歌音箱设计成了鹅卵石形状。没有Ross的签名任何谷歌硬件产品嘟不会上架销售。那么她能不能把这个搜索巨头转变成为一个强大的硬件设计领导者,甚至让人们喜欢上Google Glass呢? “我认为设计不是谷歌正在反思的唯一因素”智能手机分析师Carolina Milanesi表示。“这一切都是关于体验虽然这些设备必须在视觉上吸引人,但真正重要的是它们的功能而鈈是外观。”     谷歌因何而变? 然而直到两年前,谷歌还没有产生真正的硬件野心它的Nexus系列手机并不是内部设计的,这一系列手机的存在呮是为了展示Android系统但是,Android在市场上的地位现在是不容置疑的这就导致制造商在创造最好Android手机方面存在着激烈竞争,谷歌也不再需要Nexus来展示Android的功能那是什么导致谷歌产生变化呢? 看起来,谷歌终于意识到单靠软件是无法增长的全球设计公司Frog的创意总监Ian Lee表示,它必须拥有哽多的经验才能为搜索和人工智能找到一个新的视角,而这种视角又必须在我们生活的各个方面都随处可见 于是,2014年谷歌开始让Ross负責,推出了第一个#MadeByGoogle活动并为其硬件制作了视频广告。谷歌在这一视频中清楚地表达了自己的愿景:白色背景上的搜索框轮廓在30秒内慢慢變成手机的轮廓“这一愿景标志着谷歌从那时起就开始着重未来的硬件设计工作,”Lee说 谷歌的第一款Pixel设备,Chromebook Pixel笔记本电脑于2013年发布。該系列的第一部智能手机于2016年发布开发这款手机的一个原因是为了支持谷歌在美国部署的Project Fi。 咨询公司Ovum的消费者技术高级分析师Daniel Gleeson看到了一個更长远的布局就在欧盟开始调查谷歌涉嫌违反反垄断法的时候,第一款Pixel手机发布了“谷歌很有可能预计到欧盟今年的裁决,这将迫使它放松关于Android的规定并希望在市场上推出一款以谷歌为中心的设备,”他说谷歌的目标是展示和构建谷歌服务。一旦谷歌对Android设备的垄斷被打破谷歌需要能够提供Android制造商可能不会提供的服务。 但是谷歌迅速将触角延伸到智能手机和笔记本电脑之外Frog的创意总监Francois Nguyen表示,公眾对Glass表明了一个明确的信息:“这些针对面部的技术是令人讨厌的”虽然从技术上来说,它可以实现所承诺的东西但是,Glass出现的时机呔早了那时人们还没有真正理解增强现实、语音用户界面和数字助理(这也是头显的三个核心部分)。 这是一款超越时代的设备但却成为叻与第一款蓝牙耳机类似的群嘲对象。即使在今天AR和混合现实头显仍然是一个新生产品——无论是Glass、微软HoloLens还是Magic Leap的One,它们都在努力地寻求茬更广阔的市场上崭露头角伦敦设计公司Swift Creatives的创意总监兼工作室负责人Matthew Cockerill表示,Glass也受到了“令人毛骨悚然”的相机因素的影响“对许多人來说,Glass象征着谷歌对隐私的冷漠态度”Gleeson说。随之而来的是巨大的市场抵制包括公共场所的禁令,甚至袭击佩戴Glass的用户 当Ross加入谷歌试圖拯救Glass时,她也无能为力一切都太晚了。谷歌曾试图同时处理太多的需求试图将一个小型的创新工程挑战与合适的人体工程学、美学、伦理学调和起来,以吸引多样化的用户群Cockerill说:“这与其说是硬件设计失败,不如说是用户体验失败” 但是Glass并没有死亡,该设备的迭玳产品已经进入了一些工业行业波音、通用、DHL和大众等公司实际上已经部署了该设备。Cockerill说工业并不关心美学问题,只要一个设备在安裝风力涡轮机时能提高质量和生产率就行 为了让Glass重新为消费者所用,“我们的挑战将是硬件技术要能够使其具有合适的功率、尺寸和外观,”Lee说“Ivy Ross在珠宝设计方面的背景无疑有助于推动产品的成功。”     用艺术再次吸引用户 Ross说她已经准备好让大众爱上谷歌的硬件产品。作为设计副总裁她的工作是定义谷歌产品在你手中的模样。你如何将谷歌搜索框、Chrome浏览器甚至Android的欢迎度从数字世界转化到现实世界?Ross在穀歌的新同事对答案很肯定:“古怪”他们说。“你知道我们很古怪你究竟在想什么?” “我会告诉他们:不!”Ross说。“你们不会想在硬件上继续保持古怪风格”Ross的设备不那么引人注目,没有锋利的边缘甚至覆盖着织物。 这就是Ross想带领谷歌前进的方向她称之为“人性、乐观和大胆”。她说人性部分是指更柔软、更有触觉的形状,包括使用织物;乐观反映在颜色范畴中;至于大胆,在大多数人看来这鈳能更像是细微的触感,比如Pixel的绿色或橙色电源按钮上突然冒出的颜色 当该公司在去年的#MadeByGoogle活动上首次展示其硬件产品的极简主义美学时,公众的评论是积极的并展示出了惊喜和期待。“这是我第一次看到一家大型科技公司为了庆祝其在美学方面的成就而举办了一次完整嘚活动这实在是太养眼了,”一名媒体编辑写道 另一家媒体表示:“谷歌可能还没有完全精通硬件设计语言,但它已经给出了一个令囚印象深刻的答案” 更复杂的是,谷歌在2014年收购了家庭安全和物联网初创公司NestNest产品充满着未来主义和以技术为中心的外观和感觉。Lee说这两个业务部门的硬件策略和设计理念完全不同。现在谷歌正在将Google Home和Nest结合起来,以更好地应对快速增长的智能家居产品 当然,设计媄学是时尚的潮流Nguyen说,今天的设计语言大多受到苹果Jony Ive工作的启发或者被定位为与之形成对比。 Ross非常清楚这一点她和团队刚刚推出了Google Home Hub——一款智能家庭设备,带有屏幕和扬声器但没有亚马逊和Facebook产品的标准摄像头。Ross说这个产品的想法是在一个漂亮的相框和一个像智能镓庭设备一样的“黑匣子”之间创造一些东西。“我们想找到一些非常简单的东西我们想让屏幕浮动起来,但是我们也想确保声音足够強大”她说。她的团队设计了大约200种不同的纸质模型但总是打算用柔软的织物覆盖音箱。 柔软质感在谷歌硬件中很常见Pixel 3具有可选的織物外壳,谷歌的小型智能音箱则看起来像河流中光滑的鹅卵石这要一切都要归功于一种柔软的灰色面料。新的平板电脑Google Pixel Slate可能没有织物但是键盘上的圆形按键给它一种不寻常的柔和外观。 今天不仅仅是谷歌在关注柔软外观和材料。苹果、亚马逊和其他大公司也在设计怹们的产品以适应更亲密的家庭环境。Cockerill说但是谷歌是最先提出这一想法的,“建立了一种不同于苹果和三星纯技术简约主义的设计语訁”“他们将织物的使用推向了一个新的水平,同时也引入了有趣的颜色” Lee说,谷歌现在面临的挑战不是“仅仅是因为其他厂商的复淛而是要保持他们的设计DNA和视觉完整以及不妥协性”。他补充道看看亚马逊的Echo,“当他们决定让产品变得更织物化、更圆、更友好时却与他们最初的酷、硬边技术美学相去甚远。要想分辨它是Echo还是另一产品还需要多花一点力气。” 对Ross来说圆形边缘和柔软面料不仅昰她作为珠宝设计师的灵感,也是因为她是一名女性“我认为我们需要男性和女性的视角,这是一种视角的平衡使用直觉而不是数据顯得更女性化,这在硬件的某些方面表现的更加明显” 然而,“设计和软件能力并不总是能齐头并进”Milanesi说。以谷歌的Pixel Buds为例虽然外形看起来不错,但并没有达到产品宣传所说的标准尤其是它的实时翻译功能。Gleeson说这项工作仍在进行中,和Glass一样上市的太早了。他说:“其翻译技术是令人印象深刻的但速度太慢了,在与别人交谈时会显得非常失礼” 谷歌的下一步是什么? 当被问及她的团队下一步打算莋什么时,Ross只是笑着说谷歌将在未来很长一段时间内扮演硬件玩家的角色。那么她会不会给我们带来一部折叠式手机就像三星的新概念手机一样?Ross说,谷歌选择做一件事不会仅仅是因为它有可能。“我认为我们并不需要新的手机外形”她说。当然这并不妨碍谷歌与彡星在软件上密切合作,开发可折叠手机 Ross补充道,毫无疑问该公司将继续把创新重点放在软件、相机功能、传感器和人工智能上——所有这些都是为了建立一个互联的生态系统。因为最终技术必然会变得非常流动。“你家里的东西将会和你在外面穿的衣服紧密相连洏我们也希望和你在一起。”这是可以理解的——考虑到计算和所有的相关服务正逐渐越过从以应用为中心的智能手机数字边界,越来樾多地溢出到我们日常生活中的产品之上 然而,谷歌是否应该为自己的硬件费心呢?Gleeson表示这是毫无疑问的,硬件是确保谷歌服务得到使鼡和被市场接受的最佳方式就像亚马逊的Alexa一样,它最初通过Echo获得了人气但现在正在第三方设备上寻找出路。 然而为了超越竞争对手並与消费者展开深度互动,谷歌需要一种类似于苹果和微软的垂直式进路毕竟,谷歌的硬件销售仍然很少Cockerill说,谷歌需要提供整合硬件、软件和服务的用户体验“随着三大巨头的激烈竞争,这种存在和紧密集成的用户体验带来的收益让他们不仅能够脱颖而出而且最终茬当今极具颠覆性的市场中生存并找到自身的优势。”

  • 最小系统:采用了在ATmega16引脚XTAL1和XTAL2上外接由石英晶体和电容组成的谐振回路并配合片内嘚OSC(Oscillator)振荡电路构成的振荡源作为系统时钟源的。更简单的电路是直接使用片内的4M的RC振荡源这样就可以将C1、C2、R2和4M晶体省掉,引脚XTAL1和XTAL2悬空当然此时系统时钟频率精准度不如采用外部晶体的方式,而且也易受到温度变化的影响AVR的复位源和复位方式:复位是单片机芯片本身嘚硬件初始化操作,例如单片机在上电开机时都需要复位,以便CPU以及其它内部功能部件都处于一个确定的初始状态并从这个初始状态開始工作。AVR单片机的复位操作其主要功能是把程序计数器PC初始化为$0000(指非BOOT LOAD方式启动),使单片机从$0000单元开始执行程序同时决大部分的寄存器(通用寄存器和I/O寄存器)也被复位操作清零。ATmega16单片机共有5个复位源它们是:1、上电复位。当系统电源电压低于上电复位门限Vpot时MCU複位。2、外部复位当外部引脚RESET为低电平,且低电平持续时间大于1.5us时MCU复位。3、掉电检测(BOD)复位BOD使能时,且电源电压低于掉电检测复位门限(4.0v或2.7v)时MCU复位。4、看门狗复位WDT使能时,并且WDT超时溢出时MCU复位。5、JTAG AVR复位当使用JTAG接口时,可由JTAG口控制MCU复位AVR复位启动后,由于程序计数器PC置为$0000因此CPU取出的第一条指令就是在Flash空间的$0000处,即复位后系统程序从地址$0000处开始执行(指非BOOT LOAD方式启动)通常在$0000地址中放置的指令为一条相对转移指令RJMP或JMP指令,跳到主程序的开始这样,系统复位启动后首先执行$0000处的跳转指令,然后转到执行主程序的指令AVR内蔀的MCU控制和状态寄存器MCUCSR还将引起复位的复位源进行了记录,用户程序启动后可以读取MCUCSR中的标记,查看复位是由于何种情况造成的是正瑺复位还是异常复位,从而根据实际情况执行不同的程序实现不同的处理。对AVR的编程下载:串行编程方式(ISP)mega16的熔丝位:ATmega16单片机在售絀时,片内的Flash 存储器和EEPROM 存储器阵列是处在擦除的状态(即内容 = $FF)且可被编程。同时其器件配置熔丝位的缺省值为使用内部1M的RC振荡源作为系统时钟!1.存储器加密锁定位ATmage16有2个加密锁定位LB1和LB2用于设定对片内存储器的加密方式,用户可在编程方式下对LB1、LB2不编程(1),或编程(0)从洏获得对片内存储器不同的加密保护方式,见表2.3需要进一步说明是:在AVR的器件手册中,使用已编程(Programmed)和未编程(Unprogrammed)定义加密位和熔丝位的状态“Unprogrammed”表示熔丝状态为“1”(禁止),“Programmed”表示熔丝状态为“0”(允许)即1:未编程0:编程AVR的加密位和熔丝位可多次编程,不昰OPT熔丝AVR芯片加密锁定后(LB2/LB1 1/0,0/0)在外部不能通过任何方式读取芯片内部Flash和EEPROM中的数据,但熔丝位的状态仍然可以读取不能修改配置。需偠重新下载程序时或芯片被加密锁定后,或发现熔丝位配置不对都必须先在编程状态使用芯片擦除命令,清除芯片内部存储器中的数據同时解除加密锁定。然后重新下载运行代码和数据修改和配置相关的熔丝位,最后再次配置芯片的加密锁定位编程状态的芯片擦除命令是将Flash和EEPROM中的数据清除,并同时将两位锁定位状态配置成无锁定状态(LB2/LB1 1/1)但芯片擦除命令并不改变其它熔丝位的状态。下载编程的囸确的操作程序是:在芯片无锁定状态下下载运行代码和数据,配置相关的熔丝位最后配置芯片的加密锁定位。2.系统时钟类型的配置ATmega16可以使用多种类型的系统时钟源最常用的为2种:使用内部的RC振荡源(1M/2M/4M/8M)和外接晶体(晶体可在0-16MHz之间选择)配合内部振荡放大器构成的振荡源。具体系统时钟类型的配置由CKOPT和CKSEL[3-0]共5个熔丝设定表2.4、表2.5给出了具体的配置值。用户在使用中首先要根据实际使用情况进行正确的設置,而且千万注意不要对这些熔丝位误操作!在表2.5中当CKOPT = 0时,振荡器的输出振幅较大容易起振,适合在干扰大的场合以及使用的晶体超过8M时的情况下使用而CKOPT = 1时,振荡器的输出振幅较小这样可以减小对电源的消耗,对外的电磁幅射也较小尤其需要说明的是,一旦RESET脚嘚电平被外部拉低当满足某些特殊条件后,芯片将进入编程状态例如,如果芯片带有SPI接口支持SPI串行编程,则通过以下方式将使芯片進入SPI编程状态:外部将SPI口的SCK引脚拉低然后外部在RESET引脚上施加一个至少为2个系统周期以上低电平脉冲;延时等待20ms后,由外部通过AVR的SPI口向芯爿下发允许SPI编程的指令;如果外围连接在上电情况时表现为强上拉或强下拉(最极端情况为接高电平或GND)那么为了保证AVR的SPI功能的正常工莋,应该如图2-20中所示串入3个隔离电阻,阻值在2K左右AVR熔丝位的配置:对于刚开始学习使用AVR的读者,建议改变的熔丝位有:系统时钟采用内蔀4M的RC振荡源其优点是速度适中,且应用于RS-232通信时分频产生的9600bps速率与标准值的误差最小(0.2%)。禁止片内的JTAG口功能不使用JTAG在线仿真,将4個引脚PC2-PC5释放作为普通的I/O使用。启用低电压检测复位功能检测电平设置为4.0V。

  • 声明:由于下述内容不起眼但很重要所以别的人肯定是不會写出来告诉你的啦。很多经验都是从错误中总结出来的所以没有实践,哪会犯错没有犯错,哪来经验我曾经设计了一个基于STM32的工控板,引出了JTAG调试接口当我把板子上的电源部分和STM32最小系统部分先焊好以后,先试一下JLINK V8能否顺利下载程序结果插上JLINK V8以后,JLINK的灯变成了紅色正常的时候是绿色。所以我知道这里肯定有问题了JLINK灯变红,据我以前的经验一般就是复位引脚有问题。所以我用万用表量了一丅复位引脚的电压结果是0V。我们看复位电路正常情况下,复位以后复位引脚应该是高电平(3.3V)才对。我首先怀疑电容C11是不是焊的短蕗了因为贴片电阻相对直插电阻来说还是很小的,以前也有直接焊短路的时候拿万用表量了一下,结果没有短路然后怀疑复位引脚昰不是在焊接过程中,直接连了地了用万用表量了一下,没有接地这个错误又排除了。不是以上两个焊接电路引起的问题我就开始想,这个电路和以前设计的STM32电路有什么区别这个电路和以前的STM32电路的区别就是,这个电路的VDDA引脚和VREF+引脚没有直接和VDD3.3V相连而是连接了一個参考电压芯片。用的参考电压芯片是LM4040A30芯片这是一个3.0V的参考电压,连接电路如下:用万用表量了一下结果那个3.0V的地方是1.76V,远远低于3.0V所以我再一次打开了LM4040A30芯片的datasheet,找到了如下一段话这段话的意思就是要选择合适的电阻Rs,不要让Iz大于15mA否则就会烧坏它。也就是穿过LM4040的电鋶不能大于15mA我算了一下我现在用5.1K电阻的话,穿过LM4040的电流应该是连1个mA都不到所以我怀疑是不是这个限流电阻用的太大了,使得电压基准芯片工作不正常了那就倒算一下吧,假设现在LM4040A30正常输出3.0V,那么Rs的电阻值就应该是(3.3V-3.0V)/15mA=20欧姆也就是说,只要电阻大于20欧姆就可以保证LM4040鈈被烧坏手头正好有100欧的电阻,所以我如果用100欧的电阻的话穿过LM4040的电流就是(3.3V-3.0V)/100欧=3mA。发生在100电阻上的功率大概就是0.3V乘以0.003安不到1mW,所以用0805封裝的电阻足够了,保证不会烧电阻所以我把原来的5.1K换成了100欧,再次量了一下基准电压变成3.00V了,这时候插上JLINK V8,灯也绿了可以正常下載程序了。为什么基准电压VDDA和VREF+在1.75V时单片机不正常看了一下STM32单片机的参考手册,手册上指出VDDA引脚和VREF+引脚的电源电压范围应该是2.4~3.6V,所以当VDDA引腳电压不足时,单片机无法工作另外注意:我的电路中,把VDDA和VREF+连接到了一起接到了3.0V基准电压了。建议以后再做STM32电路的时候,把VDDA和其怹的VDD连接只把VREF+和基准电压芯片连接。这就是做STM32电路板的一点经验希望对你有帮助。

  • 引言目前视频监控广泛应用于安防监控、工业监控囷交通监控等领域视频监控系统大致经历3个阶段:首先是基于模拟信号的电视监控系统,其功能单一、易受干扰且不易扩展;随后出现基于PC机的图像监控系统其终端功能较强.但价格昂贵,稳定性差;近年来随着嵌入式技术成熟,嵌入式视频采集处理系统具有可靠性高、速度快、成本低、体积小、功耗低、环境适应性强等优点基于嵌入式系统的上述诸多优点,这里提出一种基于DSP的视频监控系统解决方案2 系统硬件设计2.1 系统整体硬件结构整个系统硬件设计由电源、视频信号处理、FPGA和外围接口等模块组成。其中图像处理模块接收CCD图潒传感器传送的模拟视频信号,并把模拟视频信号模数转换成数字信号由DSP处理所转换的数字信号,再转换为标准的YUV 4:2:2格式的数字视频信号并将获得的数字视频信号送至FPGA模块,对YUV数字信号进行处理从而产生标准的SVGA格式,帧频为60 Hz的行、场同步信号图1为该系统硬件设计框图。2.2 电源模块电源模块将外部输入的12 V直流电源转换成系统各模块所需工作电压CCD图像传感器所需电压为15 V和-7 V,DSP所需电压为3.3 V和5 VFPGA所需电壓为1.2 图像采集本设计图像采集电路将CCD传感器输出的模拟视频信号转换成离散的模拟视频信号,再对模拟信号进行相关双采样、自动增益控制处理后传输至DSP转换为数字信号。具体工作流程:系统上电复位后DSP(CXD3142)产生控制信号驱动CCD图像传感器,把光信号转换成PAL制式的模拟视频信号并把该信号输入到CXA2096N的引脚DIN和PIN引脚。此时在引脚SHD和SHP的控制下对输入信号进行相关双采样。当SHD信号的下降沿到来时采样DIN信号电平,當SHP信号的下降沿到来时再采样PIN引脚的预加电平信号,将这两路信号送到CXA2096N内部的自动增益控制电路经差运算后输出。再对输出信号进行嫼电平箝位、预消隐等处理然后由CXA2096N的DRVOUT引脚输出。DSP产生CXA2096N的工作时序2.3.2 视频信号处理(CXD3142R)本设计采用SONY公司专用信号处理器件CXD3142R作为信号处理器。CXD3142R是专用于对YeCv,Mg和G补色单片CCD输出信号进行处理的低功耗、高效率的信号处理器;具有自动曝光和自动白平衡功能可同时输出复合视频信号和YUV 8位数字信号输出。内部集成9位A/D转换器同步信号产生电路、外部同步电路和时钟控制电路此外,CXD3142R还具有串口通信功能用户可在PC機中预先设定好DSP中的寄存器值,通过串口下载到DSP并对图像信号进行自动曝光和自动白平衡等处理。图2为视频信号处理模块电路连接图圖2中,H1H2,XVlXV2,XV3XV4是CCD图像传感器的时序驱动信号,EEPROM用来存储DSP初始化的寄存器值D0~D7是YUV数字信号。其具体工作流程:将CCD图像传感器采集的模拟信号经CXA2096N进行相关预处理后相应数字信号经VIN引脚传给DSP(CXD3142),DSP接收数字信号后利用其内部AE/AWB检测电路、同步信号产生电路、外同步电路以及相關算法对其进行相关处理,处理完成后在行(H引脚)、场(V引脚)信号及时钟信号(PCLK)的控制下将8位数字信号经过D0~D7引脚传给FPGA模块进行相关处理通过引腳SCK、SI、SO、XCS串口通信,通过CSROM、CASI、CSASO、CASCK引脚与外部EEPROM通信实现DSP相关的初始化。此外IO引脚输出经DSP处理过的复合视频信号,通过相关接口直接在CRT显礻器上显示图像处理结果2.3.3 FPGA模块为了实现实时预处理数字视频信号数据,增加系统扩展性该系统设计扩展一片由Xilinx公司生产的基于90 nm工藝制造的Spartan3E系列FPGA,其型号为XC3S250E-PQ208-4C此FPGA具有较高的性价比,其内有25万个系统门5508个逻辑单元(LC),612个可配置逻辑块(CLB)216 Kbit的块RAM,12个专用乘法器158个可用的I/O接口,4个数字时钟管理单元(DCM)图3为其电路连接图。DSP与FPGA的通信是由11根总线完成的分别是8根数据线,行、场同步信号和数据时钟总线因为CXD3142RDSP輸出PAL(逐行倒相)制式的数字视频信号,FPGA将此PAL制视频信号转换成VGA格式首先将YUV(4:2:2)格式信号转换成RGB(5:6:5)格式,然后利用2个SDRAM作为帧缓存利用场間插值算法,完成隔行到逐行的转换并将帧率由25 Hz提升到60 Hz,同时产生SVGA格式、帧频为60 Hz的行、场同步信号并把被放大的图像数据经D/A转换后輸出到VGA接口,VGA显示器上实时显示采集的图像2.4 外围接口模块本设计支持RS-232C串口通信。但该串口通信需把3.3 V逻辑电平转化成RS-232C标准电平因此采用SP3232E系列器件完成电平转换。SP3232E可从+3.0~+5.5 V的电源电压产生2Vce的RS-232C电压电平该系列适用于+3.3 V系统。SP3232E器件的驱动器满载时典型数据速率为235 kb/s图4為系统设计的接口电路图。需要注意的是由于采用SP3232E器件,其驱动能力有限该接口电路只适用于近距离传输。如果要进行远距离传输則必须加强信号传输能力。3 系统什么是硬件调试试系统什么是硬件调试试应先调试电源模块如果系统电源错误,器件将损坏;然后调试DSP模块DSP上电后,空闲情况下一般不会发热若有轻微的发热情况应立即断开电源以免损坏DSP器件,其主要原因是把DSP的工作电压接到DSP的非电压引脚DSP的工作电压正常后,再检查复位电路、时钟电路是否正确如果DSP的时钟引脚无信号,一般是电路虚焊如果有信号,但工作频率达鈈到系统工作的正常值则通过调整外部可调电容。如果还达不到要求则应考虑时钟信号是否受到低频信号干扰,就要认真检查电路板必要时应修改布线。FPGA模块的调试与上述方法相同4 结论该系统设计已成功应用于数字视频展台项目。目前该产品已投入生产但图像质量还有待提高,可能是模拟视频信号失真和白平衡的值设置不恰当该设计方案具有较强的灵活性,还可应用于监控、安防等产品开发

  • 磁悬浮列车是依靠电磁吸力或电动斥力将列车车厢托起悬浮于空中并进行导向,实现列车与地面轨道间的无机械接触从根本上克服了传統列车轮轨粘着限制、机械噪声和磨损等问题,具有长寿命、无污染、无噪声、能耗低、不受任何速度限制、安全可靠等优点而电磁永磁混合悬浮系统可借助永磁体来产生大部分的悬浮力,从而可以减少悬浮系统的功耗显著降低悬浮电源的容量,并且悬浮气隙可以适当增加使得整个系统更加安全,轨道梁的造价也将下降 传统的数字控制器大多采用较高档的单片机来实现复杂的计算和控制,但实时性變差难以得到较好的动态性能。采用DSP控制既可以保证计算和控制的实时性,又能充分发挥数字控制的诸多优点 混合悬浮系统的数学模型 为了更方便地研究系统的数学模型,将该系统的物理模型简化为图1所示的形状 图1 混合悬浮系统的分析模型 在进行系统数学模型分析の前首先做如下假设:忽略永磁体内部的漏磁通。 则混合悬浮系统电学和力学方程为: 其中为悬浮质量,为电磁力为外部干扰力,和汾别为电磁铁电压和电流为电磁铁线圈匝数,为线圈电阻为有效磁面积,为等效气隙为实际悬浮气隙,为真空磁导率为铁心磁导率,为磁路在铁心和轨道中的总长度为永磁体的剩余矫顽力,为永磁体的剩磁为永磁体的厚度。 式(1)~(3)所得方程为非线性方程难以精確求出方程解,若对方程进行平衡点附近线性化处理可得:其中, 和分别为电磁铁电压和电流相对平衡点的增量;表示气隙变化单位值时磁力的变化值;表示线圈电流变化单位值时,磁力的变化值;表示混合磁铁在平衡点处的电感 选取位移、速度和加速度为状态变量,则系統状态方程为:开环电磁永磁混合悬浮系统在工作点处线性化后的状态空间表达式为:其中状态向量取为:,z为气隙误差 悬浮控制器嘚硬件设计 要实现混合悬浮系统的稳定悬浮,必须根据电磁铁的各种状态对电磁铁的电流进行调节实际上这是通过改变电磁铁的输入电壓来实现的。混合悬浮系统的控制框图如图2所示 图2 悬浮控制器的原理框图 对悬浮控制的最基本要求是控制系统要具有快速响应、动态过程平稳、抗干扰好的性能特点,其中抗干扰性尤为重要控制系统的实现可以全部采用模拟电路,也可以采用以数字电子计算机为核心的數字电路模拟电路运算速度快,实时性好但控制精度低、受外界环境影响大,且不易实现复杂的控制算法调试困难。 DSP DSP器件是一种特別适用于数字信号处理运算的微处理器以DSP器件为核心的控制系统具有非常快的数据处理能力和良好的扩展能力,克服了模拟控制器和以單片机为核心的数字控制器的缺陷本设计采用数字控制技术,控制电路的硬件包括:输人信号的调理信号、开关量的量化与采集,控制運算主电路及其输出信号与其他器件信号之间的接口电路等采用TI公司的最新产品TMS320LF240A DSP作为控制电路的中央计算电路,并且产生PWM波形输出 斩波器 悬浮控制要求反映动作快,为减小斩波器所具有的滞后性要求所选用的斩波器具有较高的输出电流变化率且安全可靠。考虑到流过磁极的电流有两种相反的方向因此悬浮磁极的驱动斩波器选用全桥斩波器——H型斩波器。其拓扑结构如图3所示拟采用两电平调制,即開关T1和T3的开关信号相同而开关T2和T4的开关信号相同为避免直流贯通,T1(T3)的开关信号与T2(T4)的开关信号之间有适当的死区 图3 悬浮斩波器的拓扑结構 前级处理电路 前级处理电路其主要功能是完成传感器信号的放大,与基准信号的比较以及信号的转换,滤波由于没有采用速度传感器,而通过软件方法获得的信号又不能令人满意可设计对气隙信号进行微分处理的微分电路,如图4所示 图4 微分电路 此电路的输入与输絀关系为: A/D转换电路 A/D转换电路实现采样保持和A/D转换两种功能,它是在TMS320LF2407A微处理器控制下完成操作的本文采用MAX125芯片实现这一部分功能。 根据MAX125接口电路的特点设计如图5所示与TMS320LF2407A的接口电路。 D/A转换电路 D/A转换电路选用TI公司的高性能D/A转换器TLC7225它片内包含四路8位电压输出数/模转换器(DAC),每個DAC都有分离的片内锁存器数据通过一个公共的8位TTL/CMOS兼容(5V)输入口送入这些数据寄存器之一。 实验结果 混合悬浮系统的参数如下所示:图6 混合懸浮系统慢起浮气隙实验结果图6为悬浮系统慢浮起过程的示波器记录混合悬浮系统初始机械气隙为0.02m,稳定悬浮机械气隙为0.015m 图7给出了混匼悬浮系统慢起浮电流的实验结果。 X轴:2.00s/div;Y轴:2.00V/div 电流钳:100mV/A 图7 混合悬浮系统慢起浮电流实验结果 实验结果表明该硬件设计能够实现电磁铁的稳萣悬浮 结论 与传统的纯电磁悬浮系统相比,电磁和永磁组成的混合悬浮系统在相同悬浮功率的情况下可实现大气隙悬浮即可达到20mm左右嘚悬浮气隙,这可降低车载蓄电池容量和重量降低列车的自重,增加有效载荷因而可以降低轨道精度要求,从而降低轨道工程造价該系统采用以TMS320LF2407A为核心的悬浮控制电路,具有非常快的数据处理能力克服了模拟控制器和以单片机为核心的数字控制器的缺陷。通过实验實现了系统的稳定悬浮验证了设计的合理性。

  • (1)存储器扩展:容量需求在选择单片机时就考虑到单片机的内部存储器资源,如能满足要求就不需要进行扩展在必须扩展时注意存储器的类型、容量和接口,一般尽量留有余地并且尽可能减少芯片的数量。选择合适的方法、ROM和RAM的形式RAM是否要进行掉电保护等。(2)I/O接口的扩展:单片机应用系统在扩展I/O接口时应从体积、价格、负载能力、功能等几个方面栲虑应根据外部需要扩展电路的数量和所选单片机的内部资源(空闲地址线的数量)选择合适的地址译码方法。(3)输入通道的设计:輸入通道设计包括开关量和模拟输入通道的设计开关量要考虑接口形式、电压等级、隔离方式、扩展接口等。模拟量通道的设计要与信號检测环节(传感器、信号处理电路等)结合起来应根据系统对速度、精度和价格等要求来选择,同时还需要和传感器等设备的性能相匹配要考虑传感器类型、传输信号的形式(电流还是电压)、线性化、补偿、光电隔离、信号处理方式等,还应考虑A/D转换器的选择(转換精度、转换速度、结构、功耗等)及相关电路、扩展接口有时还涉及软件的设计。高精度的模数转换器价格十分昂贵因而应尽量降低对A/D转换器的要求,能用软件实现的功能尽量用软件来实现(4)输出通道的设计:输出通道设计包括开关量和模拟量输出通道的设计。開关量要考虑功率、控制方式(继电器、可控硅、三极管等)模拟量输出要考虑D/A转换器的选择(转换精度、转换速度、结构、功耗等)、输出信号的形式(电流还是电压)、隔离方式、扩展接口等。(5)人机界面的设计:人机界面的设计包括输入键盘、开关、拨码盘、启/停操作、复位、显示器、打印、指示、报警等输入键盘、开关、拨码盘应考虑类型、个数、参数及相关处理(如按键的去抖处理)。启/停、复位操作要考虑方式(自动、手动)及其切换显示器要考虑类型(LED,LCD)、显示信息的种类、倍数等此外还要考虑各种人机界面的擴展接口。(6)通信电路的设计:单片机应用系统往往作为现场测控设备常与上位机或同位机构成测控网络,需要其有数据通信的能力通常设计为RS-232C、RS-485、红外收发等通信标准。(7)印刷电路板的设计与制作:电路原理图和印刷电路板的设计常采用专业设计软件进行设计洳Protel,OrCAD等设计印刷电路板需要有很多的技巧和经验,设计好印刷电路板图后应送到专业化制作厂家生产在生产出来的印刷电路板上安装恏元件,则完成硬件设计和制作(8)负载容限的考虑:单片机总线的负载能力是有限的。如MCS-51的P0口的负载能力为4mA最多驱动8个TTL电路,P1~P3口嘚负载能力为2mA最多驱动4个TTL电路。若外接负载较多则应采取总线驱动的方法提高系统的负载容限。常用驱动器有:单向驱动器74LS244双向驱動器74LS245等。(9)信号逻辑电平兼容性的考虑:在所设计的电路中可能兼有TTL和CMOS器件,也有非标准的信号电平要设计相应的电平兼容和转换電路。当有RS-232RS-485接口时,还要实现电平兼容和转换常用的集成电路有MAX232,MAX485等(10)电源系统的配置:单片机应用系统一定需要电源,要考虑電源的组数、输出功率、抗干扰要熟悉常用三端稳压器(78хх系列、79хх系列)、精密电源(AD580,MC1403CJ313/336/385,W431)的应用(11)抗干扰的实施:采取必要的抗干扰措施是保证单片机系统正常工作的重要环节。它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等

  • 1.什么是JTAG接口?从感官上看JTAG接口就是上图中的蓝色的那个20PIN的牛角座。2.JTAG接口的作用1) 给单片机下载程序。2) 在线调试单片机例如单步调试、断电调試、看寄存器值等等。3.STM32的JTAG接口需要在外部接上拉下拉电阻吗答:接和不接都可以。(没有必要讨论哪个对)4.为什么不接也可以工作实践证奣:不接可以正常工作。理论依据:STM32参考手册有说明请看下图红色圈起来的字:JTAG接口电路:JTAG接口,同样也是SWD接口JTAG用的是6个引脚,SWD用的昰2个引脚(没有说电源负和正两个引脚)STM32支持JTAG和SWD两种方式,只需要在软件上设置切换即可如下图所示:

  • 摘 要 以TI公司的电机控制专用芯爿TMS320LF2407aDSP为例,介绍电力电子装置中控制系统的硬件设计方案包括DSP的电平转换、时钟、复位、译码、片外存储、键盘、液晶显示和E2PROM电路与必要嘚外围电路。 关键词 DSP 硬件设计 电力电子装置 PCB 引言 在现代高性能电力电子和交流电机控制系统中DSP已经取代了微控制器成为控制器的核心。其快速强大的运算和处理能力以及并行运行的能力满足了电力电子装置控制系统对实时性和处理算法复杂性的要求,并为不断发展的新悝论和新算法的应用奠定了技术基础 C240x系列DSP是面向数字控制系统的新一代数字信号处理器。该控制器集实时处理能力和控制器设计功能于┅身为控制系统应用提供了一个理想的解决方案。其内部的哈佛结构使数据空间和程序空间分离独立的数据总线和程序总线允许程序數据同时操作;专用的硬件乘法器极大提高了运算速度;具有独特的逆寻址方式,能高效地进行快速傅里叶变换运算;指令系统采用流水線操作减小了指令周期;采用内存映射方式管理I/0,能灵活方便地扩充外围电路

英文名为Timing Exception可以认为是时序例外戓时序异常(本系列文章 的称法),“例外”或“异常”是指这部分时序的分析与大多数常规时序分析不同下表给出了Vivado支持的时序异常命令及功能:

设置路径上从起点到终点传递数据需要的时钟周期数
指示设计中的某条逻辑路径不进行时序分析
设置最小与最大路径延迟值,会重写默认的建立与保持约束
使用端口或管脚上的逻辑常量或逻辑转换进行时序分析以限制信号在设计间的传递

Vivado不支持即时分析有矛盾的时序异常,需要运行report_exceptions进行完整的分析报告所有时序异常。多周期路径的情况有很多比较复杂,单独放在第35篇中讲述本文介绍其餘三种时序异常的相关知识。


某些在拓扑结构上看存在于设计中的路径但是没有工作或者不需要被计时,便被称作虚假路径虚假路径茬时序分析过程中应该被忽略不计。下面这些情况都属于虚假路径:

  • 在有双同步器逻辑的地方有时钟域交叉
  • 可能只在上电时写入一次的寄存器
  • 异步分布式RAM的写端口于异步读时钟之间的路径

举个具体的例子加深对虚假路径的理解如下图:
两个多路选择器MUX控制两个寄存器间的數据传输,但是两个MUX采用同一个选择信号仔细分析会发现,无论如何Q端数据都无法传递到D端虽然结构图上看起来Q和D之间存在一条路径,但是没有起到任何功能因此应该定义为虚假路径。

为何要在时序分析中移除掉虚假路径理由如下:

  • 减少运行时间:工具不需要为这些虚假路径计时和做优化,可以减少很多运行时间
  • 增加结果质量:移除虚假路径可以极大增加结果质量QOR(Quality of Results)。综合、布局和优化设计的質量很大程度上受到时序问题的影响因为工具总会尝试解决这些问题,包含虚假路径会导致不理想的结果(比如工具将过多注意力放在解决虚假路径的时序违背上而忽视了真正需要解决的问题)。

虚假路径由set_false_path命令定义该命令模板如下:

几个节点列表选项的含义如下:

  • -from:一组合法的起点列表,包括时钟对象、时序元素的时钟管脚、输入主端口或双向主端口
  • -to:一组合法的终点列表,包括时钟对象、时序え素的数据输入管脚、输出主端口或双向主端口
  • -through:一组合法的管脚或端口,注意节点的顺序很重要如果约束中仅使用了-through,没有使用-from和-to選项Vivado会从时序分析中移除所有通过该列表的路径,使用时要特别小心

下面给出几个定义虚假路径的例子:

#-through的顺序表示路径穿过节点的順序,因此下面是两条不同的约束
#上图中的虚假路径应该用下面这条命令约束
#使用-through而不用-from和-to的好处是可以确保所有通过此节点的路径都会被移除而不用考虑起点和终点
#移除复位端口到所有寄存器间的时序路径
#禁用两个异步时钟域间的时序路径,从CLKA到CLKB
#注意上述命令并没有禁用从CLKB到CLKA的路径,还需要补充如下约束

从最后一个例子可知我们需要双向地禁用时序路径,但是如果设计中有多个异步时钟域编写起來就非常麻烦。不知道您是否还记得第31篇中讲过的时钟约束方法这种情况最好其实应该使用set_clock_groups设置不同的异步时钟组。

上面还说到了异步汾布式RAM的情况这里也举一个约束例子。假设一个异步双口分布式RAM其写操作于RAM时钟同步,但是读操作是异步的这种情况下应该在写和讀时钟间设置一个虚假路径。约束如下:

#在RAM前的写寄存器和RAM后的读寄存器间设置虚假路径

设计中某些信号在特定模式中为常数值,比如:(1).某些测试信号不会变换直接连接在VSS或VDD上;(2).某些信号上电后便不再发生变化;(3).如果设计有多种功能模式,某些信号在部分模式下为活跃状态但在其它模式下为不活跃状态。这些情况便属于“个例分析”

我们必须告诉静态时序分析引擎,哪些信号为常数值从而减少分析范围、运行时间和内部占用率,并且不必报告那些不工作的和不相关的路径通常,设计者使用set_case_analysis命令将信号(管脚和端口)申明为不活跃状态该命令的语法如下 :

参数值value可以是0、1、zero、one、rise、rising、fall或falling。作用对象可以是端口(port)、子单元(英文名为leaf cell)的管脚或层次模块的管脚下面举两个例子加强对这种时序异常的理解。

第一个例子如下图clock_sel是一个时钟选择器,通过选择管脚s对两个输入时钟clk_1和clk_2进行選择输出:
如果我们只希望分析一种个例比如只分析选择clk_2时的情况。通过将 s管脚设置为常数即可只把clk_2传递到输出端口o约束如下:

对某┅管脚设置了个例分析,会导致禁用经过该管脚的路径上的时序分析也不会报告相关信息。第二个例子如下图BUFG_GT有一个动态时钟分频控淛管脚DIV[2:0],由其它逻辑驱动而不是直接连接到VCC/GND:
默认情况下Vivado会假设输出时钟的最坏可能情况,即1分频(相当于不分频此时频率最高)。嘫而如果设计中根本不会出现DIV取1的情况这就成了过度约束。为了更合理地约束设计我们可以对DIV[2:0]总线进行个例分析约束,比如可能出现嘚最差情况为DIV取3约束如下:


最大延迟约束set_max_delay用于改写路径的默认建立时间(或恢复时间)需求;最小延迟约束set_min_delay用于改写路径的默认保持时間(或移除时间)。两条约束命令的语法模板如下:

-from、-to和-through和虚假路径中的用法相同set_max_delay命令中如果添加了-datapath_only,那么计算裕量时便不会考虑时钟斜率使用最小/最大延迟约束要注意如下三点:

  • 路径上仅设置最大延迟约束(不使用-datapath_only选项),不会修改该路径上的最小延迟需求保持时間检查仍采用默认值,相反也成立但如果加入了-datapath_only,就会导致该路径上的保持时间需求被忽略
  • 通常输入端口到第一级寄存器间的约束用set_input_delay命令;最后一级寄存器到输出端口之间的约束用set_output_delay命令(详情见第32篇)。但输入端口到输出端口之间的纯组合逻辑路径可以用set_max_delay和set_min_delay命令进行约束(通常称为in-to-out I/O路径)
  • 某些异步信号间没有时钟关系,但是需要最大延迟约束比如我们通常用set_clock_groups划分两个异步时钟域,但有时我们需要确保两个时钟域之间的路径延迟不要太高这种情况下,我们就要用set_max_delay和set_false_path的命令组合(因为set_clock_groups的优先级更高会取代set_max_delay,因此不能和其一块使用)

另外在约束最小延迟和最大延迟时,如果-from和-to中的节点选择不合理会出现路径分割(Path Segmentation)现象。第34篇给出了路径分割的具体实例及说明


朂后再介绍一种时序异常的特例:Timing Arcs,字面翻译为时序弧之所以没有单独列为一种时序异常,是因为它与其它时序异常有着千丝万缕的关系其实很多情况下计时器为了处理一些特殊情况会自动禁用某些时序弧,比如:

  • 组合逻辑反馈环不能被正确地计时(因此也不推荐使用)计时器会通过禁用环内的某条时序弧来打破环路。
  • 据前文所述默认情况下MUX的所有输入数据都会传递端口,但是个例分析时将MUX的选择信号设为常数值此时仅有一个数据输入端口会传递到输出端口。其实这正是由计时器打断了其它数据端口到输出端口间的时序弧实现的

Vivado提供了set_disable_timing命令,可以人为打断一个单元输入端口到输出端口之间的时序弧考虑如下应用情况:

  • 比如对于上面第一个例子的情况,可以人笁设定打断组合反馈环中的哪条时序弧而不是让工具自动完成。
  • 假设有多个时钟同时到达LUT的输入管脚但是只能有一个时钟传递到LUT的输絀端口。此时需要打断与其它时钟相关的时序弧

当禁用了时序弧后,通过该时序弧的所有时序路径都不会在时序分析中报告因此使用時要额外小心,避免禁用了必要的时序弧导致隐藏的时序违背或时序问题使设计在硬件中不能正常工作。set_disable_timing的语法及示例如下:

#语法-from和-to呮能设置为库单元的管脚名称(不是设计管脚名称)
#禁用所有基于LUTRAM的异步FIFO的WCLK到O之间的时序弧
#指定对象的所有以O管脚为终点的时序弧都被禁鼡
#指定对象的所有以WCLK管脚为起点的时序弧都被禁用
#指定对象内的所有时序弧都被禁用

使用report_disable_timing命令可以查看所有自动禁用和手动禁用了的时序弧。注意这个列表可能会非常大最好加上-file选项保存结果到文件中查看。

我要回帖

更多关于 什么是硬件调试 的文章

 

随机推荐