数字设计与软件开发没有很多共同之处(也许除了Verilog语法看上去有点像C语言,但看上去只是)。因此,很难充分回答这类问题。但是作为一个从软件开发过渡到硬件设计的人,我会试一试。回顾自己,如果我现在知道自己现在所知道的,这就是我会如何建议自己:
白手起家
忘记有关软件开发的一切。特别是编程语言。这些原则不适用于数字设计。对于设计CPU的人来说,用汇编器甚至C语言对其进行编程可能会很容易,但是汇编程序员将无法设计CPU。
在您的学习道路上,不要倾向于用您现有的软件知识来解决看似容易解决的问题。经典示例之一是“ for循环”。即使您可以编写for循环(例如verilog),它也有不同的用途。它主要用于代码生成。正如软件开发人员所看到的那样,它可能也是一个for循环,但是它除了模拟之外没有其他用途(即,您将无法像这样编程FPGA)。
因此,对于您要处理的每个任务,不要以为您知道该怎么做,而要进行研究-检查书籍,示例,询问更有经验的人等。
学习硬件和HDL语言
最受欢迎的HDL语言是Verilog和VHDL。也有特定于供应商的产品,例如AHDL(Altera HDL)。由于这些语言用于描述硬件组件,因此它们几乎全部都用于以相似的方式表达相同的东西,但是语法不同。
有人建议学习Verilog,因为它看起来像C。是的,它的语法是C和Ada的混合,但软件开发人员很难靠它学习。实际上,我认为它甚至可能使情况变得更糟,因为在Verilog中编写C会有诱惑。这是度过非常糟糕时光的良方。
考虑到这一点,我建议您凝视VHDL。尽管考虑到上述情况,Verilog也可以。
要记住的一件事是,您必须了解用该语言表达的内容。“描述”了哪种硬件及其工作方式。
因此,我建议您给自己买一本关于电子产品的书,以及一本好书-HDL Chip Design(又名蓝皮书)。
获取模拟器
在开始使用硬件进行任何操作并使用特定于供应商的功能等之前,请先准备一个模拟器。我从Verilog开始,然后将Icarus Verilog与GTK Wave一起使用。这些是免费的开源项目。运行您在书中看到的示例,通过设计自己的电路进行练习以对其有所了解。
获取开发板
当您想要前进时,请获取开发板。如果您知道您的雇主希望与莱迪思一起工作,那么请获取莱迪思董事会。
编程方法非常相似,但细节有所不同。例如,不同的工具,不同的选项,不同的界面。通常,如果您有一个供应商的经验,则不难切换。但是您可能想要避免这种额外的学习曲线。
我还要确保该板随附您计划使用或可扩展的组件。例如,如果您要设计路由器之类的网络设备,请确保该板具有以太网PHY,或者可以通过HSMC连接器等对其进行扩展。
电路板通常带有良好的参考,用户指南和设计示例。研究他们。
看书
您将需要阅读书籍。以我为例,我没有认识数字设计的朋友,而且该网站的功能也不是很简单,因为它很简单-我什至不知道该如何表达我的问题。我所能想到的就像“嗯,伙计们,有一个dcfifo的东西,我听到了有关时钟域穿越挑战的一些信息,这是什么,为什么我的设计不起作用?”。
我个人是从这些开始的:
FPGA供应商提供了大量具有最佳实践的食谱。将它们与参考设计一起研究。例如,这是Altera的一款。
提出更多具体问题
当您浏览书籍,模拟设计,使开发板上的某些LED闪烁时,您很可能会遇到很多问题。在这里问这些问题之前,请确保在本书的下一页或在线(即在特定于Lattice的论坛中)看不到答案。