欢迎来到凡亿课堂

微信扫码登录
账号密码登录
手机快捷登录

微信扫一扫,关注后即可登录

免费注册 忘记密码?

快速登录

快速登录

注册

Hi,欢迎加入凡亿课堂

长度6-15位的密码

请输入手机号码

+86
下一步 如需帮助,请致电客服:0731-8388-2355
dot
LED驱动电源的结构、特点、分类
dot
【电子概念100问】第005问 PCB封装的组成元素有哪些?
dot
零基础学嵌入式实训尤为重要
dot
电路设计电源变压器的比较
dot
Altium Designer 安装问题合集
dot
RJ45-以太网口 PCB设计规范
dot
电路设计电源变压器的比较
dot
PCB层如何设计,EMC效果才能最优?
dot
PCB中过孔的封装应该如何创建
  • 单片机/工控

    学好单片机编程设计的方法和3个步骤

    学习单片机的动机不外乎有四种:一是为兴趣爱好而学,二是为专业而学;三是为饭碗而学;四是在工作中被逼而学。不管是哪种动机,因主修专业的不同以及电子基础的深浅不同,对于不同的人可能采用不同的学习方法,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。第一步:单片机基础理论知识学习基础理论知识包括模拟电路、数字电路和C语言知识。模拟电路和数字电路属于抽象学科,要把它学好还得费点精神。在你学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。否则,你的单片机学习之路不仅会很艰难和漫长,还可能半途而废。笔者始终认为,扎实的电子技术基础是学好单片机的关键,直接影响单片机学习入门的快慢。有些同学觉得单片机很难,越学越复杂,最后学不下去了。有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。如果你觉得单片机很难,那就应该先放下单片机教材,去重温数字电路,搞清楚触发器、寄存器、门电路、COMS电路、时序逻辑和时序图、进制转换等理论知识。理解了这些知识之后再去看看单片机的结构和原理,我想你会大彻大悟,信心倍增。模拟电路是电子技术最基础的学科,她让你知道什么是电阻、电容、电感、二极管、三极管、场效应管、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。一般是先学习模拟电路再去学习数字电路。扎实的模拟电路基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。C语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。C语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。当基础打好以后,你会感觉到单片机不再难学了,而且越学越起劲。当单片机乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的世界里。可以这么说,扎实的电子技术基础和C语言基础能增强学习单片机信心,较快掌握单片机技术。第二步:单片机实践这是真正学习单片机的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感。其中的酸甜苦辣只有学过的人深有体会。思想上要有刻苦学习的决心,硬件上要有一套完整的学习开发工具,软件上要注重理论和实践相结合。1.有刻苦学习的决心首先,明确学习目的。先认真回答两个问题:我学单片机来做什么?需要多长时间把它学会?这是你学单片机的动力。没有动力,我想你坚持不了多久。其次,端正学习心态。单片机学习过程是枯燥乏味、孤独寂寞的过程。要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫。再次,要多动脑勤动手。单片机的学习具有很强的实践性,是一门很注重实际动手操作的技术学科。不动手实践你是学不会单片机的。最后,虚心交流。在单片机学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间。2.有一套完整的学习开发工具学习单片机是需要成本的。必须有一台电脑、一块单片机开发板(如果开发板不能直接下载程序代码的话还得需要一个编程器)、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板用来运行单片机程序,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试。对于单片机初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和C语言教材是理论学习资料,备忘备查。不要为了节约成本不用开发板而光用Protur软件仿真调试,这和纸上谈兵没什么区别。3. 要注重理论和实践相结合单片机C语言编程理论知识并不深奥,光看书不动手也能明白。但在实际编程的时候就没那么简单了。一个程序的形成不仅需要有C语言知识,更多需要融入你个人的编程思路和算法。编程思路和算法决定一个程序的优劣,是单片机编程的大问题,只有在实际动手编写的时候才会有深切的感悟。一个程序能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理。如果程序不正常则要反复调试(检查、修改思路和算法),直到成功。这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废。学习编写程序应该按照以下过程学习,效果会更好。看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程序,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,比较程序运行效果,领会其中的奥妙。每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想。当然,刚开始,看别人的程序源代码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照。只要能坚持下来,学习收获会事半功倍。在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓展,让程序产生更强大的功能。同时,还要懂得通过查阅芯片数据手册(DATASHEET)里有关芯片命令和数据的读写时序来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程序。不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验。第三步:单片机硬件设计当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的单片机编程水平相当不错了。接下来就应该研究的硬件了。硬件设计包括电路原理设计和PCB板设计。学习做硬件要比学习做软件麻烦,成本更高,周期更长。但是,学习单片机的最终目的是做产品开发----软件和硬件相结合形成完整的控制系统。所以,做硬件也是学习单片机技术的一个必学内容。电路原理设计涉及到各种芯片的应用,而这些芯片外围电路的设计、典型应用电路和与单片机的连接等在芯片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。电子技术领域的第一手资料(DATASHEET)都是英文,从第一手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不全面,甚至存在翻译上的遗漏和错误。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍单片机学习者晋级的绊脚石。良好的英文阅读能力能让你在单片机技术知识的海洋里自由遨游。做PCB板就比较简单了。只要懂得使用Protel软件或 AltimDesigner软件就没问题了。但要想做的板子布局美观、布线合理还得费一番功夫了。娴熟的单片机C语言编程、会使用Protel软件或 AltimDesigner软件设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。

    2020-04-20 811 发布人:凡亿教育
  • Cadence Allegro

    Allegro软件中怎么指定封装库路径,其中每一个的代表什么含义呢?

     一般我们会在Allegro软件中指定这几个与封装库有关的路径。第一步,点击Allegro软件的Setup命令的最后一项User Preferences...,如图4-25所示; 图4-25  用户参数设置示意图第二步,在弹出的对话框中,选择Library中的devpath、padpath、psmpath三项设置路径,如图4-26所示; 图4-26  封装库路径指定示意图Ø Devpath:第三方网表(Other方式导出的网表)导入PCB时须设置的路径,如果是用第一方网表导入不用进行设置。它的作用是指定导网表时需要的PCB封装的device文件,文件里有记录PCB封装的管脚信息,导第三方网表时会将device文件中的内容与网表中的管脚信息进行比对;Ø Padpath:PCB封装的焊盘存放路径;Ø Psmpath:PCB封装文件、PCB封装焊盘中使用的Flash文件、PCB封装焊盘使用的Shape文件等内容的存放路径。(以上内容转载于凡亿教育)

    2020-04-20 815 发布人:凡亿教育
  • 模电电路

    电动汽车为什么能跑?

    电动汽车保留了传统汽车的加速踏板、制动踏板和各种操纵手柄等,但它不需要离合器。当驾驶员启动点火钥匙时,电动汽车并没有什么反应,只是附件电器接通电源,但电机并没有开始运转。当驾驶员把挡位换到D档,并踩加速踏板,此时挡位信息和加速踏板的行程,转换为电信号,通过信号线传递给整车控制器VCU,VCU把驾驶员的操作意图通过CAN线,传递给电机控制器MCU,电机控制器将动力电池提供的高压直流电,转变成三相交流电,驱动电机旋转,输出扭矩,通过变速器、差速器和传动轴,驱动车轮转动。随着油门加速踏板被踩的深度不断加大,电机控制器控制它内部的6个IGBT功率开关管,使IGBT的开通的频率增加,电流不断增大,电机的转速不断增大,电动汽车就会不断加速,在这一段加速过程中,电机的功率也是不断增加的,但是电机的转矩保持为最大值不变。当驾驶员松开加速踏板,电控系统根据加速踏板的位置传感器的信息,调节电机的转速,最终使电动车的速度下降。与此同时,电机控制器会通过电流传感器、电压传感器、温度传感器、电机旋转变压器等,监测当前电机的电流大小、电压大小、转速大小、电机温度等信息,并把一部分信息数据通过CAN网络,传送给整车控制器、车内仪表。电动汽车是如何实现倒车的呢?当驾驶员挂倒挡(R档)时,倒车信号就发送给整车控制器VCU,再通过CAN线传递给电机控制器MCU,电机控制器通过控制它内部的6个IGBT的开关顺序,改变输出的三相交流电UVW的相序,从而控制电机反转,实现倒车。

    2020-04-18 916 发布人:满格电汽修学院
  • Cadence Allegro

    pcb工程师必备39条Allegro操作指令

    下面为大家总结了39条Allegro操作指令,涉及鼠标设定、Text path设置、Stroke的使用等,无论是新手还是老司机,这些常用操作指令都必须熟记在心!1. 鼠标设定:在Allegro视窗 layout时,每执行一个指令例:Add connect, Show element等鼠标会跳到option窗口,这样对layout造成不便。控制面版>滑鼠之移动选项中,指到预设按钮(或智慧型移动):取消“在对话方块将滑鼠指标移到预设按钮”设置2. Text path设置:在Allegro视窗 LAYOUT时,不能执行一些指令:Show element, Tools>report… 1) 应急办法:搜寻一个相应的log文档copy到档案同一路径即可.2) Setup>User Preference之Design_Paths>textpath项设为:C:\cadance\PSD_14.1\share\PCB/text/views即可.3. 不能编辑Net Logic. Setup>User Perference之项选择logic_edit_enabled,点选为允许编辑Net Logic, 默认为不能编辑Net Logic.4. 转gerber前需update DRC,应尽量将DRC排除,有些可忽略的DRC如何消除? 1)&nBSP; logo中文字所产生的K/L error,可另外增加一个subclass,这样该文字不用写在ETCH层,可消除K/L error. 2) 有些可忽略的P/P,P/L 的error,可给那些pin增加一个property---NO_DRC, 操作:Edit/Properties,选择需要的pin,选NO_DRC, Apply, OK5. 对某些PIN添加了”NO DRC”的属性可ERRO并不能消除,这是为什么? “NO DRC”属性只争对不同的网络,对相同的网络要清除ERRO,可设定Same net DRC为off.6. 如何Add new subclass: Setup>Subclass之Define Subclass窗口选Class,点add”New subclass” 通常用到的new subclass有:Geometry\Board Geometry\之Top_notes, Bottom_notes, Gnd_notes, Vcc_notes等。其作用为gerber中Log之Title/Page name所放层面。 7. 对differential pair nets 之”net space type” properties应怎样设定?1) 先设定对net 设定一differential pair property,2) 再在constraints system 控制面板中选择spacing rule nets 栏的attach property nets,并在allegro 窗口control panel的find by name 下选择 property,3) 选取相应property,4) 再对其套用spacing rule 即可.8. Hilight时的两种不同的显示方式(实线和虚线)在setup>user preferences>display中,勾上display_nohilitefont,则以实线显示,不勾则虚线显示,实线比较容易看清9. 怎样更新Allegro layout窗口下的tool bar和display option设定1) View>customization>tool bar中,勾上欲显示在窗口中的内容;欲锁住右边display option窗口,在view>customization>display option中选locked_right.这样重开一个ALLEGRO窗口时就会恢复上一次的设定.10. Color and Visibility 视窗过长,有的人在使用一阵子后会发现Color and Visibility 视窗过长不好关掉其视窗,这时有两个方法可解决。1) 关掉 Allegro程式然后删掉\pcbenv路径下的allegro.geo,再进 Allegro 就会重设其视窗 2) 将Allegro.geo 档中的Form.cvf_main 改其值  60  40  0  43011. 开启allegro时,会自动在桌面上生成allegro.jrl档,怎么解决?可能的情况:环境变数中将temp路径设成了桌面1) 环境变数中将temp应设成:%USERprofile%\Local settings\Temp2) Setup>User Perference之Design_Paths>textpath项设成了桌面12. 当我们要RENAME背面元件时不成功选Edit/property,选中背面所有元件(FIND中选component),分配一个auto_rename属性,然后再rename一次。13.RenameSetup/user preference Editor/misc/fst_ref_des可以设数值如501,它代表的意思是元件Rename后是从501开始如C501,R501等等。14. 我们在走线时﹐经常碰到这样的问题﹒走线时候我们渴望RATS显示随着走线而改变﹐以便走线﹒ Setup/Drawing options之Display中的Ratsnest Points有两选项:1) Pin to Pin (Rats在Pin之间显现) 2) Closest end point (Rats随走线改变显示)15. 怎样复制多个有规律的VIA点COPY在右命令栏X,Y中输入VIA的个数,则间距以PIN舆PIN之间距为准.16. 有时打开allegro窗口,menu会反白无效. 1)将不是系统路径(c:\cadence\psd_14.1\share\pcb\text\cuimenus)下的men文档删除,再更新系统路径下的men文档,2) 再重新开一个allegro窗口.17. Stroke的使用1) Setup>User Preferences…>UI:no_dragpopup, 若勾选用右键画stroke图形就可实现快捷功能﹐默认状态为须用CTRL+右键才可实现Stroke功能。18. 如何将Help file、可执行程式挂在Allegro Menu上?1) 将\Layoutserver\F\User\14747\Menu File下的*.men档Copy to: C:\Cadence\PSD_14.1\Share\Pcb\Text\cuimenus下2) 将\Pcb_server2\Pcbl\Help File\下的Help file Copy to C:\Cadence\PSD_14.1\Share\Pcb\Help下。挂上去的Help file就可以执行了。19. Menu之Path设置。setup>User Preferences之Ui_paths 选menupath项,其默认Path为当前路径和C:\Cadence\PSD_14.1\Share\Pcb\Text\cuimenus,当你要改变Menu时,建议新增一个Menu路径以防损坏系统的Menu.20. env中快捷键的保留将C:\Pcbenv 下的env档中alias项Copy to: C:\Cadence\PSD_14.1\Share\Pcb\Text下的env档中。即可保留你在env中的快捷键设置。21. 在进行SUB_DRAWING时﹐同一个内容会有两个相同名字﹐有时也无法打开在SETUP/下的CLIPPATH路经只设当前路径,别的去掉22. 定义某部分区域不能有测试点在ManuFATuring/no_probe_bottom这层加上一块SHAPE则可.当用Route/Testprep/create Probe来create这块区域的测试点时会失败,出现的提示为:Pin out of bounds.23. Allegro Lib里的pad有更改﹐而在做零件的视窗replace不了该pad﹐即使删掉该pad重新叫进来也不能update﹒1) 把该pad的坐标先记下来﹐然后把该种pad删掉﹐2) 选toos/PADStack/modify design padstack…在弹出的窗口中选purge/all,再在弹出的窗口中选yes,之后再重新叫进该pad就ok了.24. 对于VCC,GND等这些线宽要求较高的信号,在pin脚比较小,比较密的IC上走这些信号时就很容易产生line to line的错误,如果只是单纯的把线宽改小了来走也会产生L/W的错误.1) 在设这些信号的rule时,在constrain system master下的physical (line/vais)rule set etch value下,把min line width设为VCC, GND等信号一般要走的线宽值, 2) min neck width设为那些特殊IC能走的线宽值, 3) max neck length设为这段线宽减少了的线可以走多长.4) 然后在这些信号套上这个rule.以后在走线时就可以把特殊IC上的VCC,GND等信号的线宽改为刚才所设的那个min neck width值而不会出错.25. 做零件时无法放置PAD可能是右边display窗口的option栏: Inc 和Text block项数字为零,将其改为自然数则可。26. 做金手指零件时﹐REF*等五项内容摆放的层面(Assembly_Top OR Assembly_Bottom)1) 当金手指的两面做成同一个零件中时﹐REF*等五项内容只放在Assemble_top 层﹔2) 当金手指的两面分开来做成两个零件﹐对於Top层的零件﹐其REF*等五项内容放在Assembly_Top层﹐对於Bottom层的零件﹐其REF*等五项内容放在Assembly_Bottom层27. 在board file中replace不同封装的零件?1) 先给要replace的零件增加一属性----Edit/Property, 选择temporary package symbol, apply.2) 再执行指令: place/replace SPECCTRAQuest Temporary/symbol. Replace的零件要与原来的temporary symbol的pin count一样。28. 开启Allegro视窗时,等待很长时间,在command视窗提示Function未找到等资讯。将\Pcbenv\下的不常用之skill file delete掉,把 Allegro.ilint 档内的相应之Load “*.il”行delete掉。29. Z_COPY命令在shape symbol和flash symbol格式中不能使用.setup>drawing size>type去变换工作平臺的格式到可以使用Z_COPY的格式,用后再变回来即可.可省去subdrawing的繁琐.30. 如何保护自己的Project。 Allegro14.2中Allegro Design Expert之Editor. File>Properties选择Password. 输入密码,再钩选Disable export of design data项,这样你的Project就不会被人盗用了。31. 在Allegro14.2中不能执行dbfix指令。Dbfix为Allegro14.1中用来Repair errors的****程式,而在Allegro14.2中将这些Check& Repair errors的功能集中在DB Doctor这一个****程式中。DB Doctor可以Check& Repair各类型的errors 它支援各种类型的layout档案格式,像*.brd *.mcm *.mdd *.dra *.psm *.sav *.scf. 但它不能确定完成repair所有errors.32. Allegro Utilities****程式介绍1) Allegro to SPECCTRA: SPECCTRA Automatic Router2) Batch DRC: 移除板子内所在DRC marks,只是移除mark而以,若要layout须Run Update DRC.33. 如何避免测点加到Bottom层的零件内。一般情况下测点都加在Bottom层,即layer选Bottom.在运行加测点时Route>Testprep>Auto…中不要钩选Allow under component,电脑会自动根据零件之Assembly侦测是否有湞点在零件内。已加在零件内的湞点将无效。34. 如何一次性highlight没有加测点的net1) 方法一:在运行完Route>Testprep>Auto…之后,highlight所有net,然后关掉所在层面,只开Manufacturing>PROBE_BOTTOM,之后以框选方式dehilight所有net,再打开需要之层面,剩下的highlight net即为未加测点之net.2) 方法二:在运行完Route>Testprep>Auto…之后,在Allegro 命令行输入hl_npt即可一次性highlight没有加测点的net. 前提是…\pcbenv\下面有hl_npt.il skill file.35. CRTL键在Allegro中的使用。在执行逐个多选指令像Hilight、其他命令之Temp Group时,按住CRTL键可以实现反向选择的功能,即执行Hilight时,按CRTL键时为Dehilight, 执行其他命令之Temp Group时按CRTL键为取消选择。36. 通过show element之report档产生一个list file.Display>Show element框选目标net or symbol etc,则产生一个Report视窗,将其另存为一个txt档,即为一个list file.这一list file可用於Hilight一组线,Delete一组symbol,此作法比设定Group或定议Bus name更为灵活。37. 固定Report窗口以便显示多个Report窗口在Report窗口选File>Stick,该窗口即可固定﹐再执行Report指令时﹐该窗口将不会被覆盖。38. 中间键之放大缩小的设定Setup>User Preferences…>Display: no_dynaMIC_zoom,若勾选﹐则点击中间键时只可一次性Zoom窗口﹐默认状态时﹐点击中间键可随意zoom窗口。39. Show element时不显示manhattan etch length1)Setup>User Preferences…>UI: show_max_manhattan_pins 在Value栏Key入1就可以Show element时不显示manhattan etch length,此设置对有NO_RAT属性的net不适用2) 一般情况下超过50 pins的net,比如GND等power net, Show element时不显示manhattan etch length

    2020-04-18 911 发布人:凡亿教育
  • 单片机/工控

    【朱老师IT充电站】EMMC和Nand是不是还傻傻分不清楚

    1.背景今天偶然在一个群里看到有人聊EMMC和Nand,相信很多嵌入式er都用过或者至少听说过这2种板载存储芯片,但是很多人不清楚这2种的差异,也不明白什么时候应该用EMMC什么时候用Nand,如何选择?今天我们就来聊聊这个问题。2.Nand是这样的Nand是一种flash,所以又叫NandFlash。大家知道Flash叫闪存(flash这个英语单词就有闪烁的意思),闪存这种存储设备是用电信号来做擦除和读写的。也就是说你可以把Flash看成是一个二进制数据仓库,你可以用电信号擦除它(清除掉仓库里的存货),也可以用电信号读取它(将仓库内存储的物品取出),也可以用电信号写入它(将物品放入仓库储存)。好,问题来了,怎么去擦除、读写呢?这东西又听不懂人话,所以必须按照它的时序规则用电平信号和他交互。上图第一个NandFlash实物图,大家可以看到有很多引脚,第二个是NandFlash和STM32单片机的连接接线图。这些芯片上的引脚就是Nand和外界进行数据交流的通道。其中IO0-IO15是数据通道,通信时的地址和数据就是从这些引脚传输的。而CLE、ALE等剩余引脚就是时序控制线,用来做通信控制和同步。当然Nand工作时还需要供电的,图中并没有画出电源引脚但是实际是有的。这就是NandFlash,通过很多个引脚(图中可见至少二三十个)和外界通信,很大的一个薄片状芯片。能存储数据。常见Nand的容量一般几十Mb到几个Gb(注意存储设备的容量都是b而不是B),应该说容量不算大。Nand内部的存储单元有两大类,MLC和SLC。具体的细节暂不去管,大家只需要知道SLC Nand容量小价格高,但是质量好不容易坏。而MLC Nand容量大价格便宜,但是质量不好容易出现坏块。其实不能说是质量好坏,而是工艺本身特性决定的,咱们反正是科普,就简单粗暴给他归个类吧。3.Nand的优势和劣势Nand的优势都是相对于它的前代产品来说的。在Nand之前,人类使用的大容量存储主要是磁性存储(软盘、硬盘)和光存储(DVD光盘),这些东西都不太完美。譬如光盘不能反复擦写而且读盘设备和盘片都经常坏(大家你想想家里老式光碟机是不是经常读不出盘),硬盘虽然今天也还在大量用,但是速度有极限并且体积太大,所以今天的高端笔记本电脑都不用机械硬盘改用SSD了(SSD其实也是Flash)。我们主要讲讲Nand的劣势。Nand的第1大劣势就是接口和时序不标准。大家可能没意识到,NandFlash其实是一个品类而不是一个固定产品,你去看全世界有多家公司都在生产Nand,但是他们的产品并不能直接通用,也就是说你不能把一款Nand直接替换另一款而不需改动软硬件。这就头痛了,麻烦的要死。Nand的第2大劣势就是引脚太多,体积大。所以Nand芯片不能用在对体积要求很高的小型产品上,这极大限制了Nand的直接使用。Nand的第3大劣势就是容量不能灵活控制。就算你用同一家厂商的Nand芯片,但是不同容量的芯片引脚接口和封装等也可能不同,这样你如果做产品时有不同容量版本的产品,还得分开设计,分开生产,很麻烦。Nand的第4大劣势就是坏块的管理。存储设备其实就相当于有很多小房间的一个大仓库,而这个仓库的每个小房间都是独立的。因为技术原因有时候一些小房间就会坏掉,没法使用,那我们不可能因为一个小房间坏掉了就把整个仓库都丢掉吧?于是乎人们就发明了坏块管理技术。也就是说我们去标记上每个房间是好的还是坏的,如果发现某个房间坏了那就标记成坏块,就不再使用这个房间了,而其他的好块还是可以继续用的。这种坏块管理技术可以很大程度延长Nand的整体寿命。和坏块相似的还有个ECC(错误校验)问题。正常情况下Nand中每个好块中存储的数据都会一直保持正确,即使过了几年时间你去读他还是原来的数据。但是事实往往没有这么理想,有时候一些块中的某些特定位就是会在隔了一段时间去读取时发生了翻转,这里原来存进去是1结果读出来是0了。这就难受了啊,最痛苦的是你也不知道原来存进去到底是1还是0,也不确定读出来的还是不是原来的数,所以搞得你没法相信任何一个数据,因为任何一个数据都有可能会翻转啊,那岂不是整个数据都不可信了。解决办法就是ECC,我们写入时先用算法计算得到数据的ECC值,把ECC值和块内数据一起存入Nand中。待读出时也是把块内数据和ECC一起读出,然后再用相同的算法计算块内数据的ECC,和读出的ECC进行比较,如果相同就认为数据未发生任何反转,如果不同就认为数据已经发生变质,没法相信了。本来有坏块标记和ECC技术,Nand已经挺好用了,也确实可以用了。但是麻烦的是Nand的ECC和坏块标记都需要主控CPU来做,Nand自己是不管的。所以使用Nand很麻烦,你得编程解决很多细节问题(时序、ECC、坏块管理)。所以Nand最大的问题,其实就是不够好用。那怎么办呢?进化。4.EMMC其实是从Nand进化而来EMMC其实就是Nand包了一层后形成的。EMMC内部真正用来存储的仓库就是Nand,而且EMMC基本都是MLC Nand,因为便宜啊。那EMMC解决了Nand的什么问题呢?首先,EMMC是封装和引脚都是标准的。什么标准?就叫EMMC标准。所以EMMC这个词其实本来就是个接口标准名,符合EMMC接口的存储芯片就叫EMMC芯片。这个标准体现在至少三个方面:物理封装、硬件电平和脚位、软件时序。所以所有的EMMC芯片,不管是哪家厂家的,不管是多大容量的,都可以直接替换使用。因为人家设计EMMC标准的时候就已经考虑到这种兼容和替换了(当然了,实际上EMMC也有好几种封装,但是一般硬件工程师做封装时都会考虑几种兼容的)。所以EMMC解决了Nand的一个大问题,就是不同厂家和容量的存储芯片之间的替换问题,这个非常厉害。因为兼容可以方便备货,方便采购,方便替换,所以极大降低了产品设计和备货上的难度,极大降低了成本。举个栗子,大家买手机都会发现现在的手机发布都有不同容量版本选择,什么256G、128G、64G版。你想想厂商和经销商要备货这么多种,多难受?但是如果用EMMC呢?所有的手机主板其实都是完全一样的,只是实际生产时贴上了不同容量的EMMC芯片而已。而且最重要的是软件上不用做任何改动,软件可以自适应不同容量的EMMC芯片。这样手机厂商就不用给不同容量的手机适配不同的操作系统镜像了啊,多省心。所以你明白为什么手机都用EMMC而不用Nand了吧EMMC的引脚比Nand也更少,体积也更小。当然了EMMC体积小也有很重要原因是因为他采用了更先进的BGA封装方式。所以体积的优势也不算根本优势,如果Nand也用BGA封装也可以做的小,只是说Nand没这个必要性了。最后,EMMC也解决了Nand的时序、坏块和ECC问题。本质上因为EMMC内部也是用Nand存储颗粒(而且是MLC Nand更容易坏)的所以也逃不过Nand的这些麻烦。但是EMMC芯片在内部内置了一个控制器(你可以理解为内部有个CPU且跑了一段固件代码),这个控制器解决了这几个问题,尤其是坏块管理和ECC的问题。所以你做产品用Nand就麻烦,得自己操这些心。而你做产品用EMMC就省心了,自己不用管这些破事,EMMC全部帮你搞定了,何乐而不为呢?从这个角度讲EMMC好像自动挡汽车,而Nand好像手动挡汽车。(我发现我好喜欢用自动挡和手动挡的对比·····)5.EMMC和Nand的性价比有人说不对呀,看你说的EMMC明显比Nand好啊,为什么我发现EMMC好像还比Nand便宜呢?EMMC从技术上确实比Nand好,但是也确实比Nand便宜。主要原因是成本并不只是由硬性成本决定的,还和市场、规模等因素有关。EMMC便宜的一大原因就是因为标准化。标准就可以大规模生产,大规模流通,大规模压货,大规模使用。而用的多了产量大了,自然成本就低了。所以EMMC的大规模性就决定了他的成本很有优势。EMMC便宜的另一大原因是内部使用MLC而不是SLC。实际上SLC的成本要远高于MLC的,但是市场上流通的Nand很多还是SLC,为什么?因为MLC“质量”太差了,太容量出现坏块和翻转等,所以广泛使用的Nand还都是SLC的。你如果直接用MLC Nand,那你的管理成本又很高,太麻烦了。而EMMC解决了这个问题,他内置的控制器很好的管理了MLC Nand,因此可以做到容量很大、使用简单,还便宜。所以说,能干脏活就是生产力啊。6.如何选择用哪个实际项目中我们是用EMMC还是Nand呢?实际上如果你的产品需要大容量(譬如超过8Gb也就是1GB或更大),那一定是EMMC更合适。性价比更高,且软件上更简单。那什么时候用Nand呢?需要容量在几十MB(譬如64MB)到几百个MB(譬如512MB)之间的存储,且不在意体积,且对稳定性要求高的情况下,可以用SLC Nand。那工业级和抗干扰方面呢?我并没有专业研究过,但是简单分析也知道,Nand在这方面肯定比EMMC好一些。毕竟EMMC是串行的要保证高速肯定总线速度高,而Nand是并行的总线速度肯定低。所以Nand应该要比EMMC皮实一些吧?但是EMMC也是有工业级和消费级之分的,你做的产品真的是工业环境使用完全是可以用EMMC的,所以也不要鼓吹什么消费电子用EMMC,军工用Nand这种说法。7.最后实际上存储市场除了Nand和EMMC之外还有很多其他角色也都很厉害。譬如Norflash、譬如近年来很火的spiflash(常见的是spinor,但是现在也有大容量的spinand了),譬如这两年创新设计的SDnand(相当于是贴片芯片样式的SD卡)。技术其实一直都在创新。最后,本文完全是从我的经验和积累来写,并没有严格查阅资料。限于水平和专业性,里面如果有错漏或者表达不当的地方,希望大家指正,共同进步。

    2020-04-17 1143 发布人:朱有鹏老师
  • Altium Designer

    【PCB设计】Altium软件中相同模块布局布线的方法

    PCB的相同模块如图12-10所示。很多PCB设计板卡中存在相同模块,给人整齐、美观的感觉。从设计的角度来讲,整齐划一,不但可以减少设计的工作量,还保证了系统性能的一致性,方便检查与维护。相同模块的布局布线存在其合理性和必要性。 图12-10  PCB的相同模块(1)相同模块布局布线的注意事项如下。① PCB中相同模块对应的元件Channel Offset值必须相同,在原理图导入的时候,注意对通道数值的检查,如图12-11所示。图12-11  Channel Offset值② 元件不能锁住,否则无法进行。(2)在原理图中直接执行更新命令至PCB,如图12-12所示,在导入的界面中有9张原理图(相同模块数分割的原理图张数)。原理图生成Room Page10-NET0至Room Page18-NET8,这正是我们所需要的。值得注意的是,元件类规则必须同时导入,否则不成功。(3)和FPGA管脚调整一样,在执行更新操作之后须对元件进行匹配关联。在PCB设计交互界面中,执行菜单命令“工程-元器件关联”,进行元件匹配,将左边元件全部匹配到右边窗口,单击“执行更新”按钮,执行更新。 图12-12  Room(区域)和类的添加(4)如图12-13所示,对其中一个通道的模块执行布局布线,并用更新的Room对其进行覆盖。 图12-13  模块的布局布线(5)执行菜单命令“设计-Room-拷贝Room格式”,设置对应的复制选项,单击“确定”按钮,之后激活Room复制命令,如图12-14所示。① Rooms:包括如下两项。l 源Room:参考的Room。l 目标Room:需要复制的目标Room。② 选项:有如下可选项。l 复制元器件布局:复制元件的布局格式。l 复制标号&注释格式:对元件的位号和值的格式也进行复制。l 复制布线的网络:复制走线网络。l 复制Room尺寸/外形:复制Room的大小/形状。l 仅复制选中的对象:只复制选择的对象。这个一般不勾选了。③ 通道到通道元器件匹配:选择通道和通道的形式进行复制关联匹配。  图12-14  Room的复制(6)单击已布局布线好的模块Room,再单击尚未布局布线好的模块Room,即可完成相同模块的快速布局布线,如图12-15所示。依照此方法,再继续完成其他几个模块的布局布线即可。有时候这些需要几个小时处理的工作,可以在几分钟之内完成,非常高效。 图12-15  相同模块布局布线效果图 (以上内容转载于凡亿教育)

    2020-04-17 742 发布人:凡亿教育
  • 物联网

    嵌入式开发在物联网领域有大作为

    在万物互联时代的今天,可穿戴设备作为构成物联网众多设备中的一种,已经可以通过部分便携的设备实现读取和记录人体参数,并将数据通过物联网卡传输到平台层进行处理,与此同时,也可以采集人体外部的环境温度和空气质量等等。不过,从技术角度上来讲,如何才能更进一步地将未来拉近?作为物联网开发者,如何能实现更好的解决方案?其在上手的路途中,是否又有更快的捷道可走?物联网的入门,嵌入式才是关键!事实上,安全仅是物联网当前面临的诸多挑战之一,此外,人才缺失的问题也亟待解决。在本月初,我国人力资源社会保障部、市场监管总局、统计局正式向社会发布了 13 个新职业,其中就包括了物联网工程技术人员、人工智能工程技术人员、大数据工程技术人员等等。入门物联网,嵌入式是关键但不是唯一。那么对于想要成为物联网工程师,面对碎片化极为严重的物联网,我们首先要掌握哪些方面?且想要从事物联网开发,是否要必须嵌入式知识基础?物联网是新一代信息技术的重要组成部分,传统的嵌入式系统与互联网的发展衍生出了物联网,物联网应用开发是典型的嵌入式开发,因此嵌入式是物联网开发的基础。不过,对于初级入门者,或许会存在一定的误解,其可能认为掌握了嵌入式开发的技术就等于已经懂了物联网,但事实并未如此。物联网技术不是单独的一个技术,它是多种技术的融合。物联网涉及感知、控制、网络通信、微电子、软件、嵌入式系统、微机电等技术领域,因此物联网涵盖的关键技术也非常多,大致划分为感知关键技术、网络通信关键技术、应用关键技术、共性技术和支撑技术。所以,对于开发者而言,首先要对物联网有整体的认识,围绕着未来的发展方向来找准自己的方向,学习精通其中的一个或几个关键技术,理论和实践项目配合,才能在未来的工作中有好的发展。当然以上仅是进入物联的第一步,至于如何进阶?首先要跟上时代的趋势,不能坐以待毙,要主动去发现机会并不断地尝试。同时,对最新的商业模式和新技术保持开放的心态,要学会接纳并分析其是否能成长为新的趋势;从 Linux 底层驱动开发到上层云计算,Java 应用开发的转换是需要时间和技术积累;技术栈需要重新建立。思考问题的方式也要随之转变,从面对硬件和机器语言转换为面向客户需求、面向用户体验。这种转变过程从心理上要做准备;多参加技术交流,保持学习的态度,通过独立实现一个规模比较小的网站系统、小程序等项目开始,发展成为全栈,继而提升为软件架构师。此外,由于物联网范畴之广,决定了其上手的路途充满荆棘。从物联网 BU 的软件架构师角度出发,表示需要具备以下实战技能:深入掌握 2-3 门编程语言,如 Java、C 或 Python;对操作系统要有深入的了解,包括进程、线程、存储、内存管理、锁机制等知识点;对 Linux 操作系统需要有深入了解,譬如从 shell 到内核的运行机制等;有终端设备驱动开发经验和汇编经验;对软件算法的理解越深越好。在网络层面,要对 TCP/IP、HTTP 和组网等技术有一定的了解;数据库 MySQL、NoSQL 等持久化技术;云计算 IaaS、PAAS、SaaS 和 Devops 技术;持久热爱互联网技术,并坚信技术的力量;高效的工具助力进阶。其实结合高效的开发工具,硬件开发者在学习物联网的过程中也可以事半功倍。可通过使用 各类型IoT 工具、编译器、调试工具、性能测试工具等,方便了硬件开发者对系统运行能够有更深入的了解,并且在以后的设计和编码中能够快速规避问题,解决问题等起到了很大的帮助。

    2020-04-17 860 发布人:凡亿教育
  • PCB技术

    关于PCB设计中晶体晶振的布局和布线要求

    布局要求:1、布局整体紧凑,一般放置在主控的同一侧,靠近主控IC。2、布局是尽量使电容分支要短(目的:减小寄生电容,)3、晶振电路一般采用π型滤波形式,放置在晶振的前面。布线要求:1)走线采取类差分走线;2)晶体走线需加粗处理:8-12mil,晶振按照普通单端阻抗线走线即可;3)对信号采取包地处理,每隔50mil放置一个屏蔽地过孔。4)晶体晶振本体下方所有层原则上不准许走线,特别是关键信号线。(晶体晶振为干扰源)。5)不准许出现stub线头,防止天线效应,出现额外的干扰。

    2020-04-17 4066 发布人:郑振宇
  • Altium Designer

    AD19 PCB界面的PCBlist的认识

    AD19PCB界面的PCblist的认识我们点击我们的PCB界面,我们打开我们的panel,然后对应我们的PCBList。我们来认识一下,这个是我们的PCBlist界面,当我们选中我们的器件的时候,我们上面有两个选择,当我们需要对应的器件的参数进行修改的时候,我们进行我们对应的器件的参数进行对应的一个个进行修改,我们先点击我们的状态为Edit,然后选择我们的对应的对象进行对应的修改,比如我们选择我们的器件,我们进行修改,我们筛选为我们的components .顺便提一下我们的这个的界面的拷贝我们的ROOM的channel offset ,会出现问题,那么我们相对应的可以使用我们的Footprint 进行一个排序操作和复制操作来解决我们的出现的这个问题的出现。

    2020-04-16 1389 发布人:郑振宇
  • 单片机/工控

    嵌入式培训的学习误区

    现在市场上的嵌入式培训产品琳琅满目,但是在笔者看来有几个误区。1、开头过于细节技术是一门综合性很强的技术,任何一门技术的学习都类似于论文要先概述然后再深入细节。很多嵌入式培训产品当然也有概述就是自己课程包含的内容,这是错误的。嵌入式技术的概述应该是结合信息技术、计算机技术、工艺、开发工具、市场等等让一些无论有没有基础的人都有大体的了解。嵌入式技术经过多年的发展和传播媒介的进步,这几年学习难度已经降低很多,但这只是入门之后的具体方面。比如很多人做Qt应用不了解底层驱动,做底层驱动的不了解应用接口。很多培训产品一味强调0基础,希望招到更多的学员,其实这没错,但是招进来也要管人家学到知识和技术吧。很多人是没有电子电路、操作系统、信号与系统基础的。歧视硬件,这是嵌入式产品很令人不解的问题。其实做嵌入式软硬不分家但软硬有专长,成了嵌入式软硬只有专长。很多人连SPI I2C  UART的示波器波形都看不懂,对电源电路也是一无所知等等。这些是在工作中有害的。其实现在的板级硬件开发已经很简单了,IC集成度越来越高将以前很多模拟电路做的事都实现了比如滤波、放大、电源管理等等。了解一番难度也不大。2、缺少实际产品技术开发内容很多培训产品其实做的还是大学教学那一套,理论加上一个很普适性的例子就讲完了。然后一看实际代码完全不是这么回事。比如驱动开发的应用API接口设计可不仅仅是字符驱动那几个open write ioctl,在应用层也要实现一些linux c方面的总进程管理,应用层比如Qt设置显示、触摸设备的设备名……好多具体需要知道的都略过了,甚至没有提醒有方面的实际需要。4、中间过于浅显很多培训产品看似内容繁多,其实实际来看涉及到的知识深度依然不足,这种深度并不是说要写出一个OS那种层级。而是代码修改、代码模块拼接、驱动框架理解、API设计等等比较有深度的内容,但很多培训都仅仅是代码讲解、剪切拷贝。5、开发管理方面知识很多人只会技术,对产品开发和软件开发流程和管理一无所知。这种是在工作中有害的。

    2020-04-16 700 发布人:凡亿教育
推荐文章
热门文章
文章分类

凡亿课堂官方二维码

凡亿教育

咨询电话:0731-8388-2355

公司地址:长沙麓谷高新区麓谷新长海中心B3栋3楼304室

版权所有:湖南凡亿智邦电子科技有限公司