当前位置:首页 > 如何在
  • 如何在C中嵌入汇编语言

    两种方法在c语言中嵌入汇编:(1) __asm(" 字符串序列"); 例如: __asm(" movn a,#1"); /*第一个双引号右边有一个空格*/(2) #pragram asm 汇编语句 #pragram endasm例如: #pragram asm movn a,#1 movw _temp,a #pragram endasm

    时间:2019-04-05 关键词: 嵌入式开发 汇编语言 如何在

  • 如何在开发嵌入式系统时做出明智的选择

    许多系统设计师将执行软/硬件协同设计周期,即同时开发硬件和软件。理解硬件与软件功能之间的关系以及对两者进行划分有助于确保完全和正确地实现系统需求。 定义和分析需求的初期阶段,系统开发者需要与设计工程师紧密合作,将要求实现的功能分配给硬件或软件。这是根据早期系统仿真、建立原型和行为建模的结果,再加上对前面提及的多种因素的折衷以及过去的设计经验来进行分配的。一旦完成这种分配,就将开始详细的设计和实现。当同时进行硬件和软件设计时,各种不同的分析技术将被应用到实时系统的开发过程中,它们包括:硬件和软件仿真、硬件/软件协同仿真、可规划性建模(如速率单调性分析)、建立原型和增量开发。 能够用于各种不同抽象级的仿真技术可以对性能做出早期评估。低抽象级的仿真能够用于对总线带宽和数据流建模,而且它们对评估性能也非常有用。高抽象级的仿真能解决功能交互问题,并研究硬件/软件的折衷方案和验证设计的有效性。运用仿真方法,复杂的系统能够被抽象为基础的元件和行为。仿真能帮助解决功能方面的问题(数据和算法)、行为方面的问题(处理的先后顺序)或性能方面的问题(资源利用率、吞吐量和时序)。 嵌入式实时系统的优化十分重要。因为这些系统设计用于解决相对较窄范围的问题,所以硬件和软件经优化后只要能执行好单个应用就行。目标是在硬件与软件达到最佳平衡的条件下来设计系统。这个阶段的主要影响因素包括处理器的选择、如何在硬件与软件之间分割应用以及整个系统的集成。 在为嵌入式实时系统选择处理器时,应考虑以下因素: 1.性能:处理器必须具备足够的性能来处理任务,并能支持产品的生命周期。 2.实现:根据具体的应用,需要的处理器可能是高度集成的产品,甚至于符合军用规范。对于一个DSP应用,它可以在几种方案中进行选择。一种选择是ASIC。这种器件能被用作DSP协处理器,但对许多通用信号处理应用而言,它不是非常灵活。另一种选择是RISC处理器。这种器件具有极快的时钟速度,但可能不具备可伸缩性,而且可能还存在其它实时问题。FPGA是一种快速器件,能非常迅速和高效地执行某些DSP功能,但与DSP相比,它们仍很难开发。 在DSP中,一个简单的程序就能完成这些相同的功能。如果应用是宿主信号处理应用,那么选择一款功能更强大、功耗更高的通用处理器可能没有问题。如果信号处理应用要求能快速升级,那么像DSP这样的可编程器件将比定制的硬件解决方案更有吸引力。 3.工具支持:支持软件创建、调试、系统集成、代码调整和优化的工具对于整个项目的成功非常重要。 4.操作系统支持:嵌入式系统应用的复杂性要求采用有益的抽象来降低复杂度。针对所选处理器优化的商用操作系统能够缩短应用开发周期和产品上市时间。 5.过去的经验:以前使用所选处理器或处理器系列的经验可以减少学习新处理器、工具和技巧所需的时间。 6.仿真支持:周期精确的仿真技术在某些种类的应用中十分重要,尤其对于数字信号处理,它的大部分功能是依靠仿真技术来验证正确性的。嵌入式系统的软/硬件协同设计模型也使得处理器仿真器成为开发流程中的一个有用工具。 7.应用支持:支持方式分为许多种——从通过热线或网站提供的应用指南到预打包的软件;从应用框架到可用的测试基准。某些DSP处理器还一并提供用于外围设备的驱动程序、板支持包以及其它“启动套件”。这些软件使应用开发者不必再编写没有增值意义的软件,如设备驱动程序,转而专注于为应用开发增值功能,它们将使产品在市场上表现出个性化特色。 8.成本:嵌入式应用对成本非常敏感。几美分的成本差异就能决定产品在市场上的成败。 9.功耗:许多便携型的嵌入式实时系统是依靠电池供电的。因此,电池寿命成为系统的一个重要参数。在这种情况下,应考虑采用针对便携式应用优化的低功耗器件。 10.遗留代码:选用需要移植现有代码的处理器可能会显著延长开发周期。选择一款代码兼容的器件则可以缩短或省去移植代码的步骤。 11.算法复杂性:特定处理器能很高效地运行特定算法。选择的处理器应该尽可能与应用相匹配。例如,包含大量控制代码的有限状态机应用应该选用RISC器件,如ARM处理器。而诸如编码、解码和回波消除等信号处理应用则应当选用DSP或带有信号处理加速器的某些器件。 12.面市时间:项目的最终期限可能会影响处理器的选择。这与前述的几项选择标准有密切关系,如操作系统和其它软件的可供应性以及代码的可移植性问题等。 因为嵌入式系统的预算不断缩减,实时操作系统(RTOS)和TCP/IP堆栈等商业技术已经得到增强,加上对嵌入式系统的需求不断扩展,所以采用现成商业技术的做法正变得越来越流行。使用现成商业技术可以缩短开发周期的某些阶段,包括编码、调试、单元测试和代码检查等。 不过,如果决定购买而不是自主开发,那么这将改变一家公司的基本开发流程。选择购买现成商业技术的公司预计要进行的一些新工作包括:研究和评估供应商、产品评估以及后续与供应商的互动和关系维护等。 很重要的一点是应该让终端用户和技术人员参与选择现成商业技术供应商的过程。在选择的过程中,不仅要考虑技术问题,还要重点关注商业需求。影响成本的因素包括:易学性、易用性、供应商的信誉和稳定度、许可协议以及培训事宜。在选择供应商时的主要任务包括:研究和理解技术标准;向供应商征询建议;评估供应商的建议并对他们作出排名;选择一家供应商并与之签署合同。 嵌入式系统供应商已经认识到,他们需要通过提供软件模块和框架,来加速软件开发进程。在DSP领域,供应商提供了数百个DSP软件给DSP设计师,供他们在产品和系统开发中使用,其中包括参考框架。 在应用开发的早期阶段,已经设计好的参考框架对于设计师而言是能够用以启动项目的解决方案。参考框架包含在许多应用中可以通用的源代码。设计师可以选择最能满足其系统需要的特定参考框架,然后将参考框架与算法(由其他供应商销售的DSP商业现成技术或者它们自己开发的算法)整合在一起,从而为一系列终端设备创造特定应用,包括宽带、语音、视频成像、生物测定和无线基础设施等。

    时间:2018-11-16 关键词: 嵌入式开发 嵌入式系统 如何在 明智

  • 如何在PCB设计中加强防静电干扰能力的探讨

    如何在设计中加强防静电干扰能力的探讨 印制电路板()是电子产品中电路元件和器件的支撑件。它提供电路元件和器件之间的电气连接。随着电子技术的飞速发展,抄板的密度越来越高。设计的好坏对抗干扰能力影响很大。实践证明,即使电路原理图设计正确,印制电路板设计不当,也会对电子产品的可靠性产生不利影响。例如,如果印制板两条细平行线靠得很近,则会形成信号波形的延迟,在传输线的终端形成反射噪声。因此,在设计印制电路板的时候,应注意采用正确的方法,遵守设计的一般原则,并应符合抗干扰设计的要求。一、 设计的一般原则 要使电子电路获得最佳性能,元器件的布局及导线的布设是很重要的。为了设计质量好、造价低的设计,应遵循以下的一般性原则: 布局 首先,要考虑设计尺寸大小。设计尺寸过大时,印制线条长,阻抗增加,抗噪声能力下降,成本也增加;过小,则散热不好,且邻近线条易受干扰。在确定尺寸后,再确定特殊元件的位置。最后,根据电路的功能单元,对电路的全部元器件进行布局。在确定特殊元件的位置时要遵守以下原则:(1)尽可能缩短高频元器件之间的连线,设法减少它们的分布参数和相互间的电磁干扰。易受干扰的设计元器件不能相互挨得太近,输入和输出元件应尽量远离。(2)某些元器件或导线之间可能有较高的电位差,应加大它们之间的距离,以免放电引出意外短路。带高电压的设计元器件应尽量布置在调试时手不易触及的地方。(3)重量超过15g的元器件,应当用支架加以固定,然后焊接。那些又大又重、发热量多的元器件,不宜装在印制板上,而应装在整机的机箱底板上,且应考虑散热问题。热敏元件应远离发热元件设计。(4)对于电位器、可调电感线圈、可变电容器、微动开关等可调元件的布局应考虑整机的结构要求。若是机内调节,应放在印制板设计上方便调节的地方;若是机外调节,其位置要与调节旋钮在机箱面板上的位置相适应。(5)应留出印制板定位孔及固定支架所占用的设计位置。根据电路的功能单元。对电路的全部元器件进行布局时,要符合以下原则:(1)按照电路的流程安排各个功能电路单元的位置,使布局便于信号流通,并使信号尽可能保持一致的方向。(2)以每个功能电路的核心元件为中心,围绕它来进行布局。元器件应均匀、整齐、紧凑地排列在上。尽量减少和缩短各元器件之间的引线和连接。(3)在高频下工作的电路,要考虑元器件之间的分布参数。一般电路应尽可能使元器件平行排列。这样,不但美观,而且装焊容易,易于批量生产。(4)位于电路板边缘的元器件,离电路板边缘一般不小于2mm。电路板的最佳形状为矩形。长宽双为3:2或4:3。电路板面尺寸大于200×150mm时,应考虑电路板所受的机械强度。

    时间:2018-10-24 关键词: 干扰 能力 防静电 如何在

  • 设计PCB时,如何增强ESD功能?

      在PCB板的设计当中,可以通过分层、恰当的布局布线和安装实现PCB的抗ESD设计。在设计过程中,通过预测可以将绝大多数设计修改仅限于增减元器件。通过调整PCB布局布线,能够很好地防范ESD。 来自人体、环境甚至电子设备内部的静电对于精密的半导体芯片会造成各种损伤,例如穿透元器件内部薄的绝缘层;损毁MOSFET和CMOS元器件的栅极;CMOS器件中的触发器锁死;短路反偏的PN结;短路正向偏置的PN结;熔化有源器件内部的焊接线或铝线。为了消除静电释放(ESD)对电子设备的干扰和破坏,需要采取多种技术手段进行防范。 在PCB板的设计当中,可以通过分层、恰当的布局布线和安装实现PCB的抗ESD设计。在设计过程中,通过预测可以将绝大多数设计修改仅限于增减元器件。通过调整PCB布局布线,能够很好地防范ESD。以下是一些常见的防范措施。 尽可能使用多层PCB,相对于双面PCB而言,地平面和电源平面,以及排列紧密的信号线-地线间距能够减小共模阻抗和感性耦合,使之达到双面PCB的 1/10到1/100。尽量地将每一个信号层都紧靠一个电源层或地线层。对于顶层和底层表面都有元器件、具有很短连接线以及许多填充地的高密度PCB,可以考虑使用内层线。 对于双面PCB来说,要采用紧密交织的电源和地栅格。电源线紧靠地线,在垂直和水平线或填充区之间,要尽可能多地连接。一面的栅格尺寸小于等于60mm,如果可能,栅格尺寸应小于13mm。 确保每一个电路尽可能紧凑。 尽可能将所有连接器都放在一边。 如果可能,将电源线从卡的中央引入,并远离容易直接遭受ESD影响的区域。 在引向机箱外的连接器(容易直接被ESD击中)下方的所有PCB层上,要放置宽的机箱地或者多边形填充地,并每隔大约13mm的距离用过孔将它们连接在一起。 在卡的边缘上放置安装孔,安装孔周围用无阻焊剂的顶层和底层焊盘连接到机箱地上。 PCB装配时,不要在顶层或者底层的焊盘上涂覆任何焊料。使用具有内嵌垫圈的螺钉来实现PCB与金属机箱/屏蔽层或接地面上支架的紧密接触。 在每一层的机箱地和电路地之间,要设置相同的“隔离区”;如果可能,保持间隔距离为0.64mm。 在卡的顶层和底层靠近安装孔的位置,每隔100mm沿机箱地线将机箱地和电路地用1.27mm宽的线连接在一起。与这些连接点的相邻处,在机箱地和电路地之间放置用于安装的焊盘或安装孔。这些地线连接可以用刀片划开,以保持开路,或用磁珠/高频电容的跳接。 如果电路板不会放入金属机箱或者屏蔽装置中,在电路板的顶层和底层机箱地线上不能涂阻焊剂,这样它们可以作为ESD电弧的放电极。 要以下列方式在电路周围设置一个环形地: (1)除边缘连接器以及机箱地以外,在整个外围四周放上环形地通路。 (2)确保所有层的环形地宽度大于2.5mm。 (3)每隔13mm用过孔将环形地连接起来。 (4)将环形地与多层电路的公共地连接到一起。 (5) 对安装在金属机箱或者屏蔽装置里的双面板来说,应该将环形地与电路公共地连接起来。不屏蔽的双面电路则应该将环形地连接到机箱地,环形地上不能涂阻焊剂,以便该环形地可以充当ESD的放电棒,在环形地(所有层)上的某个位置处至少放置一个0.5mm宽的间隙,这样可以避免形成一个大的环路。信号布线离环形地的距离不能小于0.5mm。 0次  

    时间:2018-09-25 关键词: 功能 防静电 如何在

  • 如何在SoC设计中使用事务处理(一)

    建模、验证与调试需要统一标准的符号和框架,以便使架构师和设计工程师能够协同进行复杂SoC的开发。事务处理级模型(TLM)是进行这种分析的理想模型,在片上系统(SoC)设计中使用事务处理级建模,可让设计从高效率协同仿真和高产出的分析与调试中受益。 片上系统(SoC)平台是异质性的实体。它们通常包含至少一个处理器部件(譬如微处理器或DSP),以及外围设备、随机逻辑、嵌入式存储器、通讯基础结构和传感器、传动装置之类的外部接口元件。这些变化多样的设计平台正在将设计焦点和折衷分析转移至通讯层面。 由 于SoC内的功能单元常常是通过若干标准及基于数据总线的专有协议来实现通信,所以理解模块间通讯已经成为验证的一个关键。设计活动向通讯基础架构设计的 转移,也促进了对混合级建模以及调试技术的使用。这些技术使设计工程师能够完全应对从电阻晶体管逻辑电路(RTL)到更高事务处理级的转移,而且无需中断 使用目前的功能验证方法。 有鉴于现今协议的复杂性,要详尽理解信号级上的同步互动是艰难而又费时的。此外,由于不同的团队和个人都将设计视为从规格到实现的提炼过程,所以各个设计团队之间以及团队内部都需要找到一个通用参考框架(frame)。 有代表性的参考标准必须足够灵活以便适合于多个应用领域。它也必须经得起抽象和提炼,以便适用于由上而下设计或由下而上的配置。事务处理级建模(TLM)被用作所需的中间建模抽象级,成为连接顶层和底层的桥梁。事务处理级建模的概念 目前的SoC设计流程是一个混合过程,包括由上而下的从规格制定到实现、从下而上的设计模块集成,以及对来自外部供应商或内部重用模块的知识产权的验证。事 务处理可以作为连接不同设计建模层间间隙的一个最终优化规范。这包括用高级语言实现的无时序(untimed)纯功能性建模、通过架构估计得到大致时序的 功能级,一直到实现级、循环精确的RTL。 除此之外,事务处理级建模也作为系统工程师和专用模块开发者之间的一个通用描述性媒介而发挥着 作用,该媒介超越了不同的适用于具体设计或验证活动的语言的界限。于是,事务处理就变成实施构架开发和折衷分析的一种形式。它是一种通过分析系统功能有效 性和性能度量(譬如整体吞吐量、模块与存储器交互延迟等)来自动进行设计理解和调试过程的手段。 图1显示的是从算法级到实现级的各个抽象级,通常包括SystemC(IEEE P1666)、SystemVerilog(IEEE P1800)和e(IEEE P1647)在内的几种功能建模与验证语言(及标准)被用于设计。另外,先进的方法实践,例如从OpenVera的“参考验证法指南”以及e的“e再使用法推荐”抽取出的方法实践,为算法、构架以及事务处理级建模提供参考。 事务处理级建模是一个相当普通的应用,它涉及并描述设计的每一个功能线程。事务处理级的焦点是“如何”进行,特别是通讯交互“如何”进行,而不在于功能是 “什么”。事务处理所提供的是执行细节在时间上的抽象与空间上的封装在――这是最初注重通讯基础架构而不是功能模块的思想的体现。做这样的抽象建模的好处 是验证效率高。事实上,对事务处理的运用正变得日益广泛、多种多样,并成为主流。 在模块间捕捉同步传输的事务处理也注定会成为折衷分析中的重要角色。因此,建模与记录事务处理对提升基于事务处理的验证和调试技术非常关键,而验证和调试技术是提高开发效率与设计质量所必须的。如何进行事务处理级建模 高级语言(也称为“HLL”,例如SystemC)、其它的硬件验证语言(也称为“HVL”,例如OpenVera、e)以及测试向量(testbenchz)与硬件设计语言(例如SystemVerilog)对事务处理都有程度不一的内在支持。SystemC (www.SystemC.org)可为建模语言内置的用户驱动事务处理的创建提供支持,并可把它们记录到数据库中,就如同采用SCV函数库的sc_trace()写入数据库一样。SCV有许多预先定义的非常有用的类,包括下面三个主要的记录对象:scv_tr_db: 事务处理数据库对象,它允许用户控制记录。该对象是通用的且独立于数据库格式。第三方记录API供应商可以将底层服务对应到他们自己的数据库方案中。 scv_tr_stream: 事务处理流建模对象。流是一种抽象通讯方法,包括重叠事务处理在内的事务处理可以发生流中,例如一个带有读/写事务处理的存储流。因此一个流可以被认为是一个抽象信号,在这个信号中事务处理是可以被信号使用的抽象值,例如一个数据传送总线的地址或数据流。 scv_tr_generator: 围绕一个特定的事务处理类别并且允许创建和增加属性的对象,可以是包括设计信号和信息以及通用有效负载数据在内的任何对象。 下面的代码段 显示了如何利用SCV以一种相对比较直接的方式创建事务处理。每一个代码段前的注释均指出其后语句的目的。事务处理可以以一种无缝的方式(不需要用户的直 接干预)被记录进数据库中。为了实现这一点,工具供应商可以通过在上述三个类中提供的注册机制来注册回叫,从而实现记录功能。用户只需要增加一些初始化调 用即可。// Inside sc_main() or some other context// SCV startupscv_startup();// InitializationAPI_vendor_initialization(); // set SCV callbacks herescv_tr_db db("my_db");scv_tr_db::set_default_db(&db);// Define a stream and a generatorscv_tr_stream mem_stream("memory", "transactor");scv_tr_generator read_gen("read", mem_stream, "mem");scv_tr_handle tr_handle;// Modeling code here// Transaction begin with a tr_data attributetr_data.addr= addr_signal;tr_data.data=data_signal;tr_handle=write_gen.begin_transaction(tr_data);// Transaction endtr_handle.end_transaction();// Other modeling code hereSCV也有许多其它的类,例如,在不同的事务处理之间建立关系的scv_tr_relation。在确定诸如前续-后继之类的因果关系、如父-子之类的层次关系以及成分分析集合体时,关系在分析以及调试方面都相当有用。由于OpenVera(www.open-vera.org)是一种面向对象的建模语言,它可以轻而易举地容纳事务处理级建模的封装概念。该语言目前不具备与SCV类似的内置事务处理类。但可有可能为了这一目的而创建类,例如下面的极小集:trans_db:用于数据库;trans_stream:事务处理流建模对象;trans_type:创建事务处理以及事务处理的属性;trans_handle:便于操控句柄。

    时间:2018-07-17 关键词: SoC 如何在 事务处理

  • 如何在SoC设计中使用事务处理(二)

    建模、验证与调试需要统一标准的符号和框架,以便使架构师和设计工程师能够协同进行复杂SoC的开发。事务处理级模型(TLM)是进行这种分析的理想模型,在片上系统(SoC)设计中使用事务处理级建模,可让设计从高效率协同仿真和高产出的分析与调试中受益。 下面是对图2所示的事务处理进行建模的一个简单代码段。这个类的旨在于将事务处理数据记录到作为trans_db instance dump_file类的事务处理数据库中。输出被显示在图3最右部分。// Inside program or some other OpenVera contexttrans_db dump_file;trans_stream stream1;trans_type mem_read;trans_handle h1;// open a database filedump_file=new("test");// create the memory stream under the test.duv.bus scopestream1=new(dump_file, "test.duv.bus", "memory");// create the read transaction type in the memory streammem_read=new(stream1, "Read");// define 2 attributes in the read transaction typemem_read.create_attr("Addr", INTEGER_DT);mem_read.create_attr("Data", INTEGER_DT);delay(10);// begin a memory read transaction at 10h1=mem_read.begin_now();h1.log_integer_attr("Addr", 170);h1.log_integer_attr("Data", 123);delay(20);// end h1 transaction at 20h1.end_now();// close the database filedump_file.close();当 然,正如前面针对SCV所提到的,另一个有用的类是trans_relation,它负责不同事务处理之间的关系。下面的代码段显示出当 trans_relation为单向时,类是被怎样运用的。一个分析与可视化工具也可以具备预先定义的关系以便获得对分析和显示的特定表示。trans_relation r1;trans_relation r2;trans_handle h1;trans_handle h2;r1=new(f, "parent");r2=new(f, "child");...h1.add_relation(r1, h2); // h2 is the parent of h1h2.add_relation(r2, h1); // h1 is the child of h2 为实现记录,类必须封装事务处理追踪和记录API,使数据库记录细节对用户而言不可见。API必须是开放的,以便在工程师和供应商等人之间培养出一种公共增 值文化。在创建、生成和记录事务处理时,它也必须经受得起跨语言应用的检验,从而给设计工程师一个高价值工具。而且它必须简单、基本,但是要足够宽泛以便 覆盖事务处理记录的基本要素。为获得某些(特定建模语言)具体功能,可以另外在封装之上再建立API。 程序员们开发出了一种被为“开放的 事务处理接口(OTI)”的API。这是在Novas公司的FSDB writer层之上构建的一层。该API用C语言编写以获得高可便携性。事实上前面列出的那些类都是OpenVera事务处理类函数库的一部分。它们构成 了对OTI的封装并且利用DirectC与OpenVera接口。用户可以从任何地方利用DirectC编码直接调用OTI。但总的来说,提供一个将建模 语言的接口要求隐藏起来的OTI封装是一个好主意,这样用户就可以专注于建模而忽略数据库记录的细节。与OTI相似的APIs可以很容易 地使设计工程师能够采用能与C语言接口的语言来开发并记录事务处理数据。这包括其它流行的硬件验证语言,例如e语言。事实上,通过恰当的封装系统任务以及 软件C/C++代码,API也可以在硬件描述语言中使用以直接将事务处理数据从实现中卸载出去。图4是一个带有所有这些模块的系统。 SystemVerilog(3.1a版)(www.systemverilog.org) 是新型的设计建模与测试台语言。它目前没有如SystemC里的内置事务处理类别,但是它存在的目的就是将Verilo电路和寄存器数据抽象化并封装至更 有意义的分组数据中。这使得我们有必要看看如何才能建模然后记录事务处理数据。事实上,可以采用多种方法在SystemVerilog实现这一点:a)等 待增添内置类的标准化努力。这也许会最终发生,不过SystemVerilog今天就可以达到这一目的。因此何必还要等待概念产生然后再期待供应商去支持 它呢?b)创建你自己的事务处理类和方法(任务和功能),然后也许再将其作为一个可分享的函数库捐赠给业界。c)透过直接编程接口(DPI)或编程语言接 口来与SystemC集成。d)在建模过程中调用“系统任务”在恰当的地方完成。 我们认为选项(d)是设计工程师的一个很好的出发点。它囊括了众多的接口要求并且以一种简单、直接而且相当弹性的方式完成任务。设计工程师们可以透过编程语言接口,或者最好透过直接编程接口(DPI)来调用SystemVerilog “任务”或C/C++例行程序。就像DirectC一样,DPI这种机制是被设计用于简单地与用C或C++语言编写的外部无时序模块进行接口。 因此这就产生了两个问题。事务处理对象是什么?设计工程师们该怎样创建/生成/记录事务处理并开发API?同样,我们的答案就是API工具,如图3所示的OTI。它可隐藏执行细节并且为事务处理记录提供一个健全而完整的基础。需要更多的自动化 到目前为止所讨论的事务处理记录是相当有用、高效的。可是实际上它仍然是人工的,更确切地说,用户必须执行事务处理建模并求助于数据库记录。随着标准越来越成熟以及工具供应商联合起来,业界构可以开发额外的自动化生成和记录工具。例如,用户已经可以在Vera RVM中(同样的,在e语言中)用事务处理类生成事务处理。因此,即将到来的自动化将在创建时使用这些回叫工具,这样用户就用不着担心为事务处理分开建模了。他们可以扩展所提供的基本类,并自动获得所需的记录功能。 另外,我们发现SoC通常含有许多模块,包括专利IP,用于设计与验证的建模语言也相当的多(如图3所示)。因此,一个完整的SoC就形成一个难以破解的数 据集合。在这种情况下,如果工程师采用某种方法将事务处理从可获得的数据里提取出来,从而更好地理解系统运行的话就再好不过了。建模、验证与调试需要统一 标准的符号和框架,以便架构师和设计工程师合力进行复杂SoC的设计与开发。TLM是进行这种分析的理想模型。设计工程师们应该更加深入地研究事务处理级 建模的细节,并利用事务处理级建模从高效率协同仿真和高产出的分析与调试中获得最大好处。

    时间:2018-07-05 关键词: SoC 如何在 事务处理

  • 如何在KEIL中实现C语言嵌套汇编语言

    一、讲解背景 在单片机学习的过程中,掌握一点汇编语言是非常有必有的,作为低级语言汇编语言在单片机开发中有它不可取代的作用,比如每条指令可以精确的确定延时时间,便于理解非常适合硬件工程师学习。但是要提高单片机技能,必须掌握C 语言编程,因为C 语言有强大的模块化管理思想。我想在很多人学习的过程中即学了汇编语言,又学习了C 语言,那么一个问题便随之而产生,如果将C 语言与汇编语言相互结合,达到更好的编程效果,本次讲解就是基于这个问题而生成的。 二、操作步骤 第一步: 在KEIL 中新建工程及文件并复制以下程序并保存为C 文件: /* 功能:C 语言里嵌套汇编语言,起到抛砖引玉的作用 */ #include delay() { int i,j; for(i=0;i

    时间:2018-06-01 关键词: 汇编语言 语言 嵌套 如何在

  • 如何在Protel和Powerpcb中输入汉字

    在用Protel和Powerpcb设计电路板时,通常要在板上标上一些文字,因Protel和 Powerpcb都不支持中文字,那我们有办法解决吗?答案是肯定的,看了这节之后你将会说,原来汉字输入问题是这么容易解决的。 所用软件: 1.CAXA98[华正电子图版98~2000] 2.Protel 2.5、Powerpcb2.01 操作步骤: <1>启动CAXA 98软件 选择 绘制->工程标注->文字标注 [如图1] <2> 在出现的对话框中,选择要标注的文字的字号大小,默认值为3.5。 【特注:】因CAXA98或AutoCAD200 中使用的单位,与Protel、或PowerPCB使用的单位不同,即:[MM/Mil]所以在选择字号时,选择字号较细的,一般选择0.2号字就可以了,如最后在Protel或PowerPCB中得出的结果不太理想,可适当在此处调整选择好字号,重复操作便很快了解其中的奥妙之处了。另注:所标注文字一定要放在坐标的右上方[如图2-A]   <3> 在出现[如图3]中输入标注文字回车结束 <4> 保存文件,选择 文件->数据接口->DXF输出 在出现的[如图4]的对话框中,输入保存的文件名, 【注:】选择文字打散。确定即可.   <5> 开启Protel,选择File->New 如下图[5]即新建了一个文件。   <6> 选择File->Import->DXF 出现图[6] <7> 在出现的对话框中,选择先前已保存的*.dxf文件名,确定后,将出现如图[7]   <8> 选择Edit->Select->All选取全部,OK后,再选择Edit->Copy将全选内容进行复制后,最后打开需要标注的PCB文件,再选择菜单中Edit->Paste进行粘贴,把粘贴的内容放在适当位置,即可大功告成。来源:SKT0次

    时间:2018-06-01 关键词: Protel 如何在 输入汉字

  • 如何在C++中struct与Class的的区别

    从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别: (一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理; (二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。 除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。 不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些说明可能有助于澄清一些常见的关于struct和class的错误认识: (1)都可以有成员函数;包括各类构造函数,析构函数,重载的运算符,友元类,友元结构,友元函数,虚函数,纯虚函数,静态函数; (2)都可以有一大堆public/private/protected修饰符在里边; (3)虽然这种风格不再被提倡,但语法上二者都可以使用大括号的方式初始化:A a = {1, 2, 3};不管A是个struct还是个class,前提是这个类/结构足够简单,比如所有的成员都是public的,所有的成员都是简单类型,没有显式声明的构造函数。 (4)都可以进行复杂的继承甚至多重继承,一个struct可以继承自一个class,反之亦可;一个struct可以同时继承5个class和5个struct,虽然这样做不太好。 (5)如果说class的设计需要注意OO的原则和风格,那么没任何理由说设计struct就不需要注意。 (6)再次说明,以上所有说法都是指在C++语言中,至于在C里的情况,C里是根本没有“class”,而C的struct从根本上也只是个包装数据的语法机制。 --------------------------------------------------------------- 最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。 如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同!简单的说就是,存取class的data member和非virtual function效率和struct完全相同!不管该data member是定义在基类还是派生类的。 如果不是为了和C兼容,C++中就不会有struct关键字。因此建议是:如果不需要与C兼容或传递参数给C程序,不要在C++中用struct。 注意class的data member在内存中的布局可不一定是data member的申明次序。C++只保证处于同一个access section的data member按照申明次序排列。 struct所体现的是一种数据结构,而class则是体现OOP思想中的"封装"的特性~~~ 还有一个区别:struct可以用{}赋初值,而class不行 比如声明如下: struct abc{ int m1; float m2; bool m3; } 可以这么构造对象: abc abcInstance{ 1, 1.0f, false }; struct:属性 class:属性+行为 注意:在VC6里,class可以与模板关键字typename互换,但是struct好像就不可以,编译好像通不过。对这个问题,我专门查了一些资料,发现网上确实有说 struct不能用于模板关键字而class可以,这似乎应该是他们的一个不同了。然而,我又看了一下 《深度探索C++对象模型》,在书的前几章(好像就是第一章)Lippman说:本来他的编译器是不支持将struct作为模板关键字的,但后来改变了,也就是说struct 和class除了默认的访问属性外,其他场合下真正的完全一样了。对此,我认为这个按理说是这样的,但不同的编译器可能会有自己的处理,就像VC6那样。 class中有方法, struct中没有. class是一个扩展的struct array(类型一样)->struct(类型可以不一致)->class(添加方法) 虽然两者都可以捆绑行为。 但是,理解不一样。 struct,就是对程序员全局可见的数据与方法。简化数据逻辑结构的设计。可以说是一种自定义的数据结构。 而class,则是将数据与方法封装,即让行为与数据一致。则是一种编程方法。即客观世界在代码世界中的体现。体现的是一种编程思想。 在C里面:struct不能包含函数,而class可以。 在C++里面:都可以有函数,默认情况下struct中变量是public,而class中是private 有一点不明白,class支持的继承和多态,struct也支持?? class在赋值运算符右边出现需要有定义的拷贝构造函数,而struct是默认的位拷贝. 但是一般从兼容C的角度考虑,struct里面只包含数据成员而不包含成员函数,这只是一个编程习惯问题。来源:神秘12次

    时间:2018-05-31 关键词: 区别 如何在 struct

  • 如何在便携式应用中充分发挥FPGA的优势

    为保持“连通和触控”,消费者越来越依赖其便携设备。这些设备包括智能手机、个人媒体播放机、数码照相机以及新出现的电子笔记本等。当今的手持设备有多项功用,基于最终应用,为实现这些功用对存储、特性和技术等方面都提出了挑战。 同时,便携式设计师面临更大的上市时间和成本压力,在对价格敏感的消费品市场,他们要竭尽所能奉献新特性并要与迅速发展的标准与时俱进。使问题更棘手的是,在提供全部这些特性的同时还要不牺牲电池寿命。 传统上,现场可编程门阵列(FPGA)被认为是使设计尽快上市的最佳载体。但基于功耗和成本方面的考虑,该技术曾仅限用于原型生成。 但在过去几年,设计进步业已使FPGA进入大批量便携式设计。另外,新出现的方案帮助设计师降低了成本并延长了电池使用时间。例如,基于闪存的FPGA方案,就省去了高功耗的配置存储器并没有了基于SRAM方案所产生的漏电流。 现已有静态和主动/动态功耗分别低至5mW和25mW的FPGA,该指标媲美定制ASIC和专用处理器的功耗。另外,其天生的可编程能力使设计师可借助基于平台的设计。这使OEM可在单一一个基础平台上根据不同的价格目标来增加或削减特性。使软硬件设计成本分摊到多个产品型号的能力为便携式产品设计师带来更大的规模效益。 便携式设备的存储器要求 当今便携式设备日益增加的数字内容对存储容量提出了更高要求。因此,在这样一个电子设备中便携式存储器将占功耗的一大部分。 在从硬盘到闪存的便携式存储应用中都可借助FPGA来降低成本、增加灵活性并延长电池寿命。运行操作系统和应用软件的应用处理器具有预先设定的接口,从而一般不能适应迅速变化的市场需求。因此,在如下这些领域迫切需要FPGA所提供的灵活性,这些领域包括:存储器、处理器桥、控制器以及连通接口。在这些应用中,基于闪存的FPGA可在支持多种存储器接口标准的同时降低功耗。 大体上分为闪存和硬盘的多种存储方案可用在目前日益增多的电子设备中。诸如录像机等需要大容量硬盘方案的便携产品将使用两种控制器中的一种。第一种是基于并行或串行ATA标准的集成设备电子(IDE)控制器。第二种是消费电子ATA(CE-ATA)控制器,它是用于类似便携式媒体播放机和手持产品等小体积设备的公共标准。 闪存的应用也在扩展,从而拉动了另一类存储器接口的发展。包括SD以及非常小巧且可移动的CF方案在内的多个存储卡格式(加之NAND闪存控制器)是闪存市场使用的主要接口。 根据特定应用,手持设备可能采用这些接口的组合也可能仅采用其中一种接口。无论哪种方式,半导体方案必须提供实施任意数量接口选项的灵活性。 过去,应用处理器仅支持一组经过筛选的存储器接口。但,将应用处理器与超低功耗FPGA结合起来使用是手持设计的一个新趋势,其中利用FPGA来提供桥接功能并扩展处理器的存储器接口支持(图1)。 存储系统的实现 当实现存储系统时,重要的是首先要全力选好基本架构。首要问题是,选用哪款处理器?在竞争激烈的便携市场,通常有几款领先的处理器可供选择。设计师的选择常常受到多个因素的影响,这些因素包括性能、体积、功率和功耗等技术要求及采用那款处理器的早先设计经验等方方面面。 因此,设计师必须仔细*估其设计目标。设计是基于以前的架构吗?若是的话,需要与以前兼容吗?工程师有选择他们最熟悉处理器的自由吗?设计要求低功耗吗?当然,在便携式应用中,处理器的功耗和效率将是设计的关键考量。 还必须决定选用哪种存储器架构。主要处理器都有哪种接口?是否会更频繁地访问某些(相对其它)存储内容?若在内容访问频率上有别,则两级系统也许是最好选择。为满足应用需要,需快速访问存储器吗?若是,则也许需要一个专门的存储器控制器。系统需自动辩识连接的存储器类型并实时匹合其接口标准吗?重申:外接一个自适应控制器将支持该特性。 一般来说,影响处理器选择的是最终应用的设计需求而非那款特定处理器支持的存储器接口。最终应用需求也将影响存储器的选择。这样,在处理器和存储器间的接口可有几千种选择。 在下一步开发前,设计师需测试几种不同的存储方案以确证概念。当需将处理器上可用接口与最佳存储器方案结合起来时,采用FPGA作为接口方案可提供完全的灵活性。 选择存储器接口平台 存储器实现的下一步取决于处理器和应用。存储器领域的许多处理器制造商为简化其特定处理器的使用都提供完整开发平台。每块处理器板都带有一组标准接口,但这种接口可能与所选存储技术所需的不匹配。 处理器开发板应有一个标准扩展接口,该接口是为开发支持附加外设功能的子卡以及允许用一个处理器*估多个协议而专门设计的。在选用一块母板生成原型后,当选择存储器接口时,一块带内置FPGA的子卡将带来不需再购买多个子卡的灵活性。 在处理器扩展卡上,有两种FPGA用法。第一种,通过增加与存储器现有槽兼容的额外存储器槽来扩展固有的外设支持。第二种,增加处理器没有的接口实现非固有的外设支持。 图2显示的是飞思卡尔的i.MX27多媒体开发平台。i.MX27处理器锁定的是诸如视频安全和基于因特网协议的音视频传输等视频应用。该处理器还有丰富的多种接口以满足大多数应用。 供应商想为该开发平台增加其它一些存储器接口。为支持非固有外设选用的基于闪存的FPGA直接连接i.MX27处理器的地址和数据总线。与飞思卡尔的i.MX27一道,FPGA通过自带的SD/MMC和CE-ATA协议接口还支持SD Card和Micro Hard Drive存储介质的使用。 当需验证概念时,一款可支持全部可能接口的存储器卡就很有用。理想情况是,该卡可识别插接的存储器种类并选择FPGA与处理器连接的合适接口。借助该先进的自动连接特性,设计师不必了解如何为每一种设备编程FPGA。但,设计师可为其最终应用*估所选的协议。为进行*估还可将一块通用存储器卡与多个处理器一起使用。 利用行业标准开发板可节省几个月的开发时间并降低制造成本。在不占用原型系统资源的条件下,通过实施第一轮设备选择以及可能的设备减除,可在决定最终架构前*估多个处理器和接口标准。 功耗测量 对低功耗便携应用来说,最好以充分考虑了低功耗要求的开发平台为起点。一般来说,这些系统已经采用了低功耗元器件从而免去了以后所需的某些设计优化工作。 全面的开发平台将提供原理图和详细的元材料清单(BOM),当考虑设计的最终布局及选用器部件时,要仔细研究这些图表。当为低功耗便携式应用选择最佳开发平台和子卡时,可测量整个系统或单个器部件功耗的能力也是个关键考虑。 在选好处理器、存储器种类和IP后,低功耗存储器实现的下一步是确定得出的系统是否真是低功耗的?在此,可用FPGA存储器扩展接口卡测量功耗。 利用板上跳线可进行每个测量。为测量板上的任意部分,需关闭设备、拿掉跳线、连接万用表,然后再给系统上电。为在下列位置实施测量可隔绝电源:FPGA核电流测量有助于*估IP功率使用并演示FPGA可用的灵活功耗优化模式。需注意的是:使用中的FPGA可工作于1.5或1.2V核电压,所以,请确保计算功率时采用的是正确电压。两个额外跳线允许测量3.3V(稳压器输出)条件下的电流。FPGA的任一组I/O都可工作于不同电压,从而支持独立测量各组I/O的电流。 为支持这些测量,系统在任一特定时刻通过LED传递正执行的是哪个功能的信息。它还显示操作中的电压和模式。 除在板级测量功率外,通过软件分析工具测量器件级功率的能力也很重要。许多供应商利用功率计算器进行分析。在此,可输入寄存器和时钟频率以提供功率值。 对设计进行综合然后借助智能功率分析工具(采用IP尤其方便)可实现更准确的测量。这些工具*估设备各个架构特性、各个电源和各个I/O组群的功率使用。随着功率分析工具精度的改进以及设计师学着信任这些结果,从而进一步缩短了设计周期。 多存储器开发平台*估每一存储器接口的功率使用并演示了休眠模式。当器件进入休眠模式(如FlashFreeze)时,需对系统进行测试以确保唤醒接口的命令时序上是正确的。此举将确保接口是完全打开的并在需要时可投入工作。 借助基于闪存的FPGA,当需要时,FlashFreeze技术允许FPGA立即就位,且存储器和寄存器内容保持不变。若你用的是SRAM FPGA,则一定要留出足够时间(150ms左右)以唤醒并配置FPGA。这种程度的时间延迟对某些应用会是个制约因素,所以应对其进行的测试属于系统概念确证的一部分。 随着FPGA技术变得更加先进,FPGA方案最终会提供便携式设备所需的低功耗特性。另外,作为天生的可编程方案,它们还可提供便携式设备设计师为适应当今手持设备使用的实际上数百种之多的处理器和存储器接口组合所需的不断增加的灵活性。 基于闪存的FPGA与用于在各开发阶段便于功率管理的完善开发平台和软件分析工具结合起来将为延长便携式设备的电池寿命助一臂之力。借助FPGA,设计师在继续满足当今消费者不同需求的同时,还可显著缩短其产品上市时间并降低开发成本。(Actel公司)来源:凌空幻生0次

    时间:2018-05-31 关键词: 优势 如何在 充分发挥

发布文章

技术子站

更多

项目外包