多年来,我参与了许多基于微控制器的项目;主要是Microchip的PICs。我使用过各种微控制器模拟器,虽然它们有时非常有用,但我经常发现自己很沮丧。在现实生活中,微控制器从来不是单独存在的,固件的行为依赖于环境。然而,我用过的SIM卡都不能对微控制器之外的任何东西提供良好的支持。
我的第一个想法是用Verilog对整个电路板进行建模。但是,我不愿意创建一个完整的CPU模型,而且我没有太多的机会为我使用的芯片找到现有的模型。无论如何,我真的不需要,也不想在这种细节级别模拟proc,我希望保留常规处理器sim提供的调试功能。
在我看来,理想的解决方案是一个混合模拟器,它将传统的处理器模拟器与Verilog模型接口。
这样的事情真的存在吗?
发布于 2008-12-30 17:18:23
我使用的是嵌入在FPGA上的Altera Nios II处理器。Altera提供了一个工具链,用于在模拟器中模拟CPU (及其软件)和自定义逻辑。我想可以通过下载CPU的VHDL/Verilog内核来实现类似的设置(您尝试过opencores了吗?他们有很多东西)。
但请记住,它将是令人难以置信的缓慢,所以不要期望以这种方式模拟整个复杂的过程。您所能期望的最好结果就是模拟良好的软硬件交互点来调试问题。如果您需要更深入的模拟,可以考虑在具有内置监控代码的FPGA上运行它。
发布于 2008-12-29 12:31:51
对于“模拟整个电路板”的方法,Free Model Foundry有大量的模型,其中一些是VHDL的,另一些是Verilog的,现在可以使用这些模型。但你需要花钱才能创建新的模型。这些对于确保电路板的构建是非常有帮助的。
但我认为,在调试PIC时,更常见的方法是先构建一个电路板,然后再处理固件。在芯片世界中(固件在芯片中的微处理器上运行,而芯片还没有出厂),人们经常求助于非常昂贵的系统(或租用时间),允许将部分设计编译到仿真器中,而其余的设计则在正常的仿真器环境中运行。如果没有为芯片设置的昂贵掩模的屏障,那么对于电路板来说,成本是不合理的。虽然我听说过一些使用FPGA的Simulink (Mathworks)的创造性应用程序,但我记得有人要么在计算机上运行系统,要么对设备进行编程并实时运行相同的事情。
我相信Cadence (询问Palladium)和Mentor Graphics都有集成的解决方案,如果你有钱花的话。
发布于 2009-01-16 22:01:45
我最近所做的是在仿真环境和主机系统之间创建一个接口。不同的hdl仿真器有不同的接口,使仿真器不再以批处理模式思考,传统的仿真模型永远像真实设计一样运行,这就解决了一半的问题。
然后,您可以使用C(或其他任何语言)从主机创建抽象,这些抽象可能允许也可能不允许您为任何目标编写应用程序软件(取决于您拥有的语言和编译器功能)。例如,您可以创建一个通用的poke和peek函数,并在最终目标上让这些函数实际地poke和peek内存或I/O,但是为了通过抽象进行模拟,您可以在模拟中与模拟相同内存周期的测试平台对话。
我更进一步,在主机和测试平台之间使用(Berkeley)套接字,以便在主机应用程序停止和启动时模拟可以继续运行。与具有操作系统的真实处理器不同,您正在启动应用程序并运行它们直到完成,然后再启动另一个应用程序。至少对于测试应用程序来说,交付时可能只有一个应用程序。
通过创建这些抽象层,我可以编写在构建目标时将在目标上使用的实际应用程序。在此过程中,您可以首先使用软件模拟逻辑,然后,如果您喜欢构建具有抽象接口(丢弃逻辑)的fpga,例如uart。将应用程序抽象层和模拟器之间的填充程序替换为uart接口或其他接口。然后,当您将处理器和逻辑结合在同一芯片或同一电路板上时,再次将抽象层替换为对它们始终认为是在对话的任何接口的直接调用。如果出现故障,并且您保留了抽象层,则可以将应用程序带回模拟模型,并访问所有逻辑内部。
特别是这一次,我使用了一个在sourceforge上的HDL语言cyclicity cdl,文档需要一些帮助,但示例可能会让你上手,它会生成可合成的verilog,所以你在那里获得了额外的胜利。除了连接和启动C模拟模型所需的最低要求之外,我去掉了所有的脚本批处理内容。所以我的测试平台用的是C语言(严格来说是C++ ),套接字层就是在那里完成的。输出可以是gtkwave使用的.vcd文件。基本上你可以使用没有许可证的开源软件来做大部分的HDL设计,等等。通过向CDL模拟部分添加一两行代码,我能够让它作为无限循环运行,我可以说这工作得很好,似乎没有任何内存泄漏等。
modelsim和cadence都有将主机C程序连接到模拟世界的标准化方法,从那里您可以使用IPC来访问与抽象层api对话的主机应用程序。
对于一张照片来说,这可能是一种过度的杀伤力,我已经放弃了一段时间前的照片,不管怎样,我已经放弃了更快和C友好的基于手臂的micros。有/曾经有一个开放的核心图片,你可以简单地合并到你的模拟中,即使这不是你在这里试图做的。
https://stackoverflow.com/questions/375719
复制相似问题