最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • FPGA为什么是可以“编程”的呢?(一)

    1、不熟悉FPGA的内部结构和可编程逻辑器件的基本原理。

    为什么FPGA可编程?恐怕很多新手不知道,也不想知道。因为他们觉得这无关紧要。他们下意识地认为编程就像写软件。软件编程的思想根深蒂固,看到Verilog或者VHDL就像看到C语言或者其他软件编程语言一样。一一阅读,一一分析。如果这些菜鸟总是拒绝理解 FPGA 为何可编程,不了解 FPGA 的内部结构,可能就无法学习 FPGA。虽然现在EDA软件很先进,可以像写软件一样合成一些东西,但也许只有天知道EDA软件最后会合成什么。也许点亮一盏灯,跑一匹马就好了。

    这也是为什么很多菜鸟在学习了很久之后还是菜鸟的原因。那么为什么FPGA是“可编程的”呢?首先,让我们了解一下什么是“程序”。启示录“程”不过是一堆具有一定含义的01代码。编程其实就是写这些01代码。只是我们现在有很多开发工具。通常这些01代码不是直接写出来的,而是以高级语言的形式写出来的可编程片上系统psoc设计指南,最后通过开发工具转换成这个01代码。对于软件编程,处理器会有专门的译码电路将这些01码一一翻译成各种控制信号,然后控制其内部电路完成一项操作或其他操作。

    所以软件是一一阅读的,因为软件的操作是一步一步完成的。FPGA的可编程性也依赖于这些01代码来改变其功能,但不同的是,FPGA之所以能够执行不同的功能,并不是像软件那样翻译01代码来控制运算电路。这些都没有。FPGA主要由三个部分组成:可编程逻辑单元、可编程布线和可编程IO模块。什么是可编程逻辑单元?它的基本结构是由一定的存储器(SRAM、FLASH等)加上一个D触发器组成的一个4输入或6输入1输出的“真值表”。任何4输入1输出的组合逻辑电路都有对应的“真值表”。类似地,如果一个 4 输入 1 输出的“真值表”是由这样的内存组成的,只需要修改它的“真值表”。“内部值可以等效于任何具有 4 个输入和 1 个输出的组合逻辑。

    这些“真值表”的内在价值是什么?这只是那些01代码。如果要实现时序逻辑电路怎么办?这不是D触发器,任何时序逻辑都可以转换成组合逻辑+D触发器来完成。但毕竟它只实现了一个4输入1输出的逻辑电路。通常,逻辑电路的规模相当大。那么我们应该怎么做呢?这时,我们需要使用可编程连接。这些线上有很多内存控制的链接点,通过覆盖对应的内存值,可以判断哪些线是连通的,哪些是断开的。这可以组合许多可编程逻辑单元以形成大型逻辑电路。最后是可编程IO,这其实是FPGA作为芯片级使用时必须要注意的事情。任何芯片都必须有输入引脚和输出引脚。有可编程IO可以任意定义一个非专用引脚(FPGA中有专门的非用户可用引脚用于测试和下载)作为输入或输出,也可以设置IO的电平标准。总之,FPGA之所以可编程,是因为它可以通过特殊的01码做成“真值表”,这些“真值表”可以组合起来实现大规模的逻辑功能。

    不了解FPGA的内部结构,就无法理解最终的代码是如何变成FPGA的。没有深入了解如何充分利用FPGA。今天的FPGA不仅有上面提到的三个模块,而且还有很多专用的硬件功能单元。如何利用好这些单元来实现复杂的逻辑电路设计,是从菜鸟到高手必须克服的障碍。而这一切,还是必须从了解FPGA的内部逻辑及其工作原理开始。

    2、 对HDL语言的错误理解,怎么看都看不到硬件结构。

    HDL语言的英文全称是:Hardware Description Language,注意是Description这个词,不是Design。为什么外国人用Description这个词而不是Design?因为HDL真的不是用来设计硬件的,只是用来描述硬件的。文字描述准确地反映了HDL语言的本质。HDL语言不过是已知硬件电路的文本表示,只是以文本形式描述后续电路。在编写语言之前,硬件电路应该已经设计好了。语言只是将这种设计翻译成文字的表达形式。

    但是很多人不明白。既然硬件已经设计好了,直接送到生产部门就可以了。为什么要把它转换成文本表达式,然后通过 EDA 工具传递呢?其实这是很多菜鸟都不明白的。设计的抽象层次问题,任何设计包括服装、机械、广告设计都有抽象层次的问题。以广告设计为例,最初的设计可能只是一个概念,而设计这个概念只是一个想法,与最终的广告相去甚远。硬件设计也有不同层次的抽象,每一个都需要设计。

    抽象的最高层次是算法层次,其次是架构层次、寄存器传输层次、门层次和物理布局层次。使用HDL的好处是我们已经设计了一个寄存器传输级电路,然后将HDL描述转换成文本形式,剩下的转换到下级可以通过EDA工具来完成,非常棒交易。减少工作量。这就是可综合的概念,也就是说,这个抽象层次的硬件单元的描述可以被EDA工具理解,并转化为底层的门级电路或其他结构的电路。

    在 FPGA 设计中,这是用 HDL 语言在抽象层次上描述的,可以通过 FPGA 开发软件转化为问题 1 中描述的 FPGA 内部逻辑功能的实现形式。

    HDL也可以描述更高层次的抽象,比如算法层次或者架构层次,但是目前受限于EDA软件的发展,EDA软件无法理解这么高的抽象层次,所以HDL描述的抽象层次不能转化为At较低级别的抽象,这也称为不可综合。因此,在读写HDL语言,尤其是可综合的HDL语言时,不应该看到语言本身,而应该看到语言背后相应的硬件电路结构。

    如果你看到的HDL永远是一段代码,那么这样的人永远摆脱不了菜鸟的命运。如果你看到的代码不再是一行代码,而是一段硬件模块,那么恭喜你离开菜鸟级别,进入少菜鸟级别。

    3、FPGA本身什么都不是,一切都在FPGA之外,这可能是很多FPGA菜鸟最难理解的东西。

    FPGA 适合谁?许多学校解释说它是用于微电子或集成电路设计专业的学生。事实上,这只是因为很多学校受资金限制,无法销售专业的集成电路设计工具,而转而使用FPGA工具。而已。事实上,设计电子系统的工程师使用 FPGA。这些工程师通常使用现有的芯片来完成一个电子设备,例如基站、机顶盒、视频监控设备等。当现有的芯片不能满足系统的需要时,就需要使用FPGA来快速定义一个可用的芯片。

    如前所述,FPGA不能包含一些“真值表”、触发器、各种连接和一些硬件资源。电子系统工程师在使用FPGA进行设计时,只是考虑如何结合这些未来的资源来实现某些逻辑功能。只是这样,不必像IC设计工程师那样担心最终的芯片能否制造出来。从本质上讲,这与将现有芯片组合成不同的电子系统没有什么区别,只是需要关注下层资源。FPGA很容易使用,因为它无非就是那些资源。了解了前两点之后,就可以创建一个实验板,运行实验,做一些简单的事情。要真正用好FPGA可编程片上系统psoc设计指南,仅仅了解一些FPGA知识是远远不够的。

    目前FPGA的应用主要在三个方向:第一个方向也是传统方向,主要用于通信设备的高速接口电路设计。该方向主要利用FPGA处理高速接口协议,完成高速数据收发与交换。. 此类应用通常需要使用具有高速收发器接口的 FPGA。同时要求设计人员了解高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,有良好的模拟电路基础。过程中出现的信号完整性问题。FPGA的第一个也是最广泛使用的应用是在通信领域。一方面,通信领域需要高速的通信协议处理方法。另一方面,随时修改通信协议。因此,能够灵活改变功能的FPGA成为了首选。迄今为止,超过一半的 FPGA 应用也在通信行业。

    第二个方向可以称为数字信号处理方向或数学计算方向,因为这个方向在很大程度上已经超出了信号处理的范围。比如早在2006年就听说老美用FPGA做金融数据分析,后来看到一个用FPGA做医疗数据分析的案例。在这个方向上,要求FPGA设计人员有一定的数学基础,能够理解和改进更复杂的数学算法,并利用FPGA内部的各种资源将其变成实际的运算电路。

    目前真正付诸实践的是通信领域的无线信号处理、信道编解码、图像信号处理等领域。正在开展其他领域的研究。了解这些东西。但是最近发现,欧美很多电气工程和计算机科学博士已经转行到金融行业进行金融信号处理。相信随着受训人数的增加,FPGA在其他领域的数学计算功能会得到更好的展示,我也打算在这些领域做一些研究。然而,在中国学金融和医学的人,连数学都很少用,更不用说用FPGA来帮助他们完成数学运算了。

    第三个方向就是所谓的SOPC方向。其实严格来说,这已经在FPGA设计的范围之内了,只不过是搭建在FPGA平台上的一个嵌入式系统的底层硬件环境,然后设计者就主要在上面了。仅用于嵌入式软件开发。就 FPGA 本身的设计而言,该设计相当简单。但是如果涉及到需要在FPGA中做专门的算法加速,其实需要第二方向的知识,如果需要设计专用的接口电路,就需要用到第一方向的知识。

    就目前的SOPC方向与第一、二方向相去甚远,主要原因是SOPC主要是基于FPGA,或者在FPGA内部的资源中实现一个“软”处理器,或者在FPGA内部嵌入一个处理器。处理器内核。然而,大多数嵌入式设计都是基于软件的。在现有硬件开发的基础上,大多数情况下的接口已经标准化,不需要这么大的FPGA逻辑资源来设计复杂的接口。而且,目前看来,与SOPC相关的开发工具还很不完善,以ARM为代表的各种嵌入式处理器开发工具已经深入人心。大多数以ARM为核心的SOC芯片提供了大部分的标准接口,

    通常是在一些特殊的行业,这方面的需求非常迫切。即便Xilinx目前将ARM的硬核加入FPGA,相信目前的情况也不会有太大变化。别忘了很多老式的 8 位微控制器仍然混在嵌入式领域。嵌入式主要不是基于硬件的差异。更多的取决于软件的不同来体现价值。以前看好cypress的Psoc的想法。与SOPC系列不同,Psoc的思想史记载,在SOC芯片中嵌入了一小块FPGA,实际上可以满足嵌入式的小硬件接口差异。例如,一个应用程序需要 4 个 USB,而通常的处理器不会提供这么多,所以你可以使用这样的FPGA来提供更多的USB接口。另一个需要 6 个 UART 的应用也可以用相同的方式完成。

    对于嵌入式设计公司来说,他们只需要储备一种芯片,就可以满足这些设计中的各种细微差别。它的主要区别仍然是通过软件完成的。但目前 cypress 过于封闭,如果它使用 ARM 作为处理器核心,拥有完整的工具链。同时,开放IP合作,让大量第三方为其提供IP设计是非常有前景的。但是现在的柏树生活并不轻松,Psoc 的想法不知道什么时候会大放异彩。

    4、 数字逻辑知识是必不可少的。FPGA无论在哪个方向发展,都离不开数字逻辑知识的支持。

    FPGA 只是实现数字逻辑的一种方式。如果连最基本的数字逻辑知识都有问题,学习FPGA的愿望只是空中楼阁。而这恰恰是很多菜鸟最不愿意面对的问题。数字逻辑是任何电气电子专业的专业基础知识,也是一门必学的课程。很多人无非就是学习、考试、完成。

    如果不能掌握数字逻辑的知识,养成良好的设计习惯,学习FPGA终究还是迷雾中望月,永远都是空的。

    以上四点只是我的结论,菜鸟在学习FPGA时最容易误入歧途。学习FPGA其实就像学习围棋。学习如何在棋盘上移动很容易,但要成为大师就更难了。

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » FPGA为什么是可以“编程”的呢?(一)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论