专注工科类创新实验教学、科研开发20余年!方案覆盖嵌入式、IOT、AI、机器人、新能源等领域。
 
  当前位置:首页 >> 技术主页 >> 技术问答
  技术支持
  技术问答
  资源下载
  技术培训


 
仿真器常见问题问答
CPLD/FPGA开发工具
ARM常见问题问答
单片机应用编程技术问答

  1、问:为何要使用嵌入式Linux? TOP
   答:
Linux的能力、稳定性、弹性及scalability,再结合它所支援许多微处理机的架构、硬件设备、图形支持和通信协议,建立了Linux逐渐成为受欢迎的软件平台,并被广泛的应用在各种产品中。Linux的使用可以延伸到计算机应用的一系列产品,从IBM微小的Linux腕表到手持式装置(包括PDA和手机)和消费性娱乐系统到资讯家电产品、电话网络设备等.因为Linux以开放的和自由的原始码的形式存在,它的许多差异性和结构及支持的软件,都使Linux逐步发展,以满足市场和各种应用所需的多变化需求。有小的程序核心版本和加强即时处理的版本,而尽管最初的Linux是PC架构的作业系统,现在的Linux已经可以架构在各种非x86的CPU上,而且在不论是否具有存储器管理单元的CPU,其中包括PowerPC, ARM, MIPS, 68K 和甚至微控制器上。

2、问:Linux和uClinux的比较?它们都支持何种文件系统? TOP
   答:
1)、因为uClinux是支持没有存储管理单元的微处理器,因此多任务处理的能力变得很微妙。绝大部分在uClinux上执行的应用程序,并不需要多任务处理的能力。除此之外,大部分的二进制执行码和原始码都会被重新写过以便更紧缩和减少程序码,这意味着uClinux和Linux2.0的核心比起来将是非常非常的小. 2)、NFS、ext2、ext3、MS-DOS和FAT16/32是Linux能支持的几种文件系统,他与uClinux最大的不同点就在于uClinux没有MMU管理单元。

3、问:开发嵌入式LINUX有哪些具体调试方法?TOP
   答:
当为一个新硬件开发相应的嵌入式LINUX系统时,要用到的典型调试工具的序列和步骤是:1)、修改代码使之能读写串口,并使用gdb运行该程序。这将允许它向另一台正运行着gdb程序的LINUX主机通信;gdb通过串口与测试计算机上的gdb目标码会话并给出全部C源码级的调试信息;2)、借助gdb执行余下的,直到LINUX内核开始接管之前的所有硬件和软件的初始化代码;3)、一旦LINUX内核启动后,上述的串口就成为LINUX的控制台端口,可以利用它的便利来进行后继开发过程,并可以使用gdb的内核调试版本kgdb。

4、问:请问在什么情况下要用到评估板?TOP
   答:
JTAG仿真,要有板子才可以进行硬件调试。如果你自己手头没有板子,又想在自己的板子做好之前进行仿真调试,则需要购买一块评估板。自己在做板子的时候,也可以借鉴评估板的电路。

5、问:同调试程序连接时为什么出现 *** Data Abort ***?TOP
   答:
原因有以下几点:1)当debugger启动时,处理器将停在当前PC值指向的地方,同时读取该PC值周围一部分地址的存储器值。如果这些地址正好没有被使用或指向空,就会出现Data Abort,这种情况属于正常。 2)如果是使用了存储器(RAM或ROM),出现这种问题表明在存储器访问上可能存在数据错误,请检查你的存储器。 3)当用户下载程序到目标板时,下载的目标地址是在编译器中指定的,如果编译器里设置的目标地址与目标板上可写存取器的物理地址不能对应,也会报Data Abort,因为调试器试图往错误的物理地址写入用户程序而出错。这时候需要检查并重新设置编译器选项。 4)JTAG口的时钟速率过快。

6、问:在调试过程中经常停止,有时候甚至进不了调试程序?TOP
   答:
在排除了调试程序本身的问题后,这一类带有随机性的问题可以考虑是硬件时序或逻辑问题引起的,最主要的可能性是nTRST和系统reset信号不可靠。Reset信号的不可靠包含两方面:正常工作时要求稳定地保持高电平;复位状态时要求有足够时间的低电平。Reset电路因为简单通常会被忽略,但事实表明很多貌似奇怪的问题最后都归结在这里,无论是从调试的角度还是最后稳定工作的要求,我们都建议你采用一个好的reset电路(或是IC)来代替简单的R-C电路。

7、问:可以只用C语言而不用汇编进行ARM的开发吗? TOP
   答:
不行,一般就启动代码与中断初始化需要用汇编。

8、问:用ARM仿真器连接目标板时提示目标板没有找到,怎么办? TOP
   答:
请按照下列提示进行检查:1)、仿真器、计算机以及目标板之间连接是否正确;2)、 目标板是否上电;3)、 如果上述设置都正确并且计算机并口是好的,请检查调试设备是否正确,方法是在工程设置对话框的General页中检查Debugger device是否选择正确,该选择必须与目标板对应。

9、问:ARM开发的调试方法?  TOP
   答:
用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此集成开发环境(IDE)一般来说是必不可少的,至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。使用集成开发环境开发基于ARM的应用软件,包括编辑、编译、汇编、链接等工作全部在PC机上即可完成,调试工作则需要配合其他的模块或产品方可完成,目前常见的调试方法有以下几种:(1)部分集成开发环境提供了指令集模拟器,可方便模拟调试工作,但是由于指令集模拟器与真实硬件环境相差很大,因此用户最终必须在硬件平台上完成整个应用的开发。 (2)驻留监控软件:驻留监控软件是一段运行在目标板上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯端口与驻留监控软件进行交互来调试。 驻留监控软件对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合 (3)JTAG仿真器:JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。JTAG仿真器比较便宜,连接比较方便,通过现有的JTAG边界扫描口与ARM CPU核通信,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题被最小化了。使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式 (4)在线仿真器:在线仿真器使用仿真头完全取代目标板上的CPU,可以完全仿真ARM芯片的行为,提供更加深入的调试功能。但其价格高昂使其难以普及。

10、问:ARM芯片选择的一般原则是什么?  TOP
   答:
1)ARM芯片内核: 如果希望使用WinCE或Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带MMU功能的ARM芯片,但目前有uCLinux等少数几种Linux不需要MMU的支持;2)系统时钟控制器;3)内部存储器容量;4)USB接口;5)GPIO数量;6)中断控制器;7)IIS接口:即集成音频接口;8)nWAIT信号:外部总线速度控制信号;9)RTC;10)LCD控制器: 有些ARM芯片内置LCD控制器,有的甚至内置64K彩色TFT LCD控制器。在设计PDA和手持式显示记录设备时,选用内置LCD控制器的ARM芯片如S3C2410较为适宜;11)PWM输出;12)ADC和DAC: 有些ARM芯片内置2~8通道8~12位通用ADC,可以用于电池检测、触摸屏和温度监测等;13)扩展总线;14)UART和IrDA:几乎所有的ARM芯片都具有1~2个UART接口,可以用于和PC机通讯或用Angel 进行调试;15)DSP协处理器: ARM+DSP结构的ARM芯片;16)内置FPGA:有些ARM芯片内置有FPGA,适合于通讯等领域;17)计数器和看门狗;18)电源管理功能;19)DMA控制器。最后需要注意的是封装问题。

 

单片机技术支持一站式服务--嵌入式产品售后支持|单片机技术资料下载|单片机技术咨询|单片机技术问答 仿真器常见问题问答

  1.问: 仿真调试时,“复位”是怎么回事?  TOP
  答:
如果仿真系统要求“复位”,实际上是仿真系统无法工作,出现这种现象的原因有多种,如晶振跳线位置不正确,用户板上无电源,仿真头接触不良,仿真头的选择和仿真系统内的设置不一致等,如果出现这种情况,可以先将仿真头从用户板上拔下,把晶振跳线跳到1位置(用仿真头上的晶振),再进入仿真系统。如果正常,则问题在用户板上;否则问题在仿真器设置上。有看门狗(WDT)功能的芯片(如此80196,PIC系列 ,LPC764等),在仿真时应关闭看门狗功能。否则也会导致“复位” 。

2.问: 仿真时工作正常,程序固化后却不能运行? TOP
  答:
出现这种情况有以下几种可能性 :
 (1)用户板的程序块电路有问题:如PSEN不通或接错。电路插座是2764,但程序块用的是27128或27256,地址线高位浮空等。使用89C51内部程序,但EA未接高电平等。
 (2)用户板晶振电路有问题。用户板复位电路不正确。
 (3)用户系统内有需要复位的接口电路,如8155,8255,8279等,在它们还未完成复位时,这时如果CPU就给它们写控制字,就会造成它们工作不正常。这种情况下,CPU 应确保在外设复位后再输出控制字。
 (4)堆栈溢出。8051系列的单片机,有的型号内部有256个RAM,有的只有128个RAM,现在高级语言编译系统都默认是256个 RAM。如果您使用的是128个RAM的型号的芯片, 就应注意堆栈是否会溢出,如果溢出程序就不能运行。 如果这种情况,把CPU换成带256个RAM的型号试试。
 (5)程序片烧写不正确,这有以下几种情况:A、格式不对,或者是烧的内容不对 B、光写程序,未写芯片的设置字,如PIC系列,LPC764,80C196的保留字等。这些设置字中凡是需要用户写的应正确填写,不需要写的应写入“FF”。
 (6)检验程序片是否烧写正确的方法是,从一片烧好的芯片中读出机器码,并生成机器代码文件,然后让仿真器运行这个机器代码文件。如果不能正确运行,应重新烧写程序片。
 (7)系统接线有错,造成固化后的程序,不在系统所要求的地址空间内,当然不能运行。 控制脚接,特别对于80196系列芯片,如果READY脚,NMI脚浮空,则也会出现固化后程序不能运行的现象。

3.问:调试时为什么不能在源程序上进行? TOP
  答:
如果源程序文件编译不正确或者链接(LINK)出错, 仿真时就会跳到CPU窗口,出现这种现象,就仔细检查编译和链接是否正确。另外,在PLM语言中,模块文件的头尾是否与文件名相同,例如,某一模块文件名为ABC.PLM,则该文件的开始应有ABC:do; 文件的结束应有END ABC;,否则也会出现这种现象。

4.问:为什么要采用项目的方式开发程序? TOP
  答:
项目是用户程序和系统设置的集合,采用项目形式开发,可以大大地减少设置出错,简化操作,便于管理。

5.问: 如何以单个文件的形式进行仿真? TOP
  答:
以单个文件形式进行仿真的步骤如下:(以8031为例)
 (1)进入WINDOWS环境下的伟福仿真系统。
 (2)选菜单文件/新建项目,以清除系统当前项目,此时将出现一个空的项目窗口
 (3)选菜单文件/打开文件,打开C:\WAVE\SAMPLES\MAIN.ASM文件。
 (4)选菜单仿真器/仿真器设置/CPU, 设置好仿真器,仿真头(POD),CPU的类型。
 (5)选菜单仿真器/仿真器设置/目标文件,设置好目标文件的类型和格式。如选择 BIN,HEX两种格式,源程序编译好,将产生 相应的目标文件,以备烧写程序片用。
 (6)如果源程序是高级语言,还需要选菜单仿真器/仿真器设置/语言,以设置相应的语言编译所要求的环境。
 (7)选菜单项目/全部编译,对当前源文件进行编译。
 (8)如果程序有错,将在信息窗口中指出。
 (9)如果没错,则可以按要求进行仿真。


单片机技术支持一站式服务--嵌入式产品售后支持|单片机技术资料下载|单片机技术咨询|单片机技术问答 CPLD/FPGA开发工具

  1、PLD,CPLD,FPGA有何不同?  TOP
  答:
不同厂家的叫法不尽相同,PLD是可编程逻辑器件的总称,早期多EEPROM工艺,基于乘积项结构。 FPGA是指现场可编程门阵列,最早由Xilinx公司发明。多为SRAM工艺,基于查找表结构,要外挂配置用的EPROM。Xilinx把SRAM工艺,要外挂配置用的EPROM的PLD叫FPGA,把Flash工艺、乘积项结构的PLD叫CPLD;Altera把自己的PLD产品:MAX系列,FLEX/ACEX/APEX系列都叫作CPLD,即复杂PLD,由于FLEX/ACEX/APEX系列也是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX/ACEX/APEX系列产品也叫做FPGA.

2、NiosII嵌入式处理器是一个什么样的处理器?与其他相比具有哪些功能? TOP
  答:
1)Nios II嵌入式处理器是一个用户可配置的通用RISC嵌入式处理器。它的易用性和灵活性使它成为世界上最流行的嵌入式处理器之一。
      2)Cyclone II FPGA系列是价格极其敏感应用的正确选择,因为其提供了与所有其他成本优化FPGA系列相比最低的单LE价格。每个Cyclone II器件都被设计拥有一套最佳的功能,包括: 多达68,416 LE用于高密度应用多达1.1兆比特的嵌入式处理器用于通用存储 多达150个18x18 嵌入式处理器用于低成本数字信号处理(DSP)应用 专用外部存储器接口电路用以连接DDR2、DDR和SDR SDRAM以及QDRII SRAM存储器件 最多4个嵌入式PLL,用于片内和片外系统时钟管理 支持单端I/O标准用于64-bit/66-MHz PCI和64-bit/100-MHz PCI-X (模式1)协议 具有差分I/O信号,支持RSDS、mini-LVDS、LVPECL和LVDS,数据速率接收端最高达805兆比特每秒(Mbps),发送端最高622Mbps 对安全敏感应用进行自动CRC检测 具有支持完全定制Nios? II嵌入式处理器 采用串行配置器件的低成本配置解决方案 可通过Quartus II软件的OpenCore Plus评估功能进行免费的IP功能评估 Quartus II网络版软件提供免费软件支持。

3、我原来有一个74系列设计的电路,工作很正常,为什么原封不动集成到PLD中以后却不能正常工作,是芯片有问题吗?  TOP
  答
:设计PLD/FPGA内部电路与设计74的分立电路是有区别的。这个问题是由于电路中的毛刺造成的。电路布线长短不同造成延时不一致,有竞争冒险,产生毛刺。分立元件之间存在分布电容和电感可以滤掉这些毛刺,所以用分立元件设计电路时,很少考虑竞争冒险和毛刺问题,但PLD/FPGA内部没有分布电容和电感,不可以滤掉任何毛刺(哪怕只有1ns)。有些毛刺是可以忽略的,有些是致命的(如D触发器的clk,clr,PRN端)。这些致命的毛刺将导致电路不能正常工作。这是设计FPGA和设计分立元件最大的不同。可以通过修改电路减少有害毛刺。根据经验,几乎所有稳定性或可靠性问题均由PLD内部电路设计不合理造成的。

4、如何将信号做一定延时?  TOP
  答:
当需要对某一信号作一段延时时,初学者往往在此信号后串接一些非门或其它门电路,此方法在分离电路中是可行的。但在FPGA 中,开发软件在综合设计时会将这些门当冗余逻辑去掉,达不到延时的效果。用ALTERA公司的MaxplusII开发FPGA时,可以通过插入一些LCELL原语来产生一定的延时,但这样形成的延时在FPGA芯片中并不稳定,会随温度等外部环境的改变而改变,因此并不提倡这样做。在此,可以用高频时钟来驱动一移位寄存器,待延时信号作数据输入,按所需延时正确设置移 位寄存器的级数,移位寄存器的输出即为延时后的信号。此方法产生的延时信号与原信号比有误差,误差大小由高频时钟的周期来决定。对于数据信号的延时,在输出端用数据时钟对延时后信号重新采样,就可以消除误差。

5、什么是IP核或IP库?有那些种类? TOP
  答:
IP核是指:将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等等设计成可修改参数的模块,让其他用户可以直接调用这些模块,这样就大大减轻了工程师的负担,避免重复劳动。随着CPLD/FPGA的规模越来越大,设计越来越复杂,使用IP核是一个发展趋势。不过目前大多数库是收费的。

6、如何设计3.3V,2.5V等低电压PLD/FPGA的电源? TOP
  答:
多用低压差线形稳压器(LDO)或采用开关电源,详细内容参见低电压PLD/FPGA的供电设计。

7、CPLD / FPGA的宏单元是怎么定义?一个宏单元对应多少门?  TOP
  答:
宏单元(或逻辑单元)是PLD/FPGA的最基本单元,不同产品对这种基本单元的叫法不同,如LE,MC,CLB,Slices等,但每个基本单元一般都包括两部分,一部分实现组合逻辑,另一部分实现时序逻辑。各个厂家的定义可能不一样。对ALTERA的芯片,每个基本单元含一个触发器;对Xilinx的部分芯片,每个基本单元单元含两个触发器。一般不用“门”的数量衡量PLD/FPGA的大小,因为各家对门数的算法不一样,象ALTERA和Xilinx对门的计算结果就差了一倍,推荐用触发器的多少来衡量芯片的大小。如10万门的Xilinx的XC2S100有1200个slices,即含2400个触发器;5万门的ALTERA的1K50则含2880个LE,即2880个触发器。

8、为什么有些按照标准VHDL语法编写的程序在MaxplusII下编译通不过?  TOP
  答:
MaxplusII支持大部分VHDL语法,但也有一些标准的VHDL语句不能支持,最好的方法是采用专用VHDL语言综合工具综合,生成*.edif文件后再给MaxplusII做布线。2000.5月起Altera与Synopsys和Mentor公司达成合作协议,所有Altera用户均可按协议可免费使用以下专用的VHDL工具:1.Synopsys公司FPGA Express(HDL综合工具)2.Mentor 公司 Graphics'Leonard Spectrum (HDL综合工具)3.Mentor公司ModelSim(HDL仿真工具), 软件可从Altera的网上下载。9、在仿真时,如何设置时钟周期和总的仿真时间?
在出现仿真窗口后,要把菜单:Option>snap to the grid 的勾去掉,才可任意设置时钟频率,在菜单File>End time中可修改仿真时间。仿真时间越长,对内存和CPU要求也越大。

9、FLEX10K/ACEX系列器件中可以做各种RAM和ROM,那么如何初始化ROM? TOP
  答:
调入ROM元件时(可用LPM_ROM或用MegaWizard Plug-In Manager调入)软件会问初始化文件的名字,如你还没有做好这个文件,可以先填一个文件名,如:test.mif或test.hex(test这个文件现在并不存在),完成设计后编译,再建立波形文件*.SCF,打开仿真窗口simulator, 此时可在菜单中找到Initialize>Initialize Memory(这个选项只有在仿真窗口出现后才会出现)此时你可以编辑初始化文件并输出成*.mif或*.hex文件(如test.mif或test.hex),要再次编译。这样才算完成。

10、如何计算功耗和供电电流问题? TOP
  答:
对QuartusII的用户可以直接用QuartusII计算功耗。对MaxplusII的用户可以用这里的几个Excel小程序来自动计算功耗和电流,感兴趣的用户不妨下载一试,如对有些参数不清楚,可查阅Altera Date BooK。
1)MAX7000数据手册 2)FLEX10K/6K数据手册 3)最新自动计算功耗文件数据手册(包括APEX20K/10K/6K/7K)

11、如何解决下载电缆 (Byteblaster) 不能下载的问题? TOP
  答:
1)检查Maxplus2菜单Assign>device中芯片型号与实际使用的芯片型号是否一致.出现编程窗口后,菜单option>hardware 中要选择Byteblaster。 2)检查PC的CMOS设置中并口是否是ECP模式,如是WindowsNT或Windows2000,应先装Byteblaster驱动程序(NT的控制面板>多媒体>添加硬件,或Win2000的控制面板>添加新硬件>多媒体,Byteblaster的driver在你的安装目录\maxplus2\driver下。 3)检查Byteblaster是否插反,换一条电缆试一试。 4)检查芯片是否发烫,芯片各边VCC,GND是否正常,有没有按Databook要求加1K上拉或下拉电阻,与Byteblaster连线是否正确。对FLEX系列的MSEL0/MSEL1和nCE管脚是否处理正确,没有使用的全局信号是否已接地。 5)参照数据手册或光盘,检查下载波形,极少数PC的主板并适合使用ISP,换一台计算机。最后一招,与革新科技联系,获得技术支持。
注意:有些用户自制的下载电缆不良会带来干扰,反射及信号过冲问题,引起数据传输错误,导致下载失败。建议购买革新科技(或ALTERA原厂)下载电缆。

12、不用的管脚如何处理? TOP
  答:
不用的全局信号和专用输入管脚,应接地,如:Global clk,Global clear,Ded input.其他不用的管脚一般悬空。Maxplus2中的报告文件(*.rpt)详细说明了管脚的接法。如不用的管脚与外电路相连,为保证不影响外电路,应将此管脚定义为输入脚,但不接逻辑。

13、EPM7000S的几个全局输入脚GCLK1、OE2 (GCLK2)、OE1、GLCRn都是干什么的?怎么在编程中使用?  TOP
答:
1) GCLK:全局时钟脚,这个脚的驱动能力最强,到所有逻辑单元的延时基本相同,所以如系统有外部时钟输入,建议定义此脚为时钟脚。如想用其他脚为时钟输入,必须在在菜单:Assign>Global project logic synthesis>Automatic global>把GCLK前面的勾去掉。这样任意一个I/O脚均可做时钟输入脚
    2)OE2/GCLK2:全局输出使能/全局时钟脚,两者皆可。
    3) OE1:全局输出使能,如有三态输出,建议由此脚来控制(也可由内部逻辑产生输出使能信号),优点和用法同上。
    4) GCLRn:全局清零,如有寄存器清零,建议由此脚来控制(也可由内部逻辑产生清零信号),优点和用法同上。
    5)分配这些脚和分配普通I/O脚是一样的,先在Assign>device中选好器件型号,再在Assign>pin中填入你想分配的管脚号和类型,或直接在原理图中选中input或output,点鼠标右键,选>assign pin,填入你想分配的管脚号,编译一遍即可。但要注意菜单:Assign>Global project logic synthesis>Automatic。global>中的设置。10K/6K/3K的全局脚的意义与此相同。

 

单片机技术支持一站式服务--嵌入式产品售后支持|单片机技术资料下载|单片机技术咨询|单片机技术问答 单片机应用编程技术问答

  1.问: C语言和汇编语言在开发单片机时各有哪些优缺点?  TOP
  答:
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
  C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。
  对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,建议采用汇编语言比较好。

2.问: 初学者到底是应该先学C还是汇编? TOP
  答:
对于单片机的初学者来说,应该从汇编学起,因为汇编语言是最接近机器码的一种语言,可以加深初学者对单片机各个功能模块的了解,从而打好扎实的基础。
 
3.问:如何进行编程可以减少程序的bug? TOP
  答:
在此提供一些建议因系统中实际运行的参数都是有范围的。系统运行中要考虑的超范围管理参数有:
  物理参数:这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理。
  资源参数:这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。在程式设计中,对资源参数不允许超范围使用。
  应用参数:这些应用参数常表现为一些单片机、功能单元的应用条件。如E2PROM的擦写次数与资料存储时间等应用参数界限。
  过程参数:指系统运行中的有序变化的参数。
  在上述参数群对一程式编写者而言,须养成良好习惯,在程式的开头,有顺序的用自已喜欢文字参数对应列表来替代。然后用自己定义的文字参数来编写程序,这样在做程式的修改及维护时只在程式的开头做变动即可,不用修改到程序段,才比较容易且不会出错。

4.问:MCU在射频控制时,MCU的时钟(晶振)、数据线会辐射基频或基频的倍频,被低噪放LNA放大后进入混频,出现带内的Spur,无法滤除。请问有没有好的解决方法? TOP
  答:
在设计高频电路用电路板有许多注意事项,尤其是GHz等级的高频电路,更需要注意各电子元件pad与印刷pattern的长度对电路特性所造成的影响。
  最近几年高频电路与数位电路共用相同电路板,构成所谓的混载电路系统似乎有增加的趋势,类似如此的设计经常会造成数位电路动作时,高频电路却发生动作不稳定等现象,其中原因之一是数位电路产生的噪讯,影响高频电路正常动作所致。为了避免上述问题除了设法分割两电路block之外,设计电路板之前充分检讨设计构想,才是根本应有的手法,基本上设计高频电路用电路板必需掌握下列三大原则:
    1. 高质感;
    2. 不可取巧;
    3. 不可仓促抢时间;
  以下是设计高频电路板的一些建议:
  (a)印刷pattern的长度会影响电路特性。
  尤其是传输速度为GHz高速数位电路的传输线路,通常会使用strip line,同时藉由调整配线长度补正传输延迟时间,其实这也意味着电子元件的设置位置对电路特性具有绝对性的影响。
  (b)Ground作大better。
  铜箔面整体设置ground层,而连接via的better ground则是高频电路板与高速数位电路板共同的特徵,此外高频电路板最忌讳使用幅宽细窄的印刷pattern描绘ground。
  (c)电子元件的ground端子,以最短的长度与电路板的ground连接。
  具体方法是在电子元件的ground端子pad附近设置via,使电子元件能以最短的长度与电路板的ground连接。
  (d)信号线作短配线设计。
  不可任意加大配线长度,尽量缩短配线长度。
  (e)减少电路之间的结合。
  尤其是filter与amplifier输出入之间作电路分割非常重要,它相当于audio电路的cross talk对策。
  (f)MCU回路Layout考量:
  震荡电路仅可能接近IC震荡脚位;震荡电路与VDD & VSS保持足够的距离;震荡频率大于1MHz时不需加 osc1 & osc2 电容;电源与地间要最短位置并尽量拉等宽与等距的线,于节点位置加上104/103/102等陶瓷电容。

5.问:如果已经有了针对某MCU的C实现的某个算法,保持框架不变,对核心的部分用汇编优化,请问有没有一些比较通用的原则?有这些方面介绍的书么? TOP
  答:
1.每个人的编程都有自己的风格与习惯,如果你要利用别人的程序,在其中修修改改,如果它的程序并没有很好的模块化的话,建议你最好不要这么做,否则你本来预期达到事倍功半,说不定反而事半功倍了。要参考他人的程序当然可以,但是首要是你要看懂并理解他人程序的算法精髓,而不是在他的基础上打补丁。而关于算法方面的优化,你可以购买一些数据结构的书籍,上面有比较详细的说明。
  2.算法的运行时间是指一个算法在计算机上运算所花费的时间。它大致等于计算机执行简单操作(如赋值操作,比较操作等)所需要的时间与算法中进行简单操作次数的乘积。通常把算法中包含简单操作次数的多少叫做算法的时间复杂性。它是一个算法运行时间的相对量度,一般用数量级的形式给出。度量一个程序的执行时间通常有两种方法:
  一种是事后统计的方法。因为很多计算机内部都有计时功能,不同算法的程序可通过一组或若干组相同的统计数据以分辨优劣。但这种方法有两个缺陷:一是必须先运行依据算法编制的程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优劣。因此人们常常采用另一种事前分析估算的方法。
  事前分析估算的方法。一个程序在计算机上运行时所消耗的时间取决于下列因素:
    ① 依据的算法选用何种策略;
    ② 问题的规模。例如求100以内还是1000以内的素数;
    ③ 书写程序的语言。对于同一个算法,实现语言的级别越高,执行效率就越低;
    ④ 编译程序所产生的机器代码的质量。这个跟你的编译器有关;
    ⑤ 机器执行指令的速度。
  显然,同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行时,效率均不相同。这表明使用绝对的时间单位衡量算法的效率是不合适的。撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法“运行工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。
  一个算法是由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。为了便于比较同一问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本运算的原操作,以该基本操作重复执行的次数作为算法的时间度量。

 

 
   
销售电话:010-82608898     技术支持:82608898-800    Email:sales@gexin.com.cn
Copyright © 2012-2024 版权所有:北京革新创展科技有限公司   京ICP备20004067号-1