高云fpga编译开发环境
A. 求教FPGA编译中的问题
应该跟时序约束相关,看看原来的工程里面的.sdc文件是否拿过来了。(Assignments--Settings--TimeQuestTimngAnalyzer)
B. 在FPGA开发过程中,编程与配置这两个操作有什么区别
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。3)FPGA内部有丰富的触发器和I/O引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。以各种类型的FPGA芯片加上实验开发需要的外围通用电路,结合实验程序,就形成FPGA开发板,可以高效快速学习FPGA开发。ASIC()是专用集成电路。目前,在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。ASIC分为全定制和半定制。全定制设计需要设计者完成所有电路的设计,因此需要大量人力物力,灵活性好但开发效率低下。如果设计较为理想,全定制能够比半定制的ASIC芯片运行速度更快。半定制使用库里的标准逻辑单元(StandardCell),设计时可以从标准逻辑单元库中选择SSI(门电路)、MSI(如加法器、比较器等)、数据通路(如ALU、存储器、总线等)、存储器甚至系统级模块(如乘法器、微控制器等)和IP核,这些逻辑单元已经布局完毕,而且设计得较为可靠,设计者可以较方便地完成系统设计。现代ASIC常包含整个32-bit处理器,类似ROM、RAM、EEPROM、Flash的存储单元和其他模块.这样的ASIC常被称为SoC(片上系统)。FPGA是ASIC的近亲,一般通过原理图、VHDL对数字系统建模,运用EDA软件仿真、综合,生成基于一些标准库的网络表,配置到芯片即可使用。它与ASIC的区别是用户不需要介入芯片的布局布线和工艺问题,而且可以随时改变其逻辑功能,使用灵活。FPGA(现场可编程门阵列)是专用集成电路(ASIC)中集成度最高的一种,用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑,因而也被用于对CPU的模拟。用户对FPGA的编程数据放在Flash芯片中,通过上电加载到FPGA中,对其进行初始化。也可在线对其编程,实现系统在线重构,这一特性可以构建一个根据计算任务不同而实时定制的CPU,这是当今研究的热门领域。
C. 什么是编译环境他的作用是什么编译环境跟运行平台有什么不同
编译环境是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。作用是通过代入预定义等程序段将源程序补充完整。
编译环境跟运行平台区别为:工具不同、调试不同、硬件支持不同。
一、工具不同
1、编译环境:编译环境包含开发、调试和部署等工具。
2、运行平台:运行平台只包含运行指令和class实现的工具。
二、调试不同
1、编译环境:编译环境有调试代码的功能,调试后可重新编译执行。
2、运行平台:运行平台没有调试代码的功能。
三、硬件支持不同
1、编译环境:编译环境使用的是模拟设备,不需要硬件支持。
2、运行平台:运行平台需要硬件支持,在实际设备中运行。
D. 编译器和开发环境的关系
谈谈程序设计语言、编译器和开发环境之间的关系
许多初学者都会对这三个概念区分不清,应该说这三个概念是完全不同的,不能混为一谈。在本文中,我就尽我最大的能力来讲讲这三个概念以及他们之间的关系。
首先说程序设计语言,它同人类的自然语言一样也是一个语言,并且它是自然语言的一个子集。大家都知道自然语言是极其庞大和复杂的系统,具有很多不不确定性和不精确性,因此至今我们也没有办法对自然语言进行形式化的描述。程序设计语言只是自然语言的一个很小的子集,在计算机系统中,一切都是需要确定性和精确性的描述,因此程序设计语言也是极为规范的,在程序设计语言中,几乎就不允许存在不确定性和不精确性,也就是说不能存在文法的二义性。这样一个程序设计语言就可以通过一系列的产生式来进行形式化的描述,这一系列的产生式就被称为文法,语言就是由文法来定义的。从另外一个角度来说,一个程序设计语言,它仅仅是一个语言,它只对程序进行形式上的要求。或者说,程序设计语言对应于编程中的编码阶段。我们有必要对程序开发的三个阶段进行了解,程序开发从时间先后顺序上可以分为三个阶段:1.编码阶段,2.编译阶段,3.运行阶段。在编码阶段,我们使用的就是程序设计语言。语言除了定义了文法以外,其他的任何事情他都不做。当然一种语言也有很多种版本,比如 BASIC 语言,就有很多种版本,C语言也是如此。这里所讲的语言的版本与编译器的版本是不一样的。C语言的标准版本就是 ANSI C,如果初学者会提出这样的问题“C语言哪个更好?”,这样的问题反映出他们对语言与编译器之间的关系的认识的不足。如果从语言的角度来讲 VC 和 TC 是没有多大区别的,他们基本上都能支持 ANSI C。
再来看看编译器。编译器与语言的关系就是,翻译者与语言的关系。编译器就是一个翻译,他把使用某种语言书写的源程序,翻译成为等价的使用目标语言书写的目标程序。前面我们也说了,语言是一个抽象的概念,是由文法来定义的。唯一实在的东西,也就是定义语言的文法。在使用语言时,我们只能说,使用这种语言去书写一段程序。编译器则是能够将某种语言的源程序进行翻译,然后生成目标程序。我们通常会说,某个编译器支持了什么语言,也就是说这个编译器能识别并翻译这种语言。现在的C编译器,一般都是支持了 ANSI C 语言的,另外,编译器的设计者可能还会对 ANSI C 进行一定的扩充,而且各个编译器进行扩充功能都是不同的,因此可能就会出现一个编译器诞生以后,就会出现一个新的语言的现象。TC 和 VC 就分别对 ANSI C 进行了不同的扩充,比如在 TC 中有 far 等关键字,ANSI C 中是没有的,在 VC 中有内嵌汇编的语法 _asm,而在 TC 中则是使用 asm 关键字,这些内容在 ANSI C 中没有的。编译器的输入时源程序,而其输出则是目标程序。一般情况下,源程序是使用某种高级语言书写的,而目标程序则是某个特定机器的机器语言程序。另一方面,编译器除了提供编译功能,还会提供一些运行库。所谓运行库就是由一些事先写好的子程序所组成的子程序库。例如C语言中的 printf 函数,就是由C的运行库提供的。在 ANSI C 中定义了一些C语言的标准库函数,这些库函数是标准C必须具备的,也可以说这些库函数成为了 ANSI C 的一个部分。另外,不同的编译器还可以提供自己的,非标准的库给用户使用,在 TC 中的 Graphics 库,其实就是由 TC 提供的,它不是属于 ANSI C 的。简单的说,编译器是由编译程序和运行库组成的。在程序的编译阶段,就是使用编译器对源程序进行编译生成目标程序。
在程序的运行阶段则是在一个特定的平台上,由这个平台来执行编译生成的程序。Java 虚拟机是一个平台,DOS 和 Windows 也是平台,编译器的作用就是沟通源程序和程序的运行平台。源程序相对于一个运行平台来说是不可识别的,但当编译器将源程序编译成为这个平台所能够识别的目标语言以后,程序就可以在这个平台上运行了。
应该看到,编译器在其中起到了很重要的作用。我们现在可以明确一些概念了,程序设计语言只是语言,它本身很难说有什么好坏,这就如同说“汉语和英语哪个好”一样。使用某一种程序设计语言,我们可以书写自己的程序,从而向计算机表达自己希望完成的功能。这个阶段,我们称为编码阶段。编译器由编译程序和运行库组成,编译程序负责将源程序翻译成为目标程序,运行库提供了一些基本的子程序给程序编写者使用。我们可以说编译器是否支持某种语言,例如 TC 编译器是支持 ANSI C 的,而 GCC 则是一个能够支持多种语言的编译器。然而不同的编译器除了提供对某种语言的支持以外,还可能对该语言进行了某些功能扩充。编译器在对语言的支持上,差别都是不太大的,这是因为许多语言都制定了一个标准,例如 ANSI C。编译器的另外一个重要特性,就是对运行平台的支持。平台指的是一个程序运行所需要的所有软件和硬件的基础。编译器对运行平台的支持,是通过将源程序编译成为目标程序,以及编译器所提供的运行库来实现的。例如,TC只能将C源程序编译生成,使用 80x86 CPU,操作系统为 DOS 的 16bit DOS 程序。VC只能将C源程序编译生成 80x86 CPU、操作系统为 Windows 的 32bit Windows 程序。使用编译器对源程序进行编译被称为编译阶段,这个阶段编译程序将源程序编译为某个平台的目标代码。程序在具体的平台上运行时,被称为运行阶段。应该指出,在编码阶段使用到的是程序设计语言,以及编译器所提供的库函数,这个阶段产生的是源程序。在编译阶段使用的是源程序和编译器,这个阶段产生的是目标程序。在运行阶段使用到的是目标程序和运行平台,这个时候产生的是程序运行结果。
因此说讨论一个程序设计语言好坏没有多大意义,因为他们使用的场合不同,比如汇编语言和 Java 语言,要谈论这两个语言的好坏是没有实际意义的。而说“C语言哪个好”之类的话也是没有意义的,我想大家学的C也就是在 ANSI C 基础上的C,并且不同的C语言之间的差别是极小的。我们通常指的 TC、VC 都是指编译器,而不是语言。编译器能够支持一种或者多种的程序设计语言,TC 能够支持 ANSI C,VC 能够支持 ANSI C 和 ANSI C++,而 GCC 则是一个支持多语言的编译器。如果真要说 VC 比 TC 好,只能说 VC 编译器提供的库函数更多,并且 VC 能够支持的平台是 Windows,而 VC 编译出来的代码也都是 32bit 的。
在以上概念中纠缠了这么久,我也不再想多说了。再来看开发环境。为了能够方便程序设计者进行编码、调试等工作,编译器制造商在制作好一个编译器以后,都会提供一个集成开发环境(又称为IDE)。在这个 IDE 中,用户可以完成编码、编译、调试、运行的全部工作。并且在最新的IDE中,可能还会提供一个可视化的设计功能,可以方便用户进行程序界面的设计。例如 VB 等。另外一个方面,开发环境除了包括 IDE 以外,还包括了程序运行的平台。比如硬件是 IBM PC 兼容机,操作系统是 Windows 等。
可能,能讲的也就这么多了,感觉讲的并不是很好,不过我已经尽力了。有些东西是很难说清楚的,“只能意会不可言传”指的就是这个了。不要怪我讲的不好,还是自己用心去理解和体会吧。
E. fpga编译问题
你是不是用了SIGNALTAPII,用了的话你编译时必须是你在signaltaoII中用到的信号所在的层来编译,如果不是的话就会出现这个问题。