FPGA从事的工作是什么啊?

2024-05-15

1. FPGA从事的工作是什么啊?

FPGA从事的工作主要分为硬件部分和软件部分:硬件工程师主要根据FPGA的数据手册分析其内部构架,工作环境及相关驱动条件来构造硬件平台,需具备良好的英语水平,深厚的模电数电功底,电路与系统、信号完整性及EMC相关知识,和精通一款制图软件;
FPGA软件工程师主要负责一些相关的算法,并以软件代码加以实现,你做什么行业的产品就要掌握什么行业的一系列专业课程,和一种编程语言(V/VHDL)-硬件描述语言。
FPGA(Field-Programmable Gate Array)是现场可编程门阵列的简称,简单来说是一种逻辑数字电路设计的方法。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

拓展资料:
FPGA
基础问题
FPGA的基础就是数字电路和VHDL语言,想学好FPGA的人,建议床头都有一本数字电路的书,不管是哪个版本的,这个是基础,多了解也有助于形成硬件设计的思想。在语言方面,建议初学者学习Verilog语言,VHDL语言语法规范严格,调试起来很慢,Verilog语言容易上手,而且,一般大型企业都是用Verilog语言,VHDL语言规范,易读性强,所以一般军工都用VHDL。
工具问题
熟悉几个常用的就可以的,开发环境Quartus II ,或ISE 就可以了,这两个基本是相通的,会了哪一个,另外的那个也就很Easy了。功能仿真建议使用Modelsim ,如果你是做芯片的,就可以学学别的仿真工具,做FPGA的,Modelsim就足够了。综合工具一般用Synplify,初学先不用太关心这个,用Quartus综合就OK了。
思想问题
对于初学者,特别是从软件转过来的,设计的程序既费资源又速度慢,而且很有可能综合不了,这就要求我们熟悉一些固定模块的写法,可综合的模块很多书上都有,语言介绍上都有,不要想当然的用软件的思想去写硬件。在学习FPGA开发过程,首先要对电路设计熟悉,明白电路的工作过程:电路是并行执行。
习惯问题
FPGA学习要多练习,多仿真,signaltapII是很好的工具,可以看到每个信号的真实值,建议初学者一定要自己多动手,光看书是没用的。关于英文文档问题,如果要学会Quartus II的所有功能,只要看它的handbook就可以了,很详细,对于IT行业的人,大部分知识来源都是英文文档,一定要耐心看,会从中收获很多的。
算法问题
做FPGA的工程师,最后一般都是专攻算法了,这些基础知识都是顺手捏来的,如果你没有做好搞理论的准备,学FPGA始终只能停留在初级阶段上。对于初学者,数字信号处理是基础,应该好好理解,往更深的方向,不用什么都学,根据你以后从事的方向,比如说通信、图像处理,雷达、声纳、导航定位等。
参考资料:百度百科:FPGA

FPGA从事的工作是什么啊?

2. 从c语言到fpga高手,我是怎么炼成的

这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为 国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚入行的朋友们一点点帮助。一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS、数据 库,应用程序,做过通信软件、硬件驱动、协议栈,到现在做操作系统内核和 IC相关开发,这中间走了很多弯路,也吃了不少苦。
我上的是一个三流的高校,就连同一个城市的人多数都不知道。因为学校不好也就没有指望能靠学校名气找一个好工作。所有的希望都寄托在自己的努力上了, 大一开学前的假期我就开始了学习,记得我买的第一本书是《计算机基础DOS3.0》,大家别吓着了,其实当时已经普及了DOS6.22了,只是我在书店里 看到了DOS4.0,5.0,6.0的书,以为像英语那样是第四、五、六册,记得当时到处找DOS1.0,现在想想也幸好我没有找到:)开学前我学完了 PASCAL,那时既没有计算机也没有人可以请教,我连程序是什么的概念都没有,只好死记硬背代码,然后拿纸写,我一直到大三才有了一台486,在这之前 用纸写了多少程序我也记不清楚了,只知道最长的一个我拿A4大小的草稿纸写了30 多页,我的C语言、C++ 、VC都是在这样的条件下入门的。所以说条件是可以克服的,希望我的经历多少给条件艰苦的同学们一点信心。第一次上机是在我姐夫的机房,我的心情激动的无 与伦比,但是一上机我立刻傻了眼,他们用的是英文版的Win3.1,我的那点DOS知识都见了鬼,上机提心吊胆的一阵瞎摸,一不小心把Word弄成了全 屏,怎么都还不了原,当时真是心急如焚,我以为机器被我弄坏了。第一个C语言程序,就是那个经典的HelloWorld,我调了几个星期,上机机会非常 少,也没有书告诉我开发环境(TC2.0)需要设置,而且开始我都不知道有编译器,我甚至自作聪明把写好的程序扩展名从.c改成.exe,结果可想而知。 大一学完了C、X86的汇编、数据结构、C++。由于精力都花在自学上了,大一下四门课挂了彩,三类学校就是这点好,挂上一二十门也照样毕业。不过扯远点 说,我那么刻苦都及不了格,可见我们国家的计算机教育有多死板。
大二准备学VC和BC,当时难以取舍,后来选了VC,不为别的,只为书店里两本书,VC 那本便宜6块钱。我的努力在班上无人能及,学的日夜不分,大三有了计算机后更是如此,很多次父亲半夜教训我说我不要命了,我一直觉得自己基础差,记忆又不 行,条件也不好,所以觉得只有多花点时间才能赶上别人。居然后来有许多朋友说我有学计算机的天赋,让我哭笑不得。我用的是486,16M内存,1G硬盘, 当时同学们的配置都是P166MMX,我安装 一个Windows NT4.0需要一个通宵,编译一个BC5.0向导生成的程序需要近两个小时,我的显示器是个二手的,辐射非常大,开机屏幕冒火花,看起来很酷的:),有一 次程序写的太久,觉得怎么白色的编辑器背景变成了紫色,以为显示器坏了,后来才发现眼睛不行了,不过说来也奇怪,到今天我的视力还能保持1.5,真是个奇 迹。但是就是那台破机器陪伴了我两年,让我学会了VC、Delphi、SQLServer等。后来那台机器给我阿姨打字用,据她说一天她正打的开心,一股 青烟夹着火苗从显示器钻出来,之后它才寿终正寝。
大三假期找了个机会在一个计算机研究所实习,与其说实习不如说是做义工,工作了两个月一分钱没有拿。但是这两个月对我的发展帮助很大,让我早一步了解 了社会,刚去的时候我当然是一窍不通,在那里我熟悉了网络,学会了Delphi和Oracle。由于工作很认真,得到了比较好的评价,在一位长者的引荐 下,我开始和他们一起做项目,这使我在大三大四就有了自己的收入,大四又找了两家MIS公司兼职,虽然钱不多,但是在学生期间有1000多的收入我已经非 常满足了,我终于用自己赚的钱把计算机换了。大四下开始找工作,这时我的工作经验已经比较多(当然现在想想非常幼稚),开始听父母的想去那个研究所, 实习过那个部门也希望我能去,但是不知道为什么最后不了了之,这种单位就是比较官僚,我一气之下就到了我兼职的一个公司做MIS的TeamLeader。 在大三到毕业一年的时间,做过了各种MIS,从煤气、烟厂、公安、铁路、饮食到高校,什么有钱做什么,工作也很辛苦,经常加班和熬通宵,从跟客户谈需求到 设计、编码、测试、交付都要上。那时觉得很有成就感,觉得自己还不错,现在想想真是很肤浅。
刚走上工作岗位的学生很容易被误导,各种开发工具让人眼花缭乱,同时也觉得很受公司器重,但这样工作永远是一个低层次的开发者。不要跟我说什么系统分 析有多么多么重要,多么多么难。你以为自己跟用户谈需求做设计就是系统分析和设计了吗,国内又有几个公司能够做的很到位很规范?我是ISO9000内审 员,也在Rational公司受过多次培训,拿了4个证书,还有一个公司让我去做 CMM。这些我听过很多,但是很多事情到国内就变了性质,一个公司不是通过了ISO9000或者CMM就能规范了,我现在在一家有几十年历史的外企工作, 里面的管理不是一般国内企业能及的。作为一个毕业不久以前没有步入过社会的学生,几乎不可能在很短的时间掌握系统分析和设计,面向对象、UML只是一个工 具,关键是人本身的思想,不是说你熟悉了C++、Rose就能够做出好的设计,相反如果你具备了很高的素质,你可以用C写出比别人用C++更加模块化的程 序。
话说远一些,国内软件开发行业有一个怪圈,很多人觉得VC > Delphi > VB,真是很搞笑。这几个软件我都做过开发,说白了他们都是工具,应该根据应用的需要选择采用哪个,而不是觉得哪个上层次。如果你因为用某个开发工具很有 面子而选择的话,只能说明你很浅薄。如果说层次,那么这些工具都不上层次,因为它们用来用去都是一些系统的API,微软的朋友不会因为你记住他们多少个 API或者多少个类就会觉得你很了不起,你永远只是他们的客户,他们看重的是你口袋里的银子。我也做过系统内核,我也封装过很多API,同样我也不会看重 那些使用这些API做二次开发的客户,除非他能够作出自己独到的设计。
至于有人认为C++ > C那更是让人笑掉大牙,不妨你去打听一下,现在有几个操作系统内核是用C++写的,又有几个实时系统用的是C++,当然我也不是说C++不好,但是目前的 内核和实时系统中C++还无法与C匹敌,至于说C++适合做应用系统的开发那是另外一回事。所以我的观点是不在于你用什么工具和语言,而在于你干什么工 作。你的设计体现了你的技术层次。
这样干了一年我觉得非常苦闷,做的大多数都是熟练工种的活,个人技术上没有太多的提高也看不到方向。所以决定离开这个城市去上海,寻求更好的发展,并且打算放弃我以前的MIS转到通信行业。
写到这里不能不提到我女朋友,我们是在来上海前半年认识的,她大四在我公司实习,公司派她给我写文档,我们的感情发展的很快。她告诉我很多事情,她家 原本是改革开放的第一批暴发户,她母亲爱打牌,输掉了几百万,还欠了很多债,她有男朋友,但是她对他没有感情,只因为他给了她母亲两万多块钱,后来还强迫 她写了四万块的借条,她男朋友背叛过她并且不止一次打她,现在逼她结婚不然就要她还钱。这人居然还是一个高校的老师!她母亲把父亲给她的学费花了,因为拖 欠学费她没有办法拿到毕业证。她母亲现在有病需要钱,我拿出了自己的一点积蓄并且跟朋友们借了一些,替她交了学费并给她母亲看病(后来才知道看病的钱又不 知所终,就连她母亲是不是有病我都不知道,但她也是没有办法)。这个时候我家知道了一些事情,坚决反对我和她在一起,她原来的男朋友也极力破坏。无奈之下 我们决定早一点离开这个伤心的城市,并且瞒着我们家。由于时间仓促,我只准备了4000块钱,她仅有的几百块钱也被她母亲要去了,我买了三张票,一张是中 午的,两张是晚上的,中午我的家人把我送上船,他们一离开我就下了船,我和她乘坐晚上的船离开了这个我和她生活了很多年的城市,带走的只是一身债务。没有 来过上海的我们两个性倔强,都不愿意去麻烦同学和朋友。来到上海是傍晚6点半,我们都不知道该去哪里,我们找了一个20块钱的旅馆,这个房间连窗户都没 有,7月份的天气酷热难耐,房间里非常闷热。第二天我们开始租房子,因为身上的钱不多,我们基本都是步行,花了一个星期时间,不知道在浦东转了多少圈后找 到了一个400块的房子,但是我们都不了解上海是付三压一,还要付半个月的中介费,买了一些锅碗瓢盆后,我们身上只有800块钱了,工作都还没有着落,这 800块钱要支持到我们拿到第一个月工资,为了省钱我们自己做饭,每天买菜只花两块钱,她非常喜欢吃(也可能她在大学经常挨饿的原因),看到她现在这样省 吃俭用我真的很不忍心。她以前的男朋友也没有放过她,经常打电话来骚扰,并且来上海看她,还说了不少恐吓她的话,她过于善良,说他以前毕竟帮助过她,叫我 不要与他一般见识。以后的每天在家就是苦等面试通知,原本我想迅速找一家MIS公司解决眼前的困难,但是她坚持让我不要放弃自己的理想,终于功夫不负有心 人,我找到了一家通信公司,4000块的工资虽然赶不上MIS公司给我开出的价位,但也够在上海生存。她也找到了工作,第一天上班她哭了,这是她来上海第 一次流泪,我心里很难受也很感动。
由于是全新的行业,我把自己降到了零点,我学的VC、Delphi、数据库派不上用场,摆在我面前的是嵌入式、协议、信令一些我从未接触过的知识。我 知道我没有退路,于是拼命的学习,我把自己当做一个应届毕业生一样,一分努力一分收获,半年过去我终于熟悉了工作,并且得到了公司的表彰,薪水也加了一 级。后面的日子里我们省吃俭用,把欠朋友的1万多块钱还了,日子终于上了正轨。这时女朋友告诉我她想考研究生,我也很支持,于是她辞职在家备考。
另外,在这里我要感谢我的Project Manager,他原来是一个大通信公司的产品经理,对人非常和善,我从他那里学到了很多知识,而且他也给了 我许许多多无私的帮助。在工作上他给我充分的空间和信任。记得公司安排我维护一个接入服务器软件,由于代码量不算太小(5万行),资料和文档都不齐全,我 维护起来非常吃力,所以想重新把它做一遍,公司领导不太支持,可能觉得工作量太大,但是他极力支持我,私下里他让我放手去做,我的维护工作他挤时间做。在 他的支持下,我花了半年时间完成了接入服务器的软件,并且实现了一个相对完整的TCP/IP协议栈。在这里我学会了嵌入式系统设计、驱动开发、TCP /IP和很多通信的知识,我花了一年时间终于使自己从MIS开发转到了通信行业,并且站稳了脚跟。我的开发大量是对硬件的直接操作,不再受微软的操作系 统,VC、Delhpi这些开发工具的约束,我终于看到了另外一片天空。
我做事情喜欢追根问底,随着开发的深入,软件开发与硬件联系越来越紧密,硬件知识的匮乏又对我的发展产生了障碍,而且芯片技术基本上掌握在国外公司的 手里,这对做系统级设计是一个非常大的制约,一个新产品出来,第一道利润(也往往是最丰厚的利润)常常都被IC公司如Intel、Motorola赚去 了,国内的厂商只能喝点汤。所以我决心解决自己的硬件技术障碍,并打算离开通信行业,进入IC设计相关领域。
当然我明白如果我对硬件了解的非常少,没有哪家IC公司会仁慈到招我这样一个一窍不通的人来培训。所以我必须努力打好基础,学一些相关知识为以后做准 备。就像我开始从MIS转到通信一样,我看过大量通信方面的书,并且给一个ISP做过RADIUS计费分拣台,在这样的背景下这家通信公司才给了我这个机 会。我在的通信公司是做系统设计的,有不少PCB Layout硬件人员,平常我就注意向他们学习,由于我做的是软件,在公司看硬件资料不好意思,所以开始只好在家看,刚来上海工作我连续一年都在加班,后 来不加了,因为我要挤出时间学习,通常我12点左右睡,第二天5点半起,我上班比较早,地铁上如果人不多我也用来看书。学习当然不会是一帆风顺的,有些实 在不懂的问题就积累起来问硬件人员,他们的帮助使我学习进度快了很多,因为在没有人点拨的情况下自学,我的一半时间是花在解决疑难问题上,但这种问题经常 是别人的一句话就可以让我豁然开朗,我非常庆幸我有这样的学习环境。在后面的一年里,我学会了看硬件原理图,学会了简单的硬件设计(模拟电路方面还有不小 的差距),事情就是这样的,当你安安份份做软件,别人永远认为你是软件开发人员,在你开始学习硬件时别人未必会认同,有位中兴通讯的朋友还对我说过,一个 人不可能把所有东西都学完。我也明白这一点,但我希望自己做的更好。但当你熟悉硬件后大家又会觉得你好像原本就是软硬件都懂的,同事们也都习以为常了。这 个时候我可以把硬件资料堂堂正正的拿到公司看,没有人再大惊小怪了。让我比较自豪的是我通过自己的努力做了一个IAD(软交换的终端设备)系统方案,包含 软硬件的选型、设计等内容,这个方案得到了公司和同事们的认同,让我感到非常欣慰。
技术是相辅相成的,当我的硬件有了一定的进步后,我的软件设计也有了很大的提高,我可以从更深层次理解问题,我做的接入服务器CPU是 Motorola PowerPC860,熟悉的朋友都知道860 QMC与软件的批量数据传输通常采用BD表的方式,硬件人员做驱动的时候习惯采用固定BD表,每接收或发送数据都将数据从BD表拷贝到用户Buffer, 或从用户Buffer拷贝到BD表,由于理解的比较深入,我自己重新实现了这个过程,采用动态BD表的方式,驱动从一个网口接收数据,提交给我的软件进行 三层交换,直至从另外的接口发送出去,没有进行一次拷贝。这样的设计大大提高了性能,使系统的指标接近理论值。软硬件的结合使我的设计水平上了一个台阶。 我现在写的这个操作系统,编译后我把程序反编译成汇编,找出其中不优化的代码,然后在C程序中进行调整。举个例子,很多CPU没有专门的乘法指令,这个大 家应该都知道,在这种CPU上进行一个乘法操作常常会花费大量的指令周期,有的朋友会说这个我知道,我会尽量避免采用×号,但是事情往往不是那么简单,你 知道 C语言中数组的下标操作是怎么实现的吗?仔细看看反汇编的代码你就会明白,同样是通过下标的定位操作,C编译器会有时候会产生位移指令,但有时候会用乘法 实现,两者效率往往是天壤之别,所以明白这些问题你才能将系统性能提升到极致。这些问题就不多说了,有兴趣的话以后可以共同探讨。
话说远一点,我由衷的希望在软件上做的比较深入的朋友们有机会学学硬件以及其它相关知识,尤其是做底层开发和嵌入式设计的。这对软件技术的提高有非常 大的帮助,否则很多事情你只知道该这样但不会明白为什么该这样。我这个观点在我现在的IC公司Project Manager那里也得到了验证。他告诉我们公司现在的802.11芯片产品的软件经理原本是做该芯片硬件设计的,某某某原本是做软件的,现在在做IC, 类似的例子还有很多,只是在国内这样的风气不是非常流行。
我有一些心得体会与大家分享,只有当我干好本职工作后,我才会学习与工作关系不大的技术,这样公司的上司才不至于反感,在入门阶段的问题我通常不去问 那些资深人士,而是问一些资历比较浅的朋友,比如刚毕业不久的学生,因为他们往往会跟你详细的讲解,而资深人士通常觉得你的问题太简单,所以回答的也很简 单,我又不好意思多问。等技术上了一定的层次后我才会问他们,他们也能给你比较深入的回答。另外,有些朋友说我机会比较好,他们也希望能从事新的工作可惜 没有机会,我听了只有苦笑,我的机会了解的人都应该知道,我没有出生在什么IT世家:)也没有谁一路提拔我,所有的路都是自己走出来的,我母亲去世比较 早,我的后母(我叫她阿姨)看着我努力过来的,一次她看我大年30还在写程序,她说像我这样努力木头都能学出来。
我的最终目的是IC而不是PCB,所以我下一步的准备开始学习IC设计的知识。公司的同事没有懂IC设计的,后面的路又要靠自己了,我买了不少相关的 书,在网上也查了很多的资料,我花了大量的时间去学习VHDL,并且用软件进行了一些简单的设计和仿真(没有设计ASIC,只是针对FPGA),随着学习 的深入,我渐渐明白了IC设计的基本流程,同时也明白了这条路的艰辛。这个时候我已经做好了跳槽的准备,我向一家业界有一定知名度的IC设计公司投了简 历,并通过了漫长的面试(4个多小时)。其他的一切我都比较满意,唯独薪资差强人意,我也明白原因,因为我是这个行业的新人,我没有经验,我再一次将自己 清零了。公司老板问我6000多一个月能不能接受,我知道他也是照章办事。想想我通信行业的朋友们,基本上都是年薪10万以上,月薪过万的也比比皆是,朋 友们也帮我介绍了不少待遇不错的公司,我该怎么选择,当时我很犹豫,我热爱我的事业,我向往我的追求,但我也是一个普通的人,我也需要养家糊口,我也想早 一点买房买车。生活给我出了一道难题。
爱因斯坦在63岁时说过“一个人没有在30岁以前达成科学上的最大成就,那他永远都不会有。”这句话给了我很大的压力和震动,我马上就26岁了,离 30只有四年时间,我必须抓紧这几年宝贵的时间,努力达到我技术上的最高峰。为了这个理想,为了能离自己的梦更近一些,我选择了这家IC公司,我明白自己 的薪资和公司刚进来的硕士研究生相差无几,但为了今后的发展只能忍受,一切又得重新开始。换行业是一个非常痛苦的过程,尤其从一个春风得意的位置换到一个 陌生的岗位,感觉象从温暖的被子里钻出来跳进冰水中,让人难以接受。在原来那家通信公司,我是唯一两年时间涨了五次工资的员工,公司和同事都给了我极大的 认可,工作上也常常被委以重任。但现在这一切都成了过去,在新的公司我只是一个新人,没有人知道也没有人在意我过去的成绩。我决定重新开始,我把自己看作 新毕业的学生,我要用自己的努力得到公司的认可。进入新的行业是非常痛苦的,我告诉自己必须忍受这一切,虽然外面有很多诱惑,但是既然作出了选择我就不允 许自己轻易放弃。
我现在已经在这家新公司上了一个多月的班,开始非常艰难,现在慢慢适应了。第一 个月结束时,Team Leader找我谈话,说我是新进员工中最优秀的一个,我心里很欣慰,这也算对我努力的一个肯定吧。在这里还要感谢我的女朋友,她给了我很大的支持和鼓 舞,每次在我动摇的时候她都在鼓励我,让我坚持自己的理想,刚来上海是她让我不要勉强去做MIS,这次也是她让我顶住了月薪过万的诱惑,没有她我可能不会 有今天的成绩。现在的公司有自己的操作系统,自己的CPU、DSP和其它芯片,在这里我能学到世界上最先进的技术,我们的设计开发不再完全依赖别人的硬件 和系统,这让我很开心。我打算等工作步入正轨后,全力学习新的知识,实现我的理想。在后面的两年里我给自己定下了几个目标:
努力做好本职工作,在工作上得到公司和同事们的认同;
努力学习IC硬件设计知识,多向同事请教,并利用一切机会多实践;
实现我的实时操作系统的主要部分,完成TCP/IP协议栈模块,并免费发布源代码;
和我女朋友结婚并买一套小房子,这是最重要的,因为我明白事业是可以重来的,但是珍贵的感情很难失而复得。
在这里提一下我现在开发的操作系统,它是一个实时嵌入式系统,目前支持:
a.时间片轮转调度和基于优先级调度,最多64个优先级;
b.抢占式实时内核;
c.为了便于移植,主体用标准C实现;
d.汇编代码非常少,不到100行;
e.支持任务管理,各任务有独立的堆栈;
f.进程同步和通信目前完成了Semaphore,Message Queue正在调试;
g.实现了定时系统调用;
h.可以在windows上仿真调试
我还打算下一步实现优先级反转保护,Event Flag,Data Pipe,内存管理(以前实现过)、驱动接口等。 在这之后我还会努力完善它,比如加入文件系统,协议栈、调试接口等。希望朋友们提出自己的意见和建议,在此不胜感激!
就像有的朋友说的,我的经历或许会给一些朋友产生误导,在这里我必须说明一下。我来上海以前学习过于拼命,常常晚上只睡3个多小时,我身高1米71, 那时只有108斤(我现在130多),家人也说我这样拼命活不过60岁,但是当时的我太固执,我对他们说只要能实现理想活50岁我就够了。那时的拼命使我 的身体受到了影响,有一次早上突然腰肌剧痛难忍,痛的我倒在床上站不起来。虽然我现在已经比较注意,但有时候还会隐隐作痛。后来在女朋友说服了我,来上海 以后我不再如此。我经常引用父亲的一句话,而且我也发现拼命不是办法,我可以熬一两个通宵,最多的一次我连续工作了三天三夜,但是我半个月都没有恢复过 来,这样是不是得不偿失?
学习工作应该是一个长期的过程,像马拉松而不是百米冲刺。我现在非常注意调整学习和工作的强度,我要保证每天尽量有相对充沛的精 力,一些年轻的朋友觉得自己也应该拼命努力,这让我多少有些担心,如果我的故事能让你在学习工作上多一点兴趣,我会感到很开心,但如果误导了某些朋友,让 你做一些不值得的付出,我会感到很内疚。

3. FPGA如何入门,看了Xilinx开发教程还是觉得很吃力

给你一条思路。首先FPGA的特点是易上手,不可能精通。很多搞了十几年的FPGA工程师还不是遇到项目就卡壳。我见过一个华为工作了七年的做FPGA的,项目搞不出来辞职的(现在是我的顶头上司),所以想搞FPGA还得沉得住心,吃得了苦。然后自学就刚开始学语法,学个两周足以,语法实在太简单了。然后开始买开发板,跟着例程跑程序,这个阶段至少掌握整个FPGA开发流程和熟悉软件,尤其是在线调试,建议VIVADO,因为这玩意还是有点复杂的,工作中要是让你调接口你连这软件怎么抓信号都不会那可就尴尬了。至于SOC这些就不要学了,学了也没用,工作中基本上用不到。然后软件熟悉的差不多就开始自己写代码,这个阶段最主要是注意形成自己的代码风格,多看代码多写代码多仿真,要是有实际项目的代码就更好了,学习人家高手的代码风格(建议别用开发板的代码学习,写的太搓了),然后多搜一些异步设计的规范等等资料,等你知道给个你几个时钟你该用哪个时钟写哪个代码的时候开始玩一些实际项目的东西,这个时候开始有选择了,一般FPGA就是两个方向-接口与算法。这个阶段出去找工作吧,剩下的都是工作中才会理解的东西。算法门槛高,我就写过中频采集板的代码,其他的也不懂,接口的话开始按照人家招聘公司的要求学习,一般要求你要懂PCIE,DDR这些高速接口,高速接口无非是IP核例化和控制,看起来难实则也难(不过是工作中难,要是学习这玩意是啥的话还是不那么难的)。FPGA这玩意最忌讳的是手低眼高,也是很多学FPGA最容易犯的错,觉得这玩意就那么一回事。剩下的路就该你自己走了,FPGA是一个相对比较偏的行业,网上资源不太好搜集,信息收集也是一个需要学会的,但一般都是从人家赛家的官网下载的,所以英语底子得扎实。至于数电就不用再看了,本科基础足够了,心中有电路可不是指的是那种触发器堆的电路,而是指的是数据流的传输与时钟布局的大局观以及整个项目的大局观,所以看数电是没用滴。不过对于信号处理的有些基础知识,至少要知道啥是奈奎斯特采样,啥是中频采样,啥是FIR,FFT,DDC,UDC。

FPGA如何入门,看了Xilinx开发教程还是觉得很吃力

4. 基于CPLD数据采集控制系统设计

第1章 概 述
21世纪人类将全面进入信息化社会,对微电子信息技术和微电子VLSI基础技术将不断提出更高的发展要求,微电子技术仍将继续是21世纪若干年代中最为重要的和最有活力的高科技领域之一。而集成电路(IC)技术在微电子领域占有重要的地位。伴随着IC技术的发展,电子设计自动化(Electronic Design Automation EDA)己经逐渐成为重要设计手段,其广泛应用于模拟与数字电路系统等许多领域。
VHDL是广泛使用的设计输人硬件语言,可用于数字电路与系统的描述、模拟和自动设计.CPLD/FPGA(复杂可编程逻辑器件/现场可编程门阵列)为数字系统的设计带灵活性,兼有串!并行工作方式和高集成度!高速!高可靠性等明显的特点,CPLD/FPGA的时钟延迟可达纳秒级,结合其并行工作方式,在超高速领域和实时测控方面有非常广泛的应用。
本次设计的目的是使用可编程逻辑器件设计一个专用的A/D转换器的控制器,取代常用的微控制器,用于数据采集。本文讲述对A/D进行数据采样控制。设计要求用一片CPLD/FPGA,模数转换控制器ADC和LED显示器构成一个数据采集系统,用CPLD/FPGA实现数据采集中对A/D 转换,数据运算,及有关数据的显示控制。课题除了学习相应的硬件知识外,还要学习如何使用VHDL语言设计可编程逻辑器件。
未来的EDA技术向广度和深度两个方向发展.
(1)在广度上,EDA技术会日益普及.在过去,由于EDA软件价格昂贵,对硬件环境要求高,其运行环境是工作站和UNIX操作系统.最近几年,EDA软件平台化进展迅速,这些PC平台上的EDA软件具有整套的逻辑设计、仿真和综合工具.随着PC机性能的提高,PC平台上的软件功能将会更加完善.
(2)在深度上,EDA技术发展的下一步是ESDA伍electronic System Design Automation电子系统设计自动化)和CE (Concurrent Engineering并行设计工程).目前的各种EDA工具,如系统仿真,PCB布线、逻辑综合、DSP设计工具是彼此独立的.随着技术的发展,要求所有的系统工具在统一的数据库及管理框架下工作,由此提出了ESDA和CE概念。



第2章 EDA的发展历程及其应用
2.1电子设计自动化(EDA)发展概述
2.1.1什么是电子设计自动化(EDA )
  在电子设计技术领域,可编程逻辑器件(如PLD, GAL)的应用,已有了很好的普及。这些器件为数字系统的设计带来极大的灵活性。由于这类器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程、乃至设计观念。
电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,是20世纪90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术就是以计算机为工具,在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPGA/CPLD器件,就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。当然,这里的所谓EDA主要是指数字系统的自动化设计,因为这一领域的软硬件方面的技术已比较成熟,应用的普及程度也已比较大。而模拟电子系统的EDA正在进入实用,其初期的EDA工具不一定需要硬件描述语言。此外,从应用的广度和深度来说,由于电子信息领域的全面数字化,基于EDA的数字系统的设计技术具有更大的应用市场和更紧迫的需求性。
2.1.2 EDA的发展历史
EDA技术的发展始于70年代,至今经历了三个阶段。电子线路的CAD(计算机辅助设计)是EDA发展的初级阶段,是高级EDA系统的重要组成部分。它利用计算机的图形编辑、分析和存储等能力,协助工程师设计电子系统的电路图、印制电路板和集成电路板图;采用二维图形编辑与分析,主要解决电子线路设计后期的大量重复性工作,可以减少设计人员的繁琐重复劳动,但自动化程度低,需要人工干预整个设计过程。这类专用软件大多以微机为工作平台,易于学用,设计中小规模电子系统可靠有效,现仍有很多这类专用软件被广泛应用于工程设计。80年代初期,EDA技术开始技术设计过程的分析,推出了以仿真(逻辑模拟、定时分析和故障仿真)和自动布局与布线为核心的EDA产品,这一阶段的EDA已把三维图形技术、窗口技术、计算机操作系统、网络数据交换、数据库与进程管理等一系列计算机学科的最新成果引入电子设计,形成了CAE—计算机辅助工程。也就是所谓的EDA技术中级阶段。其主要特征是具备了自动布局布线和电路的计算机仿真、分析和验证功能。其作用已不仅仅是辅助设计,而且可以代替人进行某种思维。CAE这种以原理图为基础的EDA系统,虽然直观,且易于理解,但对复杂的电子设计很难达到要求,也不宜于设计的优化。
所以,90年代出现了以自动综合器和硬件描述语言为基础,全面支持电子设计自动化的ESDA(电子系统设计自动化),即EDA阶段、也就是目前常说的EDA.过去传统的电子系统电子产品的设计方法是采用自底而上(Bottom_ Up)的程式,设计者先对系统结构分块,直接进行电路级的设计。这种设计方式使设计者不能预测下一阶段的问题,而且每一阶段是否存在问题,往往在系统整机调试时才确定,也很难通过局部电路的调整使整个系统达到既定的功能和指标,不能保证设计一举成功。EDA技术高级阶段采用一种新的设计概念:自顶而下(Top_ Down)的设计程式和并行工程(Concurrent engineering)的设计方法,设计者的精力主要集中在所要电子产品的准确定义上,EDA系统去完成电子产品的系统级至物理级的设计。此阶段EDA技术的主要特征是支持高级语言对系统进行描述,高层次综合(High Level Synthesis)理论得到了巨大的发展,可进行系统级的仿真和综合。图2-1给出了上述三个阶段的示意图。
     
              图2-1 EDA发展阶段示意图



2.1.3 EDA的应用
 随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也依赖于EDA技术的应用。即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。
电子设计专家认为,单片机时代已经结束,未来将是EDA的时代,这是极具深刻洞察力之言。随着微电子技术的飞速进步,电子学进入了一个崭新的时代。其特征是电子技术的应用以空前规模和速度渗透到各行各业。各行业对自己专用集成电路(ASIC)的设计要求日趋迫切,现场可编程器件的广泛应用,为各行业的电子系统设计工程师自行开发本行业专用的ASIC提供了技术和物质条件。与单片机系统开发相比,利用EDA技术对FPGA/CPLD的开发,通常是一种借助于软件方式的纯硬件开发,可以通过这种途径进行专用ASIC开发,而最终的ASIC芯片,可以是FPGA/CPLD,也可以是专制的门阵列掩模芯片,FPGA/ CPLD起到了硬件仿真ASIC芯片的作用。
2.2基于EDA的FPGA/ CPLD开发
 我国的电子设计技术发展到今天,将面临一次更大意义的突破,即FPGA/CPLD (Field Programmable Gate Array,现场可编程门阵列/Complex Programmable Logic Device,复杂可编程逻辑器件)在EDA基础上的广泛应用。从某种意义上说,新的电子系统运转的物理机制又将回到原来的纯数字电路结构,但却是一种更高层次的循环,它在更高层次上容纳了过去数字技术的优秀部分,对(Micro Chip Unit) MCU系统是一种扬弃,在电子设计的技术操作和系统构成的整体上发生了质的飞跃。如果说MCU在逻辑的实现上是无限的话,那么FPGA/CPLD不但包括了MCU这一特点,而且可以触及硅片电路的物理极限,并兼有串、并行工作方式,高速、高可靠性以及宽口径适用性等诸多方面的特点。不但如此,随着EDA技术的发展和FPGA/CPLD在深亚微米领域的进军,它们与MCU, MPU, DSP, A/D, D/A, RAM和ROM等独立器件间的物理与功能界限已日趋模糊。特别是软/硬IP芯片(知识产权芯片;intelligence Property Core,一种已注册产权的电路设计)产业的迅猛发展,嵌入式通用及标准FPGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CPLD以其不可替代的地位及伴随而来的极具知识经济特征的IP芯片产业的崛起,正越来越受到业内人士的密切关注。
2.2.1 FPGA/CPLD简介
FPGA和CPLD都是高密度现场可编程逻辑芯片,都能够将大量的逻辑功能集成于一个单片集成电路中,其集成度已发展到现在的几百万门。复杂可编程逻辑器件CPLD是由PAL (Programmable Array Logic,可编程阵列逻辑)或GAL (Generic Array Logic,通用阵列逻辑)发展而来的。它采用全局金属互连导线,因而具有较大的延时可预测性,易于控制时序逻辑;但功耗比较大。现场可编程门阵列(FPGA)是由可编程门阵列(MPGA)和可编程逻辑器件二者演变而来的,并将它们的特性结合在一起,因此FPGA既有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。FPGA通常由布线资源分隔的可编程逻辑单元(或宏单元)构成阵列,又由可编程Ir0单元围绕阵列构成整个芯片。其内部资源是分段互联的,因而延时不可预测,只有编程完毕后才能实际测量。
 CPLD和FPGA建立内部可编程逻辑连接关系的编程技术有三种:基于反熔丝技术的器件只允许对器件编程一次,编程后不能修改。其优点是集成度、工作频率和可靠性都很高,适用于电磁辐射干扰较强的恶劣环境。基于EEPROM存储器技术的可编程逻辑芯片能够重复编程100次以上,系统掉电后编程信息也不会丢失。编程方法分为在编程器上编程和用下载电缆编程。用下载电缆编程的器件,只要先将器件装焊在印刷电路板上,通过PC, SUN工作站、ATE(自动测试仪)或嵌入式微处理器系统,就能产生编程所用的标准5V, 3.3V或2.5V逻辑电平信号,也称为ISP (In System Programmable)方式编程,其调试和维修也很方便。基于SRAM技术的器件编程数据存储于器件的RAM区中,使之具有用户设计的功能。在系统不加电时,编程数据存储在EPROM、硬盘、或软盘中。系统加电时将这些编程数据即时写入可编程器件,从而实现板级或系统级的动态配置。
2.2.2基于EDA工具的FPGA/CPLD开发流程
   FPGA/CPLD的开发流程:设计开始首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本方式(如VHDL, Verilog-HDL程序)或图形方式(原理图、状态图等)表达出来。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合准备。在此,对于多数EDA软件来说,最初的设计究竟采用哪一种输入形式是可选的,也可混合使用。一般原理图输入方式比较容易掌握,直观方便,所画的电路原理图(请注意,这种原理图与利用PROTEL画的原理图有本质的区别)与传统的器件连接方式完全一样,很容易为人接受,而且编辑器中有许多现成的单元器件可资利用,自己也可以根据需要设计元件(元件的功能可用HDL表达,也可仍用原理图表达)。当然最一般化、最普适性的输入方法是HDL程序的文本方式。这种方式最为通用。如果编译后形成的文件是标准VHDL文件,在综合前即可以对所描述的内容进行仿真,称为行为仿真。即将设计源程序直接送到VHDL仿真器中仿真。因为此时的仿真只是根据VHDL的语义进行的,与具体电路没有关系。在仿真中,可以充分发挥VHDL中的适用于仿真控制的语句,对于大型电路系统的设计,这一仿真过程是十分必要的,但一般情况下,可以略去这一步骤.


















图2-2 FPGA / CPLD开发流程
设计的第三步是综合,将软件设计与硬件的可实现性挂钩,这是将软件转化为硬件电路的关键步骤。综合器对源文件的综合是针对某一FPGA/CPLD供应商的产品系列的,因此,综合后的结果具有硬件可实现性。在综合后,HDL综合器一般可生成EDIF, XNF或VHDL等格式的网表文件,从门级来描述了最基本的门电路结构。有的EDA软件,具有为设计者将网表文件画成不同层次的电路图的功能。综合后,可利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。功能仿真仅对设计描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及具体器件的硬件特性,如延迟特性。一般的设计,这一层次的仿真也可略去。综合通过后必须利用FPGA/CPLD布局/布线适配器将综合后的网表式文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。适配完成后,EDA软件将产生针对此项设计的多项结果:1适配报告:内容包括芯片内资源分配与利用、引脚锁定、设计的布尔方程描述情况等;2时序仿真用网表文件;3下载文件,如JED或POF文件;4适配错误报告等。时序仿真是接近真实器件运行的仿真,仿真过程中己将器件硬件特性考虑进去了,因此仿真精度要高得多。时序仿真的网表式文件中包含了较为精确的延迟信息。如果以上的所有过程,包括编译、综合、布线/适配和行为仿真、功能仿真、时序仿真都没有发现问题,即满足原设计的要求,就可以将适配器产生的配置/下载文件通过FPGA/CPLD编程器或下载电缆载入目标芯片FPGA或CPLD中,然后进入如图1-2所示的最后一个步骤:硬件仿真或测试,以便在更真实的环境中检验设计的运行情况。这里所谓的硬件仿真,是针对ASIC设计而言的。在ASIC设计中,比较常用的方法是利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现;而硬件测试则是针对FPGA或CPLD直接用于电路系统的检测而言的。
2.2.3用FPGA/CPLD进行开发的优缺点
我们认为,基于EDA技术的FPGA/CPLD器件的开发应用可以从根本上解决MCU所遇到的问题。与MCU相比,FPGA/CPLD的优势是多方面的和根本性的:
1.编程方式简便、先进。FPGA/CPLD产品越来越多地采用了先进的IEEE 1149.1边界扫描测试(BST)技术(由联合测试行动小组,JTAG开发)和ISP(在系统配置编程方式)。在+5V工作电平下可随时对正在工作的系统上的FPGA/CPLD进行全部或部分地在系统编程,并可进行所谓菊花链式多芯片串行编程,对于SRAM结构的FPGA,其下载编程次数几乎没有限制(如Altera公司的FLEXI 10K系列)。这种编程方式可轻易地实现红外编程、超声编程或无线编程,或通过电话线远程在线编程。这些功能在工控、智能仪器仪表、通讯和军事上有特殊用途。
2.高速。FPGA/CPLD的时钟延迟可达纳秒级,结合其并行工作方式,在超高速应用领域和实时测控方面有非常广阔的应用前景。
3.高可靠性。在高可靠应用领域,MCU的缺憾为FPGA/CPLD的应用留下了很大的用武之地。除了不存在MCU所特有的复位不可靠与PC可能跑飞等固有缺陷外,FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,从而大大缩小了体积,易于管理和屏蔽。
4.开发工具和设计语言标准化,开发周期短。由于FPGA/CPLD的集成规模非常大,集成度可达数百万门。因此,FPGA/ CPLD的设计开发必须利用功能强大的EDA工具,通过符合国际标准的硬件描述语言(如VHDL或Verilog-HDL)来进行电子系统设计和产品开发。由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用的FPGA/ CPLD器件的硬件结构没有关系.                                                                                                                                  
所以设计成功的各类逻辑功能块软件有很好的兼容性和可移植性,它几乎可用于任何型号的FPGA/ CPLD中,由此还可以知识产权的方式得到确认,并被注册成为所谓的IP芯片,从而使得片上系统的产品设计效率大幅度提高。由于相应的EDA软件功能完善而强大,仿真方式便捷而实时,开发过程形象而直观,兼之硬件因素涉及甚少,因此可以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场的最宝贵的特征。美国TI公司认为,一个ASIC 80%的功能可用IP芯片等现成逻辑合成。EDA专家预言,未来的大系统的FPGA/CPLD设计仅仅是各类再应用逻辑与IP芯片的拼装,其设计周期最少仅数分钟。
5.功能强大,应用广阔。目前,FPGA/ CPLD可供选择范围很大,可根据不同的应用选用不同容量的芯片。利用它们可实现几乎任何形式的数字电路或数字系统的设计。随着这类器件的广泛应用和成本的大幅度下降,FPGA/CPLD在系统中的直接应用率正直逼ASIC的开发。同时,FPGA/CPLD设计方法也有其局限性。这主要体现在以下几点:
(1).FPGA/CPLD设计软件一般需要对电路进行逻辑综合优化((Logic段Synthesis & Optimization),以得到易于实现的结果,因此,最终设计和原始设计之间在逻辑实现和时延方面具有一定的差异。从而使传统设计方法中经常采用的一些电路形式(特别是一些异步时序电路)在FPGA/CPLD设计方法中并不适用。这就要求设计人员更加了解FPGA/CPLD设计软件的特点,才能得到优化的设计;
(2).FPGA一般采用查找表(LUT)结构(Xilinx), AND-OR结构(Altera)或多路选择器结构(Actel),这些结构的优点是可编程性,缺点是时延过大,造成原始设计中同步信号之间发生时序偏移。同时,如果电路较大,需要经过划分才能实现,由于引出端的延迟时间,更加大了延迟时间和时序偏移。时延问题是ASIC设计当中常见的问题。要精确地控制电路的时延是非常困难的,特别是在像FPGA/CPLD这样的可编程逻辑当中。
(3). FPGA/CPLD的容量和I/O数目都是有限的,因此,一个较大的电路,需经逻辑划分((Logic Partition)才能用多个FPGA/CPLD芯片实现,划分算法的优劣直接影响设计的性能;
(4).由于目标系统的PCB板的修改代价很高,用户一般希望能够在固定的引   分配的前提下对电路进行修改。但在芯片利用率提高,或者芯片I/O引出端很多的情况下,微小的修改往往会降低芯片的流通率;
(5).早期的FPGA芯片不能实现存储器、模拟电路等一些特殊形式的电路。最新的一些FPGA产品集成了通用的RAM结构。但这种结构要么利用率不高,要么不完全符合设计者的需要。这种矛盾来自于FPGA本身的结构局限性,短期内很难得到很好的解决。
6.尽管FPGA实现了ASIC设计的硬件仿真,但是由于FPGA和门阵列、标准单元等传统ASIC形式的延时特性不尽相同,在将FPGA设计转向其他ASIC设计时,仍然存在由于延时不匹配造成设计失败的可能性。针对这个问题,国际上出现了用FPGA阵列对ASIC进行硬件仿真的系统(如Quicktum公司的硬件仿真系统)。这种专用的硬件仿真系统利用软硬件结合的方法,用FPGA阵列实现了ASIC快速原型,接入系统进行测试。该系统可以接受指定的测试点,在FPGA阵列中可以直接观测(就像软件模拟中一样),所以大大提高了仿真的准确性和效率。
2.3硬件描述语言(HDL)
硬件描述语言(HDL)是相对于一般的计算机软件语言如C, Pascal而言的。HDL是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式。设计者可以利用HDL程序来描述所希望的电路系统,规定其结构特征和电路的行为方式;然后利用综合器和适配器将此程序变成能控制FPGA和CPLD内部结构、并实现相应逻辑功能的门级或更底层的结构网表文件和下载文件。硬件描述语言具有以下几个优点:a.设计技术齐全,方法灵活,支持广泛。b.加快了硬件电路的设计周期,降低了硬件电路的设计难度。c.采用系统早期仿真,在系统设计早期就可发现并排除存在的问题。d.语言设计可与工艺技术无关。e.语言标准,规范,易与共享和复用。就FPGA/CPLD开发来说,VHDL语言是最常用和流行的硬件描述语言之一。本次设计选用的就是VHDL语言,下面将主要对VHDL语言进行介绍。
2.3.1 VHDL语言简介
VHDL是超高速集成电路硬件描述语言的英文字头缩写简称,其英文全名                                                                                                                         是Very-High -Speed Integrated Circuit Hardware Description Language。它是在70- 80年代中由美国国防部资助的VHSIC(超高速集成电路)项目开发的产品,诞生于1982年。1987年底,VHDL被IEEE(The Institute of Electrical and产Electronics Engineers)确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本((IEEE std 1076-1987标准)之后,各EDA公司相继推出了自己的VHDL设计环境。此后,VHDL在电子设计领域受到了广泛的接受,并逐步取代了原有的非标准HDL。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即ANSI/IEEE std1076,1993版本。1996年IEEE 1076.3成为VHDL综合标准。
 VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适用于可编程逻辑芯片的应用设计。与其它的HDL相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件己不成问题。
VHDL语言在硬件设计领域的作用将与C和C++在软件设计领域的作用一样,在大规模数字系统的设计中,它将逐步取代如逻辑状态表和逻辑电路图等级别较低的繁琐的硬件描述方法,而成为主要的硬件描述工具,它将成为数字系统设计领域中所有技术人员必须掌握的一种语言。VHDL和可编程逻辑器件的结合作为一种强有力的设计方式,将为设计者的产品上市带来创纪录的速度
2.3.2 VHDL语言设计步骤
 利用VHDL语言进行设计可分为以下几个步骤:
 1.设计要求的定义。在从事设计进行编写VHDL代码之前,必须先对你的设计目的和要求有一个明确的认识。例如,你要设计的功能是什么?对所需的信号建立时间、时钟/输出时间、最大系统工作频率、关键的路径等这些要求,要有一个明确的定义,这将有助于你的设计,然后再选择适当的设计方式和相应的器件结构,进行设计的综合。
 2.用VHDL语言进行设计描述。
(1)应决定设计方式,设计方式一般说来有三种:自顶向下设计,自底向上设计,平坦式设计。                                                                                                                      
前两种方式包括设计阶层的生成,而后一种方式将描述的电路当作单模块电路来进行的。自顶向下的处理方式要求将你的设计划分成不同的功能元件,每个元件具有专门定义的输入和输出,并执行专门的逻辑功能。首先生成一个由各功能元件相互连接形成的顶层模块来做成一个网表,然后再设计其中的各个元件。而自底向上的处理方法正好相反。平坦式设计则是指所有功能元件均在同一层和同一图中详细进行的。
(2)编写设计代码。编写VHDL语言的代码与编写其它计算机程序语言的代码有很大的不同,你必须清醒地认识到你正在设计硬件,编写的VHDL代码必须能够综合到采用可编程逻辑器件来实现的数字逻辑之中。懂得EDA工具中仿真软件和综合软件的大致工作过程,将有助于编写出优秀的代码。
 3.用VHDL仿真器对VHDL原代码进行功能仿真。对于大型设计,采用VHDL仿真软件对其进行仿真可以节省时间,可以在设计的早期阶段检测到设计中的错误,从而进行修正,以便尽可能地减少对设计日程计划的影响。因为对于大型设计,其综合优化、配置往往要花费好几个小时,在综合之前对原代码仿真,就可以大大减少设计重复和修正错误的次数和时间。但对于小型设计,则往往不需要先对VHDL原代码进行仿真,即使做了,意义也不大。因为对于小型设计,其综合优化、配置花费的时间不多,而且在综合优化之后,你往往会发现为了实现性能目标,将需要修改你的设计。在这种情况下,用户事先在原代码仿真时所花费的时间是毫无意义的,因为一旦改变设计,还必须重新再做仿真。
4.利用VHDL综合优化软件对VHDL原代码进行综合优化处理。选择目标器件、输入约束条件后,VHDL综合优化软件工具将对VHDL原代码进行处理,产生一个优化了的网络表,并可以进行粗略的时序仿真。综合优化软件工具大致的处理过程如下:首先检测语法和语意错误;然后进行综合处理,对CPLD器件而言,将得到一组工艺专用逻辑方程,对FPGA器件而言,将得到一个工艺专用网表;最后进行优化处理,对CPLD的优化通常包括将逻辑化简为乘积项的最小和式,降低任何给定的表达式所需的逻辑块输入数,这些方程进一步通过器件专用优化来实现资源配置。对FPGA的优化通常也需要用乘积项的和式来表达逻辑,方程系统可基于器件专用资源和驱动优化目标指引来实现因式分解,分解的因子可用来对实现的有效性进行评估,其准则可用来决定是对方程序系统进行不同的因式分解还是保持现有的因子。准则通常是指分享共同因子的能力,即可以被暂存,以便于和任何新生成的因子相比较。
5.配置。将综合优化处理后得到的优化了的网络表,安放到前面选定的CPLD或FPGA目标器件之中,这一过程称为配置。在优化

5. 现在测量行业的标配是什么?

伴随着测试需求的多样化和复杂化,以软件为核心的虚拟仪器测试策略正逐渐成为行业主流的技术,并得到广泛的应用,在提高效率的同时降低测试成本。在新兴商业技术不断涌现的今天和未来,测试测量行业正呈现出五个重要的发展方向。 
趋势一:软件定义的仪器系统成为主流 
  如今的电子产品(像iPhone和Wii等)已越来越依重于软件去定义产品的功能。同样的,在产品设计和客户需求日益复杂的今天,用于测试测量的仪器系统也朝着以软件为核心的模块化方向发展,使得用户能够更快更灵活的将测试集成到设计过程中去,进一步减少了开发时间。 
  通过软件定义模块化硬件的功能,用户可以快速实现不同的测试功能,并应用定制数据分析算法和创建自定义的用户界面。相比于传统仪器固定的功能限制和只是“测试结果”的呈现,以软件为核心的模块化仪器系统能够赋予用户更多的主动权,甚至将自主的知识产权(IP)应用到测试系统中。(见图1) 
  在业界,被认为是最保守的客户之一的美国国防部在2002年向国会提交的报告中指出下一代测试系统(NxTest)必须是基于现成可用商业技术(COTS)的模块化的硬件,并同时强调了软件的能动作用。最新的合成仪器(Synthetic Instrumentation)的概念也无非是经过重新包装的虚拟仪器技术,将软件的开放性和硬件的模块化重新结合在了一起。 
  在媒体界,《电子系统设计》杂志的编辑Louis Frenzel先生在他最近关于测试行业趋势的文章(Synthetic Instrumentation No Longer A Test Case)中也再次肯定了虚拟仪器技术对于测试测量行业的革新作用以及软件定义仪器的发展方向。 
趋势二:多核/并行测试带来机遇和挑战 
  多核时代的来临已成为不可避免的发展趋势,双核乃至八核的商用PC现在已随处可见。得益于PC架构的软件定义的仪器,用户可以在第一时间享受到多核处理器为自动化测试应用带来的巨大性能提升。 
  要充分发挥多核的性能优势,就必须创建多线程的应用程序,例如我们可以将自动化测试程序的数据采集、数据分析、数据记录乃至用户界面部分创建不同的线程,从而分配到不同的核上并行的运行。不过,这样并行的开发理念使得习惯于传统串行开发方式的工程师难以适应,尤其是当核的数目越来越多...... 
  挑战和机遇往往是并存的,作为图形化语言的代表,LabVIEW在设计当初就考虑到了并行处理的需求,从LabVIEW 5.0开始支持多线程到现在已有10多年的历史。可以毫不夸张地说,天生并行的LabVIEW就是这样一种驰骋多核技术时代的编程语言,通过自动的程序多线程化(见图2),开发人员可以无需考虑底层的实现机制,就可以高效地享用多核技术所带来的益处。 
  无论是欧南天文台极大望远镜高达2,700万次乘加运算的镜面控制,到Tokamak核聚变装置的实时处理运算,还是NASA的飞机安全性测试和TORC汽车控制快速原型设计,LabVIEW多核技术都为这些应用带来了巨大的性能和吞吐量的提升,随着多核技术的进一步发展,提升的幅度将更为可观。 
趋势三:基于FPGA的自定义仪器将更为流行 
  随着设计和测试的要求越来越高,FPGA(现场可编程门阵列)技术正逐渐被引入到最新的模块化仪器中,这也就是我们所说的基于FPGA的自定义仪器。 
  FPGA的高性能和可重复配置特性一直是硬件设计工程师们的最爱,而对于测试工程师而言,又何尝不想拥有硬件级的确定性和并行性呢?像诸如实时系统仿真、高速内存测试等应用都需要用到FPGA来确保响应的实时性和高速的数据流入和流出,FPGA的IP核更是可以为工程师植入自主知识产权的算法提供契机。然而,苦于对硬件设计知识的缺乏和对VHDL或Verilog语言编程的恐惧,许多测试工程师对于FPGA技术望而却步。 
  现在,NI提供的R系列数据采集和FlexRIO产品家族将高性能的FPGA集成到现成可用的I/O 板卡上,供用户根据应用进行定制和重复配置,同时配合LabVIEW FPGA直观方便的图形化编程,用户能够在无需编写底层VHDL代码的情况下,快速地配置和编程FPGA的功能,用于自动化测试和控制应用。 
  前段时间,欧洲核子研究中心(CERN)为世界最强大的粒子加速度器--大型强子对撞机(LHC)配备了超过120套带有可重复配置I/O模块的NI PXI系统,用于控制瞄准仪的运动轨迹和监测其实时位置,从而确保粒子在既定的路径中运作。为了保证极高的可靠性和精确性,FPGA成为其必备的测试和控制技术。 
  随着对FPGA技术应用复杂性的简化,可以预计,拥有高性能和灵活性的FPGA技术将越来越多的被应用于未来的仪器系统中。 
趋势四:无线标准测试的爆炸性增长 
  近年来无线通信标准的发展可谓是日新月异,从2000年前只有四五种的无线标准到现在众多新标准如雨后春笋般涌现。越来越多的消费电子产品和工业产品都或多或少的集成了无线通信的功能,像苹果公司最新的3G版iPhone手机,更是同时集成了UMTS, HSDPA, GSM, EDGE, Wi-Fi, GPS和蓝牙等多种最新的无线标准。这些都给无线技术的开发和测试带来了巨大的挑战,测试技术如何跟上无线技术的发展成为工程师面临的最大难题。通常传统射频仪器的购买周期是5至7年,而新标准和新技术的推出周期却是每两年一轮,购买的射频测试设备由于其固件和功能的限定通常难以跟上新标准的发展速度。 
  面对这样的挑战,一种以软件为核心的无线测试平台正崭露头角。信号的上下变频和数字化由模块化的射频硬件的完成,而编解码和调制解调的过程全部通过软件实现。这样,在统一的模块化硬件平台上,只需修改软件就可以满足不同无线标准的测试需求,使得工程师有能力在第一时间测试最新的标准,加快产品的上市时间。 
  NI LabVIEW和PXI RF平台就是这样一个软件无线电的测试平台,多年来已经成为工程师和科学家们开发无线标准和测试无线应用的必备工具。德州大学奥斯汀分校的师生基于NI的软件无线电平台,在短短6周时间内开发出MIMO-OFDM 4G的系统原型;成都华日通信公司(国内无线电频谱管理设备主要供应商)利用NI PXI矢量信号分析仪和LabVIEW开发了带有自主产权的HR-100宽带无线电接收机和监测系统,已广泛应用于国内的频谱监测和信号定向领域。聚星仪器(NI大陆地区系统联盟商)也开发出了全球首个支持C1G2 RFID标准全部指令的测试设备,并实现了与RFID标签微秒级的实时通信。 
趋势五:协议感知(Protocol-Aware)ATE将影响半导体的测试 
  如今的半导体器件变得愈加的复杂,高级的片上系统(SoC)和封装系统(SiP)相比典型的基于矢量的器件测试而言,需要更为复杂的系统级的功能测试。现在器件的功能也不再是通过简单的并行数字接口实现,而是更多的依赖于高速串行总线和无线协议进行输出,这就要求测试设备和器件之间能够在指定的时钟周期内完成高速的激励和响应测试。 
  复杂的测试需求催生了协议感知(Protocol-Aware)ATE的诞生,Andrew Evans在2007国际测试会议(ITC)上发表的论文“The New ATE - Protocol Aware”中首次提出了这个概念。这是一种模仿器件真实使用环境(包括外围接口)的方法,按照器件期望的使用方式,进行有针对性的器件功能测试和验证。 
  国际半导体测试协会(STC)和新近成立的半导体测试合作联盟(CAST)都在考虑为自动化测试厂商制定开放的测试架构以满足日益增加的半导体测试需求和降低测试成本。NI作为STC协会便携式测试仪器模块(PTIM)工作组的主席,正在致力于创建一种新的指南和标准,使得工程师能够将第三方的模块化测试仪器(如PXI)集成到传统的半导体ATE中,以实现更为灵活自定义、符合“协议感知”要求的半导体测试系统。

现在测量行业的标配是什么?

6. 求助求救:怎么样labview7.1来实现数字电路实验?

http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB06935847
这里有卖参考书的

http://bbs.btbbt.com/viewthread.php?tid=361852
这里有链接下载

关于LabVIEW 7.1:

LabVIEW 7.1是NI发布的图形化开发工具的最新版本,通过升级各种平台上的自动化仪器驱动以及实时系统的高级调试功能和底层运行时序,LabVIEW7.1把Express技术扩展到更广泛的自动化测量应用中。

NI LabVIEW——高效的图形化编程环境,提供了一种全新的程序编写方法 ,用图标代替文本代码创建应用程序。它提供了一个直觉式的环境,与测量硬件紧密结合,能让工程师、科学家们迅速开发出有关...  
    通过LabVIEW的高级分析和自动化性能与泰克示波器的高保真信号采集和高精度测量相结合,您就能快速解决设计上面临的挑战,更能高效率的完成自动化测试任务。现在,通过NI LabVIEW与任何一台泰克Open Windows示波器的集成,您就可以充分利用系统的最大灵活性来提高您的生产效率 

LabVIEW 7.1新增特性:

-- Express技术可连接更多I/O信号;

-- 更多分析函数速度提高200%;

-- 代码优化工具;

-- 高级编程功能用于RT(实时)应用;

-- 更多用于PDAs和FPGAs应用开发的新特性...

7. 虚拟仪器技术的优势

虚拟仪器技术的四大优势: 阿尔卡特美国公司是全球领先的世界上电信设备制造商领导者之一。位于加州佩塔卢马的接入部,开发Litespan接入平台一种光纤数字环路载波(DLC)。DLC能够将电话公司中心机房普通铜线上的电话业务传递到更远的地方。通过LabVIEW,在相对短的时间内开发了一个全面测试方案。同时测试对每个信道单元的16个ANSI要求的环路和4条ISDN线路的一个信道单元进行测试时,每项测试所花费的时间为12分钟。由于一些信道单元需要测试某个温度范围内的状况,因而整个测试需要几天的时间。Allen Klein美国阿尔卡特公司Litespan硬件质量部的一位工程师,在程序中增加了一项功能,使得测试可以全天进行,甚至在周末也行。这项功能极大地扩展丰富了测试平台,提高了测试效率。虚拟仪器技术是测试技术和计算机技术相结合的产物,是两门学科最新技术的结晶,融合了测试理论、仪器原理和技术、计算机接口技术、高速总线技术以及图形软件编程技术于一体。虚拟仪器是由计算机硬件资源和用于数字分析与处理、过程通讯以及图形界面的软件组成的测控系统,它把仪器生产厂家定义仪器功能的方式转变为由用户自己定义仪器功能,也就是说传统测试中使用厂家生产的仪器,仪器的性能及功能在出厂时已被厂家定义,用户只能根据自己的要求和需要选择和使用;而虚拟仪器是在一定的硬件基础上,用户可根据测试的需求,编写软件定义自己的仪器功能。同样的硬件配置可开发出不同的仪器,例如在仪器面板上显示采集信号在时域的波形,那么该仪器为虚拟示波器;如果在程序中对采集信号进行FFT变换,那么该仪器就是虚拟频谱分析仪。笔者则用LabWindows/CVI来开发虚拟经纱张力测试仪,用来测试织机在工作时经纱张力的变化情况。 系统结构虚拟经纱张力测试仪的测试系统由传感器、数据采集卡、接口总线、硬件驱动程序和开发的测试软件构成,数据采集卡采用6024E,LabWindows/CVI平台开发测试软件,在Windows98操作系统下运行。信号采集由于要测出经纱张力与主轴转角的关系,所以用了3个传感器。传感器1是经纱张力传感器,把经纱张力物理信号转化为电信号;传感器2是光电脉冲传感器,用来测量主轴转角;传感器3是霍尔传感器,将霍尔电压作为测量触发信号。各个传感器输出的信号都要经过一个信号调理电路对信号进行处理(如滤波、放大等),从混合信号中取出待测的有用信号,送人数据采集卡,并要适合数据采集卡的电压范围,通过总线结构送进计算机进行处理。数据采集借助软件来控制整个DAQ系统,包括采集原始数据、分析数据等,调理后的信号经多路开关在软件设定采样率的控制下,巡回采集并放大,再经采样与保持及A/D转换器单元被量化成数字信号,成为计算机可以处理的信号,由虚拟仪器软件对测试信号进行计算、分析、显示,并储存结果。 经纱张力测试仪的面板结构虚拟经纱张力测试仪的面板右边的七个文本框输入内容,是用户根据实际测量的需求以及与采集卡的连接通道在开始测试前设定的。测量时,打开测试仪器开关,仪器就可以工作;按下采集数据,稍等几秒,面板上就会显示出经纱张力的波形图。保存数据就是对测量的原始数据、信号处理后的数据以及需要提供给用户的数据存取;读数据是读取事先已经测量的数据,然后在仪器面板上绘出曲线,这有利于事后分析;关闭仪器则退出测试状态。虚拟经纱张力测试仪的软件面板上的数据采集、关闭仪器、保存数据等命令按钮通过回调函数来实现各自的功能,整个源代码中数据采集的回调函数caiji是程序的关键。 虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。目前虚拟仪器技术已经普遍被应用于测试行业,甚至自动化、石油钻探和提炼、生产中的机器控制等领域。传统仪器在测量测试领域发挥着重要作用,但是同时也存在着诸多问题,如灵活性不够,精度不够高。而虚拟仪器解决了这些问题,更具有灵活性,同时性能和精度进一步提升,而甚至解决了传统仪器无法实现的测量,其可扩展性和低成本让厂商对虚拟仪器越来越重视。使用基于软件配置的模块化仪器很好的解决了资源配置和重复等问题,是未来仪器发展的主流方向。虚拟仪器技术利用了快速发展的PC架构,高性能的半导体数据转换器,以及引入了系统设计软件,使得在提升了技术能力的同时降低了成本。尤其是随着PC性能的不断提升,使得虚拟仪器技术也快速发展起来,并实现了更多的新应用。高性能、低成本的A/D和D/A转换器的出现和发展,也推动了虚拟仪器技术的发展。虚拟仪器技术硬件可以利用大量生产的芯片作为测量的前端组件。系统设计软件也成为虚拟仪器技术发展的一大动力,而采用图形化的数据流语言的LabVIEW目前也被广泛应用其中。目前虚拟仪器技术的扩展功能越来越强大,能够在PC上开发测试程序,在嵌入式处理器和FPGA(现场可编程门阵列)上设计硬件等。这些为用户设计测试系统,定义硬件功能等提供了一个独立环境。因此虚拟仪器以其众多优势逐渐取代传统仪器发挥着重要作用,其应用领域将会越来越广泛。 虚拟仪器是今后仪器仪表、测试控制研究与发展的方向,用NI公司的LabWindows/CVI作为软件开发平台,比常用的面向对象软件编程难度大大降低,使得软件开发效率高,界面友好,功能强大,且扩展性好,对采集到的数据可用于高级分析库进行信号处理,也可以为了使所得测试曲线符合实际情况,进行拟合处理。总之,虚拟仪器有强大的功能,它强调“软件就是仪器”,用软件代替硬件,易开发、易调试,可有效节约资金。

虚拟仪器技术的优势

8. 自动化专业的需要学习FPGA吗?对我们专业怎么样啊?求高手指导

本科生自动化专业的话,学学fpga有好处,fpga的应用领域很多,至于它是干嘛的百度一下吧