搜档网
当前位置:搜档网 › FPGA的快速入门经验谈(part1)

FPGA的快速入门经验谈(part1)

FPGA的快速入门经验谈(part1)

FPGA的快速入门经验谈(part1)

有很多年轻人,被割裂了历史,被荒废了未来,迷茫,迷茫到几乎绝望,不过,他们还年轻,青春尚存,还有创造力,还有奋斗的资本,其中不乏不甘心被抛弃,被覆盖之人。他们还在努力,希望把自己未来的主动权更多地掌握在自己手上学习和创造是一条和平的成功之路,但是,学什么,怎么学,怎么用,何处用?有一个领域,很多人,特别是曾学习过单片机的年轻人很感兴趣这就是FPGA芯片的开发应用,但面对FPGA技术所涉及的繁杂技术,大家普遍又感觉到学起来很难,无从下手,无从突破,前景不明,缺乏信心,本帖针对FPGA或单片机的快速入门学习,介绍了一种方法:柏氏7步FPGA 快速入门学习法,供大家参考。

柏氏学习法要达到两个主要目的:1.让初学者轻松、快速地入门2.与学习者探讨FPGA 相关的应用和市场前景为实现第一个目的,我们将采用打穿插的学习技巧,为实现第二个目的,我们与学习者漫谈又哪些可以抢先占领的行业制高点。

柏氏7步FPGA快速入门学习法共分7部分第一到第四部分为穿插式入门学习部分,是为了让初学者以最短的时间实现知识、概念和心理的快速入门。这4个部分,对于FPGA和单片机的学习都适用。第五部分至第七部分是沙盘谈兵式的介绍,告诉学员FPGA的特有技术优势、实现技巧和市场前景。这七个部分分别是:第一部分:了解下载线和JTAG第二部分:制作最简易的开发板第三部分:最偷懒的编程第四部分:检验入门成果第五部分:SOPC及实现技巧第六部分:专业产品的开发第七部分:个人奋斗特定IP的开发(上部:入门篇)FPGA入门学习网络讲座:柏氏7步FPGA快速入门学习法第一部分:了解下载线与JTAG很多人觉着学习FPGA或单片机很困难,为什么?内容太多,头绪太乱!我们第一步的任务就是:分解和简化问题。无论是FPGA还是单片机的开发,都要涉及到三个部分组成:开发平台(计算机),下载线,开发板(学习板)其中1.开发平台在开发初期并不需要下载线和开发板的支持就能立运行。2.下载线只是在目标代码下载或运行调试时才用到3.开发板在下载完毕后自己能够独立运行根据以上特点,我们采用各个击破的策略去学习和分析这几个部分。首先是最简单的下载线部分。每个厂家的开发模式都是

一个硬件工程师高手的设计经验分享(上)

推荐到论坛 一:成本节约 现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K 吧 点评:市场上不存在5K 的阻值,最接近的是 4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K 高4倍和2 倍。20%精度的电阻阻值只有1、1.5、2.2、3.3、4.7、6.8几个类别(含10的整数倍);类似地,20%精度的电容也只有以上几种值,如果选了其它的值就必须使用更高的精度,成本就翻了几倍,却不能带来任何好处。 现象二:面板上的指示灯选什么颜色呢?我觉得蓝色比较特别,就选它吧 点评:其它红绿黄橙等颜色的不管大小(5MM 以下)封装如何,都已成熟了几十年,价格一般都在5毛钱以下,而蓝色却是近三四年才发明的东西,技术成熟度和供货稳定度都较差,价格却要贵四五倍。目前蓝色指示灯只用在不能用其它颜色替代的场合,如显示视频信号等。 现象三:这点逻辑用74XX 的门电路搭也行,但太土,还是用CPLD吧,显得高档多了 点评:74XX的门电路只几毛钱,而CPLD至少也得几十块,(GAL/PAL虽然只几块钱,但公司不推荐使用)。成本提高了N 倍不说,还给生产、文档等工作增添数倍的工作。现象四:我们的系统要求这么高,包括MEM、CPU、FPGA等所有的芯片都要选最快的 点评:在一个高速系统中并不是每一部分都工作在高速状态,而器件速度每提高一个等级,价格差不多要翻倍,另外还给信号完整性问题带来极大的负面影响。 现象五:这板子的PCB 设计要求不高,就用细一点的线,自动布吧 点评:自动布线必然要占用更大的PCB 面积,同时产生比手动布线多好多倍的过孔,在批量很大的产品中,PCB 厂家降价所考虑的因素除了商务因素外,就是线宽和过孔数量,它们分别影响到PCB 的成品率和钻头的消耗数量,节约了供应商的成本,也就给降价找到了 理由。 现象六:程序只要稳定就可以了,代码长一点,效率低一点不是关键 点评:CPU 的速度和存储器的空间都是用钱买来的,如果写代码时多花几天时间提高一下程序效率,那么从降低CPU 主频和减少存储器容量所节约的成本绝对是划算的。CPLD/FPGA设计也类似。 二:低功耗设计 现象一:我们这系统是220V供电,就不用在乎功耗问题了 点评:低功耗设计并不仅仅是为了省电,更多的好处在于降低了电源模块及散热系统的成本、

一个合格的FPGA工程师需要掌握哪些知识

一个合格的FPGA工程师需要掌握哪些知识?这里根据自己的一些心得总结一下,其他朋友可以补充啊。 1.Verilog语言及其于硬件电路之间的关系。 2.器件结构(最好熟练掌握Spartan3,Vertix4系列的器件结构,及其资源于Verilog行为描述方法的关系。)。 3.开发工具(熟练掌握Synplify,Quartus,ISE,Modelsim)。 4.数字电路(组合电路,触发器,特别是D触发器构成分频器,奇数倍分频占空比为50%,时序电路,并且能用Verilog语言描叙。)。 5.熟悉FPGA设计流程(仿真,综合,布局布线,时序分析)。 6.熟练掌握资源估算(特别是slice,lut,ram等资源的估算)。 7.同步设计原理。 8.熟练掌握基本概念(如建立时间,保持时间,流量(即所做FPGA设计的波特率)计算,延迟时间计算(所做FPGA设计),竞争冒险,消除毛刺的方法等等)。 9.具备具体设计经验(对应届生而言如毕业设计)。 10.良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考虑)。 一个合格的FPGA工程师至少在以下三个方面的一个非常熟悉: 1.嵌入式应用 2.DSP应用 3.高速收发器应用 将自己的走过的弯路和总结的经验与大家分享一下,希望对您有一点点

的参考价值。 首先从先从如何成为一个合格的设计者说起吧!初学者觉得一切都是挑战,一切都新鲜,不知从何处下手。我总结了学习EDA逻辑设计的4个步骤,请拍砖! 1。首先,应该好好学习一下FPGA/CPLD的设计设计流程。 不要简单的以为就是设计输入-》仿真-》综合-》实现那么一回事,要抠细,要学精,要多问每个步骤的注意事项,区分相关步骤的联系和区别。比如要搞清楚功能仿真、综合后仿真、Translate后仿真、Map 后的仿真、布局布线后仿真的作用都是什么,什么时候应该做,什么时候可以不做这些仿真!学习清楚了设计流程最大的好处就是有利于培养良好的EDA设计习惯,日后会受益非浅! 2。关于设计输入和Coding Style。 设计输入最好学习HDL语言,Verilog、VHDL都可以,可以把状态机输入和原理图输入作为补充内容,但不是重点。我在前面的帖子已经反复强调了Coding Style的重要性。因为它是逻辑设计人员的一个基本业务素质。而且Coding Style不是看几篇文章,学几条原则就能够成为高手的,他需要您在工作中不断的体会和积累,在学习的最初,有Coding Style的意识,设计者就会有意的积累,对日后发展很有好处。反之则后患无穷。 3。培养硬件的意识,培养系统的观念。 我也在交流和授课的时候很强调硬件意识,如果从形式上看,逻辑设计随着智能化和优化手段的不断发展最后会越来越灵活,越来越简单。比

(完整版)FPGA资深FAE的经验独白

骏龙科技Andrew —— FPGA资深FAE的经验独白 时间:2014-08-25 来源:elecfans 作者: 关键字:FPGA FAE骏龙科技 看似简单的几个问题,Andrew却回答的井井有条,小编已经没有办法有什么其他词语去形容了。本文Andrew不仅仅对FPGA入门学习流程做了详细的分享,更是对FPGA开发工作的要求分成大公司和小公司两个层面来分析。你能想象曾经从一个疏忽学业的人成为一名资深FAE的嘛? 1. 您认为想学FPGA的话,先学好什么才最重要? Andrew:我们玩FPGA的通常就是跟数字电路打交道,要想玩得转,必须先学习并掌握最最基础的数字电路和HDL硬件描述语言,当然这只是入门必备,实际上远远不够。个人拙见,要入行除了至少掌握一种FPGA的仿真及开发调试流程之外;起码还要了解一些模拟电路知识,掌握诸如电源纹波、时钟抖动、信号质量等经常需要测量的硬件参数的测试方法;起码还要掌握一种原理图和Layout设计软件,能够查看分析调试电路板上的电路模块,如电源、时钟、存储器、配置、I/O和高速收发器等模块;起码还要掌握一种单片机的开发流程,项目中难免有一些需要配置控制的需求,使用外置单片机或者内置ARM硬核或者其他软CPU来实现,简单又方便;由于本人水平有限,其他方面这里就不再赘述。 那么,针对FPGA入门学习的一般流程,简单总结一下,供朋友们参考,有经验的大牛可以绕道: 1.首先要有开发平台,把该准备的都准备好,磨刀不误砍柴工: 比如ALTERA的Quartus II软件、开发板和配置调试工具USB Blaster,以及仿真软件Modelsim SE。软件可以从网上下载,入门功能的许可的和谐方法一大堆;开发板和USB Blaster可以借,可以买,动手能力强的朋友,自己画一块也行。对于初学者,建议找一块有详细配套教程的开发板。 2. 对于新手来讲,按部就班地学习往往就是最快的学习方法: 照猫画虎尽管囫囵吞枣一知半解,但起码能把开发流程摸熟,能跑起来。刚拿到开发板,肯定是丈二和尚摸不着头脑。这个时候,建议先根据开发板的配套教程,把原理图上的各项模块功能厘清,把FPGA周围的电源、时钟、复位、配置、GPIO和连接器等的电路原理理一理分析分析。再按照配套教程中介绍的流程,把配套的测试工程跑通,在这个阶段,

10年FPGA开发经验的工程师肺腑之言

10年FPGA开发经验的工程师肺腑之言 从大学时代第一次接触FPGA至今已有10多年的时间。至今记得当初第一次在EDA实验平台上完成数字秒表,抢答器,密码锁等实验时,那个兴奋劲。当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的。后来读研究生,工作陆陆续续也用过Quartus II,Foundation,ISE,Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理图设计强很多。 在学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但我个人认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL 语言大有裨益,往往会起到事半功倍的效果。 当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA设计也无例外。下面就以我的切身体会,谈谈FPGA设计的经验技巧。 1)看代码,建模型 只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。 例如: 上面这段代码实现的功能就是一个带使能端的2选1数据选择器,如下图所示。

再例如: 上面这段always实现的是带同步清零端的串并转换移位寄存器,位宽为width,下图为8位电路模型 当你具备了一定的识代码能力之后,你会发现原来Verilog不是那么的枯燥,只不过是一个个电路模型的拼搭而已。 2)组合逻辑中的if...else...与case 对于多输入端的组合逻辑来说,如果不需要考虑优先级应该尽量采用case语句来描述,这样综合出来的电路并行度要大一些,如果采用if...else...结构,综合出来的电路都是串行的,增大了信号时延路径。降低寄存器间组合路径的延迟是提高系统工作频率的主要手段,因此在完成相同功能的前提下应该尽量使用并行结构逻辑。

FPGA学习步骤30页

FPGA学习步骤,我的体会 FPGA在目前应用领域非常,在目前的单板设计里面,几乎都可以看到它的身影。从简单的逻辑组合,到高端的图像、通信协议处理,从单片逻辑到复杂的ASIC原型验证,从小家电到航天器,都可以看到FPGA应用,它的优点在这里无庸赘述。从个人实用角度看,对于学生,掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用fgpa可以让设计变得非常有灵活性。掌握了fpga的设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但fpga的入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。fpga的设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很 容易就过去。 我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对fpga的学习步骤理解写出来,仅是作为一个参考,不对的地方,欢迎大家讨 论和指正。 1、工欲善其事,必先利其器。

计算机必不可少。目前FPGA应用较多的是Altera 和xilinx这两个公司,可以选择安装quartusII或者ISE 软件。这是必备的软件环境。 硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算什么? 2、熟悉verilog语言或者vhdl语言,熟练使用 quartusII或者ISE软件。 VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载 等过程。 起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。 3、设计一个小代码,下载到目标板看看结果 此时可以设计一个最简答的程序,譬如点灯。如

基于verilog的FPGA编程经验总结

基于verilog的FPGA编程经验总结 用了半个多月的ISE,几乎全是自学起来的,碰到了很多很多让人DT好久的小问题,百度也百不到,后来还是都解决了,为了尽量方便以后的刚学ISE的童鞋不再因为一些小问题而纠结,把这几天的经验总结了一下。好了,废话不多说,上料! 1.用ISE仿真的时候.所用变量一定要初始化. ISE默认初始量为”XXXXX”, 而Quarters是默认为”00000”的, 其实实际上, 下到FPGA里后也是默认为0的,只是可以说ISE严谨得令人DT吧. 比如说用一个累加器, result = A+B+result ,必须保证在某一刻A, B, result都为定值时, 之后的数据才不会一直为”XXXXX”; 2.所有的中间线(就是module间用来传递参数的信号)都要用wire定义一下. 这个ise一般会提醒的; 3.任何一个warning都是有用的; 4.debug时要多把中间变量设成输出,然后查看仿真波形; 5.其实,新版本还是比较好用的.虽然取消了test bench wave 功能. 但是最好学会编测试文件,后期比test bench wave好用, 而且貌似一旦测试信号太多,test bench wave就不

显示某些输出了; 6. warning: Nod is unconnected. 表明所在的模块没用被执行,一般是参数没进来, 或者进来的参数不对(“XXXX”之类)的原因引起的. 7.建立rom时候,Error: sinrom can’t be resolved. 因为在把程序挪地方的时候,sinrom.ngc文件没有一同拷过来. 8.把”XXXXX”信号处理掉的一个方法可以是: 从信号中随意选出一位if (data[0] == 0) ....; else if (data[0] == 1).... else data = 0; 就可以把”XXXX”信号给清成”0000”了. 可以很好的解决1中仿真的问题. 9.如果某一个不是时钟的信号被当作周期信号来用的话,就会出现WARNING:Route:455 - CLK Net:trn_clk_OBUF may have excessive skew. because 0 CLK pins and 1 NON_CLK pins failed to route using a CLK template 不管也行. 10. 一开始用FPGA时不要害怕,用ucf文件配好引脚,直接LOAD,先不用管什么区域约束,以后进阶了再学. . 11.暂时就记得这些,以后再补充吧.

FPGA学习心得体会

篇一:fpga学习心得大报告 《fpga技术基础》学习报告 --课程内容学习心得 姓名: 学号:年级专业: 指导教师: 瞿麟 201010401128 自动化101薛小军摘要从开始学fpga到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,fpga学习总结。但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。 关键词 fpga de2板 quartusii软件 verilog语言 引言 fpga是什么?fpga现状?怎样学习fpga? fpga是现场可编程门阵列的简称,fpga的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以asic转向fpga, fpga正以各种电子产品的形式进入了我们日常生活的各个角落。 正文 (1)掌握fpga的编程语言 在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从c语言开始入门,当掌握了c语言之后,开发单片机应用程序也就不是什么难事了。学习fpga也是如此,fpga的编程语言有两种:vhdl和verilog,这两种语言都适合用于fpga的编程。 (2)fpga实验尤为重要 除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的fpga里运行起来,这时我们需要选一块板子进行实验,我们选择使用de2板才进行试验。 初识de2开发板 de2的资源de2的资源非常丰富,包括 1. 核心的fpga芯片-cyclone ii 2c35 f672c6,从名称可以看出,它包含有35千个le,在altera的芯片系列中,不算最多,但也绝对够用。altera下载控制芯片- epcs16以及usb-blaste对jtag的支持。 2.存储用的芯片有: 512-kb sram,8-mbyte sdram,4-mbyte flash memory 3. 经典io配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16*2字符液晶显示屏, 4. 超强多媒体:24位cd音质音频芯片wm8731(mic输入+linein+ 标准音频输出),视频解码芯片(支持ntsc/pal制式),带有高速dac视屏输出vga模块。 5.更多标准接口:通用串行总线usb控制模块以及a、b型接口,sd card接口,irda红外模块, 10/100m自适应以太网络适配器,rs-232标准串口, ps/2键盘接口 6.其他:50m,27m晶振各一个,支持外部时钟, 80针带保护电路的外接io 7.此外还有:配套的光盘资料,qutuarsii软件,niosii 6.0ide,例程与说明文档。 关于管脚分配 当我们创建一个fpga用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的fpga片外硬件电路一一对

SignalTap_ELA的FPGA在线调试技术

经验交流 EXPERIENCE EXC HAN GE Signal T apII ELA 的FPGA 在线调试技术 刘政,蒋志勇 (桂林航天工业高等专科学校电子工程系,桂林541004) 在设计基于FPGA 的电子系统时,一般需要用示波器、逻辑分析仪等外部测试设备进行输入输出信号的测试,借助测试探头把信号送到测试设备上进行观察分析。当然,前提是需要保留足够多的引脚,以便能选择信号来驱动I/O 进行测试。但是外部的测试设备在测试FPGA 系统时,常会遇到这样的情况:FPGA 的I/O 引脚数量不够丰富,PCB 布线和封装工艺复杂导致I/O 引脚引出困难,外部测试探头有影响FPGA 信号时序和完整性的可能 [1-2] 。 如果能在FP GA 内部嵌入具有外部测试设备功能的逻辑测试模块,那么以上问题就可以一一解决。Signal 2 Tap II 就是这样一种嵌入式逻辑分析器(embedded logic analyzer ),简称为Signal Tap II ELA 。它是Quart usII 软件 中集成的内部逻辑分析软件,使用它可以实时观察内部信号波形,方便用户查找设计的缺陷。 1SignalTapII E LA 的原理 S ignal T apII ELA 是Quartus 软件中第二代系统级调试 工具。将Signal T apII ELA 代码和系统逻辑代码组合交由 QuartusII 编译、综合、布局布线,生成sof 文件中内含Sign 2al T apII ELA ,把sof 文件配置到FPG A 内。FPGA 运行时, 一旦满足待测信号的触发条件,Signal T apII ELA 就立即启动,按照采样时钟的频率捕获待测信号数据并暂存于FP 2 G A 片内的RAM 中,采样数据不断刷新片内存储器,最后 通过J T A G 口将捕获的信号从片内RAM 传至Quartus II 实时显示。Signal T apII ELA 的原理流程如图1 所示。 图1 SignalT apII E LA 原理流程 实际工程中,加入Signal Tap II ELA 不会影响系统原有的逻辑功能。 2SignalTapII E LA 的配置 Signal Tap II ELA 基本配置过程[3] 如下: ①添加采样时钟。Signal Tap II ELA 在时钟的上升沿进行采样,可以使用设计系统中的任何信号作为采样时钟,根据Altera 公司的建议最好使用同步系统全局时钟作为采样时钟。但是在实际应用中,多数使用独立的采样时钟,这样能采样到被测系统中的慢速信号,或与工作时钟相关的信号。当然采样时钟的频率要大于被测信号的最高频率,否则被测信号波形会有较大误差。 ②定义采样深度。采样深度决定了待测信号采样存储的大小,而可以采样的深度是根据设计中剩余的RAM 块容量和待测信号的个数决定的。若待测信号较多,则在同样I/O Bank 个数情况下采样深度较浅。待测信号个数的增减和采样深度的深浅会直接改变RAM 块的占用情况,采样深度的范围为0~128K B 。 ③定义RAM 类型。设置占用片内何种RAM 块资源,随着采样深度的改变,RAM 块的数据线和地址线宽度可以分割成多种组合。例如:采样深度是1K B ,RAM 数据线、地址线可以分割成2×512或4×256等多种组合。依此类推。 ④定义触发位置。Pre trigger position 表示采样到的数据12%为触发前,88%为触发后;Center trigger position 表示采样的数据处于触发前后各一半;Post trigger posi 2 tion 表示采样到的数据88%为触发前,12%为触发后。 ⑤触发条件级数设置。Signal Tap II ELA 支持多触发级的触发方式,最多可支持10级触发,帮助滤除不相干的数据,更快地找到需要的数据。若有多级触发条件,首先分析第一级触发条件。若第一级为TRU E ,则转到分析第二级是否满足,直到分析完所有触发条件均为TRU E 才最终触发时钟采样数据。 ⑥触发条件。设定约束性的触发条件。可以允许单个信号的独立触发条件Basic ,直接采用单个外部或设计模块内部的信号;也可以允许多个节点信号的组合触发条 件Advanced ,构成触发函数的触发条件方程。例如:使能

9年FPGA工作经验总结

9年FPGA工作经验总结 三年的,用altera的c3和c4 做led控制卡。2年的用lattice的MACHXO-XO2和ECP2做了视频和网络光端机,3年的XILINX的SPARTAN 6 做了视频ISP处理,现在一年的xilinx的ZYNQ做机器视觉。 第一个,9年的fpga,说起来,给我感觉fpga写代码牛逼的人,都是写着看不懂的代码。基本上的代码都是小逻辑做的。大逻辑做的都是沙雕。 第二个,知道各类高速接口,做fpga只会玩玩串口,I2C,SPI还有DVI,这种低能儿工资也就是低于几千块钱。高速总线,列入DDR3控制,双边沿,SERDRES,这个是必须知道怎么用,怎么调试。好多沙雕就知道下载代码,有问题也不知道从哪里入手。 第三个,知道时序约束,fpga很傻的元件,你经常发现,他自己不知道哪个是时钟,要求跑多少。还有各类并行总线,要求相位抖动控制多少。还有不同时钟不要去约束。特别是用低端器件,用上了60%资源的人,经常无缘无故的bug的,低于五位数的工资基本不知道啥原因的。 第四个,也就是我一直遗憾的东西,行业的算法和需求了。有些沙雕一辈子就是打工的命。一年除去房租和吃饭,回去大农村还被邻居鄙视大学生读书无用。所以有些时候,要学会沉淀。也许我当年在led行业待了9年,我估计现在已经接无数的兼职和订单,少数一年买个宝马x1没有问题。哪像现在,自己出来真怕死。 就说这些。我转行了。一把眼泪。有人问我,是不是工资太少了。拿着别人要饭的钱,都是吊丝。想想你农村的父母和还有孩子吧。好好想点更快的路子。做硬件工程师,是做产品的第一步。因为你要面对很多销售沙雕,他们很有钱,但是天花乱坠的需求,这个时候,你只有学会硬件才能制造硬件方案。然后找软件工程师一起协作做项目。我以前的兼职项目就死在这里了。(小编注:其实楼主的工资不算低) 而且FPGA工程师,也必须熟悉硬件。连原理图都看不懂,你还做啥这么没前途的东西。 还有一个ZYNQ平台,fpga 工程师要学会arm的裸跑系统。因为我被傻x害惨了。

FPGA及verilog经典语法总结

2011-10-12 论坛笔记整理 第一部分vhdl程序中的基本问题总结 (1) 1.关于端口 (1) 2.信号和变量 (1) 3.位(矢量)与逻辑(矢量) (2) 4.关于进程 (3) (一). 多余时钟的引入 (3) (二). 输出多驱动 (4) 5.关于VHDL学习中的几点说明................................................................................................5 第二部分FPGA设计学习经验 (6) 1.FPGA学习的一些误区 (6) 2.设计方法经验 (9) 3.fpga设计的精髓—时序设计 (10) (一)总体设计方案和逻辑详细设计方案 (10) (二)如何提高电路工作频率(加约束,流水、切割状态) (11) (三)做逻辑的难点在于系统结构设计和仿真验证 (12) 4.设计规范很重要 (13) (一)设计必须文档化 (14) (二)代码规范 (14) (三)ALTERA参考设计准则 (16) 第三部分项目经验小结.....................................................................................................................17 经验 一...........................................................................................................................................17 经验 二 (18)

FPGA经验谈

寒假学习经验谈 今年的寒假时间相比往年少了很多天,但是相比去年而言,今年显得尤为重要,自己很重视这次的留校,尽自己的努力学习。 寒假的学习分为两个阶段,第一个阶段:全面的对单片机做一个总结,用了将近十天的时间,单片机是以后学习的基础,要想走的远,基础要打好,单片机的外设模块一个一个的走了一遍,具体的就不多说了; 第二个阶段:对EDA的入门学习,选择学习EDA是经过我的深思熟虑才做出的决定,总的说来,EDA的学习有十三天左右,因为是入门阶段,学的东西比较基础,有些知识很容易理解但却很容易遗忘,同样有些知识就不能理解,模模糊糊的。初学EDA ,先要学习的是Verilog 语言,Verilog语言是对硬件的描述语言,在很多地方与C语言不同,存在着很大的差异性,例如在写代码的时候,要在开头定义所有的输入量和输出量,还应该定义位宽,在一个.V文件中只能有一个模板module—endmodule ;我自己感觉,在用V语言写代码的时候,应用比较多的还是always语句、case语句、if-else语句,说实话,也就这些个语句能够明白,其他的语句可能是用的比较少,知道其用法的像assign顺序执行语句、fork-join 并行块,task-endtask任务语句,不过在使用fork-join语句的时候一直出现错误,错误显示fork-join语句不可综合,但是资料上和听学长讲,fork-join语句是可以综合的。在V语言中,若使用数据类型的时候没有定义位宽,系统会有默认值,如INT数据在未定义时,位宽是32位,reg存储型数据位宽默认值也是32位,还有一点就是在使用assign语句的时候,若为定义,系统默认为连线型数据wire。 Verilog编写代码时出现的错误和警告: Error (10112): Ignored design unit "bingxing" at bingxing.v(1) due to previous errors :严重错误多是头文件的问题; Error (10170): Verilog HDL syntax error at paobiao.v(26) near text "always"; expecting "@", or "end", or an identifier ("always" is a reserved keyword ), or a system task, or "{", or a sequential statement :错误原因:看起来无从下手,其实是在写代码的时候,begin end缺失或者是在结束处未加;等; Warning (10034): Output port "cnt4" at Verilog1.v(3) has no driver :定义了cnt4,但是没有使用; Warning (10230): Verilog HDL assignment warning at jishu.v(19): truncated value with size 32 to match size of target (4) :使用数据的时候没有定义位宽如:cnt<=cnt+1 (1’b1) 在写V代码的时候会遇到很多的警告,有些警告如共多少个管脚、未使用管脚没有接地、未配置管脚、未配置EPPROM等这些警告是可以忽略和消除的,还有一些警告如某管脚没有逻辑功能等就要重视了; EDA的学习是一项长期的事情,不能够追求进度的快慢,要打好基础,一步一步的走。总结起来EDA的学习一定要坚持。

【精品】FPGA面试经历

FPGA面试经验谈 对于一个面试过数十家公司之多的非211女生来说,此刻正在忐忑的等待一家公司的录用通 知,那种百感交集的感觉,想必找过工作的人儿都应该深有体会。在这忐忑不安的时刻,就 索性写一下自己身经百战的面经吧。 1、503所的子公司,航天中为和航天恒星算是面试的第一家。当时有三个面试官跟我 面对面坐,三个面试官很随和,没有一点架子。首先是千篇一律的自我介绍,完了之后就开 始讲项目,然后就开始问都做过什么约束,回答自然是周期约束、offset_in_before,offset_out_after约束偏移约束等等;其次是有没有考虑过跨时钟域的问题,答曰通过异步 FIFO或者握手信号可以同步异步信号,其他记不太清了。最终自然没有要我。 2、第二家是航天时代光电公司,对于非211的女生来说,能够在航天专场的招聘会上 拿到面试通知,自然是幸运。面试时一对一的,面我的那个人很和善。这个没有让做自我介绍,上来就看着简历上的项目问。简历上写的研究方向是高速信号处理,上来就问什么是高 速信号,挠挠头很尴尬的说我忘了,好在面试官比较随和。接着问简历上项目内容,以及这 些所谓的项目经验是否是真的接的项目,还是就是自己实现一下功能就完事。这个项目经验大家一定要好好想清楚,如果是真的接的公司或者研究所的项目,那自然是极好的;如果只是自己实现了一个什么功能,这样的项目经验一定要想清楚了怎么回答。其他好像就没什么了,完了面试官很温和的说保持手机畅通,如果有消息会电话通知。自然是最后没有任何 消息了。 3第三家公司仿佛是北京网康科技公司,当时笔试特别简单,就是计算机二级C语言的水平,稀里糊涂就被通知面试了,虽然我简历上全是FPGA的内容,跟这家主要做软件的 公司毫不相干。这家居然没有问一个技术问题,首先是自我介绍,负责软件研发的面试官上 来就问,个子挺高的,家是哪里的,家人都是干嘛的,兄弟姐妹几个,自己在人群中与别人 不一样的地反格式什么,自己的优点是什么,缺点是什么,自己做的最有成就的一件事是什么,十年之后自己的状态是什么样的,总之网上可查到的HR可能问到的问题全给问了一遍。 完了之后说觉得我做软件研发可能不会做太精,毕竟我的项目经验跟他们不相干。觉得我挺适合做技术支持的。然后就把那个技术支持面试官说,让技术支持面我。这个技术支持一开 始很严肃,但是也抵不过我的笑,最后也被逗的微笑了。又是问了千篇一律的问题,不细说。最后问我有什么问题要问他,我就比较白痴的问了一句,我表现的这么一般,你还会收我吗。他回答说他自己做不了决定,得回去商量一下。结果依然没收我。 4、第四家就是威盛电子了,话说威盛电子共有三面,两轮技术面,最后一轮hr面。第一面是个和善的姐姐,给我一张纸,一支笔,上来就说把自己的项目画个框图讲一下。讲完之后就根据简历问一下她不明白的地方。然后就说出去休息会,一会给通知。没等几分钟, 就通知去二面,二面据说是部门的技术总监,自然是问的特别专业特别难。毕竟威盛没有笔试,面试时自然问的就多了。问题如下: 1)用常用的逻辑门搭一个3位宽的计数器;2)FIR滤波器和IIR滤波器的区别,以及 各自应用场合;3)处理器结构;4)串口线最长能传输多少米;5)如何同步时钟相位;6)双绞线远距离传输有毛刺怎么办;7)做一个序列检测器,用两种方法;8)画一个十字路口红绿灯信号等;9)用场效应管搭一个逻辑电路如y=ab+cd;9)跨时钟域时如何处理跨时钟;10)DCM相位;11)IBUFG的作用。就这样被问死了,让出去休息一下,然后几分钟之后 就有一个妹子说今天面试结束了,自然是被拒了。其实很基础,就是自己底子太差了。 5、北京凌云光子技术。 笔试都是网上下载的FPGA面试宝典的内容,由笔试题就可以看出这家公司很懒。答 的自然是很好。理所当然的收到了面试通知。 面试先讲项目,完了之后问我项目他不懂的地方。让我回家等通知,我很愤怒,问他是不是

FPGA的快速入门经验谈(part1)

FPGA的快速入门经验谈(part1) 有很多年轻人,被割裂了历史,被荒废了未来,迷茫,迷茫到几乎绝望,不过,他们还年轻,青春尚存,还有创造力,还有奋斗的资本,其中不乏不甘心被抛弃,被覆盖之人。他们还在努力,希望把自己未来的主动权更多地掌握在自己手上学习和创造是一条和平的成功之路,但是,学什么,怎么学,怎么用,何处用?有一个领域,很多人,特别是曾学习过单片机的年轻人很感兴趣这就是FPGA芯片的开发应用,但面对FPGA技术所涉及的繁杂技术,大家普遍又感觉到学起来很难,无从下手,无从突破,前景不明,缺乏信心,本帖针对FPGA或单片机的快速入门学习,介绍了一种方法:柏氏7步FPGA 快速入门学习法,供大家参考。 柏氏学习法要达到两个主要目的:1.让初学者轻松、快速地入门2.与学习者探讨FPGA 相关的应用和市场前景为实现第一个目的,我们将采用打穿插的学习技巧,为实现第二个目的,我们与学习者漫谈又哪些可以抢先占领的行业制高点。 柏氏7步FPGA快速入门学习法共分7部分第一到第四部分为穿插式入门学习部分,是为了让初学者以最短的时间实现知识、概念和心理的快速入门。这4个部分,对于FPGA和单片机的学习都适用。第五部分至第七部分是沙盘谈兵式的介绍,告诉学员FPGA的特有技术优势、实现技巧和市场前景。这七个部分分别是:第一部分:了解下载线和JTAG第二部分:制作最简易的开发板第三部分:最偷懒的编程第四部分:检验入门成果第五部分:SOPC及实现技巧第六部分:专业产品的开发第七部分:个人奋斗特定IP的开发(上部:入门篇)FPGA入门学习网络讲座:柏氏7步FPGA快速入门学习法第一部分:了解下载线与JTAG很多人觉着学习FPGA或单片机很困难,为什么?内容太多,头绪太乱!我们第一步的任务就是:分解和简化问题。无论是FPGA还是单片机的开发,都要涉及到三个部分组成:开发平台(计算机),下载线,开发板(学习板)其中1.开发平台在开发初期并不需要下载线和开发板的支持就能立运行。2.下载线只是在目标代码下载或运行调试时才用到3.开发板在下载完毕后自己能够独立运行根据以上特点,我们采用各个击破的策略去学习和分析这几个部分。首先是最简单的下载线部分。每个厂家的开发模式都是

Vivado工程经验与各种时序约束技巧分享

Vivado工程经验与各种时序约束技巧分享 FPGA毕竟不是ASIC,对时序收敛的要求更加严格,本文主要介绍本人在工程中学习到的各种时序约束技巧。 首先强烈推荐阅读官方文档UG903和UG949,这是最重要的参考资料,没有之一。它提倡要在设计的早期阶段就要排除问题,越到后期时序的改善就越困难。其中HLS层次对性能的影响是最大的。 本文将从代码风格,时序修正,工程设置等几个方面介绍本人的实践经验,希望让各位初学者快速提高,也希望FPGAer能给出宝贵建议。 1. 代码风格推荐使用Xilinx language templates的代码块,这里的代码能够综合出正确且结构简洁的电路,包括移位寄存器,乘法,复数乘法,FIR滤波器等,凡是涉及到的模块尽量使用官方写法。 合理的设计代码框架。IO相关的代码、时钟管理单元尽量放在顶层,后者有助于以共享资源从而提高性能降低功耗。模块的输出最好是使用寄存器输出,有助于降低路径延时帮助时序收敛。 复位也是非常重要的问题。和ASIC不同,Xilinx FPGA的寄存器是高电平复位,支持异步复位和同步复位,但是DSP和BRAM内部的寄存器不支持异步复位。因此,官方更推荐设计采用高电平同步复位,可以降低资源的使用和功耗,有助于时序收敛。由于FPGA 的初始状态是确定的(可以在定义说明中指定),为了更快地时序收敛,官方文档认为,能不用复位是最好的,尤其数据路径和移位寄存器的设计中。不过使用同步复位仍需要注意控制集不能太多的问题。关于这方面的内容,UG949第三章Control Signals and Control Sets给了详细的说明。 数学运算使用DSP单元速度会更快一些,根据DSP的结构重组数学运算,充分利用FPGA 的DSP、BRAM资源。并且能做到对代码映射的硬件资源心里有数。 如果并不需要优先级,尽量将If语句转化为case语句。 尽量不要使用Dont Touch这类语句。如今Vivado综合工具已经很完善了,除非代码有问

读特权同学《深入浅出玩转FPGA》有感

读特权同学《深入浅出玩转FPGA》有感 看了特权同学的这本书,感悟颇多,最终使我重新确立了目标。只是思路有些杂乱,我得慢慢道来: 初识特权同学实在END网站上,因为他的FPGA助学活动,在得到他的35集FPGA教学视频后,得知他已经和北京航空航天大学出版社合作出板了《深入浅出玩转FPGA》一书。对于国内格式呆板、内容互抄的教科书,我是一直没有任何兴趣的,但是对于这样一个搞过FPGA项目的工程师写出的经验之谈,而且是以随笔的形式写出的书,我是没有任何理由放过的。也许我最需要的不是一份说教的知识,而是一个可以在我最困难的时候让陪我聊天、给我动力的‘人’,而这个‘人’就隐藏在这本书点点滴滴、洋洋洒洒的文字之间,等着我去感悟。由于我个人是习惯在当当网买书的,于是当下就去当当网搜索了一下,果然有这本书,售价是31.9元,但由于最近经济的原因我始终没有点下购买的按钮,于是自己买到这本书的计划便搁浅了。  也就是昨天我和一帮兄弟们去吉大的时候,偶然在兄弟那边看到了这本书,于是很爱不释手,当时便决定从兄弟手中‘横刀夺爱’了。呵呵,于是,这本书便随我来到了理工,被我带到了实验室。对于这样一本不同于现代呆板教材的书,我是很欣赏的,于是我开始用心去读这本书,去尽量感悟这本书的精髓,破开表面的知识去追求作者要给我们表达的深层次的意义。 很有幸的,我最后的结论是我没有选错书,在这本书中我感悟了很多,虽然我只读了第一个晚上,但这本书给我带来的感悟要比其他书籍在几周甚至几个月给我带来的感悟远远多得多...我感悟了很多,依靠串行触发是解决不了的,于是,我得用并行触发的方式来表达我的思路,首先得解释一下什么是并行触发:并行是指可以在同一时间进行响应,而没有顺序的问题。于是,在这部分,我拿并行的概念套用一下,下面的这些感悟没有刻意的进行先后排序,既没有重要程度的高低和内容高低的划分,因为我认为:每一点思考都可以带来进步。下面我就开始慢慢道来: 1:它纠正了我对FPGA的认识 说实话,我的兄弟在去年寒假就给我买好了FPGA开发板,我们分配的任务是我在理工主要攻FPGA方向,很惭愧的是当我用原来单片机的方式去学习FPGA时遇到了很大的障碍,这段学习的路进展很缓慢,于是不知不觉已经推迟到了今年暑假。暑假正式开始之前,在我打算自己的暑假生活的时候,FPGA这个小东西又很活跃的跳了出来,想到了自己的这半年在这方面基本没有任何进展,相当惭愧。于是决定暑假集中攻克FPGA,当然我也知道,FPGA这个东西和单片机、嵌入式一样,要的是长时间的点点滴滴的实践的积累,但是我可以加快我的进度,用自己最快的速度去学习FPGA,争取在本科毕业前自己主管一个FPGA的项目,尽管这个目标很难、很遥远、很不可企及。但我从不害怕,我会用自己的学习方法来换取效率,用高速可靠的效率来换时间! 接下来对比一下我原来和现在对于FPGA的认识:原来从单片机转型到FPGA时,并没有摸清这趟河水的深浅,而在不知深浅的情况下,我已经开始下水了。当时我认为FPGA和单片机一样,它是由一个超级经典的硬核架构起来的IC,通过编写程序来实现FPGA对外围的控制。但是现在想来,当初的想法是大错特错了,现在想来我的上半年FPGA学习进度基本为零也就是意料之中的事情了。我重新对FPGA的认识是这样的:首先,FPGA是纯硬件,现在我所写的‘程序’也就不能称之为程序,如果

AD9739使用经验分享

AD9739使用经验分享 --张亢 AD9739是一款14位的射频D/A转换器,采样时钟速率最高可以达到2.5G,是目前A DI公司高速DA产品中转换速率最高的一款芯片,作者使用这款芯片已经有1年多的时 间,现在和大家分享自己总结的经验,并且讨论目前存在的问题。 一芯片功能简介 图1 AD9739功能框图 图1为AD9739的功能框图,主要分为3个部分: (1)配置部分:A D9739内部有多达54个寄存器,用来控制芯片的数据接收,多芯片同步,Mu clock工作,输出电流等功能,并且有部分寄存器是指示寄存器(只读),用户 可以通过读出这些指示寄存器的值来确认芯片目前的工作状态。 (2)时钟部分:A D9739芯片所有时钟全部为差分时钟,共5对,分别为: DACCLK_P/N:DA芯片的时钟输入 DCO_P/N:数据输出时钟,传输给MC U。 DCI_P/N:数据输入时钟,MCU收到DC O_P/N信号后,将产生数据和DCI_P/N信号,并且保证DCI_P/N的采样沿可以采到数据的有效部分,保证数据传输的正确性。 SYNC_OUT_P/N和S YNC_IN_P/N为多芯片同步时钟,这里不予讨论 (3)数据部分:芯片使用了双端口DB0[13:0]和DB1[13:0]同时传输数据,这样可以将数据的传输速率降为芯片时钟的一半,可以提高数据传输的正确性,然后在芯片内部将

从两端口收到的数据组合成一组。A D9739采集数据使用的是DDR模式,即用DCI_P/N的上升沿和下降沿同时采集数据,这样数据时钟的频率是芯片时钟的1/4,是数据传输速率的1/2。降低时钟的传输频率就意味着可以提高时钟的质量,这也可以提高高速传输中数据的正确率。 二芯片布局布线 在介绍AD9739芯片前首先简单介绍一下PCB,PCB共12层,其中第1、3、5、7、10、12为信号层,第2、4、6、8、9、11为电源和底层。 AD9739芯片是RFDA转换器,布线时需要考虑的问题较多,作者在布线时结合AD9739的开发板和自己的经验,考虑到的问题如下: (1)布线:AD9739有两组数据端口,有3种布线方案: a.两组数据端口都走微带线。 b.一组数据端口走微带线,一组数据端口走带状线。 c.两组数据端口都走带状线。 方案a的缺点在于A D9739是BGA封装,2组数据端口呈14行4列排列,这样就不可能将所有的数据线和时钟线都布为微带线(表层走线)。 方案b的缺点是A D9739芯片将在DCI_P/N的上升沿(下降沿)同时采集DB0和DB1的数据,在布线时就要保证DB0和DB1两组数据线的传输条件相同,这样一组数据走微带线一组走带状线也因为微带线和带状线的传输延时不同和一组的传输路径有过孔另外一组没有而舍弃。 过孔带来的问题主要有2个:第一个为传输路径的阻抗不连续,方案c中在每对数据线和时钟线中都引入了一对过孔,让两组共28对数据线和2对时钟线的传输情况相同。第二个问题是如果信号的传输路径只使用了通孔的一小段,那么通孔未被使用的部分将对信号的完整性造成一定的影响。在板卡设计中DB0通过FAN OUT和盲孔走线走在第3层,DB1通过FANO UT和通孔走在第10层,尽可能消除或者减小未使用的那段过孔对信号完整性造成的影响(见图2左侧两列为DB1和通孔,右侧两列为DB0和盲孔)。 图2 (2)阻抗匹配:A D9739与MCU(板卡中使用的是Alte ra公司的EP3SL150)的数据和时钟接口全部为LVDS电平,所以在高速传输中差分信号线的差分特征阻抗必须是100 欧姆,带状线特征阻抗的计算公式见公式(1): 由公式(1)知可以通过改变线宽W和线与参考平面距离H来改变特征阻抗。也可以通过阻抗计算软件或者咨询PCB制版公司来确保传输线的差分阻抗为100欧姆。(3)数据线和时钟线等长:因为FPGA芯片在接收到AD9739给的DCO_P/N信号后采用源同步传输方式,同时传输DC I_P/N和DB0、DB1信号,此时DCI_P/N信号确保可以正确采样DB0和DB1中的数据。在保证MCU和AD9739芯片之间的数据线和时钟线长度等长后,就可以保证在AD9739的时钟接收端DCI_P/N仍然可以正确采样DB0 和DB1中的数据。

相关主题