我这学期有一门数字设计课程,我很喜欢。现在我知道嵌入式系统和数字设计中的大部分工作都是先在计算机模拟器上完成,然后再使用硬件实现。所以我想知道我应该如何学习HDL。我有几个问题
- 什么?我不知道标准是什么,但想了解哪个容易上手。我知道大多数 HDL 都是为与 FPGA 一起使用而设计的,我不知道。
- 如何?我应该遵循一本带有独立示例的教科书,还是应该着手实施一个项目,比如实施一个小系统(可能是交通灯控制之类的东西)。
- 在哪里?我从哪里获得资源?
我这学期有一门数字设计课程,我很喜欢。现在我知道嵌入式系统和数字设计中的大部分工作都是先在计算机模拟器上完成,然后再使用硬件实现。所以我想知道我应该如何学习HDL。我有几个问题
我和你的情况差不多。
我在做什么:
我在我学习的大学里参加了免费的 VHDL 基础课程。我玩过Spartan 3E board。
所以,我买了板子,我要开始玩了。
我的一个朋友推荐了这些书:
他也建议了这个文档:
你能澄清一下你想使用什么 HDL 吗?选择基本上是 Verilog 或 VHDL,[EDIT],以及它们的亲属,Verilog-ASM和VHDL-ASM(模拟混合信号)。[/EDIT]Verilog 有一些类似 C 的语法,如果你以前用过 C,这会让你更容易上手,但这也容易养成坏习惯——你不能用 C 编写硬件,因为它是全部平行!和 C 一样,它假设你知道自己在做什么,而且很容易把自己踢到脚上。VHDL 迫使您以完全不同的方式思考,这很有帮助,但也很困难。它更冗长,如果你做了一些奇怪的事情,更有可能警告你。请参阅此Slashdot 讨论或本文。
编辑: “网表语言”不是我用于设计工作的东西(在文本编辑器中),但我想你可以。SPICE、Cadsoft Eagle 的格式和 EDIF 都是我想到的示例(用途非常不同)。我只使用网表来验证我的原理图是否正确(我的 Eagle 原理图中的每个连接是否有意义),调整模拟器提供的抽象(SPICE,类似于在 C 中使用 ASM 语句的方式),或者在不同程序(EDIF)之间进行导出/导入。Spectre
网
表语言与 Verilog-A[nalog] 和 SPICE 相关,专为设计和验证工作而设计。 桅杆是一种与 Verilog-AMS 和 VHDL-AMS 兼容的组件建模语言。搜索有关这些语言的教程表明,经常使用看起来像原理图捕获实用程序的工具,而不是使用网表语言本身进行编程。
我还将支持 Xilinx Spartan FPGA 和Digilent开发板。但是,如果您不需要 O Engenheiro 提到的入门板上的以太网(150 美元)(教育折扣价格),我会选择 Basys(60 美元)或 Nexys(100 美元)。Basys 和 Nexys 更便宜,因此在学校更受欢迎,所以网上有更多的教程和实验室。
有两种 HDL 语言,它们是 VHDL 和 Verilog,请向您的教授询问您将学习哪种语言并尝试了解它是如何工作的:语法以及您如何在此基础上制作模块并对所有数字电路进行全面审查。
在做任何事情之前,请确保您真正了解有关数字电路的一切,因为 HDL 不会创造任何新东西,您只会以不同的方式使用这些东西。所以你可以使用上面两本书中的一本,做一些练习,问你老师他推荐的书并使用它们,或者上面两本书中的一本。
问你老师,他们在课堂上使用哪种 FPGA,如果是 Altera、Xilinx、Lattice 或其他,如果 Altera 下载 Quartus Web 版,如果 Xilinx、ISE Webpack,免费下载其中之一和尝试了解其中一个软件并做一些练习,在其中一个上进行模拟。
你是对的,大约 90% 的 HDL 工作都在模拟器上,所以了解 Modelsim 模拟器和/或 xilinx 上的 ISIM 模拟器,它们的命令以及如何做测试台。
无论您最终在哪里工作,都必须使用他们已经使用的相同 HDL - 因此,为了增加被录用的机会,请尝试花一些时间使用 Verilog 和 VHDL。它曾经很简单:Verilog 在美国使用,VHDL 在欧洲使用——如今它并不简单。
Upthread 有人提到学习为 VHDL “以不同的方式思考” - 你也必须为 verilog 这样做,它看起来像 C 但它不是 - 一个好的起点是查看并查看在综合过程中创建连线和触发器的位置 - 一旦你达到你可以看到那些,并且可以在你的脑海中“看到”时间危险的地方你大部分都在那里