fish001

  • 2019-01-10
  • 发表了主题帖: ARM公司在物联网领域的战略布局

    本帖最后由 fish001 于 2019-1-10 22:04 编辑      随着ARM芯片的出货量越来越多,自信满满的ARM公司统一软硬件平台的战略和雄心壮志越来越凸显。最初ARM公司仅是出售自己的知识产权(IP核)给各大芯片公司,由于最初ARM公司处于劣势,所以给芯片厂商很大的自主权,在ARM7、ARM9和ARM11芯片时代,我们知道每家芯片的地址空间,寄存器操作各异,大不相同,也只能在代码编译的时候才能发现ARM公司的存在。随后ARM公司推出了Cortex系列的芯片,就如我以前文章所提及,其志不小:“对早已经被绑入其战车的各大芯片厂商,又勒紧了一下枷锁,对ARM最新的内核的架构做了进一步限定,如对SysTick、NVIC和FMSC芯片设计的限定。特别是CMSIS接口的标准推出,简直是卡住了各大芯片厂商的脖子,他们不加入这种计划,难免被边缘化,加入了,难免沦为ARM公司的一个生产车间。”      不知道是ARM公司成全了安卓系统(Android),还是安卓系统成全了ARM。在嵌入式领域和PC领域最大的不同就是,嵌入式芯片和X86芯片不同,X86主要有英特尔(Intel)公司把持,所以微软+英特尔软硬结合,很容易一统天下。而嵌入式芯片(32/64位芯片主要就是ARM芯片了)领域属于群雄割据的时代(不过现在高通公司有后Intel王者的气概),各个厂商基本是各自为政,每家芯片的寄存器操作相差比较大,所以对运行其上的操作系统开发者来说,难度很大(所以目前针对操作系统底层的BSP,基本都是芯片厂商自行开发提供)。ARM公司推出Cortex的芯片,及CMSIS等接口标准的努力,就是简化或者说降低这种开发难度,为统一芯片硬件平台打下坚实的基础。       从目前的形势来看,在嵌入式领域,偏软的方面安卓系统已经取代了微软的历史地位。偏硬的芯片方面是不是高通公司?个人认为ARM公司内心绝不会让一家芯片公司独大的,所以ARM公司从近似春秋战国的西周王朝时代,回归东周统一王朝的格局下,继续进行着统一硬件芯片的运作。高通想成为强秦,统一天下的梦想我想绝不会很快来临。 回归正题,谈一谈ARM公司在物联网上的战略布局。      ARM公司收购了芬兰物联网软件创业公司Sensinode,将继续推广和深化Sensinode公司的NanoStack、NanoRouter 和 NanoService三大产品。真对此消息,有的网站评论道“看来手机和平板市场的统治地位还不能满足 ARM 的胃口,吞下整个物联网才是它的目标”。 2020年,根据IMS Research的预测,全球联网的设备将有300亿个。ARM的Cortex-M(M0/M3/M4)芯片+ARM的 mbed项目和Sensinode公司的NanoStack、NanoRouter 、NanoService三大产品结合起来,将会从硬件到软件完整的覆盖整个物联网领域(手机和平板一般采用Cortex-A系列的芯片,作为移动互联网的主力,将成为物联网领域必不可少的输入端。另外ARM芯片进军服务器野心,也不可小觑,那是物联网另外一大领域—大数据—重点所在)。 下面就详细介绍一下ARM技术开发大会上《Creating Secure,Efficient,and Open Standard Iot Systems》的讲座,从题目上来说,是讲“创建安全、高效和开放的标准物联网系统”,至于如何构建,就是采用以上我们所讲述的技术。 我的介绍和ARM技术开发大会上的张先生的讲述有些不同(讲解的顺序不同、着重点不同),我是按照自己的理解,进行说明的。 1、 传感器数据采集 – 基于CMSIS的 ARM MBED技术的硬件简易开发 如果你是一个仅有一点开发技术的人,比如会一点C或一点Java,对硬件也是粗略了解一些,那么MBED技术将很快让你进行硬件开发(网上号称60秒让你完成嵌入式编程开发)。 如果你在做硬件原型设计,有不同的芯片去让你选择,或者是对外围的一些器件进行测试研究,那么采用MBED技术将让你这份工作变的轻松简单。 ARM MBED是一个什么样的技术呢?简单的说,它有两点特色,这两点特色分别对芯片提供商(或者说开发板提供商)、软件开发者提供了便利。 第一就是CMSIS,CMSIS就是ARM指定的一套接口框架,通过它,可以屏蔽各家芯片操作的差异。所以针对芯片厂家来说,仅需要实现这些规定的接口就可以了。 第二,对嵌入式开发来说,开发环境的搭建是一个耗时耗力的过程,能成功编写和调试第一个程序,犹如孩子出生一样,不经过一番挣扎和摸索是很难顺利完成的。而MBED技术是一套基于云计算的网页编译工具,可以在Windows、Linux、Mac等各种可以网页浏览的设备上进行编程。所以不需要安装调试工具,只要选好指定的开发板,就立即可以进行编程,编译后直接生成一个bin文件,直接烧写到设备即可运行。 另外的一个优势,由于用户是基于CMSIS的框架接口开发,所以理论上将,你可以很顺利地开发各种厂家的芯片(前提是相关芯片厂商已经提供了CMSIS的支持),不再向以前一样更换不同厂家的芯片是件难以抉择的事。 作为物联网开发来说,你通过AD、串口、SPI、I2C、USB、CAN甚至是以太网接口,用MBED技术很容易把各种传感器数据采集到Cortex-M0/M3设备,采集完毕后,另外一个最重要的环节,就是数据上传。而这一步,就是ARM收购的公司Sensinode的技术优势所在了。 2、 传感器数据上传 – 基于CoAP通信协议(NanoStack/NanoRouter) 一直以来,物联网领域最令人头疼的事就是,接口协议繁多,每家都有各自的协议,在这种格局下,收集传感器数据,是件费时费力的事。 而CoAP是一个统一的协议接口,优势不仅仅在于标准统一,而在于对HTTP协议进行了简化,其压缩的数据头仅4个字节。这样在传输过程中,交互的数据量将大大减小,有效地降低了网络通信的负荷。 另外通过协议代理,可以很轻松的把CoAP转换为标准的HTTP协议。 以上不仅仅是ARM一家的标准,由于底层通信基于各种物理链路,所以ARM公司遵照或参与了很多底层标准通信协议的制订。IETF、Sensinode、6LoWPAN,Zigbee IP CoAP,TLS,OMA Lightweight etc等等。 有了MBED作为基础,在Cortex-M0/M3上集成CoAD协议是分分钟钟的事,数据采集和上传在这一步可以说是有效地集成在一起。 3、 数据存储、服务和展示 – NanoServer服务支持 通过统一的数据接口,数据收集在NanoServer中,然后借助NodeView Web程序,去浏览去展示相关数据。 4、 小结 MBED技术在最底层,通过标准接口采集各种传感器数据(由于基于CMSIS框架架构,所以各种厂家的芯片,其用户开发代码都是相同的)。 NanoServerClient和NanoStack技术,实现了CoAP通信支持。 NanoServer服务和NodeView进行数据收集和数据服务及展示。 另外这所有的代码、协议标准都是开源的,用户可以自行下载了解。       题外话:从以上介绍看出,ARM自有标准协议、安卓、Java技术在其中占有很很大比重,我从2008年以来就一直参加ARM的会议,一点点看着微软的技术被边缘化,最后完全退出了ARM技术会议的视野,这点替微软惋惜。但是从用户开发角度来看,特别是工控人员开发集成角度来看,微软的开发工具,其本地化界面,开发调试的简易型还是非常有市场的,特别是最近,微软改原来的嵌入式部门为物联网部门,说明还是看好物联网领域,并向这个方向努力发展的。

  • 发表了主题帖: linux shell脚本快速提升的秘诀

    大家好,我是阿铭,从13年我开始做Linux运维培训,直接或间接学过我教程或课程的朋友应该有数十万人。大部分同学给我的反馈是,Linux shell是很难啃的一个知识板块。虽然,大家学的很仔细,shell相关的语法也全部掌握,但当拿到一个需求时,就是写不出或写不好一个完美的shell脚本。这个现象很正常,举个例子,在金庸的武侠小说里,武功盖世秘籍有很多(如,降龙十八掌),对于一个普通人来讲,就算各个招式都能打的滚瓜烂熟,然而并没有什么卵用,因为他没有任何的内力。而我们这个shell脚本其实就是一门“盖世绝学”,但你在没有修炼“内功”的情况下,shell知识点无论你学的多么好,依然不能写出好的代码来。这里所谓的“内功”就是经验。我们经常听做开发的朋友讲,没写够10万行代码就不合格,有的企业招开发人员,也比较在意他写过多少行代码,一个开发人员写过的代码越多,说明他的经验越丰富。我们写shell脚本不也是写代码吗?记得,我刚做运维那年,几乎每天都在写shell脚本,简单的两三行,复杂的上百行,各种各样的小需求,感觉仅仅一两个月,我的shell脚本能力有了明显的提升。因此,我准备出一个专栏《20天精通Linux Shell脚本》(拖到底部有彩蛋!),以20个实际工作场景的shell脚本案例展开讲解,它们不仅涵盖了shell脚本常见的语法、思路以及技巧,而且还会扩展一些Linux相关的知识。希望订阅本专栏的朋友能够耐心读完每一个案例,并且一定要动手写一写,这样你才会真正学到其精髓。20个案例的核心内容是什么?下面是对这20个案例的简单介绍。案例1,用shell脚本实现备份MySQL数据库,数据库的重要性不言而喻,所以做好数据备份是一个合格运维工程师的必备。案例2,监控一台Nginx服务器的状态码是否有502状态码,502在Nginx服务器上普遍存在,它极大影响了用户体验,一旦出现502问题就需要第一时间发现并找到问题所在。案例3,批量添加100个用户,并给用户设置随机密码,密码设定后还需要给它存放到一个日志文件里,方便查询。案例4,用shell脚本自动封访问量异常的IP,并每隔一段时间把不再发起请求的IP给解封,这个功能似乎在web服务器上很实用。案例5,用脚本监控本机的磁盘使用情况,包括使用空间以及inode使用量,磁盘空间一旦写满,会影响系统正常运行,有必要实时检查磁盘使用情况,一旦达到设定阈值要第一时间通知到我们。案例6,检测两台机器同一个目录下的文件是否有差异,在负载均衡集群中通常是多台服务器上跑了同样的网站,所以需要保证文件内容是一致的。案例7,用shell脚本监控MySQL主从架构,看主从的状态是否是正常的,主从不正常就会导致数据不同步,数据不一致将严重影响业务可用性。案例8,用shell脚本编写一个运维工具,当运行它的时候,会列出一个命令列表,用户只需要按对应数字就可以运行列表中的命令。案例9,用shell脚本监控本机的网卡流量,当网卡流量为0时,需要重启网卡。案例10,用shell脚本检测指定域名是否快到期,以免域名到期没有续费被回收。案例11,给定一个人员列表,用shell脚本把这些人员分组,比如指定小组的个数,然后脚本可以自动地将这些人员随机地分成若干个小组。案例12,当备份的数据库量很大时,如果使用传统的循环遍历方法会花费很长的时间,这是因为shell脚本默认是单线程的,而本脚本需要实现多线程,这样就可以提升备份数据库的速度。案例13,在使用CDN的情况下,各地用户访问到的节点是不同的,但如果某个节点有问题时,会影响到部分用户访问,所以需要写一个shell脚本来监测所有节点是否正常。案例14,一台服务器上运行着Apache+PHP+MySQL服务,上面跑着很多网站,每增加一个网站都需要修改httpd.conf增加一个虚拟主机,并且需要在MySQL数据库里增加一个库,并增加一个MySQL的用户。如果是手动操作这些步骤还是比较繁琐的,该shell脚本可以批量实现这些操作。案例15,在工作中会遇到各种各样xml格式的文件,有时的需求是,需要把xml文件里面的内容进行格式化输出。案例16,生产环境中,往往有多台Tomcat服务器在运行,有时需要重启Tomcat服务,如果手动执行则需要登录每一台机器,非常麻烦,那么编写一个shell脚本自动登录远程机器并重启Tomcat服务就很有必要。案例17,在我们的服务器上跑着各种各样的服务,所以就有了很多日志,日志切割可以用shell脚本实现,但是切割完的老日志,随着时间的推移会越来越多,那么如何把这些老日志归档就需要写一个脚本来按照预设规则来完成。案例18,一台阿里云的ECS里运行着Nginx+PHP-FPM+MySQL服务,近期收到IO使用率很高的告警,但是这个问题是一瞬间,时间很短,每次登录这台机器的时候发现IO并没有什么问题,所以写一个脚本监控磁盘IO的使用率,当有问题时需要近一步排查具体的问题。案例19,一台Tomcat服务器上运行着多个实例,而每一个实例都有记录日志,当遇到问题或者有什么特殊需求时,就需要挨个查看这些实例的日志,为了提升效率所以需要编写一个定制化的shell脚本。案例20,虽然目前已经有了各种各样的工具可以实现代码部署,但在早期并没有这样方便好用的工具,当然一些小公司也用不着这样的工具,而是用shell脚本来实现的。学完这20个案例你将收获什么?不管你是0基础的Linux初学者,还是入行几年的老鸟,阅读完这20个案例,都会让你从中获得撰写shell脚本的技巧、思想以及Linux相关的技能。对于想要快速提升自己shell脚本能力的朋友来说,这20个案例就像一剂良药,它们会助你在运维工作中越战越猛!另外这个专栏对于java程序员以及php程序员也是有极大的帮助,我相信当你学完这20个实战案例并认真吸收其精华后,你就可以拥有至少两年的Linux shell实战经验!

  • 发表了主题帖: linux系统lvm中lv使用空间的调整

           最近部署一个项目,甲方使用虚拟化平台,给的服务器都是虚拟化克隆的机器,操作系统安装时默认的分区,现状是根分区只有50G,部署的时候使用软连接创建的部署目录,但是后续升级的同事没有注意,就把部署直接放在根分区,导致近期数据同步时log文件大,使用的log日志删除脚本任务计划未到执行执行时间服务日志文件就把磁盘占满了,处理如下。 一、系统环境: 操作系统:Centos_x64 6.5 内核版本:2.6.32-431.el6.X86_64 磁盘格式:EXT4二、现有分区情况与说明df -h    #查看当前分区Filesystem                    Size  Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root   50G   17G   31G  36% /tmpfs                         7.8G     0  7.8G   0% /dev/shm/dev/sda1                     485M   33M  427M   8% /boot/dev/mapper/VolGroup-lv_home  435G  9.7G  404G   3% /home  说明:可以清楚的看到两个lv卷的分区VolGroup-lv_root挂载为了根分区50G,VolGroup-lv_home挂载为了/home分区,home分区比较大,却没有被使用。三、释放/home分区的占用并卸载/home分区 1、以为使用fuser -m /home就可以完成但是执行后卸载仍提示/home有占用。情况如下:# fuser -m /home/home:               24033ce# umount /homeumount: /home: device is busy.        (In some cases useful info about processes that use         the device is found by lsof(8) or fuser(1))2、检查占用的文件,发现甲方提供的系统里有金山的防护软件,将软件进程杀掉后卸载/home分区正常:# lsof | grep /home          --检查发现占用的是金山的防护软件直接运行了kiil -9 24033KANLinuxC 24033          root  cwd       DIR              253,2      4096    5636103 /home/kingsoft/kavnetKANLinuxC 24033          root  txt       REG              253,2   1645332    5636130 /home/kingsoft/kavnet/KANMainModuleKANLinuxC 24033          root  mem       REG              253,2   1369600    5636263 /home/kingsoft/kavnet/libcrypto.so.6KANLinuxC 24033          root  mem       REG              253,2    323320    5636276 /home/kingsoft/kavnet/libssl.so.6KANLinuxC 24033          root  mem       REG              253,2     34487    5636129 /home/kingsoft/kavnet/KANLocalComm.soKANLinuxC 24033          root  mem       REG              253,2    626402    5636131 /home/kingsoft/kavnet/KANNetComm.soKANLinuxC 24033          root  mem       REG              253,2    163342    5636265 /home/kingsoft/kavnet/libjson.soKANLinuxC 24033          root    3w      REG              253,2    789537    5636280 /home/kingsoft/kavnet/neterror.logKANLinuxC 24033          root   10w      REG              253,2    789537    5636280 /home/kingsoft/kavnet/neterror.logKANLinuxC 24033          root   11w      REG              253,2    789537    5636280 /home/kingsoft/kavnet/neterror.logKANLinuxC 24033          root   13w      REG              253,2    789537    5636280 /home/kingsoft/kavnet/neterror.logKANLinuxC 24033          root   20w      REG              253,2    789537    5636280 /home/kingsoft/kavnet/neterror.log# umount /home          --重新卸载未在报错未在报错。三、缩减VolGroup-lv_home这个LV的空间 1、检查这个LV分区的信息是否正常;# e2fsck -f /dev/mapper/VolGroup-lv_homee2fsck 1.41.12 (17-May-2010)第一步: 检查inode,块,和大小第二步: 检查目录结构第3步: 检查目录连接性Pass 4: Checking reference counts第5步: 检查簇概要信息/dev/mapper/VolGroup-lv_home: 5779/28950528 files (2.2% non-contiguous), 4334183/115775488 blocks2、调整VolGroup-lv_home分区大小;#resize2fs -p /dev/mapper/VolGroup-lv_home 80Gresize2fs 1.41.12 (17-May-2010)Resizing the filesystem on /dev/mapper/VolGroup-lv_home to 20971520 (4k) blocks.Begin pass 2 (max = 50904)正在重定位块            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBegin pass 3 (max = 3534)正在扫描inode表          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBegin pass 4 (max = 838)正在更新inode引用       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXThe filesystem on /dev/mapper/VolGroup-lv_home is now 20971520 blocks long.3、重新挂载home分区并检查空间大小,可以发现/home的空间已经变小;# mount /home# df -hFilesystem                    Size  Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root   50G   17G   31G  36% /tmpfs                         7.8G     0  7.8G   0% /dev/shm/dev/sda1                     485M   33M  427M   8% /boot/dev/mapper/VolGroup-lv_home   79G  9.6G   66G  13% /home4、将VolGroup-lv_home缩减出来的分区设置为空闲分区;# lvreduce -L 80G /dev/mapper/VolGroup-lv_home  WARNING: Reducing active and open logical volume to 80.00 GiB  THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce lv_home? [y/n]: y  Reducing logical volume lv_home to 80.00 GiB  Logical volume lv_home successfully resized5、检查空闲出的空间Free PE已经空出了361G;# vgdisplay   --- Volume group ---  VG Name               VolGroup  System ID               Format                lvm2  Metadata Areas        1  Metadata Sequence No  5  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                3  Open LV               3  Max PV                0  Cur PV                1  Act PV                1  VG Size               499.51 GiB  PE Size               4.00 MiB  Total PE              127874  Alloc PE / Size       35292 / 137.86 GiB  Free  PE / Size       92582 / 361.65 GiB  VG UUID               Ur7bJ4-hQKi-xx4R-f9Qt-INvG-fjBf-zcvJ4n四、将缩减出的空间增加给VolGroup-lv_root这个LV 1、给VolGroup-lv_root增加空间;# lvresize --size +361G /dev/VolGroup/lv_root   Extending logical volume lv_root to 410.71 GiB  Logical volume lv_root successfully resized2、让系统重新识别VolGroup-lv_root增加的空间;# resize2fs -p /dev/mapper/VolGroup-lv_rootresize2fs 1.41.12 (17-May-2010)Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing requiredold desc_blocks = 4, new_desc_blocks = 26Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 107665408 (4k) blocks.The filesystem on /dev/mapper/VolGroup-lv_root is now 107665408 blocks long.3、检查最终结果,确认操作成功;# df -hFilesystem                    Size  Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root  405G   23G  362G   6% /tmpfs                         7.8G     0  7.8G   0% /dev/shm/dev/sda1                     485M   33M  427M   8% /boot/dev/mapper/VolGroup-lv_home   79G  3.5G   72G   5% /home

  • 发表了主题帖:  熟悉的开发工具支持SoC FPGA

         集成了前沿ARM应用处理器和FPGA架构的新一类SoC器件,能够以更低的成本,更迅速的实现低功耗电子产品,打开了新的应用空间。但是,伴随着硬件创新,FPGA工具、片内调试、软件调试和分析工具也应该不断创新。软件最终决定了设计人员能否成功的使用这些器件。为实现更广泛的应用,软件开发人员必须找到合适的SoC FPGA,掌握其特性,就像独立处理器软件开发那样轻松高效的使用它们。   来自Altera的SoC FPGA由SoC嵌入式设计套装(EDS)提供支持,套装包括全套的ARM兼容工具包,支持在Altera SoC器件上开发嵌入式软件。它包括开发工具、实用工具程序、运行时软件,以及应用实例,帮助您迅速开始SoC嵌入式系统的固件和应用软件开发。Altera和ARM之间这种非常重要的关系导致SoC EDS提供了独特的Altera版ARM Development Studio 5 (DS-5)工具包。ARM DS-5高级多核调试功能与FPGA自适应功能相结合——能够立即看到FPGA硬件中的改动,无缝链接至Altera的SignalTap逻辑分析器,这一SoC EDS工具包帮助嵌入式软件开发人员获得了前所未有的全芯片可视化和控制能力。   当调试出现问题时,开发团队必须能够确定这是硬件还是软件问题。支持Altera SoC FPGA的工具实现了处理器子系统和FPGA子系统之间代码和波形的交叉触发,或者从波形到代码的触发,很容易找到导致这些问题的原因。结果,开发团队能够找到并跟踪系统中某一状态是怎样出现的,为什么出现。交叉触发、跟踪和全局时间戳是IP验证、定制驱动开发以及工程中系统集成部分非常重要的特性。   除了找到故障位置之外, SoC EDS还帮助嵌入式系统开发人员知道系统为什么会进入这种故障状态,是怎样进入的。ARM系统跟踪模块(STM)支持跟踪基于CPU的软件事件。当系统执行时,应用软件可以发出硬件和软件事件“探测”信号,以监视系统行为,深入探查其工作。在“FPGA自适应”调试环境中,STM支持CPU和FPGA域的事件监视,不要求系统停止工作。   未来的SoC FPGA路线图   当选择SoC FPGA时,必须确定供应商的产品路线图.如图4所示,从长期看,这将保持您的系统竞争力,支持软件前向移植。开始时,所有硅片发展路线图的基础都是硅片工艺技术。目前Altera提供的Cyclone V和Arria V SoC采用了28 nm低功耗工艺制造,帮助工业、汽车、医疗和通信等对功耗要求较高的应用降低了功耗。   Altera的下一代Arria 10 SoC优化了中端应用的性能,提高了功效,减小了外形封装,降低了成本,适合多种中端无线基础设施、广播、军事,以及计算机和存储应用。Arria 10 SoC基于TSMC的20 nm工艺技术,结合了双核Cortex-A9处理器系统和业界领先的可编程逻辑技术。实现双核Cortex-A9处理器系统简化了第一代SoC FPGA的软件移植,尺寸更小的工艺技术将性能提升至1.5 GHz。   在先进通信、军事和数据中心应用中,第三代Stratix 10 SoC将进一步突破性能和带宽。Stratix 10 SoC基于Intel 14nm三栅极工艺技术,具有64位四核ARM Cortex-A53处理器。Cortex-A53支持32位兼容模式,如果需要,很容易实现现有软件的移植。

  • 发表了主题帖: 牛人的FPGA设计经验分享

    IC设计的基本规则和流程是一样的,无论啥样的都会加到其中。HDL,FPGA和软件等是帮助我们理解芯片的最好工具。IC的灵魂是知识。因此我们遇到的第一个挑战将是获得设计的相关信息,然后理解信息并应用它。   这里我谈谈我的一些经验和大家分享,希望能对IC设计的新手有一定的帮助,能使得他们能少走一些弯路!   在IC工业中有许多不同的领域,IC设计者的特征也会有些不同。在A领域的一个好的IC设计者也许会花很长时间去熟悉B领域的知识。在我们职业生涯的开始,我们应该问我们自己一些问题,我们想要成为怎样的IC设计者?消费?PC外围?通信?微处理器或DSP?等等?   IC设计的基本规则和流程是一样的,无论啥样的都会加到其中。HDL,FPGA和软件等是帮助我们理解芯片的最好工具。IC的灵魂是知识。因此我们遇到的第一个挑战将是获得设计的相关信息,然后理解信息并应用它。   但是有些信息不是免费的,我们需要加入一些协会或从如IEEE/ISO等那些组织购买一些文档。设计者应该有很强的背景知识来很快的理解他们,甚至能改进存在的标准或。一个好的设计者应该应该有足够的设计技能和工具应用知识并且不断的积累他们。   例如:   8口以太网转换HUB控制器   需要知识:IEEE802.3标准,包括10MHZ以太网和100MHZ快速以太网。   相关领域:异步传输模式(ATM),IEEE802.11无限局域网,IEEE1394,USB等。   HDL,计算机仿真和只能解决ASIC设计流程的数字部分。如果在IC中有任何模拟部分,他将依赖模拟设计者或从另外的厂家购买。甚至一些纯数字部分也能从另外一些厂家购买以加速上市时间。那些不是被我们设计的部分称为IP,包括HDL代码,网表,硬核。对于我们设计的技术取决于硬核。一些IP是非常贵的,如在USB2.0中的PHY。一些小的公司没有足够的人力和软件资源来完成有些工作,甚至他们不能在缺货期预定足够的晶原,因此涉及服务公司取代了他们的工作。但并不是每个IP都满足我们的需要,有时我们需要在购买后作一些修改。我们要在设计前决定所要用到的IPs。   在设计开始,设计者必须理解所有相关的标准、规范和算法。但是有许多方法来应用这些规范和算法。最好的结构是快速和最小芯片尺寸的结合。不幸的是,快速的需求常常和最小芯片尺寸的需求是对立的。因此,在HDL编码工作前规划一个最优的结构也是一个重要的问题。   例如:   1:除法器   除数被固定。最快的方法是查表,但是这个方法需要大的内存。我们可以可以从被除数中不断的减去除数直到新的被除数比除数小。它会花更多的时间但用最少的硬件。还有许多的方法来构建除法器,每种方法都有他自己的优点和缺点。   2:图像处理的动态评估器   从前一个图片中发现最相似的8×8模块,在整个电影剪辑中。最基本的有全搜索和三步搜索的方法。许多的论文已经讨论过优化硬件复杂度和速度的结构,这里我不再祥解释。   一个好的设计者应该要被实际经验培训和不断的。我们要在每个设计工作中非常小心和耐心。因为一个NRE将会消耗大量的金钱和数周的时间,如果他不小心犯错,设计者将会对金钱和计划失败负责。经验和小心也许是来完成一个成功的设计项目最好的方法。   以下条款是一些对一个稳步的和成功的设计的建议:(可能有些朋友也指出了其中的部分,我这里只作简要说明,可能稍有不同)   命名风格:   1不要用关键字做信号名;   2不要在中用VERILOG关键字做信号名;   3命名信号用含义;   4命名I/O口用尽量短的名字;   5不要把信号用高和低的情况混合命名;   6信号的第一个字母必须是A-Z是一个规则;   7使模块名、实例名和文件名相同;   编码风格:记住,一个好的代码是其他人可以很容易阅读和理解的。

  • 发表了主题帖: DSP与其它处理器的差别

    数字信号处理器(DSP)、通用微处理器(MPU)、微控制器(MCU)三者的区别在于:DSP面向高性能、重复性、数值运算密集型的实时处理;MPU大量应用于计算机;MCU则适用于以控制为主的处理过程。   DSP芯片的优点   DSP的运算速度比其它处理器要高得多,以FFT为例,高性能DSP不仅处理速度是MPU的4~10倍,而且可以连续不断地完成数据的实时输入/输出。DSP结构相对单一,普遍采用汇编语言编程,其任务完成时间的可预测性相对于结构和指令复杂(超标量指令)、严重依赖于编译系统的MPU强得多。以一个FIR滤波器实现为例,每输入一个数据,对应每阶滤波器系数需要一次乘、一次加、一次取指、二次取数,还需要专门的数据移动操作,DSP可以单周期完成乘加并行操作以及3~4次数据存取操作,而普通MPU完成同样的操作至少需要4个指令周期。因此,在相同的指令周期和片内指令缓存条件下,DSP的运算速度可以超过MPU运算速度的4倍以上。   DSP芯片的浮点与定点之分   在选择DSP器件的时候,是采用浮点还是采用定点,如果用定点是16位还是32位?其实这个问题和你的算法所要求的信号的动态范围有关。   浮点运算DSP比定点运算DSP的动态范围(动态范围:如音响系统重放时最大不失真输出功率与静态时系统噪声输出功率之比的对数值,又如一个多媒体硬盘播放器输出图像的最亮和最暗部分之间的相对比值)要大很多。定点DSP的字长每增加1bit,动态范围扩大6dB,16bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。例如:在做图像处理时,图像做旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。而32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。   由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP,这一优点在实现高精度复杂算法时尤为突出。   定点的计算不过是把一个数据当作整数来处理,通常AD采样来的都是整数,这个数相对于真实的模拟信号有一个刻度因子,大家都知道用一个16位的AD去采样一个0到5V的信号,那么AD输出的整数除以2^16再乘以5V就是对应的电压。在定点DSP中是直接对这个16位的采样进行处理,并不将它转换成以小数表示的电压,因为定点DSP无法以足够的精度表示一个小数,它只能对整数进行计算。而浮点DSP的优势在于它可以把这个采样得到的整数转换成小数表示的电压,并不损失精度(这个小数用科学记数法来表示),原因在于科学记数法可以表示很大的动态范围的一个信号,以IEEE754浮点数为例,单精度浮点格式:[31]1位符号[30-23]8位指数[22-00]23位小数。这样的能表示的最小的数是+-2^-149,最大的数是+-(2-2^23)*2^127,动态范围为20*log(最大的数/最小的数)=1667.6dB这样大的动态范围使得在编程的时候几乎不必考虑乘法和累加的溢出,而如果使用定点处理器编程,对计算结果进行舍入和移位则是家常便饭,这在一定程度上会损失精度。   原因在于定点处理的信号的动态范围有限,比如16位定点DSP,可以表示整数范围为1-65536,其动态范围为20*log(65536/1)=96dB.对于32定点DSP,动态范围为20*log(2^32/1)=192dB,远小于32位ieee浮点数的1667.6dB,但是实际上192dB对绝大多数应用所处理的信号已经足够了。由于AD转换器的位数限制,一般输入信号的动态范围都比较小,但在DSP的信号处理中,由于点积运算会使中间节点信号的动态范围增加,所以主要考虑信号处理流程中中间结果的动态范围,以及算法对中间结果的精度要求,来选择相应的DSP。另外就是浮点的DSP更易于编程,定点DSP编程中程序员要不断调整中间结果的PQ值,实际就是不断对中间结果进行移位调整和舍入。   实数运算可直接透过代码加入硬件运算中,而定点元件必须透过软件才能间接执行实数运算,这就增加了运算法指令并延长了开发时间。   整体上说,定点DSP在成本上具有优势而浮点DSP在易用上较优。

  • 发表了主题帖: 高速DSP系统PCB板的可靠性设计

    由于微电子技术的高速发展,由IC芯片构成的数字电子系统朝着规模大、体积小、速度快的方向飞速发展,而且发展速度越来越快。新器件的应用导致现代EDA设计的电路布局密度大,而且信号的频率也很高,随着高速器件的使用,高速DSP(数字信号处理) 系统设计会越来越多,处理高速DSP应用系统中的信号问题成为设计的重要问题,在这种设计中,其特点是系统数据速率、时钟速率和电路密集度都在不断增加,其PCB印制板的设计表现出与低速设计截然不同的行为特点,即出现信号完整性问题、干扰加重问题、电磁兼容性问题等等。   这些问题能导致或者直接带来信号失真,定时错误,不正确数据、地址和控制线以及系统错误甚至系统崩溃,解决不好会严重影响系统性能,并带来不可估量的损失。解决这些问题的方法主要靠电路设计。因此PCB印制板的设计质量相当重要,它是把最优的设计理念转变为现实的惟一途径。下面讨论针对在高速DSP系统中PCB板可靠性设计应注意的若干问题。   电源设计   高速DSP系统PCB板设计首先需要考虑的是电源设计问题。在电源设计中,通常采用以下方法来解决信号完整性问题。   考虑电源和地的去耦   随着DSP工作频率的提高,DSP和其他IC元器件趋向小型化、封装密集化,通常电路设计时考虑采用多层板,建议电源和地都可以用专门的一层,且对于多种电源,例如DSP的I/O电源电压和内核电源电压不同,可以用两个不同的电源层,若考虑多层板的加工费用高,可以把接线较多或者相对关键的电源用专门的一层,其他电源可以和信号线一样布线,但要注意线的宽度要足够。   无论电路板是否有专门的地层和电源层,都必须在电源和地之间加一定的并且分布合理的电容。为了节省空间,减少通孔数,建议多使用贴片电容。可把贴片电容放在PCB板背面即焊接面,贴片电容到通孔用宽线连接并通过通孔与电源、地层相连。   考虑电源分布的布线规则   分开模拟和数字电源层   高速高精度模拟元件对数字信号很敏感。例如,放大器会放大开关噪声,使之接近脉冲信号,所以在板上模拟和数字部分,电源层一般是要求分开的。   隔离敏感信号   有些敏感信号(如高频时钟) 对噪声干扰特别敏感,对它们要采取高等级隔离措施。高频时钟(20MHz以上的时钟,或翻转时间小于5ns的时钟)必须有地线护送,时钟线宽至少10mil,护送地线线宽至少20mil,高频信号线的保护地线两端必须由过孔与地层良好接触,而且每5cm 打过孔与地层连接;时钟发送侧必须串接一个22Ω~220Ω的阻尼电阻。可避免由这些线带来的信号噪声所产生的干扰。   软、硬件抗干扰设计   一般高速DSP应用系统PCB板都是由用户根据系统的具体要求而设计的,由于设计能力、实验室条件有限,如不采取完善、可靠的抗干扰措施,一旦遇到工作环境不理想、有电磁干扰就会导致DSP程序流程紊乱,当DSP正常工作代码不能恢复时,将出现跑飞程序或死机现象,甚至会损坏某些元器件。应注意采取相应的抗干扰措施。   硬件抗干扰设计   硬件抗干扰效率高,在系统复杂度、成本、体积可容忍的情况下,优先选用硬件抗干扰设计。常用的硬件抗干扰技术可归纳为以下几种:   (1) 硬件滤波:RC 滤波器可以大大削弱各类高频干扰信号。如可以抑制“毛刺”干扰。   (2) 合理接地:合理设计接地系统,对于高速的数字和模拟电路系统来说,具有一个低阻抗、大面积的接地层是很重要的。地层既可以为高频电流提供一个低阻抗的返回通路,而且使EMI、RFI变得更小,同时还对外部干扰具有屏蔽作用。PCB 设计时把模拟地和数字地分开。   (3) 屏蔽措施:交流电源、高频电源、强电设备、电弧产生的电火花,会产生电磁波,成为电磁干扰的噪声源,可用金属壳体把上述器件包围起来,再接地,这对屏蔽通过电磁感应引起的干扰非常有效。   (4) 光电隔离:光电隔离器可以有效地避免不同电路板间的相互干扰,高速的光电隔离器常用于DSP和其他设备(如传感器、开关等) 的接口。   软件抗干扰设计   软件抗干扰有硬件抗干扰所无法取代的优势,在DSP 应用系统中还应充分挖掘软件的抗干扰能力,从而将干扰的影响抑制到最小。下面给出几种有效的软件抗干扰方法。

  • 发表了主题帖: 使用C / C ++的MSP430的GPIO编程和示例代码

    在我们开始编程gpio之前,您需要对C / C ++中的二进制和十六进制系统以及按位运算有基本的了解,下面是两个可以参考的教程(或者如果您已经熟悉这些教程,可以跳过这些教程并继续): ●     嵌入式编程的十六进制和二进制数字系统基础知识 ●     教程:嵌入式编程基础C - 位操作 msp430.h是所有MSP430器件的通用头文件。该头文件识别您的器件,并相应地包含器件具体的头文件。每个器件具体的头文件还包括从BIT0到BITF的位定义。其中BITn等于(1 << n),即第n个位的位置是1,其余位是0。 现在让我们看看我们如何给寄存器赋值。我们可以使用十六进制符号和十进制表示法来赋值。如果您的编译器支持其他符号,如二进制符号,也可以使用。比方说,我们要设置Port 1的PIN 6作为输出。它可以通过以下方式完成: 方式1. P1DIR =(1 << 6); //(二进制左移 - 直接赋值:其他引脚设置为0) 方式2. P1DIR | = 0x20; //或0x20; (十六进制 - 或分配:其他引脚不受影响) 方式3.P1DIR | =(1 << 6); //(二进制左移 - 或分配:其他引脚不受影响) 方式4. P1DIR | = BIT6; //同上,使用标准BIT定义 复制代码 ●     在许多情况下,必须避免使用方式1,因为我们直接为寄存器赋值。因此,当我们将P1.6'1'设置为'1'时,其他的被强制分配一个'0',这个'0'可以通过或操作来避免,然后赋值。 ●     如果需要批量更改某些位,则可以使用方式2 ●     方式3和方式4可以在需要改变某些或者一个位时使用。 这里首先要注意的是,十六进制表示法中前面的零可以被忽略,因为它们没有任何意义,因为我们在这里使用了无符号值(仅为正值),它们被分配给寄存器。 例如。0x4和0x04表示的意思一样。 请注意,位7是最左边的MSB,位0是最右边的LSB,它代表Big Endian格式。 因此,位0是右边的第一位,位1是右边的第二位,依此类推。 BIT和PIN码是基于零的索引值。

  • 发表了主题帖: 0.9V MSP430L092 MCU 使单电池供电的产品更轻巧更绿色

    电子产业不断发展的趋势是开发功耗更低、支持更小电池供电的产品。但是目前单体电池供电产品的系统解决方案通常并未针对这一目标进行全面优化。德州仪器 (TI) MSP430L092 MCU 可通过 0.9V 工作电压提供超低功耗,帮助实现这类产品。对于采用单体 1.5V 碱性电池供电的产品来说有两种主要系统级解决方案。第一种系统使用多体电池,例如两节 AAA 电池。这样会直接导致最小物理尺寸限制,因为产品尺寸受电池尺寸限制。第二种系统只有一个电池,但需要外部升压电路或使用具有集成型升压转换器的 MCU。第二种系统由于需要额外升压电路,因此并非针对最低功耗优化,而且还可通过增加其它组件而增大尺寸和成本。总之,两种系统都需求进行利弊权衡,例如较大的产品与较低的功耗,或者较小的产品与较高的功耗。https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/1638.1.png MSP430L092 MCU 的 0.9V 工作电压无需升压电路并可直接通过单体电池运行,因此即可缩小物理尺寸,又能降低功耗。MSP430L092 MCU 的完整功能性可在 0.9V 至 1.65V 的电压范围内保持,支持全面低电压系统解决方案。https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/3107.2.jpg

  • 发表了主题帖: MSP432P401R MCU 14位ADC的几个主要性能特性

    将着重谈一谈被称为ADC14的MSP432P401R MCU 14位ADC的几个主要性能特性;这个ADC14提供了可以对你的应用进行定制的灵活性:性能特性: 基准选项按照通道选择单端或差分输入可编程的位数 https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/5810.1.png基准选项针对ADC14的可选基准选项可以灵活地为不同的应用提供最佳的基准电压。这个基准电压必须大于最大输入信号;不过这个电压值越接近最大输入信号值,ADC的分辨率越佳,这是因为步进尺寸将变小。可以用ADC14VRSEL位来选择内部基准,用REFVSEL位来将电压选为1.2V、1.45V或2.5V。甚至可以将内部基准输出到外部使用(使用REFOUT位),为传感器供电,实现比率测量,或者,反过来使用AVCC电源来提供ADC基准电压,并为传感器供电。如果内部基准和AVCC电源不提供所需电压,那么可以选择外部基准电压引脚。在以下示例中,通过选择最佳基准电压来提高分辨率。在这个示例中,输入信号为1V,所选模式为14位模式:在使用2.5V基准时,按照编码,得出一个153uV的14位ADC分辨率在使用1.2V基准时,按照编码,得出一个73uV的14位ADC分辨率在这个情况下,在14位ADC中使用1.2V基准所获得的分辨率要好于在15位ADC中使用2.5V基准时所实现的分辨率。因此,在基准电压已经比最大输入信号大时,它的值越低,所获得的效果就越佳。单端或差分输入按照存储器控制寄存器ADC14MCTLx的转换,可以选择单端或差分输入。这样可以实现真正的差分模式支持,即0-VREF共模,此时需要简化板上信号调节电路,从而降低成本和系统功率。为一个所需输入通道选择差分输入,以及为其余通道选择单端输入的功能可以充分使用这个器件的引脚,这是因为差分输入需要2个输入引脚,而单端只需要一个引脚。https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/6403.2.jpg可编程位数ADC14用ADC14RES位提供8、10、12或14的可编程位数。当你减少位数时,完成一个转换所需的时钟周期变少,所以,选择所需的最少位数,以尽可能提高采样率,并且最大限度地降低能耗。这使得那些优先考虑速度的应用,比如说故障检测应用,可以选择更少的位数;也可以使那些速度不是十分关键的应用,比如说温度测量应用,优先考虑分辨率。由于位数是可编程的,甚至可以根据这个应用代码不同部分的要求(也许需要不同的ADC分辨率),在转换之间对位数进行更改。要立即开始设计,请订购易于使用的MSP432 MCU LaunchPad™ 开发套件。如果你也打算利用14位ADC的灵活性来充分发挥应用易用性的话—请随时关注本系列的下一篇博文,我将讨论MSP432 MCU内ADC14的易用特性。对于那些正在MSP430™ 微控制器上进行开发的人员,MSP430FR5x/MSP430FR6x MCU内的“ADC12B”有相似的特性。

  • 发表了主题帖: MSPBoot的代码移植流程

    首先用Per工具产生CMD文件(Generating Linker Files), 通过Per的工具会产生两个CMD文件,其中一个给MSP430G2755的Bootloader使用,另一个给MSP430G2755的应用程序使用。操作指令如下,C:\Users\a0223791\Desktop\MSP430-BSL-IAP\MSPBoot_1_01_00_00\linkerGen>perl MSPBootLinkerGen.pl -file lnk_msp430G2755_Uart_1KB -dev MSP430G2755 -params 0x8000 0xFFE0 0xFC00 48 6 0x1100 0x20FF 0x80 0x1000 0x10BFhttps://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/2018_2D00_11_2D00_27_5F00_161819.png这里面有几个重要的参数说明如下,<0x8000 > = Start address of Flash/FRAM对于MSP430G2553 地址为0xC000 ,而MSP430G2755的地址需要修改为0x8000 <0xFFE0 > = Address of interrupt vector table中断向量表的地址0xFFE0,对于MSP430G2553和MSP430G2755相同 <0xFC00> = Start address of BootloaderBootloader的起始地址0xFC00,对于两者也是相同的 <48 > =Size of the proxy table这里的48对应于12个中断向量,每个中断向量占用4Byte <6> = Size of shared vectors在应用程序中一共有3个(P1/Time/Dummy)中断向量,每个中断向量占用2Byte, 对应参数为6 <0x1100> = Start address of RAMRAM的起始地址也需要修改为MSP430G2755的0x1100 <0x20FF > = End address of RAMRAM的结束地址也需要修改为MSP430G2755的0x20FF <0x80> = Size of the stackMSP430G2755默认的堆栈大小为0x80 <0x1000> = Start address of info memory used for bootloaderInformation的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改 <0x10BF > = End address of info memory used for bootloaderInformation的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改 注意如上修改的参数6,及中断向量的数量,在Bootloader中的中断向量不需要修改,只修改MSP430G2755应用程序App中的中断向量即可,通过下图可以直观看到中断向量的在Bin文件中的分布。https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/3821.B2.png图二 MSP430G2755中断向量https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/7723.B3.png图三 MSP430G2755 Bin文件对应虚拟中断向量表           注意在这里的809C 和80E2 就对应MSP430G2755应用程序中的P1_Isr 和Timer_A,GPIO中断和定时器中断。下图会看到在MSP430G2755Bootloader中虚拟中断向量表的分布。https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/6710.B4.png图四MSP430G2755 Bootloader虚拟中断向量表

  • 发表了主题帖: MSP430 Main Memory Bootloader 介绍

    在MSP430G2xx 中实际上具有一个ROM版本的BSL(Bootloader) ,但是这个BSL仅仅支持外部MCU通过UART进行在线升级,而且而且所有的协议全部固化,无法进行修改或者更改其他接口方式进行升级操作。所以这个需要一个可以在主程序中运行的Bootloader,可以让外部MCU进行用户自定义的升级操作。同时TI也提供了一个基于MSP430G2553的参考例程,可以通过如下链接进行下载。http://software-dl.ti.com/msp430 ... test/index_FDS.html参考代码版本为MSPBoot_1_01_00_00,下图为MSPBoot的整个软件框架。https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/8863.B1.png图 MSPBoot软件框架

  • 2019-01-09
  • 发表了主题帖: 反射以及如何在高速系统处理反射

      传输线理论告诉我们,源输出直至接收组件输入之间可能遇到的信号阻抗中的任何变化所产生的反射。本质上讲,当交流(AC)信号在传输线向下行进时遭遇阻抗变化时,一些信号被反射回发射机,而该信号的其余部分将继续射向接收器。信号经历的阻抗变化越大,反射越大,从而造成更多的信号失真。    阻抗变化受下列变化影响:导线宽度、相邻的导线和器件之间的间距,以及距参考平面的距离。然而,印刷电路板(PCB)发生这些阻抗的变化时,并不总是那么明显。一个非常有用的做法是检查PCB布局或系统图,以快速识别可能通过模拟需要多次分析的任何问题区域。执行这类检查时,您应该跟踪从源到接收器的信号,寻找任何违反表1所列指南的行为,以及我接下来会讨论的故障点。 单端型差分型导线宽度必须是常量差分导线间距(耦合)和导线宽度必须是常量导线和其他器件和导线之间的间距应至少三倍于导线宽度恒定参考平面必须存在于导体整个长度的相同距离 表1:最大限度减少反射的检查指南 并非每次都必须遵守表1中有关传输线的指南。以下为可能发生违反这些准则的常见区域:球栅阵列(BGA)走线——尤其针对通向内部行/列的多输入/输出(I / O)器件。导通孔,您必须对此格外小心,以确保当传输线路信号导通孔经过PCB层时,看到一个恒定的固定参考平面。在线器件和连接器。器件和连接器的印刷电路板(PCB)封装与将它们相连的传输线封装相比,通常具有不同尺寸,这导致阻抗变化,从而造成反射变化。        当通向BGA器件或从BGA器件走线时,通过管理走线宽度和相邻的导通孔或焊盘的间距,来保持一个恒定阻抗。图1所示为从DS125DF1610 16通道12.5Gbps重定时器数据表(一个196引脚数BGA器件)中摘录的一些常用注意事项。                         可执行项                                              不可执行项                              https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-17/8321.8233.Eye-doctor-reflections_5F00_figure-1.JPG_2D00_800x0.jpg图1:BGA布线规则 从顶部开始,图1中的首个规则组合向您展示如何正确地管理内部BGA行和列的差分走线收集集和布线。第二个规则组合突出显示一个名为颈缩的常用技术,其中,有时有必要在BGA设备下方传送信号时使用较小的导线宽度。始终对称地执行颈缩行为,其中颈缩长度等于差分对的两条导线长度。图1中的第三对组合所示为确保信号导通孔具有恒定参照平面的一种可能方法。这种情况下,“可执行事项”图形显示与信号导通孔相邻布置的四个接地导通孔阵列。这使得信号在穿过PCB其它层时可看到一个恒定接地参考。并不总是每次都需要使用4个接地通孔。多数情况下,两个接地导通孔已足够。一定要进行模拟,以验证系统的需求。管理在线器件和连接器封装焊盘的阻抗非常重要。检查过程中,寻找的一个重点项目是封装焊盘在参考平面中是否存在任何缺口或空隙。空隙或缺口可能每次并非必需项,但若您看到传输线的导线宽度与器件焊盘之间存在显著区别时,您需要进行调查!图2所示为运行到一个串联式器件(此情况下为一对交流耦合电容器)的导线示例。图3所示为此导线下方的接地层。注意器件焊盘下方的缺口,这有助于使阻抗更靠近传输线,以减少反射。同时图4所示为顶部蚀刻和接地层。 https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-17/6371.7585.Eye-doctor-reflections_5F00_figure-2.jpg_2D00_400x0.jpg图2:在线器件示例——信号层 https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-17/6661.0741.Eye-doctor-reflections_5F00_figure-3.jpg_2D00_400x0.jpg图3:串联式器件示例——接地层 https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-17/6366.7288.Eye-doctor-reflections_5F00_figure-4.jpg_2D00_400x0.jpg图4:在线器件示例——信号层和接地层 最后,有必要进行模拟,以验证您的PCB布局,并确保最小的反射将会发生。

  • 发表了主题帖: 空气质量检测器和烟雾探测器的新技术

         空气质量检测器并不新鲜。实际上,我们每个人脸上就有一个。不幸的是,我们的鼻子有时不可靠,因为无法探测无味的有害气体或者附近发生火灾时我们正在熟睡。     基于微控制器的空气质量检测器和烟雾探测器也已经出现了一段时间,但是现在新一代低功率、高度集成、高性能的微控制器与超级敏感的传感器结合,可以探测出住宅、办公室、工程和其他任何地方的最微弱的要害气体或烟雾微粒。对于烟雾探测器等许多应用而言,这些新型微控制器基本上就是一个去掉光管的芯片探测器。对于其他需要连接探测一氧化碳等特定气体的专用传感器的其他应用,这些微控制器的高度集成使其成为成本效益极高的解决方案。https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/7484.1.jpg   许多微控制器拥有集成存储资源,但是很少具有统一的单片存储器模块,来避免“RAM与闪存”架构的限制。基于FRAM(铁电随机访问存储器)的存储器架构为开发者提供了更多的灵活性与可配置性,简化了将应用程序调整到此平台的方法。  例如,不会出现闪存空间剩余而RAM空间不足,系统设计者能够对存储器进行配置,满足应用程序的需求,不必再将应用程序塞进可用存储模块主导的存储器架构。一些应用程序可能需要更多的存储空间来存储数据记录,跟踪气体浓度何时超过特定阈值。这种探测器可能需要将更多的可用存储空间分配到闪存等效存储,更少的分配到RAM存储以存储程序。对于其他应用,这一分配比例可能相反。拥有统一的存储器架构,开发者可以简便地重新配置存储器就可以满足应用的需求。  这种集成存储器的灵活性还有另一个优势,即更高的集成度,降低了材料清单(BOM)成本和电路板空间。除了去除外部存储设备,一些新一代高度集成微控制器采用了外部振荡器和运算放大器等模拟前端组件。一些新型微控制器甚至还采用了超级敏感的互阻抗放大器(TIA),能够执行监控,将弱电流信号转化成电压信号。可以从原来的设计中去除多达6个分立的芯片,电路板的尺寸可以减少75%。上述所有特点组成了成本效益极高的新产品设计。  当然,系统的高度集成还影响了系统的可靠性和功耗。外部组件的减少简化了组装,降低了制造成本。       许多住宅、工业和商业空气质量检测器不与电网连接,由纽扣电池或AA电池等小型电池供电。因此,低功耗是需要优先考虑的事项,因为会影响到检测器的电池更换周期。大多数情况下,电池使用寿命越长,对用户越有利。住宅主人会希望安装的烟雾探测器10年或更长时间不需要更换电池。在工厂生产线等工业环境中,气体检测器可能安装在难以接触或危险的位置。减少更换新电池的周期能够减少生产线停工维护时间,提高生产线效率和产量。有趣的是,低功率还帮助不用电池或电线供电的探测器在一个网络中可以使用更多的供电模式,增强应对有限电源的能力。       在一些情况下考虑的另一个问题是通信支持,因为许多应用中空气质量检测器是工程自动化或建筑维护系统的组成部分。SPI、I2C与UART等标准I/O接口可以与有线网络直接连接,或与Wi-Fi®或蓝牙®等无线技术连接。

  • 发表了主题帖: 模拟部件与msp 432

    微控制器与模拟部件心心相映。在几乎所有应用中,它们都需要依靠对方来使信号路径变得完整—诸如医疗、消费类和能源等应用。我们需要用于信号处理的模拟部件,以及一个用于控制、数据存储和系统通信的处理器。这一点可以通过使用微控制器内的独立模拟或集成模拟部件来实现。集成与独立模拟组件分别具有哪些优势? https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/7633.a1.jpg MSP已经成为微控制器领域内的领军人物,不过它是嵌入在芯片内的模拟外设,帮助你实现所需功能,但是不能减少系统成本,以及加快上市时间。集成模拟外设被设计成在多种功率模式下运行,从而实现一个高功效系统解决方案。很多模拟外设具有根本就不使用CPU的工作模式,这样可实现低功耗,并且减轻CPU负担,实现并行运行。下面的信息突出显示了开始评估的每个模拟集成外设,以及推荐器件的主要特性。 https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/4527.a2.jpg

  • 发表了主题帖: TMS320DM642在移动平台ATP技术中的应用

    1 引言   空间光通信采用激光作为载波。与传统微波通信相比,空间光通信具有传输容量大、方向性强、传输速率大、保密性好等优点,在卫星和航空航天等大容量通信方面具有巨大的应用前景。但由于激光具有波束窄、发散角小的特点,空间太阳、月亮等星体背景光的干扰,加之远距离通信信道对光信号的极大衰减等因素,因而空间光通信能够快速实现卫星、飞机等空间移动平台的捕获、跟踪和瞄准(Acquisition,Track—ing,Pointing,简称ATP),并建立稳定而有效的通信链路。因此,介绍了一种基于DSP的移动平台ATP技术的应用设计。   2 系统硬件设计   2.1 ATP系统架构   为了模拟实验空间移动平台ATP过程,设计一套地面模拟ATP系统。整个系统分为图像处理模块、电机控制及驱动模块、二轴电控转动平台、光学系统等,如图1所示。图像处理模块核心是图像处理器件。采用TMS320DM64(简称DM642)作为图像处理器,该器件是TI公司推出的一款针对多媒体处理应用的高性能定点DSP器件,它具有C64X内核,指令集与(264X全面兼容,其内部工作时钟达600 MHz,指令执行速度高达4 000~4 800 MI/s,它拥有3个独立配置的视频端口,可独立配置为视频采集或显示端口,采用EDMA方式快速地在存储器与视频端口之间传输视频信号,另外DM642还拥有多路音频端口(McASP0),32位主机接口(HPI),PCI总线接口,16位通用I/O端口(GPIO),3个定时器以及I2C总线模块。DM642对CCD采集的图像信号进行图像处理和分析,判断信标光是否进入视场,并利用灰度直方图算法计算目标与背景间的阈值,再利用质心算法得出信标光坐标,并将信息实时传输给电机控制部分。   电机控制器采用专门用于工业控制的LPC2114ARM及其外围电路。LPC211ARM采用ARM7TDMI—S核技术,采用RISC指令,流水线执行结构,嵌入式操作系统移植性强。根据DSP处理后的信息调整载有CCD的二轴电控转动平台。   电机驱动器采用新型的双极性恒流斩波驱动技术,光电隔离信号输入,自动半流,可设置最大2 A电流和最大125级细分,振动和噪声小。   二轴电控转动平台按照水平和俯仰两个方向转动,其水平方向无最大角度限制,而俯仰方向接近360°,通过ARM控制器实现该转动平台的方位和俯仰角的精密转动。驱动器为最大值128细分时,其方位和俯仰角的转角精度达2.725μrad和1.635μrad。   光学系统由信标光发射和CCD接收部分组成。CCD有效像素为582(H)×512(V),像素尺寸为8.25(H)μm×7.03(V)μm,接收灵敏度为0.005勒克斯,CCD的视场角为3°x3°。CCD安装于二轴电控转动平台,相当于光学天线,用于接收光信号,通过ARM电机控制实现CCD的全空间扫描和信标光接收。信标光置于单片机控制的小车,模拟实现空间移动平台的运动。   2.2 图像处理硬件设计   该系统设计的图像处理模块采用DM642作为图像处理核心器件以及其外围电路组成的视频通讯模块(VCM)完成CCD视频信号的采集和处理。VCM是由视频处理单元、音频处理单元、SDRAM、Flash、UART、以及网、I2C、JTAG单元等,其中视频处理单元主要由DM642、视频解码器TVP5150APBS、视频编码器SAA7104、同步动态存储器SDRAM以及控制部分的通信器件UART等组成,如图2所示。   DM642首先启动视频解码器TVP5150APBS,捕获并解码CCD摄像头的每一帧视频信号,然后读取并存储在SRDRAM中,然后处理所存储的数据并提取信标光坐标,通过UART将相应信息实时反馈给控制部分,同时输出处理的数据,经视频编码器SAA7104编码,经VPout端口输出显示。   由于DM642功能强大,其应用电路涉及到大量外围电路,因此整个图像处理电路VCM相当复杂,限于篇幅原因,这里只给出电源部分电路,以供参考。VCM采用12 V直流电源供电,经DC/DC转换器TPS54350PWP转换成3.3V直流电压作为DM642的电源,由于DM642工作在600 MHz的高频率下,因此对电源稳定性要求极高,其电路如图3所示。   3 系统软件设计   当CCD采集的视频信号通过DM642的视频输入端口进入视频处理单元模块,若发现信标光不在视场中,则执行光栅螺旋扫描算法,直到信标光进入视场,此时图像处理模块将提取出信标光光斑的坐标通过串口发送给电机控制模块,电机控制模块根据接收的信标光坐标信息对二轴电控转动平台执行基于增量式PID跟踪算法控制,该过程不断反复,直到信标光光斑始终保持在视场的中心位置,则建立通信链路,从而实现通信;另外,若信标光一开始就位于视场,则直接进入跟踪过程,且整个扫描和跟踪过程是相互嵌套的。跟踪过程中一旦目标突然从视场中丢失,则系统则转去执行扫描过程,直到再次发现目标。整个ATP控制过程主要由扫描、捕获和跟踪3部分组成。图4示出软件设计主程序流程图。 3.1 信标光坐标阈值提取算法   系统首先采用直方图法确定信标光坐标提取的阈值,具体做法:将CCD采集的MxN像素的黑白图像存入数据缓存器,以灰度值(O~255)为x轴,以该灰度值的像素点个数为y轴。由于背景和目标灰度值的不同,必然在坐标系中形成两个峰值,在两峰值之间选取像素点个数最少的灰度值为阈值,可以使目标和背景分割误差最小。   3.2 信标光坐标质心算法   DM642必须精确地从目标图像提取目标位置信息。常用的定位算法:质心算法、形心定位法、峰值定位法、匹配定位法和投影中心法。质心算法的精度高、且算法简单,该系统设计选用质心来定位目标。质心法反映了目标的能量的分布状况。该方法在理想的情况下定位精度小于0.05个像素,且适用的光斑范围大。   4 结论   在脱离PC机情况下对移动平台信标光的捕获与跟踪进行实验。利用载有信标光的小车以不同速率在已设计的线路上运动,控制器控制二轴电控转动平台进行光栅螺旋扫描,一旦捕获信标光则转入到跟踪状态并锁定目标。如果信标光突然脱离CCD视场,程序将自动重新进入扫描捕获状态。   实验表明,系统跟踪角速度范围是0~lOrad/s,跟踪精度优于0.5mrad,基本达到移动平台ATP技术粗跟踪要求,也进一步证明基于DM642的移动平台ATP技术在卫星和航空航天等大容量通信方面具有更大的应用潜力,特别是在改进和优化系统若在灵活性和实时性以及算法,将使ATP系统跟踪精度进一步提高。

  • 发表了主题帖: 基于DSP_C54X窄带中频抽样的理论与实现

    1 引言          随着DSP技术的广泛应用与迅速发展,现已深入到通信与电子系统的各个领域。软件无线电是通信领域发展中的前沿技术之一,它集数字信号处理、DSP/FPGA、无线通信和计算机软硬件技术于一体,充分体现了现代通信技术的高性能特点。本文在讨论基本的带通抽样定理基础上,分析欠抽样率对带通信号采样的频谱搬移特点,同时结合对普通的AM调幅接收机中频信号的采样、滤波与处理,以获得基带的语音信号。这种用软件进行信号处理的技术有助于深入理解带通抽样滤波的理论,并为软件无线电接收数据信号提供理论与实践依据。本文讨论的中频窄带抽样实现的基本框图如图1所示。 信号采集的前面部分可以是普通AM接收机,输入信号是fx,通过混频输出的中频信号fi=fl-fx,这里确定fi=465kHz,信号带宽是10kHz。AD转换的采样频率是fs=60kHz,直接采集窄带中频信号,经DSP处理后,通过DA输出语音信号。这一工作过程采用了带通抽样理论。 2 带通抽样理论和DSP硬件电路 2.1 带通抽样理论       带通抽样定理是Nyquist抽样定理的进一步扩展。Nyquist抽样定理的基本意义是:一个频率限带信号x(t),其频带限制在(0,fh)内,如果用fs>=2fh的采样频率对x(t)进行等间隔抽样,得到的离散信号x(n)=x(nTs),那么x(t)信号将被所得到的采样值x(n)所确定,抽样后的信号频谱不发生混叠,因此可以用滤波器恢复原始的限带信号x(t),该信号是零频附近的基带信号。而实际接收的无线电信号绝大多数是一个有中心频率的限带信号,并且满足信号带宽与中心频率之比远远小于1(B/fo<<1)的条件,即中心频率fo远高于信号所携带频谱宽度,根据基本抽样定理知道,此时抽样频率fs>2fo,这样不仅要求高性能的AD转换器,而且高速的抽样数据又大大的加剧了DSP的信号处理负担。为了让DSP有足够的时间去处理实时的信号,当前主要的方法有两种:(1)直接降低抽样率;(2)进行高速抽样,然后采用抽取方法降低抽样率。本文采用的是直接降低抽样率的方法。那么降低抽样率是否会产生信号混叠等问题呢?这由带通抽样理论来回答。 带通抽样定理:设一个频率限带信号x(t),其频带限制在(fL,fH)内,如果采样频率fs满足: 其中n取值是满足fs≥2B(B=fH-fL)的最大整数值(0,1,2,...),此时用fs进行等间隔抽样的x(nTs)能准确的确定原始信号x(t)。并确定带通信号的中心频率,那么。这个表达式表示:当抽样频率确定后,有许多频率(或带通信号)在满足以上表达式所取的n值条件下,可以产生同一个频率(或同一个带通信号);同样对于确定的fo通过选择不同的n来确定fs。如图2所示。 其中fs是抽样频率,当被抽样的信号频率fo是3fs/4和5fs/4时,都不满足fs>2fh的条件,是欠抽样情况。在欠抽样后都会输出一个相同频率的信号fs/4,如黑粗的虚线所示。进一步讲,如果被抽样的信号是一个以fo为中心频率的限带信号,带宽是B,且抽样频率fs>2B,那么欠抽样后将会输出一个以抽样频率fs/4为低中心频率的限带信号。当然抽样时不容许被抽样的信号中混入其他信号,即必须是一个限带信号,否则其他满足以上公式条件的信号都会进入该频带;其次根据自然抽样定理,输出的频谱中还会有与fs倍频有关的频谱分量,即输出信号频谱Xs是: 这需要通过DSP设计滤波器,恢复原始信号x(t)。Cn是抽样脉冲傅里叶级数的系数。根据前面介绍的参数,抽样频率是60kHz(8bit)、被抽样信号是465kHz的普通调幅接收机的中频信号是一个限带信号,信号带宽是B=10kHz。 2.2 DSP硬件电路设计 实现带通抽样,使用DSP5402作为基带信号处理,基本框图如图3所示。 其中AD采用TCL5510,该芯片最高抽样率是20MHz,8位数据宽度,其输入信号的动态范围是0.6~2.6V,由于输入是465kHz交流的调幅信号,因此该输入信号需要叠加在被抽样信号中心位置1.6V直流电平上,AD前放大电路的输出要调整在这个电平。AD转换时钟是使用DSP_CLKOUT信号,经过2分频获得(10MHz)。 DA采用CA338,该芯片也是8位数据宽度,直接输出模拟信号。系统采用一个AD与一个DA,因此在程序设计中使用PORTR和PORTW指令,产生IO读写信号,与普通的或门控制,实现对AD的读和对DA的写操作。 3 抽样频率确定与滤波器的实现 根据以上讨论,对于窄带中频信号465kHz,通过60kHz的抽样,产生15kHz的信号。抽样前后的信号频谱关系如图4所示。 其中图4(a)表示除了465kHz的带通信号可以通过欠抽样产生15kHz的低中频信号外,其他信号也可以通过欠抽样产生15kHz低中频,因此465kHz的中频必须是一个限带滤波器输出的信号,不容许其他信号混入抽样。其次该限带中频信号与抽样信号的频域卷积除了有15kHz的信号频谱外,还有其他的频谱分量,因此抽样后,DSP要设计一个带通滤波器,滤除其他信号的频谱,如图4(c)所示。然后通过包络检波获得基带语音信号。 3.1 确定抽样频率 由于需要进行实时的数字信号处理,从滤波器实现到确定准确的抽样频率十分重要。具体实现的方法可以是:选择可编程AD转换器,可编程时钟发生器输入时钟到AD、DSP采用定时中断抽样等。由于本硬件设计AD是输入固定时钟,芯片不可编程,因此采用DSP中断抽样和处理的方法。根据60kHz的抽样频率,计算抽样周期是16667ns,DSP工作的时钟频率是20MHz,如果以单周期指令计算,在AD抽样的周期内,DSP可执行16667/50=333条指令。那么DSP的工作过程应该按图5时序进行。 3.2 带通滤波器的实现 使用DSP实现带通滤波器的设计方法很多,可以先用MATLAB、SystemView等软件进行模拟仿真,然后获取滤波器的系数,设计FIR滤波器或IIR滤波器,如果仅仅处理语音信号可以采用IIR滤波器;如果需要处理数据信号一般可以用FIR滤波器。 其次使用DSP_C54X定点数字信号处理器,由于在滤波器实现与数据处理中采用小数方式,因此要求输入的数据也是小数,而从AD转换采集数据信号是十六进制的,因此首先要进行数据转换,然后处理,处理完的数据还需要转换成16进制,通过DA输出。编制的DSP抽样与处理的程序如下所示,实际使用中还需要矢量文件和连接文件。 .title “x.asm” .mmregs .def start .def DStINT ;定时器中断入口地址 x_new .usect “DATA1”,57 ;初始化数据区 x_old .usect “DATA2”,57 ;循环缓冲区长度 .bssy,1 size .set 57 ;重复运算次数 data_l .set 256 ;计算数据长度是256 PA0 .set 0 PA1 .set 1 .data COEF .word -18,99,50,-76,-64,6,38,62,28,-36,-78,-61,46,92,58 .word 14,-123,-134,45,83,122,114,-184,-199,13,4,236,260 .word -244,-213,-85,-173,408,425,-267,-117,-300,-475,642,561 .word -187,174,-716,-943,941,590,149,883,-1605,-1808,1406 .word 287,1534,3658,-5867,-7587, 8579 .text start: STM #0820H,PMST ; STM #0000H,SWWSR ; STM #0010H,TCR ;关闭定时器,TDDR=0000 STM #014CH,PRD ;定时器设置60K采样周期 STM #0008H,IFR ;清除TINT中断标志 STM #0008H,IMR ;容许中断 STM #y,AR1 SSBX FRCT ;小数运算 STM #x_new,AR2 ;AR2指向新缓冲区第1单元 STM #x_old+(size-1),AR3 ;AR3指向老缓冲区最后单元 STM #-1,AR0 ; STM #size,BK ;循环缓冲区长度 STM #0C20H,TCR ;启动TSS=0,TRB=1自动加载PRD RSBX INTM ;开放CPU中断 wait B wait ;等待中断 DStINT portr PA1,*AR2 ;读取AD抽样数据 LD *AR2,8,A SUB #8000H,A ;转换16进制数为小数表示 STL A,*AR2 ;实现FIR滤波 ADD *AR2+0%,*AR3+0%,A ;AR2地址中内容<<16位加AR3同样操作-->(AH)中 RPTZ B,#(size-1) FIRS *AR2+0%,*AR3+0%,COEF ;A*系数-->B,同时进行下一个ADD功能,直到全部完成 STH B,*AR1 LD *AR1,16,A RSBX TC CMPS A,*AR1 ;实现包络检波 BC buchl,NTC ;TC=0,采集数据>0,不处理 STH A,*AR1 ;TC=1,保存DSP的8000H~FFFFH LD #0FFFFH,A SUB *AR1,A ;实现FFFFH-采样值 STL A,-8,*AR1 ;右移8位恢复半波 B CHLEND buchl: SFTA A,-16 STL A,-8,*AR1 CHLEND: portw *AR1,PA0 ;输出DA MAR *+AR2(2)% ;AR2=circ(AR2+2),修改AR2 MAR *+AR3(1)% ;访问后,AR3=circ(AR3+1)修改AR3 MVDD *AR2,*AR3+0% RETE .end 其中,滤波器的输入信号已经将采集的16进制数转换成Q15格式,其输出是定点DSP的Q15格式,对于包络检波可以认为:0~1用0000H~7FFFH表示低中频载波的正半周,而低中频的负半周是“FFFFH-抽样值”,即是“(0-(0~-1)=0~1”,此运算将低中频载波的负半周转换为正半周,实现了检波功能,DA输出加一个低通滤波器可以得到基带语音信号。 4 性能分析       通过以上分析和程序设计,使用DSPC5402构成的数字信号处理系统,对465kHz的窄带中频调幅信号进行欠抽样与数据处理,通过存储示波器测量的波形如图6所示。由于采用带通抽样,降低了抽样频率,使DSP有足够的时间处理,如滤波、信号变换等。通过输出的波形可以看到:信号的量化噪声在一定程度上影响输出信号的纯度。因此还需要加好的低通滤波器。实际中还对普通的调幅收音机中频输出进行实际抽样处理,可以获得比较清晰的语音信号。 5 结束语     本文通过对带通抽样定理的讨论,结合DSPC54芯片设计的数字信号处理系统,对窄带中频信号进行实际的抽样与处理,获得较好的效果。尽管与实际的软件无线电系统实现框架有较大的距离,但论文研究结果为DSP在该领域的应用提供了一个实际范例。

  • 发表了主题帖: 关于DSP系统的建模和配置问题

            嵌入式软件开发需要对目标架构及其使用有广泛透彻的认识和了解。把嵌入式系统从概念转化为能够有效地在硬件环境中部署的高效解决方案,需要一系列步骤。整个过程包括:分析、架构搭建、评估、硬件支持、设计、编码、调试、集成、验证和确认。在这个过程中,如果硬件资源没有得到有效利用,或是软件没有针对硬件资源进行优化,都可能对性能造成严重影响。        CEVA-X系列DSP内核中采用的创新架构需要完全新颖的方案,以充分利用可能的设计变量来控制总体性能。CEVA-X1620是CEVA-X内核系列的第一款产品,采用非常先进的并行架构,在一个机器周期中可执行多达8条指令。对于这类先进架构,高效能及高效率地使用硬件资源非常重要。 此外,CEVA-X整合了完整的存储器子系统,负责分层存储器管理。这包括直接存储访问(DMA)控制器、板上缓存、写入缓冲器、内部及外部存储器、存储器管理及仲裁。利用这种广泛的功能集,通过完整精确的仿真环境和先进的配置能力,就可以轻松地完成软件应用的优化。 对仿真环境的要求 对基于DSP/实时的软件开发而言,仿真环境非常重要,需要具有以下几个特点。 可视性 透明性——可以监控内部硬件和硬件逻辑的工作。即使它们不是硬件接口的一部分,在实际的硬件环境中一般不可见,但是,了解它们的情况是解决问题和提高性能的关键。 调试——当缺乏精确的仿真环境时,在只提供有限可视性的硬件上运行所有进程意味着需要利用更多的资源,并会增加调试时间。因此,仿真环境应提供硬件本身不支持的额外调试功能。 灵活性——这是指在提交给最终系统架构之前检查几种不同系统布局的能力。实现最佳性能通常要设置不同的硬件环境参数,并利用软件进行反复试验。对于所选择的具体设置,需要依靠仿真环境来准确预测其对系统的影响。 时间——在能够执行所有运行时间测试之前,无需耗费太多时间和增加特殊硬件就能够实现并行硬件和软件的开发。 精确仿真和全面配置       先进的仿真和配置环境完全采用软件建模,并具有全面广泛的配置能力,能够帮助系统架构师和DSP软件工程师更好地进行应用设计。这种方法和环境显著提高了系统性能,相应减少了开发时间。全面的建模环境意味着CEVA-X1620实现方案能够以多种模式用于不同的开发阶段或不同的开发目的。 仿真        工具中最先支持的是类似于标准仿真解决方案的基本指令集仿真(ISS)模式。在这种模式中,每一条指令都作为不可分割的阶段被执行。该模式执行速度非常快,便于软件开发。        周期精确仿真(CAS)是更先进的仿真模式。在这种模式中,包括所有流水线级的架构行为被完全仿真。在进行精度检查或硬件验证时,该模式对全系统仿真非常重要,这时仿真器可以作为内核模块方便地模拟真实硬件的功能。除了周期精确能力之外,全部存储器子系统(MSS)都被建模,可对整个系统进行仿真。这样一来,由于软件与硬件的交互作用,因此能够实现真实精确的仿真。这种模式包括了所有的MSS模块,故可对所有的存储层次进行调试,包括缓存、写缓冲、内部/外部存储器。另外,它也可以通过仿真分析不同的存储器布局情况,以针对每一种布局,观察算法执行期间存储器的访问和冲突情况。 配置       除了全面完善的仿真能力之外,CEVA还提供面向C-level的应用程序及存储器的配置器。这种配置器可对整个仿真环境进行自动分析。      它能在基本的ISS模式中提供完全的C-level配置。通过查找出潜在的问题,比如应用内核、瓶颈和最耗费代码行的部分,可有效地提高软件性能。这是非常强有力的工具,能够减少关键功能的时钟数和非关键功能的代码大小。应用程序配置在C函数上被自动执行,无需修改任何代码,同时还可用于汇编程序。      然后,应用程序配置可基于CAS和MSS仿真器被执行,以根据每一个功能的存储映射和存储冲突获得它的真正应用性能。       在应用程序以CAS和MSS模式被配置及有关功能已被确定后,配置器可给出完整的存储器使用信息,其中包括缓存使用和冲突、每项功能的停滞概要、代码存储停滞、数据存储停滞、代码存储冲突及数据存储冲突的相关信息。这种全面透彻的MSS配置信息可指导用户针对应用中的每一项特定功能优化存储使用。     目前,这种建模和配置流程已经被成功地利用于实现某些算**能代码数量的精简,并已协助众多采用CEVA内核进行最终设计的芯片组获得了出色的性能。

  • 发表了主题帖: TMS320F206仿真调试中出现的问题与解决

    F206带有程序、数据和I/O三个相互独立的存储空间,每个存储空间均为64K×16位,其中片内双访问RAM为544字(288字用于数据,另256字可用于程序/数据),片内FLASH为32K字,片内单访问RAM为4.5K字。 F206的仿真调试 ● F206仿真调试的特点 F206的仿真调试器没有采用传统的插入仿真的方法,而是通过仿真器与DSP芯片上的几个仿真引脚间通信实现,F206具有符合IEEE1149.1标准的JTAG逻辑扫描电路,扫描仿真不仅克服了因仿真电缆过长而引起的信号失真,而且克服了传统单片机“插入式”仿真方式脱机运行时就出错的缺点。利用闻亭公司生产的EPP_XDS510仿真器进行系统的在线仿真调试,其一端与计算机的并口相连,另一端通过一双列14脚的仿真插头与F206通信。 ● 问题的提出 如果所要进行仿真的硬件装置没有外部存储器,此种情况下如何实现仿真呢?若将程序完全定位至8000H开始的片上SARAM内,则与F206中断向量表应该定位至0000H相矛盾,从而中断进一步程序将不可能正确运行;若将程序完全定位至0000H开始的FLASH内,虽保证了中断进一步程序可以正确运行,但是由于在FLASH内无法设置断点,所以此种情况下不能顺利进行仿真调试;若将中断向量表定位至0000H的FLASH内,将程序的其他部分定位至8000H内,可以保证中断进一步程序的正确执行,也可以在SARAM内设置断点,似乎是一种可行的方法,但是程序每改动一点,也就意味着中断向量表也要做相应的修改,即要再次将中断向量表烧写到FLASH内,不仅麻烦而且对FLASH也有损伤。 ● 问题的解决 针对以上种种方案存在的弊端,笔者提出了一种行之有效的解决办法,那就是将中断向量表和程序都定位至8000H开始的SARAM内,而在0000H烧写进一定的跳转语句,这样既保证了中断的正确执行,程序断点的调试,同时对FLASH也只要进行一次烧写即可。 首先完成跳转语句的烧写。F206的FLASH烧写必须具备如下几个前提:FLASH烧写工作只能在WIN98操作系统下完成,在WIN2000操作系统下将会显示窗口初始化失败,被强行关闭;时钟频率必须为20MHz。 相应的CMD文件为: MEMORY { PAGE 0: VECB :org= 0000h,length=40h ...... PAGE 1: ...... } SECTIONS { vectorb : {} > VECB PAGE 0 ...... } 相应的vectorb的程序为如下。 *File: vectorb.h * *File defines Interrupt vector labels * .global _c_int0 .global _c_int1 .global _c_int2 .global _c_int3 .sect "vectorb" b 8000h ;硬件复位c_int0 b 8002h ;外部中断1 /INT1 b 8004h ;外部中断2 INT2/INT3 b 8006h ;定时器中断 nop nop b 8000h b 8000h ;保留 b 8000h ;保留 b8000h ;保留 nop nop b 8000h b 8000h b 8000h b 8000h 假设烧写程序在E:\LOADEPP\目录下,则将上述工程编译并建立形成的TZ.OUT文件也复制到同样的E:\LOADEPP\目录下,然后执行如下烧写语句。 E:\LOADEPP\>PRG2XXPP -P 280 -M 0X0006 -S 0X4007 -W 6 -E SRC\C2XX_SPX.OUT TZ.OUT即可。 在跳转语句的烧写完成后,即可将中断向量表和程序都定位至8000H开始的SARAM内,这样在SARAM内既可很方便设置断点,同时已经烧写进FLASH的跳转语句又能保证中断的正确执行,且每次对程序修改后无需再次对FLASH烧写,只要重新生成.OUT文件,然后执行CCS的FILE菜单下的LOAD PROGRAM即可。 相应的CMD文件如下。 MEMORY { PAGE 0: VEC :org=8000h,length=40h PROG :org=8050h,length=0600h PAGE 1: RAM_B2 :org=60h,length=20h RAM_B0 :org=0200h,length=0100h RAM_B1 :org=0300h,length=0100h DATAS :org=11ffh,length=0600h } SECTIONS { .data : {} > RAM_B0 PAGE 1 .stack: {}> DATAS PAGE 1 .bss : {}>DATAS PAGE 1 /******************************************/ vectors : {} > VEC PAGE 0 .text : load > PROG, PAGE 0 .mirro : {} > PROG PAGE 0 .cinit : {} > PROG PAGE 0 } 相应的vectors中断向量表的程序如下。 * File: vector.h * * File defines Interrupt vector labels * .global _c_int0 .global _c_int1 .global _c_int2 .global _c_int3 .sect "vectors" b _c_int0 ;硬件复位c_int0 b _c_int1 ;外部中断1 /INT1 b _c_int2 ;外部中断2 INT2/INT3 b _c_int3 ;定时器中断 nop nop b _c_int0 b _c_int0 ;保留 b _c_int0 ;保留 b _c_int0 ;保留 nop nop b _c_int0 b _c_int0 b _c_int0 b _c_int0 针对具有片内FLASH的DSP芯片TMS320F206,在没有片外RAM的情况下如何方便有效的进行仿真调试

  • 发表了主题帖: msp430的编程器和仿真器

          对于MSP430来说,无论仿真还是烧写程序一般可以通过:JTAG、SBW、BSL接口进行。JTAG、SBW接口可以用于仿真接口,BSL接口不能用于仿真。而编程器则三种接口都支持。所以并不能说JTAG只支持仿真不支持编程,这是概念错误,JTAG仅仅是一种接口协议而已。 下面简单描述一下三种接口的区别:        1、JTAG是边界扫描技术,其在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430的内部数据地址总线上,所以可以用JTAG访问430内部的所有资源,包括对FLASH的读写操作。所以可以用于对MSP430的仿真及编程。主要连接线有TMS、TCK、TDI、TDO、RST、TEST。        2、SBW是SPY-BI-WIRE,可以简称两线制JTAG,主要用SBWTCK(连接到JTAG仿真器的7脚TCK)与SBWTDIO(连接到JTAG仿真器的1脚TDO/TDI),该接口主要用于小于28脚的2系列的430单片机,因为28脚以内的2系列单片机的JTAG接口一般与IO口复用,为了给用户预留更多的IO口,才推出了SBW接口。同样SBW接口可以用于仿真器及编程器。        3、 BSL是TI在对MSP430出厂时预先固化到MCU内部的一段代码,有点类似于DSP的bootloader,但又与bootloader有明显的区别,BSL只能用于对MCU内部的FLASH访问,不能对其他的资源访问,所以只能用作编程器接口。BSL通过UART协议与编程器连接通信。编程器可以发送不同的通信命令来对MCU的存储器做不同的操作。BSL的启动有些特殊,一般430复位启动时PC指针指向FFFE复位向量,但可以通过特殊的启动方式可以使MCU在启动是让PC指向BSL内部固化的程序。启动方式一般是由RST引脚与TEST(或TCK)引脚做一个稍复杂的启动逻辑后产生。BSL启动后,就可以对MCU进行访问了。         一般的MCU都有代码加密功能,430是如何实现的呢?外部对430内部的代码读写只能通过上述的三种方式,所以又引入了熔丝位,熔丝位只存在于JTAG、SBW接口逻辑内。BSL内部没有熔丝。当熔丝烧断时(物理破坏,且不可恢复)JTAG与SBW的访问将被禁止,此时只有BSL可以访问。而通过BSL对MCU的访问是需要32个字节的密码,该密码就是用户代码的中断向量表。所以430的加密系统到目前为止尚无被解密的报告。       仿真器的型号一般有UIF(USB接口,支持JTAG、SBW)、PIF(并口,只支持JTAG)、EZ430(USB接口的,只支持SBW模式),专业编程器有GANG430(串口、一拖8个,支持JTAG、SBW,不支持BSL);多功能编程器(JTAG、SBW、BSL)。这些编程器都可以做离线烧写,即脱离计算机来对目标板烧写。也可以用仿真器配专业的软件来做编程器,这类软件有MSPFET、FET-PRO430等。

    1. 【资料分享】 ARM公司在物联网领域的战略布局 0/0 【微控制器 MCU】 2019-01-10
    2. 【资料分享】 linux shell脚本快速提升的秘诀 0/0 【微控制器 MCU】 2019-01-10
    3. 【资料分享】 linux系统lvm中lv使用空间的调整 0/0 【微控制器 MCU】 2019-01-10
    4. 【资料分享】  熟悉的开发工具支持SoC FPGA 0/0 【微控制器 MCU】 2019-01-10
    5. 【资料分享】 牛人的FPGA设计经验分享 0/0 【微控制器 MCU】 2019-01-10
    6. 【资料分享】 DSP与其它处理器的差别 0/0 【微控制器 MCU】 2019-01-10
    7. 【资料分享】 高速DSP系统PCB板的可靠性设计 0/0 【微控制器 MCU】 2019-01-10
    8. 【资料分享】 使用C / C ++的MSP430的GPIO编程和示例代码 0/0 【微控制器 MCU】 2019-01-10
    9. 【资料分享】 0.9V MSP430L092 MCU 使单电池供电的产品更轻巧更绿色 0/0 【微控制器 MCU】 2019-01-10
    10. 【资料分享】 MSP432P401R MCU 14位ADC的几个主要性能特性 0/0 【微控制器 MCU】 2019-01-10
    11. 【资料分享】 MSPBoot的代码移植流程 0/0 【微控制器 MCU】 2019-01-10
    12. 【资料分享】 MSP430 Main Memory Bootloader 介绍 0/0 【微控制器 MCU】 2019-01-10
    13. 【资料分享】 反射以及如何在高速系统处理反射 1/99 【微控制器 MCU】 2019-01-09
    14. 【经验】 空气质量检测器和烟雾探测器的新技术 1/106 【微控制器 MCU】 2019-01-09
    15. 【资料分享】 模拟部件与msp 432 0/0 【微控制器 MCU】 2019-01-09
    16. 【资料分享】 TMS320DM642在移动平台ATP技术中的应用 0/0 【微控制器 MCU】 2019-01-09
    17. 【经验】 基于DSP_C54X窄带中频抽样的理论与实现 1/83 【微控制器 MCU】 2019-01-09
    18. 【资料分享】 关于DSP系统的建模和配置问题 0/0 【微控制器 MCU】 2019-01-09
    19. 【资料分享】 TMS320F206仿真调试中出现的问题与解决 0/0 【微控制器 MCU】 2019-01-09
    20. 【资料分享】 msp430的编程器和仿真器 0/0 【微控制器 MCU】 2019-01-09
    1. 教学视频不播放 , 介绍Value Line系列 5/633 【微控制器 MCU】 2018-11-30
      十有八九是网络速度问题
    2. 5728裸机跑代码,执行memcoy时系统跑飞 5/490 【DSP 与 ARM 处理器】 2018-11-30
      第二个分配临时存储空间给当前运行的程序块,临时变量使用的就是这些临时的存储空间,在程序块运行结束后,这些临时存储空间就被CPU收回了
    3. 建议把固件重新烧一下。
    4. 二阶滤波器,定点运算如何保证数据不会溢出? 3/740 【微控制器 MCU】 2018-11-30
      为防止数据溢出,对输入数据进行限定,保证运算不会出现越界的可能
    5. IAR 编译生成的bin文件大小问题 7/861 【微控制器 MCU】 2018-11-30
      BasaraTama 发表于 2018-11-10 17:33 用ultraedit或vim以二进制格式打开bin文件,观察是否有大量连续的0存在,如果有请核对链接脚本是否描述正确
      谢谢指导
    6. 求Generic Bulk Device驱动 8/3911 【微控制器 MCU】 2018-11-30
      驱动没有装怎么能连接对
    7. dsp2812使用C2Prog下载出现问题 6/487 【微控制器 MCU】 2018-11-30
      按照步骤来,也是连接不上 这很奇怪,再检查一下设置
    8. 求解 MSP430 IFG1 &= ~OFIFG (清除振荡器失效标志) 2/585 【微控制器 MCU】 2018-10-21
      lcofjp 发表于 2018-10-21 19:25 IFG1是一个寄存器,应该是一个16位的寄存器,可以理解为一个16位的系统定义变量。 OFIFG也是一个整数,不 ...
      感谢回复,谢谢
    9. MSP430单片机ADC的功耗隐藏任务和LCD外接电阻问题 1/318 【微控制器 MCU】 2018-02-21
      LCD外接电阻问题 看到这里,很多人可能都会觉得我有点吹毛求疵,不见得大家都不明白,即便这个问题也一样,说来话长估计大家都明白。那我就长话短说。很多人使用lcd的时候都喜欢在R33、R23、R13、R03之间接上大电阻,貌似为了符合用户手册上的指示,其实只是为了求心安的一个表现罢了,实际上会有多少人会把REXT置一呢?因为REXT置一才是使用外部电阻啊!!!我看过很多人的程序,没有看到啊,包括代理发给我的程序。我很负责的告诉你,你TMD就是犯贱,知道在这里加上3、4个外部电阻给你的PCB布线带来多大的烦恼么?这就是坑爹的安排!因为REXT置一之后液晶会显示不正常,这个是要调的!所以当你对于液晶对比度的调节要求要求不高的时候(Rx可以调节液晶对比度),直接将外面的电阻舍去,使用内部电阻,方便布线。
    10. ST BLUEMS APK Android最新版本V3.5.1 3/1208 ST传感器与低功耗无线技术论坛 2017-08-04
      哇  不错不错
    11. 无线充电会不会被苹果带起来呢
    12. 想在MSP430G2553在CCS6环境下想看寄存器值,有错 2/1608 【微控制器 MCU】 2017-02-20
      lcofjp 发表于 2017-2-20 02:56 楼主,如果这个账号是你一直在使用的话,你干这行也有十来年了,怎么还会一直发这些低级的求助帖?从你的发 ...
      人有三迷
    13. 这是什么原因?IAR 5.5 仿真出错 6/1357 【微控制器 MCU】 2017-01-25
      数码小叶 发表于 2017-1-24 11:44 仿真的啥芯片都不说
      msp430f169
    14. MSP430F5 ADC12采样问题 3/1337 【微控制器 MCU】 2017-01-25
      ienglgge 发表于 2017-1-24 19:45 每次采样的结果波动比较大,有多大。把一串连续的采样结果发出来, 用示波器采集同一时段的波形。比较一下。
      好的,,谢谢
    15. 请教MSP430F149的I2C通信问题 2/1351 【微控制器 MCU】 2017-01-25
      qwerghf 发表于 2017-1-25 14:53 这个程序可以参考一下
      谢谢提供的资料,看看
    16. 请教msp430电平转换问题 3/1033 【微控制器 MCU】 2017-01-22
      qwerghf 发表于 2017-1-17 22:53 TLC2543的AD也是12位,没有必要使用,如果想使用,推荐MCP3421,精度高而且支持差分电压测量
      太感谢了,明白了
    17. dcexpert 发表于 2017-1-17 08:43 电池容量/平均功耗,就可以计算出工作时间了。
      谢谢回答
    18. 问一个msp430f5529开发板的使用问题 3/1084 【微控制器 MCU】 2017-01-17
      ienglgge 发表于 2017-1-16 22:04 保证自己的ldc1000和他原来的和单片机的连接顺序一样,ldc1000的外围电路一致。应该就可以。原来的图正确的 ...
      好的,谢谢
    19. Aribo 发表于 2017-1-17 14:27 这个是1ua以下的待机,串口唤醒消耗很低,普通纽扣电池有200mah容量,剩下的就是你唤醒的频率了。不怎么唤 ...
      好的,明白了
    20. 问个msp430芯片各个模式之间切换的问题 2/870 【微控制器 MCU】 2017-01-16
      liang118038 发表于 2017-1-15 21:16 CPU休眠或停机了肯定无法就这样执行模式切换了,要利用些外中断之类进行触发进入另一种模式才是正确的做法 ...
      谢谢
  • TA暂时无记录哦~
    1. C深度剖析——嵌入式系统高级C语言编程

      标签:C语言 编程 嵌入式系统

      本课程将嵌入式系统中经常用到的C编程技巧与概念介绍给大家。C的灵活性以及由此而产生的陷阱非常非常多。敬请期待。

      下载次数 4次 资源类型 应用文档 上传时间 2013-05-20

    2. 郭天祥的十天学会51单片机

      标签:单片机

      十天学会51单片机(郭天祥)全部课件及作业 资料格式: rar 作者/开发商: 资料大小: 13.47 MB 资料语言: 简体中文...什么是单片机、单片机能做什么、怎么开始学习单片机。学单片机需要的一些预备知识C51基础知识。了解TX-1C单片机学习板

      下载次数 6次 资源类型 应用文档 上传时间 2013-05-02

    3. 51单片机应用开发范例大全(第2)

      标签:单片机

      《51单片机应用开发范例大全(第2版)》通过实例全面讲解单片机开发中的各种技术,包括单片机接口的扩展、存储器的扩展、输入/输出及显示技术、实用电子制作、传感控制技术、智能仪表与测试技术、电气传动及控制技术、单片机数据处理、单片机通信技术、单片机实现信号与算法、单片机的总线与网络技术、典型元器件及应用技术等内容,最后通过智能手机充电器设计、单片机控制门禁系统设计、电机保护器的设计3个综合实例,具体演示应用多种技术开发单片机系统的思路和方法。

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    4. 单片机语言C51应用实战集锦(电子书)

      标签:单片机

      简介: 使用C语言开发速度快,代码可重复使用,程序结构清晰、易懂、易维护,易开发一些比较大型的项目。目前,许多编译器都已经支持了C51,而且是Windows视窗界面。keilc51是目前单片机开发最为流行的软件。 本书收集并整理了许多实用的采用C51单片机开发的程序,这些程序既可以给读者以开拓思路,参考的用途,又是实际的开发程序,可以直接作为程序应用在相同的开发系统上。通过本书的学习,读者可以进一步了解和掌握C51编程的思路和方法。 本书适用于从事单片机项目开发与应用的工程技术人员阅读。

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    5. 《51单片机C源程序汇总》

      标签:单片机

      51单片机设计离不开C语言编程,《51单片机C源程序汇总》向你提供各种单片机源程序,从简单到复杂,从单一到综合,逐渐提高你得单片机C语言编程,提升你得单片机设计综合能力!

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    6. proteus中基于51单片机的数字电压表的仿真

      标签:单片机

      第四章 实验及实践课题(28) 数字电压表

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    7. 基于89C51单片机程序实例

      标签:单片机

      01-LedTest -- 实现LED按照一定频率闪烁。主要用来测试LED工作是否正常。P10要接通。 02-CrossLed -- 实现花灯显示。主要学习对软件延时的使用。P10要接通。 03-FlowRight -- 实现流水灯,方向是从左向右。主要学习在C语言里如何实现准确的位操作。P10要接通。 04-FlowLeft -- 实现流水灯,方向是从右向左。主要学习在C语言里如何实现准确的位操作。P10要接通。 05-button -- 独立按键测试,实现按哪个按键然后使用对应LED显示。实现按键的检测和LED的控制。拨码开关要打到OFF位置。 06-boma -- 用LED显示拨码状态。不可以按按键。 07-Relay -- 继电器测试程序,并有LED指示同时伴有蜂鸣器的声音。P8纵向连接上面2个。 08-music -- 用C语言演奏生日快乐歌,使用软件定时。使用软件定时演奏生日快乐歌。P8纵向连接上面2个。 09-musicasm -- 用汇编语言演奏一首民歌,使用硬件定时。主要学习51定时器汇编语言编写中断功能,和如何编写中断服务程序。P8纵向连接上面2个。 10-music2 -- 用C语言中断演奏。主要学习在C语言中定义51内部定时器中断服务程序。P8纵向连接上面2个。 11-disp1234 -- 采用软件延时在数码管上显示1234ABCD。这是比较普遍的数码管显示。P14接通 12-disp1234int -- 采用硬件延时在数码管上显示1234ABCD。利用中断可以节约资源,这个程序比10更好。P14接通 13-adddec -- 使用两个按键S22,S23控制数码管上显示的数加减,具有去抖动功能。主要讲如何进行数码管动态显示并且怎样对键盘去抖动。P14接通。 14-time -- 15-alarm -- 综合实验,实现倒计时结束时使用蜂鸣器报警,编程技巧的组合。P8纵向连接上面2个。 16-uart -- UART发送和接收,实现从PC发送到单片机任何字母和数字,单片机立即向PC发送同样的字母数字可以由超级终端或者串口调试助手调试。 17-uartint -- UART接收采用不占用资源的中断接收,其余同16。推荐使用串口中断方式,使用查询方式太占用资源。 18-18b20 -- 使用温度传感器18B20测温度,并用数码管显示。P14接通。 19-1602 -- 使用LCD1602显示字符。LCD1602接到P4,方向和板子方向相反。 20-24c08 -- 对24c08进行写读操作。并把写进和读到的数用LED显示。P8纵向连接下面2个。 21-matrix -- 调试矩阵键盘,对应LED亮。注意,本程序执行需要把拨码开关打到OFF状态,程序只有矩阵键盘前两行显示,后两行请自行添加代码。 22-DS1302 -- 使用DS1302时钟芯片对预制的时间进行计时。P9横向连接左边两个。 23-chibang -- 演奏《飞舞翅膀的女孩》等音乐的综合程序。 24-wannianli -- 综合程序,用DS1302,LCD1602,温度传感器等板上设备做一个万年历。LCD1602要正确连接,P9横向连接左边两个。使能DS1302。独立按键从左到右功能为,选择设置/加/减/确定,由于去抖动功能和LCD响应时间问题,所以要按时间稍微长一点。 25-demo -- 使用RS-232实现PC与51之间通信,详细操作方法请见相关教程。 26-remote -- 红外功能测试程序,使用普通遥控器和红外接收头协同工作,用板上LED显示接收状态,LED_EN跳线必须接通,否则观察不到LED状态。 27-1602-scroll -- LCD1602动态字幕显示,方便用户理解1602的用户指令集。有时程序不正常,则为LCD1602的RAM没有清空所致,必须给板子重新上电,并按一次复位键。 28-12864 -- LCD12864显示程序。AT89S5x系列单片机需要摘掉LCD下载程序,下载完毕后插上LCD,并按复位键才可以正常显示,带着LCD下载程序会失败。STC单片机则无此问题。 29-12864-pic -- LCD12864的汉字,图形,半屏,反白及动态显示测试程序。注意事项同28。 30-adc0832 -- 扩展ADC0832调试程序,具体扩展口请见程序内说明。

      下载次数 12次 资源类型 应用文档 上传时间 2013-05-02

    8. Virtual51单片机模拟器SDK

      标签:单片机

      由于Virtual51模拟器并没有提供任何操作库函数,因此使许多打算学习MCS-51系列单片机的用户对其望而却步!的确,如果仅仅利用模拟器给出的一些寄存器操作功能说明,对于新手是很难掌握的,即使是精通51系列单片机的各位高手,对于LCD液晶显示操作仍然相当麻烦!故而,笔者特编写此模拟器的用户接口API库函数:Virtual51API.h,在方便诸位使用之余,对于笔者加深对MCS-51系列单片机的认识也有一定的帮助!

      下载次数 4次 资源类型 应用文档 上传时间 2013-05-02

    9. 51单片机C编程100例

      标签:单片机

      说明:本文件夹一共提供各类编程实例200多个,由于编者水平有限,所以程序可能有BUG,希望谅解! 全部通过实际试验,正常运行!可以根据程序中的说明,调用各个部分的资源,自行试验。

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    10. 增强型80C51单片机速成与实战

      标签:单片机

      单片机应用技术是一门实战性很强的学科,结合理论和实践,一边学一边干是最好和最快捷的学习方法。本书从介绍最基础的单片机程序开始,设计了一套以基础知识为主且又能兼顾新的知识点的基于Keil C51的单片机仿真实验议,精心安排了每一个实验范例,并且以汇编和Keil C51为基础编写了相应的程序,可以帮助新手快速上路,同时也能够帮助有经验的工程师及时更新技术以跟上当前的热点。本书实战性强的特点决定了它的读者群,它适合于电子大赛的赛前训练以及大专以上学生的实验,也可培养研究生的动手能力,还适用于渴望快速学习和掌握单片机应用技术的所有人员。

      下载次数 1次 资源类型 应用文档 上传时间 2013-05-02

    11. MCS-51单片机温度控制系统

      标签:单片机

      引言 在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。本文以它为例进行介绍,希望能收到举一反三和触类旁通的效果。

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    12. 51单片机常用模块设计查询手册

      标签:单片机

      《51单片机常用模块设计查询手册》主要介绍了51单片机系统中常用模块的具体运用,这些模块包括:电源模块、输入输出及显示模块、各类存储模块(并行及串行)、数据传输接口模块、网络通信模块、AD/DA模块、语音处理模块、信号发生模块、电机模块、打印机模块、传感器模块等。

      下载次数 6次 资源类型 应用文档 上传时间 2013-05-02

    13. 51单片机教程

      标签:单片机

      51单片机教程51单片机教程

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    14. 51单片机控制GSM模块TC35的方法

      标签:单片机

      51单片机控制GSM模块TC35的方法

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    15. 51单片机应用程序开发与应用实践

      标签:单片机

      51单片机应用程序开发与应用实践

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    16. MCS51单片机应用设计

      标签:单片机

      MCS51单片机应用设计

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    17. MCS-51单片机应用设计.part1

      标签:单片机

      MCS-51单片机应用设计.part1

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    18. uip 操作可通过51 单片机实现tcp/ip

      标签:单片机

      uip 操作可通过51 单片机实现tcp/ip

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    19. Proteus制作郭天翔《十天学会51单片机》的学习板

      标签:单片机

      Proteus制作郭天翔《十天学会51单片机》的学习板

      下载次数 3次 资源类型 应用文档 上传时间 2013-05-02

    20. C语言常用算法集(人手一份)11

      标签:C语言

      C语言常用算法集合,人手一份 ,供大家参考

      下载次数 0次 资源类型 应用文档 上传时间 2013-01-22

  • TA暂时无记录哦~
TA暂时无记录哦~

统计信息

已有1154人来访过

  • 芯币:8240
  • 好友:--
  • 主题:1919
  • 回复:695
  • 课时:--
  • 资源:21

留言

你需要登录后才可以留言 登录 | 注册


博浩元电子 2018-10-25
不错,干货
查看全部