Neural network FPGA中的神经网络模拟器?

Neural network FPGA中的神经网络模拟器?,neural-network,fpga,Neural Network,Fpga,为了学习FPGA编程,我计划在FPGA中编写一个简单的神经网络(因为它是大规模并行的;这是FPGA实现可能比CPU实现更快的为数不多的事情之一) 虽然我熟悉C语言编程(10年以上)。我对FPGA开发的东西不太确定。你能提供我应该做什么/学什么/买什么的指导清单吗 谢谢 它很老了,因为我已经有近20年没怎么考虑FPGA了,而且它使用了一种相当晦涩的并发编程语言,但是Page&Luk,1991,以一种很好的方式涵盖了一些重要的主题,我认为,对于您的目的来说,已经足够了。有两个链接可供试用: 是一个主

为了学习FPGA编程,我计划在FPGA中编写一个简单的神经网络(因为它是大规模并行的;这是FPGA实现可能比CPU实现更快的为数不多的事情之一)

虽然我熟悉C语言编程(10年以上)。我对FPGA开发的东西不太确定。你能提供我应该做什么/学什么/买什么的指导清单吗


谢谢

它很老了,因为我已经有近20年没怎么考虑FPGA了,而且它使用了一种相当晦涩的并发编程语言,但是Page&Luk,1991,以一种很好的方式涵盖了一些重要的主题,我认为,对于您的目的来说,已经足够了。有两个链接可供试用:

  • 是一个主动维护的、基于linux的Occam编译器,我知道它有一个活跃的用户群
  • 罗杰·皮尔(Roger Peel)有一些关于他从Occam代码合成到FPGA I/O的基于linux的工作流程的文档

  • Occam->FPGA不是行动的起点,但它可能是比Verilog更好的起点。

    不管Charles Stewart怎么说,Verilog是一个很好的起点。它让我想起了C,就像VHDL让我想起了ADA一样。没有人在工业上使用Occam,在大学里也不常见

    对于Verilog书籍,我特别推荐。与C语言不同,Verilog的并行工作非常简单


    购买时,可从[Altera]或Altera's(例如,该产品售价449美元或199美元)或Xilinx购买相对便宜的Cyclone III评估板

    我给你第三个建议:使用VHDL。是的,表面上看起来像是艾达。虽然Verilog与C语言有一点相似之处,但是,使用Verilog,您只能获得随附的开箱即用的类型。使用VHDL,您可以定义自己的新类型,从而可以在更高的级别上编程(当然仍然是RTL)。我很确定Xilinx和Altera免费工具同时支持VHDL和Verilog。Ashenden的《VHDL设计者指南》是一本很好的VHDL书籍


    VHDL有一个标准的定点数学包,可以使NN实现更容易。

    我想指出在FPGA中实现神经网络的一个潜在问题。FPGA的路由资源有限。与逻辑资源(触发器、查找表、内存)不同,路由资源难以量化。也许一个简单的神经网络可以工作,但一个具有网状互连的“大规模并行”网络可能不行


    我建议从OpenCores.org上的一个简单内核开始,只是为了熟悉FPGA流程,然后继续制作神经网络的原型。下载包含ISIM模拟器的免费Xilinx网页是一个良好的开端。稍后,您可以购买一个带有小型FPGA(例如Xilinx Spartan 3)的廉价开发板来运行您的设计

    神经网络可能不是学习如何编程FPGA的最佳起点。我最初会尝试一些更简单的东西,比如驱动LED的计数器或数字显示器,然后从那里开始构建。可供使用的场地包括:

    • -简单项目和一些电路板的优秀示例
    • -对于许多接口等非常有用的参考代码

    您还可以考虑使用FPGA中的软处理器来帮助您从C转换为VHDL或Verilog。这将允许您将小代码模块从一个移动到另一个,以查看硬件中的差异。语言的选择有些随意——大多数情况下,我使用VHDL编写代码(语法类似于ADA),但我的一些同事更喜欢Verilog(语法类似于C)。我们偶尔会讨论一下,但实际上这是个人的选择

    至于《买家/学习者指南》,您需要:

  • 耐心:)-由于构建中额外的“自由参数”数量,FPGA的设计周期明显长于软件,因此,如果需要一段时间才能让设计完全按照您想要的方式工作,请不要感到惊讶

  • 开发板-为了学习,我会从三大FPGA供应商中的一家购买一个:Xilinx、Altera或Lattice。目前我更喜欢Xilinx,但这三个都不错。为了学习,不要购买基于高端部件的产品-当您开始使用FPGA时,不需要购买。对于Xilinx,根据斯巴达系列(如SP601)制作一个(我自己也有一个)。对于Altera,购买旋风式。开发板将比高端部件的开发板便宜得多

  • 编程电缆-大多数公司生产的USB编程电缆带有一个特殊的连接器,用于对板上的设备进行编程(通常使用JTAG)。有些主板内置了编程接口(如Xilinx的SP601),因此您不需要在上面花费额外的钱

  • 构建工具-这些工具有很多种,但大多数大型FPGA供应商都提供自己的解决方案。请记住,这些工具仅适用于较小的低性能FPGA,例如Xilinx ISE网页包

    该软件包括您可能不熟悉的来自软件世界的阶段。工具流的细节总是在变化,但是您使用的任何工具都应该能够从您的代码到您的特定设备。此设计流程的最后一部分通常由FPGA供应商提供,因为它是硬件专有的。 为了给您一个简单的示例,您需要的软件应该采用VHDL和Verilog代码,并且(这是Xilinx版本):

    • 将其“合成”为与特定FPGA中可用的构建块相匹配的结构
    • 将设计“翻译并映射”到零件中
    • “放置并路由”特定设备中的逻辑,使其满足您的计时要求(例如,您希望设计运行的时钟速度)

  • 在FPGA上构建“文字”神经网络的大多数尝试都会很快达到路由限制,您可能会发现