如何从NIOS2处理器上运行的软件中检测我在哪个Altera FPGA上



我想我的标题说明了一切。我正在Altera FPGA上的NIOS2处理器上运行一个软件。有没有办法检测软件运行在哪个FPGA上?

回答评论中的问题:为什么我关心我在哪个FPGA上?对于生产,我们使用带有EPCS控制器的设计来对所有内容进行编程。与使用Quartus编程器的.jic流不同,此编程流对Quartus版本不敏感。不幸的是,对于新的EPCQ设备,您必须使用正确的等待状态和寻址模式对EPCQ的非易失性寄存器进行正确编程,以便FPGA能够正确配置。NIOS shell工具没有能力做到这一点(使用.jicflow的Quartus程序员可以做到),所以我写了一小段软件来实现这一点。EPCQ数据表中有一个表格,说明了根据FPGA系列和EPCQ的大小,等待状态应该是什么。EPCQ的规模我可以问EPCQ。FPGA家族我不知道该问谁。因此,现在对于每个项目,我都有自己的软件,数据硬编码为FPGA类型。我希望软件是通用的,而不是FPGA专用的,因此我需要知道我在哪个FPGA上。

  • 如果您可以访问FPGA的JTAG端口,请通过IDCODE寄存器进行时钟并对其进行解码
  • 如果您可以访问FPGA比特流文件(由于您即将对其进行编程,因此您似乎必须访问该文件),则稀疏文档标题中的字节是描述目标设备的字节。解码它们
  • 由于比特流无论如何都是特定于设备的,因此在向NIOS报告设备类型的固件中公开自定义NIOS指令或已知内存位置(通过Avalon MM总线)

第三次操作的详细信息

您可以在合成时使用TCL(例如一些QSYS魔术)将项目范围的DEVICE_FAMILY属性作为参数(device_family)注入到HDL模块中,然后在生成的逻辑中打开它,为每个族输出一个值。

例如,我基于adv_seu_detection_common.vadv_seu_detection_core_hw.tcl(在Quartus ip目录中找到它们):

module crcblock_atom ( regout );
    parameter device_family = "Stratix III";
    output wire [7:0] regout;
    generate
        if  ( (device_family == "Stratix III") ||
              (device_family == "Arria II GZ") ||
              (device_family == "Stratix IV") ) begin: generate_crcblock_atom1
            assign regout = 1;
        end
        else if ( (device_family == "Arria V") ||
                  (device_family == "Cyclone V") ) begin: generate_crcblock_atom2
            assign regout = 2;
        end
        else begin: generate_crcblock_atom
            assign regout = 3;
        end
    endgenerate
endmodule

然后,您需要适当地设置参数device_family。您可以在ip核心包装器中使用xxxxx_hw.tcl中的以下部分未记录的代码来实现这一点,该代码使参数隐藏并从项目设置中自动填充:

# | device_family
add_parameter device_family STRING
set_parameter_property device_family VISIBLE false
set_parameter_property device_family SYSTEM_INFO {DEVICE_FAMILY}
set_parameter_property device_family HDL_PARAMETER true
set_parameter_property device_family AFFECTS_GENERATION true

你仍然需要把它包装成一个自定义的NIOS指令,或者让它看起来像一个Avalon MM rom,但你已经明白了。

一旦你把它连接到每个项目的QSYS系统中,并重新构建它们,它就会按照你的要求去做。不过还是很难看。

有关此问题的其他处理方法,请参见http://www.alteraforum.com/forum/archive/index.php/t-33948.html

相关内容

  • 没有找到相关文章

最新更新