这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 297-WSDYMG 进程贴

共29条 1/3 1 2 3 跳转至

297-WSDYMG 进程贴

助工
2013-07-07 15:56:42     打赏



关键词: 297-WSDYMG     进程    

助工
2013-07-07 22:02:16     打赏
2楼

是的。

不清楚的,可以到群里问,会有跟快的答复。


院士
2013-07-08 08:55:52     打赏
3楼
这个,技术问题的话,我还是希望大家能够在论坛中进行

助工
2013-07-08 22:19:25     打赏
4楼
昨天收到的元器件,今天花了一天的时间焊了起来,自己焊功一般啊,只能小心谨慎的焊,总算有惊无险的完成了焊接,总的来说除了CPLD其他器件还是比较好焊接的,我在焊接CPLD的时候有两个引脚连载了一起,用电烙铁刮了很长时间也没成功,最后用刀片轻轻刮开的,天不早了,回去休息了,明天上图。对了,吐槽一下,蜂鸣器的型号不对,安不下去的!

助工
2013-07-10 15:24:44     打赏
5楼
说好昨天上图的不过耽误了,焊接好的小板还是很漂亮的,嘿嘿,自信心膨胀中啊,好了,上图:整体效果图

助工
2013-07-10 15:29:13     打赏
6楼

焊接好了当然是下载程序调试,废话少说,上图:

1602液晶

流水灯

数码管

1602液晶


助工
2013-07-10 15:42:43     打赏
7楼

Verilog典型电路设计 华为.pdf

希望对大家有帮助


助工
2013-07-12 11:02:02     打赏
8楼

从网上找到的,感觉挺有用的!分享给大家

FPGA学习的一些误区

 

作者:某人(摘自网络,不知道作者)

 

我常年担任多个有关FPGA学习研讨的QQ群管理员,长期以来很多新入群的菜鸟们总是在重复的问一些非常简单但是又让新手困惑不解的问题。作为管理员经常要给这些菜鸟们普及基础知识,但是非常不幸的是很多菜鸟怀着一种浮躁的心态来学习FPGA,总是急于求成。再加上国内大量有关FPGA的垃圾教材的误导,所以很多菜鸟始终无法入门。为什么大量的人会觉得FPGA难学?作为著名FPGA提供商Altera授权的金牌培训师,本管理员决心开贴来详细讲一下菜鸟觉得FPGA难学的几大原因。

 

1、不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理。FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。因为他们觉得这是无关紧要的。他们潜意识的认为可编程嘛,肯定就是像写软件一样啦。软件编程的思想根深蒂固,看到Verilog或者VHDL就像看到C语言或者其它软件编程语言一样。一条条的读,一条条的分析。如果这些菜鸟们始终拒绝去了解为什么FPGA是可以编程的,不去了解FPGA的内部结构,要想学会FPGA恐怕是天方夜谭。虽然现在EDA软件已经非常先进,像写软件那样照猫画虎也能综合出点东西,但也许只有天知道EDA软件最后综合出来的到底是什么。也许点个灯,跑个马还行。这样就是为什么很多菜鸟学了N久以后依然是一个菜鸟的原因。那么FPGA为什么是可以“编程”的呢?首先来了解一下什么叫“程”。启示“程”只不过是一堆具有一定含义的01编码而已。编程,其实就是编写这些01编码。只不过我们现在有了很多开发工具,通常都不是直接编写这些01编码,而是以高级语言的形式来编写,最后由开发工具转换为这种01编码而已。对于软件编程而言,处理器会有一个专门的译码电路逐条把这些01编码翻译为各种控制信号,然后控制其内部的电路完成一个个的运算或者是其它操作。所以软件是一条一条的读,因为软件的操作是一步一步完成的。而FPGA的可编程,本质也是依靠这些01编码实现其功能的改变,但不同的是FPGA之所以可以完成不同的功能,不是依靠像软件那样将01编码翻译出来再去控制一个运算电路,FPGA里面没有这些东西。FPGA内部主要三块:可编程的逻辑单元、可编程的连线和可编程的IO模块。可编程的逻辑单元是什么?其基本结构某种存储器(SRAMFLASH等)制成的4输入或6输入1输出地“真值表”加上一个D触发器构成。任何一个4输入1输出组合逻辑电路,都有一张对应的“真值表”,同样的如果用这么一个存储器制成的4输入1输出地“真值表”,只需要修改其“真值表”内部值就可以等效出任意4输入1输出的组合逻辑。这些“真值表”内部值是什么?就是那些01编码而已。如果要实现时序逻辑电路怎么办?这不又D触发器嘛,任何的时序逻辑都可以转换为组合逻辑+D触发器来完成。但这毕竟只实现了4输入1输出的逻辑电路而已,通常逻辑电路的规模那是相当的大哦。那怎么办呢?这个时候就需要用到可编程连线了。在这些连线上有很多用存储器控制的链接点,通过改写对应存储器的值就可以确定哪些线是连上的而哪些线是断开的。这就可以把很多可编程逻辑单元组合起来形成大型的逻辑电路。最后就是可编程的IO,这其实是FPGA作为芯片级使用必须要注意的。任何芯片都必然有输入引脚和输出引脚。有可编程的IO可以任意的定义某个非专用引脚(FPGA中有专门的非用户可使用的测试、下载用引脚)为输入还是输出,还可以对IO的电平标准进行设置总归一句话,FPGA之所以可编程是因为可以通过特殊的01代码制作成一张张“真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功能。不了解FPGA内部结构,就不能明白最终代码如何变到FPGA里面去的。也就无法深入的了解如何能够充分运用FPGA。现在的FPGA,不单单是有前面讲的那三块,还有很多专用的硬件功能单元,如何利用好这些单元实现复杂的逻辑电路设计,是从菜鸟迈向高手的路上必须要克服的障碍。而这一切,还是必须先从了解FPGA内部逻辑及其工作原理做起。

 

2、错误理解HDL语言,怎么看都看不出硬件结构。HDL语言的英语全称是:Hardware Description Language,注意这个单词Description,而不是Design。老外为什么要用Description这个词而不是Design呢?因为HDL确实不是用用来设计硬件的,而仅仅是用来描述硬件的。描述这个词精确地反映了HDL语言的本质,HDL语言不过是已知硬件电路的文本表现形式而已,只是将以后的电路用文本的形式描述出来而已。而在编写语言之前,硬件电路应该已经被设计出来了。语言只不过是将这种设计转化为文字表达形式而已。但是很多人就不理解了,既然硬件都已经被设计出来了,直接拿去制作部就完了,为什么还要转化为文字表达形式再通过EDA工具这些麻烦的流程呢?其实这就是很多菜鸟没有了解设计的抽象层次的问题,任何设计包括什么服装、机械、广告设计都有一个抽象层次的问题。就拿广告设计来说吧,最初的设计也许就是一个概念,设计出这个概念也是就是一个点子而已,离最终拍成广告还差得很远。硬件设计也是有不同的抽象层次,每一个层次都需要设计。最高的抽象层次为算法级、然后依次是体系结构级、寄存器传输级、门级、物理版图级。使用HDL的好处在于我们已经设计好了一个寄存器传输级的电路,那么用HDL描述以后转化为文本的形式,剩下的向更低层次的转换就可以让EDA工具去做了,这就大大的降低了工作量。这就是可综合的概念,也就是说在对这一抽象层次上硬件单元进行描述可以被EDA工具理解并转化为底层的门级电路或其他结构的电路。在FPGA设计中,就是在将这以抽象层级的意见描述成HDL语言,就可以通过FPGA开发软件转化为问题1中所述的FPGA内部逻辑功能实现形式。HDL也可以描述更高的抽象层级如算法级或者是体系结构级,但目前受限于EDA软件的发展,EDA软件还无法理解这么高的抽象层次,所以HDL描述这样抽象层级是无法被转化为较低的抽象层级的,这也就是所谓的不可综合。所以在阅读或编写HDL语言,尤其是可综合的HDL,不应该看到的是语言本身,而是要看到语言背后所对应的硬件电路结构。如果看到的HDL始终是一条条的代码,那么这种人永远摆脱不了菜鸟的宿命。假如哪一天看到的代码不再是一行行的代码而是一块一块的硬件模块,那么恭喜脱离了菜鸟的级别,进入不那么菜的鸟级别。

 

3FPGA本身不算什么,一切皆在FPGA之外这一点恐怕也是很多学FPGA的菜鸟最难理解的地方。FPGA是给谁用的?很多学校解释为给学微电子专业或者集成电路设计专业的学生用的,其实这不过是很多学校受资金限制,卖不起专业的集成电路设计工具而用FPGA工具替代而已。其实FPGA是给设计电子系统的工程师使用的。这些工程师通常是使用已有的芯片搭配在一起完成一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法满足系统的需求时,就需要用FPGA来快速的定义一个能用的芯片。前面说了,FPGA里面无法就是一些“真值表”、触发器、各种连线以及一些硬件资源,电子系统工程师使用FPGA进行设计时无非就是考虑如何将这些以后资源组合起来实现一定的逻辑功能而已,而不必像IC设计工程师那样一直要关注到最后芯片是不是能够被制造出来。本质上和利用现有芯片组合成不同的电子系统没有区别,只是需要关注更底层的资源而已。要想把FPGA用起来还是简单的,因为无非就是那些资源,在理解了前面两点再搞个实验板,跑跑实验,做点简单的东西是可以的。而真正要把FPGA用好,那光懂点FPGA知识就远远不够了。因为最终要让FPGA里面的资源如何组合,实现何种功能才能满足系统的需要,那就需要懂得更多更广泛的知识。目前FPGA的应用主要是三个方向:第一个方向,也是传统方向主要用于通信设备的高速接口电路设计,这一方向主要是用FPGA处理高速接口的协议,并完成高速的数据收发和交换。这类应用通常要求采用具备高速收发接口的FPGA,同时要求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMCEMI设计知识,以及较好的模拟电路基础,需要解决在高速收发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域,一方面通信领域需要高速的通信协议处理方式另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。第二个方向,可以称为数字信号处理方向或者数学计算方向,因为很大程度上这一方向已经大大超出了信号处理的范畴。例如早就在2006年就听说老美将FPGA用于金融数据分析,后来又见到有将FPGA用于医学数据分析的案例。在这一方向要求FPGA设计者有一定的数学功底,能够理解并改进较为复杂的数学算法,并利用FPGA内部的各种资源使之能够变为实际的运算电路。目前真正投入实用的还是在通信领域的无线信号处理、信道编解码以及图像信号处理等领域,其它领域的研究正在开展中,之所以没有大量实用的主要原因还是因为学金融的、学医学的不了解这玩意。不过最近发现欧美有很多电子工程、计算机类的博士转入到金融行业,开展金融信号处理,相信随着转入的人增加,FPGA在其它领域的数学计算功能会更好的发挥出来,而我也有意做一些这些方面的研究。不过国内学金融的、学医的恐怕连数学都很少用到,就不用说用FPGA来帮助他们完成数学_运算了,这个问题只有再议了。第三个方向就是所谓的SOPC方向,其实严格意义上来说这个已经在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计时相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到第二个方向的知识,而如果需要设计专用的接口电路则需要用到第一个方向的知识。就目前SOPC方向发展其实远不如第一和第二个方向,其主要原因是因为SOPCFPGA为主,或者是在FPGA内部的资源实现一个“软”的处理器,或者是在FPGA内部嵌入一个处理器核。但大多数的嵌入式设计却是以软件为核心,以现有的硬件发展情况来看,多数情况下的接口都已经标准化,并不需要那么大的FPGA逻辑资源去设计太过复杂的接口。而且就目前看来SOPC相关的开发工具还非常的不完善,以ARM为代表的各类嵌入式处理器开发工具却早已深入人心,大多数以ARM为核心的SOC芯片提供了大多数标准的接口,大量成系列的单片机嵌入式处理器提供了相关行业所需要的硬件加速电路,需要专门定制硬件场合确实很少。通常是在一些特种行业才会在这方面有非常迫切的需求。即使目前XilinxARM的硬核加入到FPGA里面,相信目前的情况不会有太大改观,不要忘了很多老掉牙的8位单片机还在嵌入式领域混呢,嵌入式主要不是靠硬件的差异而更多的是靠软件的差异来体现价值的。我曾经看好的是cypressPsoc这一想法。和SOPC系列不同,Psoc的思想史载SOC芯片里面去嵌入那么一小块FPGA,那这样其实可以满足嵌入式的那些微小的硬件接口差异,比如某个运用需要4USB,而通常的处理器不会提供那么多,就可以用这么一块FPGA来提供多的USB接口。而另一种运用需要6UART,也可以用同样的方法完成。对于嵌入式设计公司来说他们只需要备货一种芯片,就可以满足这些设计中各种微小的差异变化。其主要的差异化仍然是通过软件来完成。但目前cypress过于封闭,如果其采用ARM作为处理器内核,借助其完整的工具链。同时开放IP合作,让大量的第三方为它提供IP设计,其实是很有希望的。但目前cypress的日子怕不太好过,Psoc的思想也不知道何时能够发光。

 

4、数字逻辑知识是根本。无论是FPGA的哪个方向,都离不开数字逻辑知识的支撑。FPGA说白了是一种实现数字逻辑的方式而已。如果连最基本的数字逻辑的知识都有问题,学习FPGA的愿望只是空中楼阁而已。而这,恰恰是很多菜鸟最不愿意去面对的问题。数字逻辑是任何电子电气类专业的专业基础知识,也是必须要学好的一门课。很多人无非是学习了,考个试,完了。如果不能将数字逻辑知识烂熟于心,养成良好的设计习惯,学FPGA到最后仍然是雾里看花水中望月,始终是一场空的。以上四条只是我目前总结菜鸟们在学习FPGA时所最容易跑偏的地方,FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一位高手却是难上加难。要真成为李昌镐那样的神一般的选手,除了靠刻苦专研,恐怕还确实得要一点天赋。


助工
2013-07-12 14:41:26     打赏
9楼

如何学习FPGA

我在想,如果当初有人给我指导一下FPGA之路怎么走那该有多好啊!为了不想大家再走我经过的弯道,所以以自己的真实经历为鉴!

如何学习FPGA,这应该是初学者迫切想知道的问题,因为人都有一种想走捷径的心理,即以最短的时间成就自我。

常曰:欲速则不达我以自己的亲身体验告诉大家到底该如何学习FPGA

FPGA之路:我自己走。

可到底该如何走呢?

工欲善其利,必先利其器。想要学习FPGA的人,首先得把其工具学好。这个工具得从两点下手:

第一点:语言 ? verilog : vhdl

此时,可能大家又会有疑问了,我又到底该学哪门语言呢?

其实在大学里面大多都是开的vhdl语言,毕竟授课的那一代最先接触的是vhdl语言,所以这也不为过了。可是我们要明白,我们以后要面对的是市场,所以就不然生活在死板的教学安排下罗。

刚开始时我跟大家也一样,最先接触的是VHDL语言,可是慢慢地我发现很多资料都是Verilog的,这样的话就造成了一些阅读上的麻烦。所以,我也就慢慢地接触上Verilog。可能刚从VHDL转向Verilog的学习会觉得很不习惯,甚至还没有Vhdl好学,虽然这样想我很同晴你,因为包括我在内,很多人都是感同身受,因为它不像Vhdl那么规范,格式比较固定。学电子的通常都有C语言的基础,而Verilog也就是C语言延升过来的,所以想Verilog也还是比较容易上手的。更重要的是,Verilog的代码通常都是比较简洁的。比如说同一段代码,用Verilog实现比Vhdl至少少三分之一的量!

刚才我们说到了市场,就目前情况来讲,Verilog在公司里面占的份额远比Vhdl高,所以呢?我觉得大家把Verilog学好是非常有必要的。不过最好是把两门语言弄精通(事实上我就是这么做的),这样不仅可以更另方便地查看资料,同对有时对于设计也还是非常有帮助的。

学语言的时候我希望大家不要死看书本,因为很多书上记载的实例通常也都漏洞百出,所以也可以尝试编译一下实例,即可以加深印象,有时也可以查找出错误,同时也还可以熟悉对工具软件的使用,何乐而不为呢?

另外,很多人对语言的学习并不看重,敷衍了事就行了,这是学习之大忌。造成的直接的结果是遇到问题了都不会在书上找到答案,而是直接问别人,有时候就是一个小小的语法上面的问题而已,哎 初学者如果抱着这种学习的态度是永远也学不好的。

第二点:工具软件 ?Altera Xilinx

其实这一点还是比较讲清楚的,因为软件其实都是相通牟,只要把一方面的软件学好的,另外也就迎刃而解的,上手也快。在咱们中国,使用Altera公司开发的编译软件Quartus II比较多,而在欧洲那边使用Xilinx的比较多,在美国则平分秋色。对于软件的使用我希望大家多看下帮助文档或者是手册,这是最好最详细的导航仪,比问别人更加精确。在平时的自己最好一个一个去尝试,不要遇到问题就问,否则自己的自学能力如何提高。哈哈 不知道大家英文学得怎样?否则的话看这些文档起初是比较费劲的,不过贵在坚持,看多了,自然就习惯了。英语对我们学电子的实在太重要了,无论是现在用软件看成Handbook也好,还是以后看芯片资料Datasheet,要知道这些可全是英文的呀!不可能以后公司还为每个人配一个英语翻译的吧!这样的话公司为什么不直接招聘一个英语水平比较高的人呢? 对吧 可见英文能力的重要性了吧!具我所知,学电子的通常都是理工科出身,而且大多为男生,所以通常英语水平都不怎么的。但是,我不会同情你,如果在以后的竞争过程中你不想被淘汰就必须得把英语学好(这点重点强调的是英文阅读能力)。男人们啊,加油吧!相信自己没有什么可以难倒我们的。

呵呵 说了这么多 无非就是想大家把基础扎好,而且不定要扎实,至于好处会在以后的过程中体会得到的。

现在社会是一个团队的竞争,不再是英雄称霸的时代罗。所以要非常注意团队之间的合作,这一点想必也不用我再强调啦!

另外,在学习的过程中,如果说没有一个团队,就自己一个人闭门造车,这样的话会学得很慢的,虽然有时候是迫不得已,因为在很多学校一个专业能有那么几个学习技术就已经很不错了,所以在这种情况下我们该怎么办呢?

想当初我刚学的时候也是一个个摸索着前进,指望不上同学的帮助,也指望不上都是的指导,就这样前进了半个学期,会的也还是只有那么多,太慢了,这一点对于一个非常讲效率的我是不能接受的。所以,我建议大家如果身边没有同伴的话,可是多往论坛跑跑(这一点下面我会向大家推荐的),别把时间全花在游戏跟谈恋爱身上去了,学电子的要耐得住寂寞,这一点是我刚接触电子时老师对我说的,至今还记在心中。学电子的需要的是一种刻苦钻研的精神,心不能太浮躁,否则的话我劝你还是早点转行得了,因为转行的话或许你的路会好走一点。

 

上面说的这些话或许只能对新手起一点指导作用,大师就可以不必了解了。因为这些我是从自己的切身体验上写出来的,真实 实在 所以我希望能够刚接触FPGA的初学者指引一条道路。

 

强烈推荐:

论坛:

中国电子顶级开发网(论坛有很多,但建议大家不要参与太多,因为我们没那么多经历停留在网上 ,这个网站应该是目前同类中最好的一个中文论坛)

  Altera官网论坛

  博客园(这并非论坛,但其中资料非常丰富,有很多不错的牛人的博客都写得非常好)

书籍:

ALTERA FPGA/CPLD设计 基础篇 高级篇

  Verilog数字系统设计教程 夏雨闻

  VHDL与数字系统设计

备注:上面所说的大多建立在数电模电的基础上,如果这两点大家没有扎劳的话 就得赶紧抓时间罗

 

下面介绍一下自己

  现在从事LED显示行业(主要是户外大型的显示屏等),主要工作内容是编写代码,拿ARMFPGA去控制,对于ARM现在也还是在学习阶段,所以,现在又走上了当初学习FPGA路径,就是不断的学习 学习 学习……

网名:tdyizhen1314(这个大家Google一下就知道,初写博文,希望能够帮助到大家)

邮箱:495567585@qq.com

 

续(2011-3-12):

   最近收到很多初学者的提问,大多涉及到怎么学习FPGA的捷径,我想要说的是:捷径就是不走弯路,即使走弯路,也要看尽弯道上的风景!

在此我总结了几条学习方法(仅个人意见):

1看资料第一选择是原版,最好是官网上的。(官网上提供了各种各样的资料,没有什么书籍比这更权威的了,上面有足够多的视频和实例教程)。

2、人家写的一些博文资料等等,也不仅仅是这些,包括在中国出版的绝大部分书籍,资料看了之后要细细揣摩,要验证其正确与否,方可吸收,否则吸收进去的可能会拉肚子。

3编写代码要有硬件性的思维,你写的每一条语句对应的都是实实在在的一个电路。

4多提问,多讨论,多记录,多思考。

  多提问,就像我上面所说的一样,多上官网论坛提问,不要认为自己英语不好,否则谷歌、有道翻译怎么会有市场,慢慢来,再说咱们说的那些英文虽然漏洞百出,但是老外也能看懂,就好比老外跟咱们说汉语一样,论坛上面会对你得问题回答的很精彩。多讨论,学习东西最好是有专研的一个团队(这个团队可能在学校里面是比较难找的,大家也都明白大学里学东西的一个状况),但是现在网络这么发达,所以,途径还是有的,况且讨论的时候还可以学到该知识点之外的知识,何乐而不为呢。多记录,要经常把自己觉得有用的东西记录下来,虽然说脑子的容量很大,但长时间不看的话估计也就慢慢的陌生了,好记性不如烂笔头,什么东西都有个折旧率,知识一年不看的话,损失的将是80%,这就是现在所说的知识折损。多思考,一个代码写完了,不是说在实验板上有结果就算完了,有没有更好的节省资源,其工作频率能不能在高点,等等等等,都是一个严谨的工程师所要考虑的。

  另外再说一个代码风格的问题,你写的代码能够在最短的时间内让人家看懂,这才是风格最好的(所以你得遵守一些前辈积累下来的风格,这个方面可以不太需要创新)。

好了,对于方法先就说这么多吧!学习FPGA的过程是漫长的,但是市场也是广泛的。

  也有很多人问我学习FPGAARM哪个最有前景,这个的话我也不能因为我学FPGA就说FPGA好,当然也包括DSP,看个人兴趣吧!这就好比一张白纸(FPGA)和一张已经有模有样的纸(ARM)让你去作画,你会选择哪种风格呢?就目前而言,ARM的市场比FPGA大得多,但是现在FPGA每年的发展势头让人很吃惊,哈哈

 


院士
2013-07-12 17:19:59     打赏
10楼

楼主 这一楼是转帖的吧!!

原作者的信息还在呢


共29条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]