FPGA,第一步

电器工程 FPGA 赛灵思 斯巴达人
2022-01-06 03:50:02

好吧,这是我对 FPGA 的问题的延续

我最终选择了带有 Spartan 6 FPGA 的Digilent Atlys,尽管我已经使用微控制器完成了一些工作,但我之前没有任何 FPGA 经验。

前几天我一直在阅读 FPGA 的数据表,我认为从 Verilog 开始是一个不错的选择。我找不到任何代码示例,甚至数据表也不适合新手。

我现在想做一些编程、模拟、综合方面的工作,这就是我想做的

  1. 从 FPGA 生成一个奇数频率,例如 54Mhz(它在 100Mhz 时钟上运行)并将其路由到其中一个引脚。我可能不得不为此使用 DCM 或 PLL,但不知道如何从这里开始?

  2. 从 FPGA 实现某种 I2C 读写。

我正在寻找的是参考资料,可能是在线参考资料或一本书,它为我提供了 FPGA 内部可用的每个硬件组件的代码示例和描述,如 DCM、切片、clb 等。

我想这应该让我开始进入 FPGA 的世界。

3个回答

代码示例

跳到OpenCores,你会发现几十个开源项目。有许多是用 Verilog 编写的,涵盖了从 I/O 设备到处理器的所有领域。

此外,不要忘记赛灵思提供的许多应用说明。他们对自己的设备非常有帮助。

设计流程

拿起一两本关于设计流程的书,以便您大致了解 FPGA 设计所涉及的步骤。总之,它们将涉及:

  1. 设计条目 - 在您的情况下,Verilog。
  2. 功能模拟 - 使用各种工具。
  3. 综合 - 在您的情况下,使用 Xilinx ISE 工具。
  4. 模拟 - 验证您的综合后设计,因为 Verilog 的某些方面不可综合。
  5. 布局布线 - 使用 Xilinx ISE 工具。
  6. 实现 - 将设计下载到 FPGA 上。
  7. 测试。

FPGA 组件

至于使用 FPGA 组件,有不同的使用方法。但是假设您使用的是 Verilog 设计条目,您可以推断实例化不同的组件。

推理通常涉及让综合工具根据您需要的功能选择要使用的最佳组件。最好的例子是设计一个加法器。

通过做q <= a + borq = a + b你可以推断出一个加法器。两者都会推断加法器,但在使用阻塞/非阻塞语法时会有所不同。

实例化通常涉及在代码中调用确切的库组件。有些组件在代码中无法轻易推断 - 例如 DCM。您可以使用 ISE 工具和示例来了解更多相关信息。

Xilinx 在指南中提供了组件本身的实际列表。

专家提示

学习这一点的最佳方法实际上是试验一小段代码,并通过 ISE 综合运行它们,看看它会吐出什么。ISE 工具集本身也有大量示例。

您的绝对参考资料将是Spartan 6 用户指南例如,时钟资源指南 (UG382) 介绍了如何配置 DCM。有关实际代码外观的示例,ISE 拥有它们的数据库。打开语言模板(工具栏中的灯泡),然后查看语言(VHDL 或 Verilog)-> 设备原语实例化-> 芯片系列(Spartan-6)-> 时钟组件。

Digilent 提供了特定于您的板的详细信息,特别是您需要 UCF(命名所有 IO)和参考手册(解释外围电路)。

您的语言的一般结构,包括如何制作组件,最好从书籍和示例中获取。我没有使用过 Verilog,所以没有任何具体建议。尽管如此,模板还包括各种通用结构的片段。

对于时钟,您使用 DLL/PLL megacore。