wanwzy 发表于 2010-7-14 09:26:04

请教各位高手,学习FPGA从入门到深入碰到一个坎,怎么迈过啊!

哎!算起来学习FPGA也有差不多半年多时间了,这个学习过程中从学习Verilog语言到模仿典型事例一路学习下来也还好(在模仿是也有对事例做一些改动,加入一些自己的想法)。只是感觉如果自己手里有个小项目想去把它实现还不知道怎么入手(比如怎么分模块,模块之间怎么衔接,最终又怎么实现)。所以想问下各位是否有过这种经历,这难道是个坎嘛?这个坎又该通过怎样的训练才能迈过呢?希望大家不吝赐教!帮小弟这个忙能迈过这个坎,万分感谢!!!!!!

281229961 发表于 2010-7-14 15:53:36

说具体点!
等待高手!

zhangxun0712 发表于 2010-7-14 17:27:03

我学习使用FPGA三年了,也不知怎么迈过这个坎——进入深入高手,也等高手指点。

akuei2 发表于 2010-7-14 20:50:26

楼主,再忍耐吧!
很快就会看到另一扇通往不一样世界的门

再忍耐

wanwzy 发表于 2010-7-15 08:41:38

回复【3楼】akuei2
楼主,再忍耐吧!
很快就会看到另一扇通往不一样世界的门
再忍耐
-----------------------------------------------------------------------

不是我不能忍耐,是我怕自己走了弯路,所以想听听各位大牛的建议。谢谢赐教

g47603690 发表于 2010-7-15 08:49:08

没有很深的行业/公司背景 自学是不可能把FPGA学懂的,语言/仿真只是皮毛.

wanwzy 发表于 2010-7-15 20:23:24

回复【5楼】g47603690
没有很深的行业/公司背景 自学是不可能把fpga学懂的,语言/仿真只是皮毛.
-----------------------------------------------------------------------

是啊!所以现在在学校就先只有参加些电子设计比赛增加项目经验,希望实习时能找到公司。

TeWu 发表于 2010-7-15 20:53:02

回复【6楼】wanwzy
回复【5楼】g47603690
没有很深的行业/公司背景 自学是不可能把fpga学懂的,语言/仿真只是皮毛.
-----------------------------------------------------------------------
是啊!所以现在在学校就先只有参加些电子设计比赛增加项目经验,希望实习时能找到公司。
-----------------------------------------------------------------------

在学校,最好的学习和锻炼机会就是电子设计竞赛了

有压力,有目标,学习起来效率会很高的

wanwzy 发表于 2010-7-16 09:51:31

回复【7楼】TeWu T5
回复【6楼】wanwzy
回复【5楼】g47603690   
没有很深的行业/公司背景 自学是不可能把fpga学懂的,语言/仿真只是皮毛.
-----------------------------------------------------------------------
是啊!所以现在在学校就先只有参加些电子设计比赛增加项目经验,希望实习时能找到公司。
-----------------------------------------------------------------------
在学校,最好的学习和锻炼机会就是电子设计竞赛了
有压力,有目标,学习起来效率会很高的
-----------------------------------------------------------------------

呵呵,是啊!谢谢支持!最近正在准备“高教社&XILINX杯”2010年各省区大学生电子设计竞赛,加油拉!哈哈

40130064 发表于 2010-7-16 11:46:47

语言不是皮毛.

语言是FPGA的灵魂!之所以不行就是语言没学好。
自己一行一行的写,生成模块。模块之间很好衔接,因为能按你的想法实现功能。用别人模块,就像拼积木,灵活性,功能都有限.自己用语言写,就像雕塑,想怎么玩就怎么玩,但得看你的语言基础,构思,经验.

cjd_gy 发表于 2010-7-16 12:36:23

提升自身逻辑设计能力!

cfqxdgr 发表于 2010-7-16 17:44:35

to 9楼,我觉得,以语言这种软件的思路去做FPGA,是不对的,必须以电路的思路去做。时刻清晰自己的电路怎么实现,不能脑子里只有一个时序,却要综合器去实现

40130064 发表于 2010-7-17 10:49:57

回复【11楼】cfqxdgr
-----------------------------------------------------------------------

告诉你个秘密: 我会玩电子管。开发中最主要的成本是人工,我用语言一天完成的工作量可能你要10天.当然,如若你从事IC设计另当别论。

你的思想还停留在小规模积成电路时代.

cfqxdgr 发表于 2010-7-17 11:22:20

不用这么觉得自己牛逼,你根本没理解我的意思。玩过电子管说明你资历老啊,我没经过那年代~我并没说让你用古老的方法用与非门搭这个东西,我是说虽然写的是HDL,但脑子里不要把它想成程序,而要明白自己写的是电路,要讲时序的~等模块比较多了,调起来就不是简单的连个线那么简单了

fzfh1219 发表于 2010-7-17 11:38:07

如果不下水,无论如何你也学不会游泳,如果不做项目,无论如何你都学不精FPGA

40130064 发表于 2010-7-17 13:43:33

不好意思,你别误会,我不是说资历老,我没那么老.只是想说明硬件设计的语言化,没办法,思想跟不上技术也跟不上的,所以观点要改变.

cfqxdgr 发表于 2010-7-17 17:47:55

没错,我这边主要是用Verilog,见过太多人觉得这门语言太好学了,一问就是“跟C一样”,忽略的HDL的本质是用语言去描述电路,目前的学生基本上都是接触过C之类的之后再接触HDL,所以潜意识里以软件的思路去学习FPGA,一年前有个就是出了这个问题,时序仿真通过了就乐的不行,上板又调了1个半月才真正算是基本没问题了

tear086 发表于 2010-7-17 17:49:13

关注。

wanwzy 发表于 2010-7-17 18:25:43

非常感谢cfqxdgr和40130064你们两位,说了很多自己的看法,我也学到了很多,希望有更多的人能谈谈自己感受。我想在是语言和电路两者应该都不是独立的,在我看来语言是为电路服务的,因为我们最终设计的还是电路。(如有说得不对的地方请各位高手指点)

wanwzy 发表于 2010-7-17 18:31:35

回复【9楼】40130064
语言不是皮毛.
语言是fpga的灵魂!之所以不行就是语言没学好。
自己一行一行的写,生成模块。模块之间很好衔接,因为能按你的想法实现功能。用别人模块,就像拼积木,灵活性,功能都有限.自己用语言写,就像雕塑,想怎么玩就怎么玩,但得看你的语言基础,构思,经验.

-----------------------------------------------------------------------

我现在就是想往这方面努力(自己试着写代码),但是现在就是在构思和经验上感觉很匮乏,我想这可能需要一个过程吧!现在我想知道从“模仿调试别人的代码”到“自己写代码”这个过渡期,有什么比较好的具体的学习方法可以借鉴下吗?谢谢(特别是构思)

wanwzy 发表于 2010-7-17 18:32:14

回复【17楼】tear086 .COM 缺氧
关注。
-----------------------------------------------------------------------

缺氧哥,呵呵,说说你的学习经验呀!你遇到过这个阶段吗?

40130064 发表于 2010-7-18 05:01:15

回复【19楼】wanwzy
-----------------------------------------------------------------------

FPGA的话功能很多 .说下CPLD部分, 其它的只懂皮毛。

首先硬件语言要提升,就要追求速度最高化。


以下是我做的经验,只是给你参考下。

根据你对电路需要完成的功能向下分层设计,直到你能完成这部分功能,单独仿真,再组合。波形仿真一定要单独仿真!
也就是说你要对每部分的功能和波形完全了解。

用MCU控制一个带编码器直流电机定位。

1 通讯模块。
完成FPGA与MCU的数据交换。
2 正交编码加减计数器。
这个是反馈电机位置的数据。
3 位置差
目标位置减去当前正交编码加减计数器,等于0 在目标位置 大于0和小于0。
3 PWM占空比
停时占空比为0
匀速占空比,假设50% 。减速占空比,运行后,在电机位置离目标位置越近越近小。
5 PWM输出控制
控制电机速和方向
还有些其它功能模块 就不说了 只是说明方法。



说下PWM输出控制 我只会VHDL

功能: 根据dc和dir控制电机速度和方向 具体说下这模块怎么写的,其实这模块调LED光也行。
速度控制:PWM输信号的周期是255个cp 如果dc=123 占空比大概50% 占空比能在0-99%变化(大概 )这电路不要求0和100%两点
方向控制:dir=1时电流从A到B电机正转dir=0 电流从B到A电机正转


声明一下:这是个入门级的代码。能完成以上功能,语法很差,清零是悬空的,寄存器的话有些可能不要.
port(
          dir                   : in std_logic;             方向信号来自位置差模块
          en                     : in std_logic;             使能信   来自命令寄存器 值是MCU控制的
          cp                        : in std_logic;              时钟信号方波
          dc                   : in integer range 0 to 255; 占空比dc来自命令寄存器 值是MCU控制的
          PWMA                : out std_logic;             接电机正(不是直接有后级H桥)
          PWMB                : out std_logic               接电机负
        );   
             
end PUL;

architecture maxpld of PUL is
signal PWMspeed :integer range 0 to 255:=0;
begin


process (cp,dc,en ) cp,dc,en 有变化时向下执行
begin
        if (en='1')then   当EN=1向下执行   否则 PWMA <='0';PWMB <='0';电机无电流
                if (cp'event and cp='1') thencp上升沿向下执行 否则 结束      
                        PWMspeed<=PWMspeed+1;检测到一个cp上升沿PWMspeed+1 PWMspeed会从0到255循环
                        if (PWMspeed>=dc) then如果PWMspeed>=dc PWMA <='0';PWMB <='0';      
                                PWMA <='0';
                                PWMB <='0';
                        else                   如果PWMspeed<dc
                                if (dir='1')then   方向=1 PWMA='1' PWMB <='0' 电流从A到B电机正转
                                PWMA <='1';
                                PWMB <='0';
                                else            方向=0 PWMA='0'PWMB <='1'电流从B到A电机正转
                              PWMB <='1';
                                PWMA <='0';
                              end if;                                                               
                     end if;
                else
                null;
                end if;
        else
        PWMA <='0';
        PWMB <='0';       
        end if;
end process;
end maxpld;

这是行为模型 很像MCU的C语言编程
这模块如果不用行为模型描述,一般人很难完成的。但话说过来,它的确是数字电路组合生成的。
用单片机能实现这功能,如果在等成本的话速度不会超过它。我们能做的只是对代码优化,EDA工具生成。

数据流模型 对个人数字逻辑要求较高,也是最接近数字电路的语言描述,只适应一些简单模块

结构化模型 其实就是把模块重复或多个组合 我是宁愿画图连线,简单,但灵活度大打折扣。


硬件语言没那么简单,它能使硬件产生一些神奇的多余的信号和延时,
高速时,波形仿真如果不加延时信号和初始值,在硬件运行是有差的。

现在你觉得硬件语言学得不错,待你再深入时,你会再次觉得你还刚入门,再要提高,就得做更多实例工程。

akuei2 发表于 2010-7-18 08:09:56

嗯,学习是享受,是一步一步的提升...

描述语言是FPGA的基本功~
不明白,我真的很无语~
40130064支持你。

嗯,本来不想说什么的,
但是看到众多回复,我表示压力很大
很多同学都把学习的出发点摆在另一点了..

学习跟工作谈不上关系,正的那么严重吗?
最重要是在学习中得到衍生物...
学习是一种修行,即使学习在工作上没有任何帮助。
但是学习一定在你人生有很大的帮助。

例子:喜欢踢足球,一定要当国足吗?

继续潜水

zzsoft 发表于 2010-7-18 17:06:02

FPGA 是 半导体(数字)设计 的一种延续,如果没有学习过,或者从事过 半导体设计 很难直接跨过这个 坎。

hdl 语言是 半导体设计 的思想表达,但是前提也一样,如果你要知道 你要设计什么,你要满足什么。

当然了,多阅读 商业代码 可以提高 对 半导体设计 的认识,但是个人自学实质上的提高有限,要有一个比较好的指导人。

推荐一本书,CMOS 大规模集成电路设计, cmos vlsi design: Acircuits and Systems Perspective.

这本书基本涵盖了 半导体设计,特别是数字设计 的方方面面。

PS: 如果你能准确的给出 时钟 的感念,你基本上就跨过这个坎了。

tear086 发表于 2010-7-18 18:30:20

回复【20楼】wanwzy
-----------------------------------------------------------------------

我是砖家,假牙,大家多多照顾。

wanwzy 发表于 2010-7-18 18:39:48

回复【21楼】40130064
回复【19楼】wanwzy
-----------------------------------------------------------------------
fpga的话功能很多 .说下cpld部分, 其它的只懂皮毛。
首先硬件语言要提升,就要追求速度最高化。
以下是我做的经验,只是给你参考下。
根据你对电路需要完成的功能向下分层设计,直到你能完成这部分功能,单独仿真,再组合。波形仿真一定要单独仿真!
也就是说你要对每部分的功能和波形完全了解。
用mcu控制一个带编码器直流电机定位。
1 通讯模块。
完成fpga与mcu的数据交换。
2 正交编码加减计数器。
这个是反馈电机位置的数据。
3 位置差
目标位置减去当前正交编码加减计数器,等于0 在目标位置 大于0和小于0。
3 pwm占空比
停时占空比为0
匀速占空比,假设50% 。减速占空......
-----------------------------------------------------------------------
非常感谢40130064从一个项目的构思上举例给我说明了这个过程,很详细。其中有很多东西需要我慢慢去读懂理解,不过我已经有点启发了,再次感谢!

wanwzy 发表于 2010-7-18 18:49:05

回复【22楼】akuei2

嗯,学习是享受,是一步一步的提升...
描述语言是fpga的基本功~
不明白,我真的很无语~
40130064支持你。
嗯,本来不想说什么的,
但是看到众多回复,我表示压力很大
很多同学都把学习的出发点摆在另一点了..
学习跟工作谈不上关系,正的那么严重吗?
最重要是在学习中得到衍生物...
学习是一种修行,即使学习在工作上没有任何帮助。
但是学习一定在你人生有很大的帮助。
例子:喜欢踢足球,一定要当国足吗?
继续潜水

-----------------------------------------------------------------------

这里提到了一个学习与工作的问题。我完全支持你的说法。我学FPGA完全是因为兴趣所致,兴趣更是我最大的原动力。我有很多遇到困难的时候,那时心情很烦躁,但是待平静下来了,问题解决了。当看到验证结果的那一刻感觉这一切都是值得的。(这也慢慢教会了我遇到困难应该如何淡定的去分析原因,解决问题)。所以我觉得这与以后的工作的关系不用看得太重了,毕竟工作就有那么多对口的吗?享受这个兴趣的过程更值得!

wanwzy 发表于 2010-7-18 18:50:44

回复【23楼】zzsoft
fpga 是 半导体(数字)设计 的一种延续,如果没有学习过,或者从事过 半导体设计 很难直接跨过这个 坎。
hdl 语言是 半导体设计 的思想表达,但是前提也一样,如果你要知道 你要设计什么,你要满足什么。
当然了,多阅读 商业代码 可以提高 对 半导体设计 的认识,但是个人自学实质上的提高有限,要有一个比较好的指导人。
推荐一本书,cmos 大规模集成电路设计, cmos vlsi design: acircuits and systems perspective.
这本书基本涵盖了 半导体设计,特别是数字设计 的方方面面。
ps: 如果你能准确的给出 时钟 的感念,你基本上就跨过这个坎了。
-----------------------------------------------------------------------

谢谢你又从另一个角度解释了我的疑问,我会注意到的。

wanwzy 发表于 2010-7-18 19:47:44

回复【24楼】tear086 .COM 缺氧
回复【20楼】wanwzy   
-----------------------------------------------------------------------
我是砖家,假牙,大家多多照顾。
-----------------------------------------------------------------------

呵呵,缺氧哥,你也太谦虚了吧!

akuei2 发表于 2010-7-18 20:00:03

(*^__^*) 嘻嘻……!
加油吧~年轻人~

我也一样在加油中

simplorer 发表于 2010-7-19 20:06:00

我觉得还是手底下有项目进阶比加快,我FPGA也是懂得皮毛,公司下一步可能开发FPGA平台,正在学习,CPLD比较熟悉,当年记得刚开始学习CPLD的时候,就是手底下有项目,而且任务比较近,我负责CPLD这部分的编程,只有1个月时间,然后就开始攻关,到了月底任务完成了,CPLD也入门了。楼上有几位说的很有道理,决不能用设计软件的思想作CPLD设计,最好能观察你写的模块综合后是什么电路,然后不断优化,最低要求,你也要知道Verilog代码块是并行的,实现就是逻辑门与寄存器。

avrwoo 发表于 2010-7-19 21:46:03

学习

arokh 发表于 2010-7-25 13:01:09

拜师学艺,多看别人的代码

weixintec 发表于 2010-7-25 16:38:23

学习

avrlover 发表于 2010-7-25 17:40:29

学习

DanielDeng 发表于 2010-7-26 12:33:36

关注

aguang7yue7 发表于 2010-7-26 19:48:11

我说一句,理论深度不够。你花一年的时间做理论分析,写代码一个礼拜就够了~~

wanwzy 发表于 2010-7-28 11:32:41

回复【36楼】aguang7yue7
我说一句,理论深度不够。你花一年的时间做理论分析,写代码一个礼拜就够了~~
-----------------------------------------------------------------------

我也感觉还像有这方面的原因。请问你所说的理论分析是哪方面的呀?数电,模电?谢谢赐教

sunnyhow 发表于 2010-7-28 13:29:23

学习fpga,首先是熟悉硬件描述语言的表达方式,熟悉描述硬件的思路;至于如何划分模块,可以看一些芯片资料,可以了解模块是如何根据功能划分的;如果有机会,接触一个完成的工程,会很容易上手。




-----------------------------------------------------------
昊阳电工    www.sunnyhow.com

wanwzy 发表于 2010-7-29 10:00:10

回复【38楼】sunnyhow
学习fpga,首先是熟悉硬件描述语言的表达方式,熟悉描述硬件的思路;至于如何划分模块,可以看一些芯片资料,可以了解模块是如何根据功能划分的;如果有机会,接触一个完成的工程,会很容易上手。

-----------------------------------------------------------
昊阳电工    www.sunnyhow.com
-----------------------------------------------------------------------

谢谢分享

linux_pro 发表于 2010-7-30 14:05:59

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

HDL代码通常有称为RTL代码,如果你把什么是RTL搞明白,头脑里有清楚的概念,那么你就入门了。
剩下的,就是在你的应用专业里面苦耕,而这时,FPGA的知识,已经就显得不重要的,专业知识才是重要的。

wanwzy 发表于 2010-7-31 09:56:30

回复【40楼】linux_pro
回复【楼主位】wanwzy
-----------------------------------------------------------------------
hdl代码通常有称为rtl代码,如果你把什么是rtl搞明白,头脑里有清楚的概念,那么你就入门了。
剩下的,就是在你的应用专业里面苦耕,而这时,fpga的知识,已经就显得不重要的,专业知识才是重要的。
-----------------------------------------------------------------------

RTL代码?这个名词我还真是第一次听说(大家别笑小弟啊!),既然现在提出来了,我也去百度一下看看啊!

wanwzy 发表于 2010-8-6 08:36:20

很久没来看了。呵呵,给自己顶一贴,欢迎更多高手分享讨论!

joyboy82 发表于 2010-8-6 09:00:51

看来就是必须要学好verilog语言呢。

wang984 发表于 2010-8-10 04:24:20

回复【楼主位】wanwzy
哎!算起来学习fpga也有差不多半年多时间了,这个学习过程中从学习verilog语言到模仿典型事例一路学习下来也还好(在模仿是也有对事例做一些改动,加入一些自己的想法)。只是感觉如果自己手里有个小项目想去把它实现还不知道怎么入手(比如怎么分模块,模块之间怎么衔接,最终又怎么实现)。所以想问下各位是否有过这种经历,这难道是个坎嘛?这个坎又该通过怎样的训练才能迈过呢?希望大家不吝赐教!帮小弟这个忙能迈过这个坎,万分感谢!!!!!!
-----------------------------------------------------------------------

日思夜想之,问题一旦解决,自己回头悟悟,水平自然提升
自己思考是必须的,否则别人的经验指导对于你都是体外之物,无法消化吸收

wanwzy 发表于 2010-8-10 08:24:32

回复【44楼】wang984
-----------------------------------------------------------------------

呵呵,这倒是。如果一个工程中的代码是自己写的,感觉收获确实很大。不仅是代码方面,包括电路结构,整个思路都更清晰了,也就成为自己的经验了。

wohao02 发表于 2010-8-11 13:28:44

受益匪浅

dragonyoo 发表于 2010-8-11 17:10:21

做个实在的项目,经验只能靠时间和实践去积累
页: [1]
查看完整版本: 请教各位高手,学习FPGA从入门到深入碰到一个坎,怎么迈过啊!