我正在用Verilog编写一个程序,并且有一些变量,我希望看到程序在我的旋风II板上运行时的值,但是我不知道控制台在哪里(如果有.)。有办法这样做吗?我读过关于$display函数的文章,但不知道Quartus II中的输出会在哪里。不幸的是,我似乎找不到很多关于这方面的信息。谢谢你的帮助!
发布于 2014-10-21 16:11:30
Verilog有两个主要用途:
由于某些原因,您会发现大多数在线教程都没有强调这种区别。它们通常从第2部分开始(其中包括一些类似$display的内容),因为新来的人正在模拟器中进行尝试。当代码经过合成,在FPGA中使用时,用于脚本的构造就没有任何效果。有一些轻微的重叠,但即便如此,也无法达到您预期的效果。如果在模拟器中编写for循环,它将像任何其他编程语言一样循环。如果您将可综合的代码放入该循环中,它将被循环复制(创建一整串并行FPGA路径,每通过该循环一条)。因此,实际上影响合成的脚本部分更像是元编程。
您可以实现(或找到一个现有的实现,在HDL中称为"IP“)一个UART并自己打印数据,但是在FPGA中这是一个非常复杂和昂贵的练习(就FPGA领域而言)。通常,要调试FPGA,您需要拿出调试引脚,并使用示波器或逻辑分析器(甚至是像Saleae逻辑这样便宜的)来查看它们。就FPGA资源而言,这是非常便宜的。另一种可能是将FPGA内部的调试数据记录在块RAM中,并在稍后读取。Altera (使用SignalTap)和Xilinx (使用Chipscope)都提供了FPGA代码和GUI来通过JTAG端口驱动它。Quartus II应该给你一个免费的SignalTap许可,只要你同意与他们分享匿名统计数据。据我所知,Chipscope并不是免费的,这就是为什么我的爱好项目总是使用Altera。
发布于 2020-05-22 22:56:41
您可以使用微控制器(例如Arduino)构建一个基本的数据采集和控制系统,特别是如果您的设计是很好的流水线。在FPGA上,使用门控时钟为输出总线或引脚分配变量。enable命令(设置总线/引脚输出等于变量)可以从微控制器发送到FPGA输入引脚,并用作门控时钟输入。这允许握手,并确保在采样和数据记录期间的数据完整性。一旦变量输出被分配给FPGA输出引脚(例如,使用4个输出引脚来表示一个4位变量或状态),另一个FPGA输出引脚被设置为高(让我们称之为SAMPLE_READY=1)。SAMPLE_READY引脚输出连接到微控制器的ISR引脚输入。当SAMPLE_READY=1时,微控制器依次将输出引脚作为二进制数据进行采样。然后,微控制器可以将这些数据串行写入终端程序。作为回报,终端程序(例如Python)以串行命令响应微控制器,指示成功的传输。终端可以将每个连续接收到的样本存储到文本文件中进行回顾性分析,并在必要时执行二进制到十进制转换。在接收到终端程序的握手命令后,微控制器切换FPGA门控时钟输入和循环重复。如果您使用完全流水线设计,微控制器实际上可以用作全球时钟输入,让您完全控制。然而,这在实践中是非常缓慢的。您也可以使用FSM设计的微控制器,并使用输出引脚控制状态,变量和输入您的FPGA设计实现。
https://stackoverflow.com/questions/26490364
复制相似问题