篇一 :fpga学习心得

FPGA学习心得

学习fpga一个多月以来,完全从零开始学习,感觉自己学到的东西真不少,虽然还不是很熟练,不过也对fpga有了很好的了解。以前一直没有想过要来总结些什么,是感觉自己对于fpga根本就像是一无所知一样,虽然天天在学,不过确实没有一个总体观念,学的东西太混乱也没有一个总体的框架。到了今天终于觉得自己的学习已经小有成就了,虽然还是没有能够独立设计的自信。

在最初学习的时候最主要就是对于fpga结构的一个基本认识和对硬件描述语言verilog HDL语言的学习。之所以选择学习fpga是因为在这一学期找工作中发现,现在很多公司都需要会一点fpga方面的知识,在笔试的时候也会偶尔遇到一些用HDL语言编程的试题。现在很多硬件工程师已经不再是单纯的用传统的方法进行电路的设计,至少现在很多招聘的岗位当中不再是单纯的电路的设计了,很多都涉及到嵌入式和HDL语言。Fpga现在正在以异常的速度发展,在08年全球金融危机的时候大多数行业都呈现在下滑的趋势,而fpga的厂商如xilinx和altera等公司的收入却呈现出增长的态势。在我看来fpga必将是将来硬件工程师不可缺少的一项本领,这也就是我学习fpga的原因之一。

…… …… 余下全文

篇二 :fpga 学习心得

以下是FPGA学习过程中的几个知识盲区,拿出来给大家分享一下,希望对大家有所帮助——特别是初学者。

首先,所谓的并行思想就是,几个工作模块在同一个时钟的作用下动作,并且模块之间也有相互的联系,但彼此不影响,共同完成一项工程。

在FPGA中的延时和之前单片机中的延时,有异曲同工之妙,但两者之间却有着各自独特的韵味,首先,在fpga中,因为每个时钟脉冲都是有所记录的,并且会作用到每一个工作模块,每来一个脉冲整个电路就会跟着进行一次同步动作,因此很容易就可以控制某个动作的完成时间,比如之前做过的一个键盘,用到的扫描就是如此,设置好一个计数模块,计算好所需的时间,当一切都设置完后,在工作时,就可以很容易的实现精确延时,因为计数模块和键盘扫描模块是同时开始同时计脉冲数的,要想从第一排扫描进入第二排扫描就必须等待脉冲计数完毕,在这期间扫描模块就会不停地扫描第一行,第二排也是如此,这样每一次的扫描时间都是确定的,不仅实现延时,而且更加精确,而且也不会影响整个电路的运行时间。 而在单片机中实现延时,由于是串行思想,所以,延时就是多条空指令的累加,提前计算好运行一条空指令所需的时间,最后得出要想实现延时所需的指令条数,以实现延时的目的,这样的延时,在对整个程序时间要求不高的地方用起来很方便,而且执行性很高,但是这样的延时有一个最大的弊端,就是很浪费资源,因为在延时的这段时间里,什么都不能干,仅仅是执行一些空语句,一次在一些对整个系统工作时间要求很高的地方以及对资源要求充分利用的地方,更多的会去选择用并行。

…… …… 余下全文

篇三 :FPGA学习心得大报告

            

             《FPGA技术基础》学习报告

                            --课程内容学习心得

         

              姓    名:      瞿麟     

…… …… 余下全文

篇四 :FPGA学习心得

回想起自己学FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。

废话不说了,下面进入正题,学习FPGA我主要经历了这么几个阶段:

①、Verilog语言的学习,熟悉Verilog语言的各种语法。

②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。

③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。 先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在

Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。像systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了Verilog作为我学习的硬件描述语言。

…… …… 余下全文

篇五 :学习FPGA的心得

学习FPGA的心得

一:设计规范:1,文件名必须体现模块的功能

2,时钟信号clk和低电平有效的信号(低电平有效*_n) 3,parameter和`define 进行宏定义和定义参数是, 名字要大写

4,信号,端口,模块,例话(代码最好小写)

5,一般字符的命名长度不应超过32个

6模块调用实体名的设定 mux4 u_mux4_1(....)

7,位宽【x:0】

8,begin和end,case和endcase。。。的对齐问题

9,原理图输入时,当有文本输入和原理图输入时,原

理图作为顶层文件,最好采用页面水平分层结构

10,阻塞(=)和非阻塞(>=)的问题

阻塞计算完立刻赋值,而非阻塞计算后不立刻赋值,

而是一起赋值,组合逻辑(阻塞赋值),时序逻辑(非 阻塞),既有时序又有组合是使用(非阻塞)

11,敏感信号列表(影响模块的输出和状态)

12,复位和初始化

13,输出设为reg 14.verilog中reg与integer的区别首先,integer和 reg与wire最大的差別是,integer本身是个32位元的有 号数,含正负。其次,integer消耗的资源也比多。

…… …… 余下全文

篇六 :FPGA学习心得

FPGA学习心得

学习FPGA我主要经历了这么几个阶段:

①、Verilog语言的学习,熟悉Verilog语言的各种语法。

②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。

③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。

先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在

Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。像systemC,systemVerilog之类的应该还在萌芽阶段,

以后可能会有较大发展。鉴于以上原因我选择了Verilog作为我学习的硬件描述语言。

其实有C语言的基础,学起Verilog的语言

很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。

…… …… 余下全文

篇七 :FPGA个人学习总结1

1.       综合方面

1)  经综合后:

普通的数据单端输入都会加一个IBUF缓冲器;

数据单端输出有个OBUF缓存器;

时钟输入口会加BUFGP缓冲器;

对于4选1的mux,if结构和case结构都只需要一个slice,由MUXF5控制两个LUT

下图为8选一case结构,MUXF6控制两个MUXF5,以两个slices实现8选1,用if结构实现的结构也是一样的

注意一点:

使用View Technology Schematic,来查看最底层的实现形式,即FPGA中的LUT、MUXF5等使用

但有的综合后RTL Schematic相同,Technoligy Schematic不同,而有的又相反(如one bit相加,加括号前后例子),那么我们应该以哪种为最优呢?

如下图:图上下分别为加括号前和加括号后RTL:只有根据实际需要来选择,如信号的先后顺序等等

   

2.LUT的名字后_数字,那个数字代表什么意思?

   LUTa_b:a代表所有输入数据位宽,即输入数据的个数,切勿将位宽理解为“每个输入端口的数据宽度(因每个输入端口是单bit输入);b代表LUT被初始化的状态

…… …… 余下全文

篇八 :学习FPGA的几点心得

1、首先要明白的是软件设计和逻辑设计的不同,并理解什么是硬件意识。

软件代码的执行是一个顺序的过程,编绎以后的机器码放在存储器里,等着CPU一条一条的取指并执行;因此软件设计中经常会带有顺序处理的思维。而逻辑设计则不同,我们设计的是数字电路,它是由很多很多的与非门及D触发器构成的,上电之后所有与非门和D触发器都同时工作,不会因为A触发器的代码描述在B触发器之前A触发器就是先工作,事实上,RTL级代码的代码先后顺序在综合成网表文件后这种顺序就消失了,取代的是基本逻辑电路之间的互联关系描述;因此逻辑设计需要的是一种并发的思维,我们也需要用并发的思维去考虑电路的设计。

当然,我们设计的电路功能一般都有先后顺序的关系,如果这种顺序不能通过代码的先后顺序来实现,那么要怎么完成这一功能呢?在逻辑设计中,我们所说的先后顺序都是基于时间轴来实现:它的承载体就是时序逻辑,也就是那些触发器。

2、其次就是要熟悉基本电路的设计。基本的电路不是很多,也就是D触发器、计数器、移位寄存器、状态机、多路选择器、译码器等几种,所有复杂的电路都可由这些基本的电路构成。高手水平高的体现并不是他能写出一些很奇特的电路,相反,水平高是体现在他们总能将复杂的电路用这些很朴素的基本电路去描述。甚至,你会发现他们的代码基本上是由if...else、case这些语句构成的,朴素的让

…… …… 余下全文