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