在没有实际硬件的情况下模拟FPGA设计


9

我是FPGA的新手,目前正在参加HDL(特别是Vererilog)课程。我对数字设计(例如组合电路和时序电路)有足够的了解。

我想创建一个与该YouTube视频中显示的项目相似的项目。

我也知道Xilinx ISE可以处理逻辑信号并模拟波形。它是否具有诸如通过USB,相机等获取输入信号并将其输出到计算机中的额外功能。

是否可以在不购买实际的FPGA板的情况下运行该项目(例如在计算机中进行仿真)?我的意思是,我可以在计算机上构建,编码和运行该项目,并通过USB连接摄像机,然后让传入的视频信号由Xilinx ISE等HDL模拟器处理。一块FPGA板并在那里合成您的项目,我目前没有预算去拥有一个)

(我真正的意思是将HDLl设计连接到真实世界的源代码,C代码等中。)


5
我不知道您是否可以使用Xilinx的模拟器来做到这一点,但是类似Icarus Verilog的东西可以让您的仿真接口连接到C代码,该代码可以从现实世界中获取数据。但是它的运行速度可能比实时运行慢几个数量级,因此处理实时视频源将很困难。
克里斯·斯特拉顿

1
哦,那是我发现的短语,与现实世界的源头连接
WantIt

2
@vvavepacket支持评论/帖子,以感谢评论者/发布者。
Chetan Bhargava 2013年

1
视频中的FPGA看起来像Altera DE2。根据许可证和芯片的不同,价格在200到600美元之间。在csc.kth.se/~emille/niisim中
Niklas

2
Terasic DE0-nano的价格大约为80美元,可以连接相机和LCD。实际上,他们在其网站上有演示。与它们无关,但DE0-nano在价格合理的板上有一个非常漂亮的小FPGA。我一直讨厌大多数开发板的价格昂贵。
akohlsmith

Answers:


5

据我所知,Xilinx工具无法进行实时接口,
我也不了解关于开源模拟器的ModelSim(由Actel的Libero IDE使用),那里有一些相当奇特的项目,因此可能可以做到这一点的东西。

但是,这可能是您没有要求的答案(如果没有帮助,我将其删除),但是我会考虑构建自己的FPGA板来执行此操作,或者至少逐步着手进行。我蚀刻了我的第一块FPGA板,尽管它很简单(板不是过程;-),但是它很快就教会了我很多东西。

优点:

  • 便宜的
  • 立即深入了解所有有关硬件注意事项的知识。强制您首先阅读大多数数据表,然后编写自己的入门代码,而IMHO通常比即插即用开发板方法更好地学习。
  • 仅将您需要的东西放在板上。
  • 使您更进一步地朝着实现实际工作设计的目标迈进,可能需要付出与弄清楚如何实时模拟所有工作/研究相同的工作/研究。

缺点:

  • 尽管可以在eBay上找到廉价版本的Xilinx / Altera程序员,但仍然需要购买一个程序员。
  • 如果您不希望关注PCB /信号完整性设计和问题,那么您可能不会对通过这种方法获得的很多知识感兴趣。

我知道蚀刻自己的电路板可能是不必要的,我之所以这样做,是因为我在那里有FPGA,没有耐心,也不想等待2周才能到达PCB。这里有2层板的非常便宜的交易,它们至少可以运行您的设计(速度可能比最终所需的速度低-高速FPGA设计的最小层数通常为4,但是这些是贵得多)

无论如何,Spirit Circuits会进行完全免费的2层“裸露” PCB交易(一个月一次,一种设计,没有掩模或丝网印刷),这对于一次性设计非常有用。
同样,对于适当的2层和4层廉价原型板,ITead和Seed Studio的10种板服务(或以该价格可能有5种)的价格低至10美元。


对此很有趣!和鼓励也
davidbak

6

标准的Xilinx ISE Webpack(可从xilinx.com下载的免费版本)包括一个名为iSim的模拟器。它不是一个很棒的模拟器,但是功能齐全,价格合适。

尽管我没有使用过Altera工具,但是如果不包括模拟器,它会让我感到惊讶。

但是...您需要知道模拟器可以做什么而不能做什么。对于初学者来说,它无法仿真全速运行的FPGA。实际上,它们非常慢。取决于所仿真的FPGA的复杂性,看到1 ms的“仿真时间”需要1分钟,这不足为奇。如果要模拟一个小时的“模拟时间”,则需要1000个小时的实时时间。

而且,模拟的FPGA无法直接与USB端口之类的东西通信。模拟的FPGA确实与“测试台”通信。测试平台是一块VHDL或Verilog代码,用于馈入FPGA(或FPGA的一部分)的输入并验证FPGA的输出。您可以在测试平台中做一些相当复杂的事情,例如使用浮点数,读取和写入文件以及运行无法综合的逻辑。


1
Altera获得了Quartus的免费版本,其中包括ModelSim。免费版本的ModelSim限制了您的仿真速度,免费版本的Quartus限制了用于合成的CPU内核的数量,但它们具有全部功能。
akohlsmith

1
Altera ModelSim在同一设计中不支持VHDL和Verilog的共同仿真。
shuckc

3

我不知道有任何模拟器可以直接与通过USB端口(或其他硬件)到达的信号接口。

至少从理论上讲,有可能编写一些软件来接收到达端口的信号,并将其转换为模拟器可以处理的测试平台文件。不幸的是,我不知道有任何现有软件可以做到这一点,而自己编写它绝对是不平凡的。


那么最好的方法就是为像我这样的
n00bs

如果您的仿真器支持自定义代码的接口(例如VPI),则实际上并不需要通过testbench文件,但是,鉴于仿真器的运行速度将比实时运行慢几个数量级,因此处理起来可能更容易将捕获的数据保存在一个文件中,该文件可以以模拟的速度读取。
克里斯·斯特拉顿

@ChrisStratton Im对捕获文件中数据的想法很感兴趣。有什么资源吗?谢谢
WantIt

这完全取决于要用作数据源的外围设备。
克里斯·斯特拉顿

3

您将需要使用协同仿真接口(DPI,VPI,VHPI,FLI),该接口允许您编写挂接到仿真器中的代码,从而在仿真中运行的RTL和计算机上的真实硬件之间架起桥梁。

您将遇到的重要问题(除了文档记录不良的接口)还与同步和时序相关。在仿真中运行的RTL 慢得多比真正的硬件得多-您需要能够逐步完成与外部接口的交互以匹配仿真速度。一些硬件接口不会这样!例如,如果使用TCP,则可能不得不在内核堆栈中捏造计时器,以避免虚假的重传等。

Icarus支持VPI,它是免费的,因此您无需花费任何许可费用即可进行试验。您可能希望研究现有的框架,这些框架可以完成一些协同仿真工作,并为仿真器提供更清晰的抽象。这样的框架就是Cocotb,它是一个开放源代码库,它提供了与模拟器的Python接口。(免责声明:我是cocotb的开发商之一。)

一个可能相关的示例:昨天我敲了一些RTL以响应ping请求,并创建了一个打开TUN接口的测试台。然后,您可以使用ping命令ping接口,并且在仿真中运行的RTL接收ping并作出响应。整个测试平台不到50行Python!该示例的源代码在Github上,并且在Linux下的Icarus上运行。


0

在大多数情况下,您在模拟中所做的任何事情都保留在模拟中。您无法从中访问真实硬件-您必须具有真实硬件的仿真模型。

但是,如果您愿意付出一些努力,那么大多数模拟器都可以使用任意代码的接口。据我所知,在Verilog中,这是一个相当标准的界面,因此Verilog方面将在模拟器之间移植。在VHDL领域,有一种标准的方法可以执行此操作,但是至少有一个大厂商有自己的方法!

还要记住,实时接口(即FPGA可以做到的速度)是非常不可能的-模拟的其余部分(HDL)也不会实时运行。如评论中所述,以这种方式进行视频的实时模拟处理是不可行的。

就个人而言,我从来不需要尝试这种方法,我发现我编写硬件的效率更高,并且可以在VHDL中运行所有模型。

但是,不要忽视进行模拟的好处-这是一种更快的方法,可以确定事物是否正在运行(编译需要几秒钟),然后构建比特流(编译需要数十分钟到几小时)并在硬件中进行尝试。


不正确,请参阅对该问题的评论。
克里斯·斯特拉顿

好的,我应该更加清楚-我的回答仅限于“ FPGA的新手”级别:)答案已更新
Martin Thompson
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.