FPGA,第一步


11

嗯,这是一个我在FPGA上的问题的延续在这里

我最终选择了带有Spartan 6 FPGA 的Digilent Atlys,尽管我在微控制器方面做了很多工作,但我没有FPGA的任何经验。

我花了最后几天阅读FPGA的数据表,我认为从Verilog开始是一个不错的选择。我找不到任何代码示例,即使数据表也不友好。

我现在想做一些编程,仿真,综合方面的工作,这就是我要做的

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

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

我正在寻找的是参考,可能是在线参考,也可能是一本书,为我提供了FPGA内部可用的每个硬件组件的代码示例和说明,例如DCM,slice,clb等。

我想那应该让我开始进入FPGA领域。

Answers:


13

程式码范例

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

同样,不要忘记Xilinx提供的许多应用笔记。他们对自己的设备非常有帮助。

设计流程

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

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

FPGA组件

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

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

通过这样做q <= a + bq = a + b可以推断出加法器。两者都会推断出加法器,但是使用阻塞/非阻塞语法的时间有所不同。

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

Xilinx在“ 图书馆指南” 中提供了组件本身的实际列表。

专家提示

最好的学习方法是对短代码进行实验,然后通过ISE综合运行它们,以查看产生的结果。ISE工具集本身也有很多示例。


5

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

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

您的语言的一般结构(包括如何构成组件)最好从书籍和示例中选出。我没有使用过Verilog,所以没有任何具体建议。模板仍然包括各种通用结构的代码片段。


您专门研究VHDL吗?关于UCF,为什么与Digilent董事会合作很重要?
凯文·博伊德

1
我没有专门研究-只是还没有研究Verilog。UCF是描述端口连接到哪个引脚以及时钟要求的文件。没有它,引脚将被随机分配,这将与现有电路板不匹配。
Yann Vernier

我了解引脚分配部分对时钟的要求是什么?
凯文·博伊德

1
时序约束包括时钟频率,建立时间和保持时间。您仍然可以在时序分析中获得信息,但是在约束文件中指定需求可以使工具检测到它们何时失败,并可能在边界达到极限时更加努力地满足您的需求。
Yann Vernier

1

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


spartan 6具有DCM和PLL,尚未找到DLL。在论坛上搜索之后,我发现Xilinx有一个名为Core Generator的工具,可以将其配置为生成时钟资源。
凯文·博伊德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.