redcore 发表于 2012-2-12 12:39:56

买 FPGA 学习板,你究竟在学什么 ? 又到底要如何学习 ?

买 FPGA 学习板,你究竟在学什么 ? 又到底要如何学习 ?
今天我想和大家探讨的这个主题,也是很多初学者想要迫切了解到的,我也作为一个FPGA商家,一直在思索着这个问题,
在这里我只是发表自己的个人观点,对于知识和技术而言,我也总是报着一种不断求索的态度,我深知这里是一个卧虎藏龙的地方,不对之处请大家批评指正
1.FPGA 作为组成嵌入式系统家族的一员,有它自身的应用场所和特点,大多数时候我们还是让它来解决 MCU 所解决不了的问题,比如液晶屏的驱动(裸屏)等,除非你能找到已经集成了硬件驱动的IC.
2.认为学习FPGA 就是学习NIOS 。
    这个问题也是我在销售过程中问得最多的,比如:你的开发板能跑操作系统吗 ? 支持 linux 吗? 其实我个人的观点是,NIOS /SOPC 值得学习,但它却并不是学习 FPGA 的重点,FPGA 的重点在逻辑设计,逻辑设计才是精髓,如果你学完 FPGA 只在NIOS 方面有所“成就”,其实你对 FPGA 基本上还什么都不了解。
3.FPGA 编程就是C编程。
   我的观点是,verilog 只是一种类C的语言,它与C编程有天壤之别,FPGA的设计本质是在设计一个电路,而不是在编写一个程序。但大多数初学者明白这个道理,但不知是否是真的理解。
4. 同步设计。
   我看过很多代码,敏感表中的信号随便加,这其实就是在设计异步电路。如果是非常小的设计可能就罢了,但做一个稍大的项目,这种方法可能会为你带来灾难性的结果,那就是系统的稳定性极差,可以查阅得到异步电路的时序分析计算量大得超乎想像,不是我们所能够掌控的,因此初学者一定要对异步电路有一个认识。跨时钟域的设计是有完整的理论和方法的,不要随便去写异步电路,要养成一个好的习惯。
5. FPGA 的特点。
   FPGA 的特点是内部各单元的运算是独立的,这就使得它并行处理能力比CPU 强。这里你要学会如果去设计一个架构来快速完成你的工作,有些FPGA 的代码写成了一个顺序结构,这样的代码可以工作在很高的频率,但出结果却很慢,实际效率也低。
6. 例程学习的意义:
   现在 FPGA 学习板上的外围器件差不多就是:DS1302 . IR , DS18B20 , RS232, PS2 , LCD1602 , I2C 等等,其实这些例程用单片机也能完成,而且性价比更高,所以如果你用NIOS 来做,对你本身学习FPGA 同样没有意义,那样还不如就用单片机,当然炒作者例外,而我认为用逻辑来写和学习这些例程是有意义的,因为你是在学习一种接口描述方法,比如一个SPI总线的速度你用单片机写估计能到20M就非常困难,如果用FPGA 写了,它可以把速度提高到200M以上,能慢也能快,并且这种结构还可以在内部复制多条这样的通道。
7. NIOS / SOPC 的意义
   NIOS 我同样也在学习中,因为作为商家,我必须去关心客户的需求,我个人认为它最有用的地方就是 NIOS 和 硬核的结合设计,用 NIOS 来管理和配置你的硬件模块。
8. FPGA 能否速成
   这个问题比较难回答,每个人的基础和领悟力不一样,但如能正确引导,不被误导这方面是可以努力的。众所周知,很多技术很强的人都走过不少的弯路,后来这就变成了一种资力。

以上观点供参考,如有不对,请指正。

renpeng009 发表于 2012-2-12 12:48:56

这确实也是我思考了很长时间的问题。

lcofjp 发表于 2012-2-12 12:58:14

不懂FPGA,坐板凳听讲!

tiger5 发表于 2012-2-12 13:13:03

听课,现在的工作用不到FPGA.
有精力有时间学学还是好。

XIVN1987 发表于 2012-2-12 13:19:01

拜读了,感觉楼主说的非常之有道理!!!深表同意——收藏了!!!
尤其是关于MCU+C的系统设计与FPGA+Verilog的系统设计的区别,那是本质的区别,思维模式的区别!!!!


但我也想从一个MCU编程者的角度说一个问题:
正因为“MCU+C的系统设计与FPGA+Verilog的系统设计的区别是本质上的区别”,所以,长期使用单片机编程开发的开发者,学习FPGA设计时倒不如从NIOSII入手更好。。。注意,我说的是“入手”,也就是入门。。

因为,MCU与FPGA在设计上是有本质区别的,一个长期习惯了MCU编程的人,如果刚开始就让他从“硬件电路设计”的角度去学习FPGA,肯定会难以理解,难以入手,从而产生挫败感,不利于对新知识的学习。。

反倒不如从NIOSII入手,先以自己熟悉的方式使用FPGA,比如,直接把SPI模块挂接到NIOSII上面,通过已经习以为常的读写寄存器的方式操作和使用SPI模块——即IP,等到对芯片、开发软件等工具有了较好的理解之后,再通过读上面提到的SPI软核IP的Verilog源代码,来理解SPI时序的实现,以及如何将一个功能模块通过寄存器的包装提供给CPU使用。。。

我很久都一直学习和使用各种MCU,一直想学习FPGA却总也不敢跨出这一步——就单单QuartusII软件本身,就够让人望而却步的。现在刚刚买了一块EP3C10的开发板,打算从NIOSII入手,对FPGA进行一些学习。不求像专业人士那样精通,但至少也不会是一无所知。。。

richards 发表于 2012-2-12 13:19:46

楼主是 红心电子 我买的他的板子,确实不错。慢慢研究中

NJ8888 发表于 2012-2-12 13:28:17

学它是为了用它,我当前做的工作,基于指令的MCU已经无法完成(50ns完成16次乘加),这个没有难度,烦的是要写好几个状态机

jzczzcy 发表于 2012-2-12 15:28:52

楼主讲的有道理

yhgwork 发表于 2012-2-12 16:33:49

FPGA,到底能做什么项目?单片机做不了的

gliet_su 发表于 2012-2-12 16:41:18

FPGA主要用于并行处理,MCU主要用于串行处理。

hymeng98 发表于 2012-2-12 18:15:42

回复【楼主位】redcore
-----------------------------------------------------------------------

受教了!!!

hzr0071 发表于 2012-2-12 18:41:15

回复【8楼】yhgwork
-----------------------------------------------------------------------

你用mcu驱动个7寸的屏幕试试

2006lc 发表于 2012-2-12 19:41:32

谢谢

dingaoop 发表于 2012-2-12 19:50:38

io扩展

hunhai 发表于 2012-2-13 11:58:51

学习ing……

mailtoyj518168 发表于 2012-2-13 14:38:45

mark 学习

lov9210 发表于 2012-2-15 10:18:28

学习的迷茫中,不知道从何入手。

redcore 发表于 2012-2-15 11:41:25

我还发现一个有趣的现像:网络发达了,资料铺天盖地,我的一个哥们儿当初要学ARM9,买了一块开发板配了10张DVD光盘,现在仍然进步甚微。学FPGA 的状况也逐渐类似,到处都是讲语法和讲规范的资料,孰不知知识并不是收集起来就能让你有进步的,东西是学出来的,是靠时间和汗水换来的进步,那些怀有技术也要速成的心理其实多半是不理智的。

qingyin2009 发表于 2012-2-15 23:32:57

资料要收集,我是看到相关的,大家共享的,先下载了,没事的时候一个一个看,看哪个看着比较舒服,就把它当做主要的
研究,学习,不会的地方百度,或者查这些资料;
资料再多不到自己脑子里也不行,我也有个同学,学东西老是托关系,死磨硬泡找别人要一大堆资料,然后对别人说自己有什么什么资料。其实他是最不会的一个,唉,悲催

smsalarm 发表于 2012-2-15 23:56:31

学习一定要多做实验,少看资料,少看书。碰到问题再去找资料。

要有目的性,最好能有一个实际项目,甚至有个师傅带一下。

smsalarm 发表于 2012-2-16 00:04:02

回复【8楼】yhgwork
fpga,到底能做什么项目?单片机做不了的
-----------------------------------------------------------------------

FPGA可以做很多很多,可以说没有什么是单片机能做,FPGA做不了的。FPGA可以做一个单片机,或者多个单片机....

再举个例子,我最近做ModBus总线,两个字节的校验,单片机做要查表,我用FPGA写了一小段逻辑,硬件1个周期就算出来了。

尺有所长,寸有所短。

但是,我厌倦了单片机不断升级,从C51到MSP,AVR NXP STM32,ARM。做来做去,跟在人家屁股后面,有意思么?用FPGA就不同了,我编写了一个SPI控制器,下一个项目直接拿来就用,编写了一个三速以太网接口,很多项目都可以借用,以不变应万变,也是一种活法,是吧。

roy2002 发表于 2012-2-16 01:01:16

买了要用才行,不然学我买来放着然后翻出来卖了,嘿嘿

fjl888ful 发表于 2012-2-16 08:47:37

回复【楼主位】redcore
-----------------------------------------------------------------------
向我们这样的新手都在想,怎么才能快速的入门,确实是要下很大的功夫

the_wind_blows 发表于 2012-2-16 09:33:01

我的学习过程。

先学了两年CPLD,边用边学,用VHDL。玩坏了N个EPM570。
后来买了块EP2C8的板子,折腾了半年NIOS,再后来自己做了两块FPGA板子玩。

现在正在做一个基于NIOS的东东,我的NIOS处女作!

redcore 发表于 2012-2-16 09:45:56

一家之言,仅供参考:

关于语法:

1. 语法其实都是非常简单的,比始C ,它最常用到的语法就是 ,if else , switch ,while break ,数组, 指针等等,真正从语法上来讲这其实本身并不复杂。但为什么有人能写好,有人就写不好呢?其实就是一种架构和思想,与语法本身没有关系。我自己就写不好C,呵呵。

2. 同样对 FPGA 来说,比如 verilog 语法,需要记住的语法同样并不多,而且可以逻辑综合的语法就更少,大多数语法是用于验证的(verification),它的语法应用非常固定,always , if else , assign , case , {拼结移位}, == , != , &&, || 等等,在redcore的写法中更是非常固定。最终我们仍然强调的是一种架构和思想,与语法本身也没有关系。

规范:

1. 现在的规范很多,华为,周立功。。。但我们要如何学习呢? 规范的目的是为了代码共享和便于维护,所以没有必要强烈哪一种好或者不好。但有些是规范的共同点,避免出现低级错误,比如:latch 和产生就是低级错误,除非你确实需要这种;因此强调if else 必须是配套的,case default 也是要配套使用的。。。。

2. 多驱动源,这个我看到有些朋友还在想如何可以达到多个块来操作同一个信号,这种思想就是有问题的,就是规范有问题。redcore的规范是一个信号只能在一个块中操作,就避免了这个问题。试想一下你只能站立和坐下,如果两个人叫你同时作不同的动作怎么办,在现实中也是如此.

3. 同步和异步也是一个要注意的问题,敏感表中的信号不能随便改,时序逻辑用 always @ (negedge RST_B or posedge SYSCLK) ,组合逻辑用 always @(*),不用再去调整这个表。

4.高速电路,要发挥FPGA 的速度,就要学会写高速电路,对电路的速度起决定因素的其实就是组合逻辑那一部分,在同步时钟到来时,组合逻辑电路必须是稳定的,这就要求组合逻辑的级联不能太深,每多一层级联,速度就急剧下降。而对于不能优化的组合电路,要分拆成多个CLK来完成。条件判断中存在反馈信号也会降低速度 。。。。。

不被误导,注重电路的基础结构,比如:case 的平行结构,if else 的优先级结构等。。。。。好的开端就成功了一半。

korgo 发表于 2012-2-16 10:53:17

sopc是简化电路用的
比如你用FPGA做时序要求高的逻辑,但是还需要mcu控制,这时你就可以加个nios或microblaze
你的PCB设计就不再添加了,提高了元件利用率,降低了连接的不可靠性
但是sopc永远不是fpga的主要使用方式

XIVN1987 发表于 2012-2-16 11:02:53

回复【24楼】redcore
-----------------------------------------------------------------------

回复【25楼】korgo
-----------------------------------------------------------------------

有道理,,,学习了。。。

jiaohaitao 发表于 2012-2-16 13:10:43

还贴必回。。。。。。。。。。。。
顶了、

calvinxxw 发表于 2012-2-16 16:37:16

强人强贴,说得很到位.

denike 发表于 2012-2-16 17:44:17

学习了!谢谢

jinpengfang 发表于 2012-2-16 18:54:19

我也刚开始学,正打算买学习板呢

xxl88 发表于 2012-2-17 20:38:33

FPGA还是硬件语言是首要 其他都浮云

hunningtu 发表于 2012-2-19 14:09:14

学习了。

yhgwork 发表于 2012-2-19 16:16:02

想学习FPGA,请问应该怎么开始。像是招FPGA的职位,都是要研究生,像我们这些大专生,还有没有必要学FPGA啊

imjacob 发表于 2012-2-19 18:25:36

mark

jia_xuan 发表于 2012-9-7 17:24:29

楼主的板子我买了半年多了,期间断断续续的在学,收获蛮大的,特别是楼主的代码风格真赞。最近在论坛上瞎逛看到楼主的话,很中肯。

6091820503 发表于 2012-9-8 16:20:51

感觉FPGA和MCU最大的不同在于:
1、重构,FPGA比ARM,DSP贵的不是一点点,但是重构这一点确实为系统的升级带来很大的便利性。很多卫星的处理器选的就是FPGA,在进行系统升级时,直接向FPGA下载新的程序即可,接口类型都能改变。
2、并行性 我本身是做图像处理的,最初在PC上做算法,后来往嵌入式上移植,STM32,S3C2440,DSP使了个遍,最后还是FPGA最快,同样的加法器,在FPGA中直接做30个,速度就是30倍,不是DSP和ARM能比的。

风无痕 发表于 2012-9-8 19:56:19

redcore 发表于 2012-2-15 11:41 static/image/common/back.gif
我还发现一个有趣的现像:网络发达了,资料铺天盖地,我的一个哥们儿当初要学ARM9,买了一块开发板配了10张 ...

受用。。。。。。。。。。。。。。。。

Rocky_Zou 发表于 2012-9-8 20:03:38

受教 了   谢谢各位

jetli 发表于 2012-9-8 20:22:26

fpga 对大量的 “点状” 数据处理,很有优势,,,应用 的方面就是 -》 打印、显示、行业 设备, {:titter:}

grui 发表于 2012-9-8 21:17:41

同步异步问题困扰我很久

Gavin_Lee 发表于 2012-9-9 17:10:40

正准备学习FPGA来听听大虾闷得建议。

mu838 发表于 2012-9-9 20:56:30

就是学学而已,作为DSP的补充

BeichenPeng 发表于 2012-9-9 21:17:32

四年前用ALTERA的EP1C3搞过一个产品,记得当时是一边学VHDL一边写SPI和UART接口,现在都忘光了。感觉FPGA有点难伺候,光电源就有好几个,功耗和价格都不是很理想,现在都是卯足劲的搞超高速收发器,低端市场看不上了。

ganhui1300 发表于 2012-9-9 21:34:34

顶,很好,正在认真学习fpga中!!!!{:handshake:}

pontiff 发表于 2012-9-10 08:55:35

gliet_su 发表于 2012-2-12 16:41 static/image/common/back.gif
FPGA主要用于并行处理,MCU主要用于串行处理。

太笼统了。
MCU是在已经建立好的硬件结构和指令集的情况下,利用顺序语言来控制这个MCU实现工作任务。
而FPGA是半定制的硬件平台,你需要先用HDL来设计电路,再用EDA软件实现这些电路。
FPGA就像是张白纸,你可以在上面建立一个和目前几乎所有数字IC一样的原型;从这个意义上来讲,FPGA能实现所有的数字ASIC芯片。
当然由于成本及功耗上的原因,专用ASIC芯片的市场依然比FPGA大得多。想想一个ASIC需要N个V6的片子来做原型验证就知道如果使用FPGA的代价到底有多大了。
所以FPGA和MCU是两个概念上的东西,虽然verilg可能在一些方面和C有些类似。不过千万记住FPGA是设计硬件,MCU是设计软件。
最后说下FPGA的学习,首数电模电这个是必须的,此外也要具备将电路用HDL准确描述的能力。
所以如果从软件角度来学习FPGA总会遇到一些令人诧异的事情,所以一定要从硬件角度来学习和应用FPGA。
一定要记住的一点就是:如果连你自己都搞不清楚你所设计的电路的硬件结构的话,别指望IDE软件也能了解。

pocker5200 发表于 2012-9-11 21:47:59

计算机组成原理,数字电路基础,搞过单片机,ARM的更好。
然后带着项目,有目的的去学,再加动手不断的调试。

zyp000 发表于 2012-9-12 16:35:10

受教啊,不得不顶一下。

lgg88 发表于 2012-9-13 12:52:10

richards 发表于 2012-2-12 13:19 static/image/common/back.gif
楼主是 红心电子 我买的他的板子,确实不错。慢慢研究中

楼主能不能把红芯电子的FPGA光盘资料共享一下呢

lgg88 发表于 2012-9-13 12:58:09

说得很好,目前也正在学习,但是进步还是很小啊

玉草夕林 发表于 2012-9-13 19:59:56

很赞成楼主的看法~~~

vigour12345 发表于 2012-9-19 20:45:32

分析的很好,受教了

玉草夕林 发表于 2012-9-20 09:00:44

又认真看了一遍这个帖子……

lizhe19890618 发表于 2012-9-21 03:59:56

{:titter:}

隐姓埋名 发表于 2012-9-23 22:09:00

楼主正解,很多刚入门的新人都不太懂,不过您在这说了,他们估计也一知半解,不是很清楚你的意思,只有在今后学习过程中才能逐渐理解
页: [1]
查看完整版本: 买 FPGA 学习板,你究竟在学什么 ? 又到底要如何学习 ?