
1.检查fpga板连接是否正确;
2.检查fpga板上的电源是否可用;
3.检查fpga板上的晶振是否工作正常;
4.检查fpga板上的复位管脚是否正确;
5.检查fpga板上的控制信号是否正确;
6.检查fpga板上的外部存储器是否可用;
7.检查fpga板上的外部设备是否可用;
8.检查fpga板上的软件程序是否正确;
9.检查fpga板上的硬件程序是否正确;
10.检查fpga板上的烧录程序是否正确。
你还没有入门吧??推荐给你一本书《Altera FPGA/CPLD设计 基础篇》,网上有PDF格式的,看看就知道了。
“什么过程算是硬件啊??”这句话没看懂,它的所有过程都是硬件,包括VHDL和Verilog HDL程序设计也是硬件范畴,一般称之为编写“逻辑”。
DSP和FPGA不同,它里面的电路是定死的,不可改变。举个例子假如说一款DSP集成AD功能,你绝对不可能通过改变程序把DSP的AD功能功能删除掉。但FPGA不同,你可以用逻辑语言自己在其内部设计一个“纯硬的单片机或DSP”,别且你还可以把他们删除掉。
总的来说DSP和FPGA都是有门电路和一些附属电路组成的,这是他们的共同点,不同的是DSP里面的电路和一些附属电路是不能够重新组合的,软件程序只能在其提供的硬件功能的基础上进行软件应用编程,超出范围的则不能实现,而FPGA里面的电路和一些附属电路是可以通过VHDL和Verilog HDL这些硬件语言对其进行重新组合的,这就是硬件语言的强大,而DSP程序设计也是偏硬的软件设计,因为它与VC++、C#和JAVA不同,它必须依赖硬件才能运行,现在也应该属于硬件审计范畴,VC++、C#和JAVA则完全不依赖于硬件。
硬件的定义很简单,看得见摸得着的都是硬件范畴,但现在的硬件范畴已经扩大了,比如包括VHDL和Verilog HDL这些硬件语言、底层驱动的编写等等,并且逐渐和软件的界限变得模糊。
我来抛块砖引个玉~说说我的理解~
FPGA和C语言什么的是不一样的,他的程序是HDL语言,即VHDL或者Verilog HDL,这些语言有个名字:硬件描述语言。既然是硬件描述,那就是说只是描述某种状态,要注意描述状态这些词汇,就是说他是搭建一个硬件的固定的系统,一旦用语言描述好了以后,这个系统就固定了。
首先FPGA有两种逻辑:组合逻辑和时序逻辑。
组合逻辑:描述一个状态,比如c:=a+b ,d:=c+‘1’那么在硬件电路上,这就是个固定的通道,c在任何时刻都等于a+b,而d在任何时刻都等于c+‘1’,也就是说,d在任何时刻都等于a+b+‘1’(如果不考虑门级延时的话),a、b值改变时,c、d的值会同时改变,而C语言里就不一样,如果是以上两个语句的话,在第一句之间和第二句之间若设断点,则a、b改变时,d不会立刻发生变化,只有在执行完第二句后,d才会发生变化。
时序逻辑:这个是写在进程process(对VHDL)或者always(对verilog)里面的,会一级一级的靠时钟来触发,在进程中的if-else分支语句,其实就是出发的条件
楼主追问的那个问题,调用模块,其实也是在程序中并行的,就是说模块被调用了,就相当于写在这个程序里的并行语句,调用它的模块是一起一直在运作,之所以用运作就是想说明这些模块没有先后顺序,他们都是用来描述你要实现的功能的,只是对硬件的描述,映射到硬件上就是一堆寄存器和与非门和线而已。用FPGA的时候要经常联想下硬件怎么实现的,这样就会明白所谓的“执行顺序”。其实严格来说,FPGA应该没有“执行顺序”这个词,他只是对硬件的一个描述而已。
举个例子,就像你设置一个物理的陷阱,你要实现的功能是,人推门,夹在门上的水桶掉落,然后再砸到跷跷板上,这个过程,你的设置就相当于硬件语言描述,人推门可以理解为时序逻辑,相当于需要触发条件的并行逻辑,你检测门是否被推开,和是否有重物砸向跷跷板是一直在进行的,只是在某一刻这些条件才被触发,所以在你看来好像是顺序执行的,但实际上是一直并行的。
说了这些,仅供参考。。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)