tag 标签: 软件设计

相关博文
  • 热度 18
    2013-7-18 16:56
    1114 次阅读|
    1 个评论
     随着嵌入式行业的飞速发展,集成电路越来越向着高集成,低成本方向发展。ARM来势汹汹,几年的时间,凭借着强大的资源,灵活的开发环境以及越来越低的价格逐渐侵蚀着传统8/16/32位单片机市场。与此同时,FPGA的成本也大大降低,从原来的高高在上,遥不可及逐渐步入了大众视野。而且凭借其高集成,高性能,低功耗,以及开放的开发环境稳稳地与ARM分割嵌入式的天下。     说到FPGA,相信很多朋友并不是很熟悉。对于我们这些习惯使用软件描述语言在单片机上工作的人来说,这种工作在硬件语言描述语言的底层器件,就显得有些困难艰涩。     FPGA取自 F ield  P rogrammable  G ate  A rray的首个字母,代表现场(Field)可编程(Programmable)逻辑阵列(Gate Array)。从字面上我们不难看出,FPGA其实就是无数个门电路的集合,但是与我们传统逻辑器件不同的是,FPGA支持用户对门电路的重新编译。     打一个比方来说:如果说我们用单片机编程,像是用固定模型的积木,去设计产品。那么FPGA就是我们从‘0’开始,先要把我们需要的积木自定义建模生产好,再拿来组建产品。     这就意味着很多协议及功能,在FPGA里都需要我们工程师自己去独立的实现。对于PC平台用户来说TCP/IP协议,已经不是什么‘菜’了。 对于单片机平台用户来说,‘瘦身’TCP/IP也已经司空见惯了,但是对于FPGA用户来说,重新搭建一个TCP/IP协议无疑还是让人头痛的。     而WIZnet的硬件TCP/IP协议栈,专为FPGA用户提供了一种最为高效快捷的以太网拓展方案。FPGA用户直接配置硬件TCP/IP协议栈芯片特殊寄存器,然后使用总线往里面的RAM丢数即可。操作外部RAM这个对于FPGA工程师可是最简单,也是最拿手的了。     当然,好马配好鞍,对于FPGA用户,我们推荐使用W5300这款高速以太网芯片,内部配有128K RAM,支持8/16 bit BUS通讯及DMA,实际吞吐量可达80Mbps。 硬件连接     W5300具有8位数据线和16位数据线两种通讯方式,通常为达到更高的通讯速率,我们选择16位数据线来进行通讯。此时地址A0可不连,使用A1到A9作为地址线。   软件设计 建立W5300工程,如下:       首先进行寄存器读写部分编写,w5300timing文件实现W5300寄存器读写时序控制,根据W5300的读写时序要求及FPGA时钟周期对寄存器读写时数据写入,读出及延时情况进行控制; 其次对W5300进行初始化,w5300_init文件完成W5300初始化流程,调用此模块会对W5300进行软复位,MAC地址、IP地址、网关、子网掩码、缓存区等进行配置;     对W5300初始化完成后便可以连接电脑进行PING操作看配置是否正确,后面几个文件可以根据手册及自己需要进行编写了。     如客户需要FPGA软件参考,可以联系WIZnet BJ office,或者代理商。   感谢阅读! 文章提供:北京博控自动化技术有限公司 编辑:Jerry 更多信息与我们交流: WIZnet邮箱:wiznetbj@wiznet.co.kr WIZnet中文主页:http://www.iwiznet.cn WIZnet企业微博:http://e.weibo.com/wiznet2012
  • 热度 18
    2013-7-18 16:53
    1045 次阅读|
    0 个评论
    随着嵌入式行业的飞速发展,集成电路越来越向着高集成,低成本方向发展。ARM来势汹汹,几年的时间,凭借着强大的资源,灵活的开发环境以及越来越低的价格逐渐侵蚀着传统8/16/32位单片机市场。与此同时,FPGA的成本也大大降低,从原来的高高在上,遥不可及逐渐步入了大众视野。而且凭借其高集成,高性能,低功耗,以及开放的开发环境稳稳地与ARM分割嵌入式的天下。     说到FPGA,相信很多朋友并不是很熟悉。对于我们这些习惯使用软件描述语言在单片机上工作的人来说,这种工作在硬件语言描述语言的底层器件,就显得有些困难艰涩。     FPGA取自 F ield  P rogrammable  G ate  A rray的首个字母,代表现场(Field)可编程(Programmable)逻辑阵列(Gate Array)。从字面上我们不难看出,FPGA其实就是无数个门电路的集合,但是与我们传统逻辑器件不同的是,FPGA支持用户对门电路的重新编译。     打一个比方来说:如果说我们用单片机编程,像是用固定模型的积木,去设计产品。那么FPGA就是我们从‘0’开始,先要把我们需要的积木自定义建模生产好,再拿来组建产品。     这就意味着很多协议及功能,在FPGA里都需要我们工程师自己去独立的实现。对于PC平台用户来说TCP/IP协议,已经不是什么‘菜’了。 对于单片机平台用户来说,‘瘦身’TCP/IP也已经司空见惯了,但是对于FPGA用户来说,重新搭建一个TCP/IP协议无疑还是让人头痛的。     而WIZnet的硬件TCP/IP协议栈,专为FPGA用户提供了一种最为高效快捷的以太网拓展方案。FPGA用户直接配置硬件TCP/IP协议栈芯片特殊寄存器,然后使用总线往里面的RAM丢数即可。操作外部RAM这个对于FPGA工程师可是最简单,也是最拿手的了。     当然,好马配好鞍,对于FPGA用户,我们推荐使用W5300这款高速以太网芯片,内部配有128K RAM,支持8/16 bit BUS通讯及DMA,实际吞吐量可达80Mbps。 硬件连接     W5300具有8位数据线和16位数据线两种通讯方式,通常为达到更高的通讯速率,我们选择16位数据线来进行通讯。此时地址A0可不连,使用A1到A9作为地址线。   软件设计 建立W5300工程,如下:       首先进行寄存器读写部分编写,w5300timing文件实现W5300寄存器读写时序控制,根据W5300的读写时序要求及FPGA时钟周期对寄存器读写时数据写入,读出及延时情况进行控制; 其次对W5300进行初始化,w5300_init文件完成W5300初始化流程,调用此模块会对W5300进行软复位,MAC地址、IP地址、网关、子网掩码、缓存区等进行配置;     对W5300初始化完成后便可以连接电脑进行PING操作看配置是否正确,后面几个文件可以根据手册及自己需要进行编写了。     如客户需要FPGA软件参考,可以联系WIZnet BJ office,或者代理商。   感谢阅读! 文章提供: 北京博控自动化技术有限公司 编辑:Jerry 更多信息与我们交流: WIZnet邮箱: wiznetbj@wiznet.co.kr WIZnet中文主页: http://www.iwiznet.cn WIZnet企业微博: http://e.weibo.com/wiznet2012
  • 热度 21
    2013-7-17 15:28
    1047 次阅读|
    0 个评论
        随着互联网的日益普及、信息共享程度的要求不断提高,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设别在逐步走向网络化,以便利用庞大的网络资源,实现分布式远程监控、信息交换与共享。物联网的发展更是为网络技术的应用起到了巨大的推动作用。     利用以太网实现远程控制系统,通过互联网共享以单片机应用系统为核心的小型嵌入式信息采集系统的信息,是物联网应用的关键内容。     单片机网络化应用系统的基本设计原则是:可靠性高、性能价格比高、操作简便以及设计周期短。     在进行物联网智能网关应用系统方案设计时,可以采用下述一般设计方法作为指导。 1. 确定系统功能与性能     由需求调查确定物联网智能网关应用系统的设计目标,这一目标包括系统功能与性能。系统功能主要由数据采集、数据处理、输出控制等。 2. 确定系统基本结构     物联网智能网关应用系统结构一般是以单片机为核心外部扩展相关电路的形式。确定了系统中的单片机、存储器分配以及输入/输出方式就可答题确定出物联网智能网关应用系统的基本组成。 ⑴单片机     在系统详细方案设计时,先要确定单片机的型号。所选单片机的型号不同,组成的系统结构也就不同。 ⑵存储器分配     不同的单片机具有不同的存储器组织。应根据应用系统的需要合理进行存储器的分配。 ⑶I/O方式     采用不同的输入/输出方式,对于单片机应用系统的软、硬件结构有直接的影响。在单片机应用系统中,常用的I/O方式主要有:无条件传送方式(同步传送方式)、查询方式、中断方式。 ⑷网络控制器     性能稳定,结构简单,编程易实现的网络控制器对于优化物联网智能网关应用系统起着关键性的作用。 物联网智能网关应用系统的工作模式可以分为两类,服务器端和客户端。无论工作于何种模式,都需要对以太网控制器进行网络参数配置,以实现最基本的物理连接(即能够ping通)。 3. 硬件设计     物联网智能网关应用系统硬件设计是围绕着单片机及网络控制器做外部功能扩展而展开的,其基本结构如图所示。   ⑵ 数据存储器     数据存储器用于暂时保存程序运行中的中间结果,一般由RAM 构成。大多数单片机都提供了小容量的片内数据存储器,只有当片内数据存储器不够用时才扩展外部数据存储器。无论是程序存储器还是数据存储器,存储器的设计原则是:在存储容量能够满足要求的前提下,尽可能减少存储芯片的数量。 ⑶ I/O接口     由于外设多种多样,使得单片机与外设之间的接口电路也各种不相同。因此,I/O接口常常是单片机应用系统中设计最复杂也是最困难的部分之一。 ⑷ 译码电路     当需要外部扩展电路时,常常需要设计译码电路。译码电路要尽可能简单,要求存储器空间分配合理,译码方式选择得当。 ⑸ 总线驱动器     如果单片机外部扩展的器件较多,负载过重,就要考虑设计总线驱动器。 ⑹ 抗干扰电路     针对可能出现的各种干扰,应考虑抗干扰电路的设计。在单片机应用系统中,一个不可缺少的抗干扰电路就是抗电源干扰电路。最简单的实现方法是在系统弱电部分(以单片机为核心)的电源入口处对地跨接1个100uf 左右的电容和1个0.1uf左右的电容,在系统内部各芯片的电源端对地跨接1个0.01~0.1uf的小电容。 4. 软件设计     软件是物联网智能网关应用系统中的一个重要组成部分,一般计算机应用系统的软件包括系统软件和用户软件,而物联网智能网关应用系统中的软件一般只有用户软件,即应用系统软件。软件设计的关键是确定软件应完成的任务及选择相应的软件结构。 ⑴任务确定     根据系统软、硬件的功能分工,确定出软件应完成什么功能。作为实现控制功能的软件应明确控制对象、控制信号及控制时序;作为实现处理功能的软件应明确输入是什么、要做什么样的处理(即处理算法)、产生何种输出。 ⑵ 软件结构     软件结构与程序设计技术密切相关。程序设计技术提供了程序设计的基本方法,最常用的程序设计方法是模块化程序设计。模块化程序设计具有结构清晰、功能明确、设计简便、程序模块可共享、便于功能扩展及便于程序维护等特点。为了编制模块程序,先要将软件功能划分为若干子功能模块,然后确定出各模块的输入、输出及相互间的联系。   节选自《物联网智能网关设计与应用》   感谢关注! 更多信息与我们交流:wiznetbj@wiznet.co.kr WIZnet中文主页: http://www.iwiznet.cn WIZnet企业微博:http://e.weibo.com/wiznet2012
  • 热度 18
    2012-11-27 17:24
    1016 次阅读|
    0 个评论
      你不能看到一个程序员还不错,就把他推到系统分析师、软件设计师或软件架构师的位置上。 如果你在团队或公司里寻找一个能胜任软件架构师或设计师这样重要位置的人时,首先出现在脑子里的想法通常是在程序员中选一个最好的。别这么干。这样的位置不是随意的找个不错的程序员就能胜任的。把你最资深的程序员晋升到这个位置也未必就合适。 乍一听你可能感觉荒诞。为什么我不能让一个程序员去做系统设计呢?毕竟,他们是设计 程序 的,不是吗?的确是的,没错。但你要明白的事情是, 设计 软件相对于编写程序,它需要的是一套完全不同的技能。 让我们来看看为什么一个好的程序员就未必可以做一个好的软件设计师。但首先,让我们来问问自己一个问题,是什么让一个程序员变的优秀,甚至杰出?要想成为一个好的程序员,你需要有能力实现真实世界里重要的软件。只能够写出一个简单的文本编辑器是远远不够的。 为了能做到可以解决重大的、复杂的编程问题,一个程序员需要在某个特点的编程语言上进行数年的经验积累。也就是说,为了能熟练的使用这种语言、熟悉这种语言的各种特色,他必须专注于这种语言。问题就在这儿。 对于只有锤子的人,他能解决的问题就是钉钉子 如果你专注于一种语言,并能做到精通掌握,那你遇到的问题模式很可能就限制于跟这种语言相关的领域。简言之,如果你懂PHP,那所有的问题都基本上是跟Web开发相关。相同的道理,如果你全部的知识都集中的Java上,那你对所有问题的解决思路都会沿着面向对象的方向,即使是使用过程式编程对于解决你的问题会更优的情况下,你也会如此。 一个程序员,只懂得一、两种编程语言,这会严重的限制他的解决问题的能力。例如,如果你的编程语言是C语言,对于手头出现的问题,你绝对不可能想出一种面向对象的解决思路,因为你的编程语言不提供这样的语言特征。跟Haskell程序员不一样,C++程序员不可能想出函数式解决方案。你的编程语言里提供了结构体和枚举类型与否,会严重的影响你剖析一个问题的方式。如果你使用的语言的能力很弱,或你只知道少数几种语言,你解决问题的能力相应的会被削弱。 语言塑造了我们的思维方式 有人说,我们的语言塑造了我们的思考和认知这个世界的方式。我基本上认同这个观点。当一个人的母语里的名词都有性别之分时,他一定不会同说其它种母语的人那样一提起“警察”这个词就基本上认为是男的。当一个人的母语里对蓝色和绿色不区分时,他对世界的感知会和那些有区分的人的感知大不一样。 如果我们回首中世纪学校的三学科,它们被描述为: 语法 解决概念和对象如何在书写和话语中被表现,用 逻辑 对它们进行分析,最终以 修辞 为目的同他人交流。对于我们来说,编程语言也有语法。如果我们的编程语言不够强,我们对事物和概念的认识以及对如何表达它们都不会有完整的视野。 语言,我们用来跟人们、跟计算机交流的功能,明显的影响着我们的思考方式。我们对语言知道的越丰富、越多,越能帮助我们提高解决问题的能力。 那么,什么样的人更合适? 那么,一个在某一两种编程语言里具有专长的程序员,在当他解决一个问题时,会存在一定的局限。他会局限于他使用的语言允许他做的事。因此,他不会成为一个好的软件设计师或分析师。 如果我们不用这些优秀的程序员,谁又能担当软件设计的任务呢?当然不会是那些完全不懂编程的人了。我们需要的是一种通才。一个优秀的软件设计者必须通晓过程式,面向对象式,函数式,以及逻辑式编程语言—还包括各种优秀的软件开发方法论。他不能只熟悉一种方法模式、像一个专业领域人员那样。当然,他自己并不能写出复杂的程序,因为他的知识太宽泛。尽管如此,他却能正确的判断出怎么样的设计才是一个正确的解决方案。如果问题是处理一个钉子,他会找来一个熟练使用锤子的人;如果问题是处理一个巨石,他会叫来爆破部队,而不是让你徒劳的用锤子白费力气。   文/外刊IT评论网
  • 热度 23
    2011-1-11 13:51
    3439 次阅读|
    9 个评论
    “起码基本的要懂...” 是的,就跟武术一样,各门各派,拳法,腿法海了去了,你来一个什么招,我要用什么招来破.解。有这会功夫,别人的拳早过来啦,武术说到底,还是力量+速度,再结合适当的技巧;对于电路设计来说,各种参考设计,经典电路,经验电路都是如此,不深入了解电磁理论、电路理论,不用示波器亲自测量测量,根本谈不上了解。当然出问题的话,也就根本不知道怎么回事了。所以经验这个东西,有时很误事,看那个工程师好像工作了7-8年,但是公司规模大,各种guideline很多,checklist很多,你只能按照公司的规则来“连接”,很有可能测试都不用他上,然后一个项目接一个项目,根本没有机会和时间进行深入了解和思考。 说道跟软件的配合问题,现在比较典型的就是某个硬件参数需要软件配置,比如说DDR的时序参数,比如说RGMII的延时参数,软件工程师自然不会懂怎么来配置,他只需要按照硬件工程师给的参数编到软件里,这个地方就很考验硬件工程师,也是考验硬件工程师的最好方法,要搞清楚这些参数,比如说DDR,你1要把电路搞明白,2要把PCB搞明白(匹配,延时等等),3要把芯片的DDR接口参数搞明白,4要把DDR芯片的参数搞明白,5还要搞清楚参考设计/开发板/参考软件怎么配置的;从电气参数到时序参数都要一清二楚,否则芯片就没办法工作。板子能工作了以后,再对命令/地址/数据等等时序完成示波器测量,确定总线的信号完整性和时序冗余,绝对是硬件工程师实力的大表现,以后要面试硬件工程师就拿个DDR2/3的东西,从电路,手册,参数,测试一套搞下来,水平利见高下。 不过对于软件工程师来说,要清楚一点,现在芯片集成度很高,如果电源/复位/时钟这些基本电气参数都正常,再结合上面说的那些需要寄存器配置的硬件参数,经过硬件工程师测试,电气参数,时序参数都在手册范围之内的话,后面发生什么问题,还是要多从代码看看了,毕竟电路时实时的,一致的,很少发生这次测试通过,这次测试不通过的问题,除非器件质量问题(当然,器件质量问题也很常见,基本大规模量产出现的各种硬件问题80%都是器件质量问题)。
相关资源