2.实现IP模块的所有文件(HDL文件、软件支持文件(.c和.h),等等),连同class.ptf 文件,放置在同一个目录下。 3.将上述的目录及文件复制到SOPC Builder的搜索路径下,设定目录名与该IP模块的正 式名称相同。 商业的P核,上面的步骤可以通过传统的软件安装程序(如:InstallShield)来完成。 (2)添加阶段 用户可以在模块池内双击P模块名、按下Add按钮或从系统莱单中选择Add Module, 来添加一个P模块。每添加一个P模块,一个新的模块行会出现在模块表格内,并有一个 临时的模块名。 在添加阶段的开始,SOPC Builder会在系统PTF文件中建立一个新的MODULE节,并 将class.ptf文件MODULE DEFAULTS节中的所有内容复制到这个新的MODULE节中。因 此,IP模块即使没有Add Program程序,也可以通过MODULE DEFAULTS节提供添加阶 段所需的部分或全部信息。例如一个P模块的数据宽度总是16位,则不需要编写 Add Program程序,用来在系统PTF文件中设置数据宽度。直接设置class.ptf文件 MODULE DEFAULTS节中的参数更容易些。 此后,SOPC Builder会运行IP模块声明的Add Program程序,并通知Add Program程 序如何找到新建立的MODULE节。SOPC Builder以命令行参数的方式把这个信息传递给 Add Program程序。 Add Program程序可以修改新MODULE节内的任何节或参数,比如 WIZARD SCRIPT ARGUMENTS和SYSTEM BUILDER INFO部分,也可能还有其他部 分。 (3)编辑阶段 模块很可能在添加阶段只配置一次,然后不再修改了。但大部分SOPC Builder的P模 块都提供一个编辑工具,用来在模块添加到系统之后重新改变它的参数。用户双击代表系统 中某一模块的那一行,就可以对其编辑了。但如果模块class.ptf文件中只有一个空的 Edit Program程序参数,则什么也不会发生。 Edit Program程序也可以通过命令行方式调用,命令行参数与Add Program程序相同, 以便它能找到相应的系统PTF文件和新建立的MODULE节。通常,Edit Program程序和 Add Program程序提供了相同的图形用户界面来配置模块,它们往往就是同一个程序。 和Add_Program程序一样,Edit Program程序也可能会修改新MODULE节内的任何节或 参数,比如有WIZARD SCRIPT ARGUMENTS和SYSTEM BUILDER INFO部分,也可 能还有其他部分。 (4)系统配置阶段 至少一个P模块添加到系统中后,用户就可以通过SOPC Builder图形用户界面来配置 系统了。地址映射表,主/从端口连接,甚至System Generation标签页的选项等等,都会影 响系统的布局布线。 (5)绑定阶段 绑定阶段用来提供Add/Edit Program程序之外的参数设定。绑定阶段在系统配置阶段 之后,所以可以重新设定与整个系统模块相关的选项。除非用户返回到前面的阶段,否则模 块和它们的互连关系不会改变
2. 实现 IP 模块的所有文件(HDL 文件、软件支持文件(.c 和.h),等等),连同 class.ptf 段 用户可以在模块池内双击 IP 模块名、按下 Add 按钮或从系统菜单中选择 Add Module, 块。每添加一个 IP 模块,一个新的模块行会出现在模块表格内,并有一个 临时 以通过 MODULE_DEFAULTS 节提供添加阶 段所 Add_Program 程序可以修改新 MODULE 节内的任何节或参数,比如 GUMENTS 和 SYSTEM_BUILDER_INFO部分,也可能还有其他部 分。 模块很可能在添加阶段只配置一次,然后不再修改了。但大部分 SOPC Builder 的 IP 模 工具,用来在模块添加到系统之后重新改变它的参数。用户双击代表系统 中某 命令行方式调用,命令行参数与 Add_Program 程序相同, 以便 一样,Edit_Program程序也可能会修改新MODULE节内的任何节或 有WIZARD_SCRIPT_ARGUMENTS 和 SYSTEM_BUILDER_INFO部分,也可 一个 IP 模块添加到系统中后,用户就可以通过 SOPC Builder 图形用户界面来配置 端口连接,甚至 System Generation 标签页的选项等等,都会影 响系 (5) 绑 在系统配置阶段 之后, 除非用户返回到前面的阶段,否则模 块和它 文件,放置在同一个目录下。 3. 将上述的目录及文件复制到 SOPC Builder 的搜索路径下,设定目录名与该 IP 模块的正 式名称相同。 商业的 IP 核,上面的步骤可以通过传统的软件安装程序(如:InstallShield)来完成。 (2)添加阶 来添加一个 IP 模 的模块名。 在添加阶段的开始,SOPC Builder 会在系统 PTF 文件中建立一个新的 MODULE 节,并 将 class.ptf 文件 MODULE_DEFAULTS 节中的所有内容复制到这个新的 MODULE 节中。因 此,IP 模块即使没有 Add_Program 程序,也可 需的部分或全部信息。例如一个 IP 模块的数据宽度总是 16 位,则不需要编写 Add_Program 程序,用来在系统 PTF 文件中设置数据宽度。直接设置 class.ptf 文件 MODULE_DEFAULTS 节中的参数更容易些。 此后,SOPC Builder 会运行 IP 模块声明的 Add_Program 程序,并通知 Add_Program 程 序如何找到新建立的 MODULE 节。SOPC Builder 以命令行参数的方式把这个信息传递给 Add_Program 程序。 WIZARD_SCRIPT_AR (3)编辑阶段 块都提供一个编辑 一模块的那一行,就可以对其编辑了。但如果模块 class.ptf 文件中只有一个空的 Edit_Program 程序参数,则什么也不会发生。 Edit_Program 程序也可以通过 它能找到相应的系统 PTF 文件和新建立的 MODULE 节。通常,Edit_Program 程序和 Add_Program 程序提供了相同的图形用户界面来配置模块,它们往往就是同一个程序。 和Add_Program程序 参数,比如 能还有其他部分。 (4)系统配置阶段 至少 系统了。地址映射表,主/从 统的布局布线。 绑定阶段 定阶段用来提供 Add/Edit_Program 程序之外的参数设定。绑定阶段 所以可以重新设定与整个系统模块相关的选项。 们的互连关系不会改变
绑定阶段所做的选择可能包括:从列表中选择特定类型的模块:选择中断映射:还有一 些其他的操作,等等。这些操作最好不要通过模块的向导来执行,因为用户添加不同模块的 顺序可能是不确定的。 (6)SDK生成阶段 SOPC Builder生成Nios CPU的同时,会生成一个SDK目录。SOPC Builder为每一个 CPU创建SDK目录的步骤可以简短地总结如下,这个过程由名为mk custom sdk的脚本来 完成: 对系统中的每一个CPU: 建立一个SDK目录,名为<cpu_name>_sdk 建立SDK子目录:inc,Iib,src 查看CPU模块的class.ptf文件,并 增加所有的原型(prototypes)和结构(structs)到excalibur..h文件 增加所有的库文件到b目录 增加所有的例子源代码到src目录 增加所有其他的include文件到inc目录 对每一个系统中的外设,如果由CPU控制,则 查看外设的class.ptf文件,并 增加基地址和中断号到excalibur.h文件 增加基地址和中断号到excalibur.s文件 增加所有的原型(prototypes)和结构(structs)到excalibur.h文件 增加所有的库文件到b目录 增加所有的例子源代码到sc目录 增加所有其他的include文件到inc目录 在inc目录下创建最终的excalibur..h文件和excalibur.s文件 在lib目录下创建Makefile文件,用来生成该目录下的库文件 还可以生成支持Quartus软件模式的Tcl脚本 (7)模块生成阶段 每一个CPU的SDK目录生成之后,SOPC Builder接下来会逐个地为系统列表中的每一 个模块执行相应的生成程序。 SOPC Builder的P模块会在class.ptf文件中指定自己的生成程序,如果class.ptf文件中 Generator Program参数值为空值(“”),则SOPC Builder包含的缺省生成程序会执行。缺省 生成程序执行一些为创建一个新模块所需的简单合理的操作,使得模块在系统中可以看得 到。这些操作在模块class.ptf文件的DEFAULT GENERATOR节中被参数化。 如果某一个IP模块显式地指定Generator Program参数值为none,则在它的模块生成阶 段什么也不会发生(这不影响其他模块的生成)。 模块的生成程序可能会非常简单(如缺省生成程序,仅仅拷贝一些文件),也可能非常 复杂。许多SOPC Builder的P模块的HDL代码实现直接由生成程序来产生,而不是简单 从库里拷贝。 每一个模块的生成程序以命令行执行时,带有一系列的参数,用来指定系统名称和生成 的MODULE节的名称。 class.ptf文件中有一个特殊的部分名为DEFAULT GENERATOR,用来给缺省生成程序 设置相应的参数。这个部分仅对缺省生成程序有用。如果Generator Program参数没有指定
绑 择特定类型的模块;选择中断映射;还有一 些其 向导来执行,因为用户添加不同模块的 顺序可能 (6)SDK 生 SOPC der 为每一个 CPU 创建 S 如下,这个过程由名为 mk_custom_sdk 的脚本来 完成: 对系统中的 增加所有的原型(prototypes)和结构(structs)到excalibur.h文件 件到lib目录 件到inc目录 下创建最终的 excalibur.h 文件和 excalibur.s 文件 tus 软件模式的 Tcl 脚本 来会逐个地为系统列表中的每一 个模 模块会在 class.ptf 文件中指定自己的生成程序,如果 class.ptf 文件中 Gen 值(“”),则 SOPC Builder 包含的缺省生成程序会执行。缺省 生成 块所需的简单合理的操作,使得模块在系统中可以看得 到。 的 DEFAULT_GENERATOR 节中被参数化。 如果某一个 IP 模块显式地指定 Generator_Program 参数值为 none,则在它的模块生成阶 影响其他模块的生成)。 定阶段所做的选择可能包括:从列表中选 他的操作,等等。这些操作最好不要通过模块的 是不确定的。 成阶段 Builder 生成 Nios CPU 的同时,会生成一个 SDK 目录。SOPC Buil DK 目录的步骤可以简短地总结 每一个 CPU: 建立一个SDK目录,名为<cpu_name>_sdk 建立SDK子目录:inc,lib,src 查看CPU模块的class.ptf文件,并 增加所有的库文 增加所有的例子源代码到src目录 增加所有其他的include文 对每一个系统中的外设,如果由CPU控制,则 查看外设的class.ptf文件,并 增加基地址和中断号到excalibur.h文件 增加基地址和中断号到excalibur.s文件 增加所有的原型(prototypes)和结构(structs)到excalibur.h文件 增加所有的库文件到lib目录 增加所有的例子源代码到src目录 增加所有其他的include文件到inc目录 在 inc 目录 在 lib 目录下创建 Makefile 文件,用来生成该目录下的库文件 还可以生成支持 Quar (7)模块生成阶段 每一个 CPU 的 SDK 目录生成之后,SOPC Builder 接下 块执行相应的生成程序。 SOPC Builder 的 IP erator_Program 参数值为空 程序执行一些为创建一个新模 这些操作在模块 class.ptf 文件 段什么也不会发生(这不 模块的生成程序可能会非常简单(如缺省生成程序,仅仅拷贝一些文件),也可能非常 复杂。许多 SOPC Builder 的 IP 模块的 HDL 代码实现直接由生成程序来产生,而不是简单 从库里拷贝。 每一个模块的生成程序以命令行执行时,带有一系列的参数,用来指定系统名称和生成 的 MODULE 节的名称。 class.ptf 文件中有一个特殊的部分名为 DEFAULT_GENERATOR,用来给缺省生成程序 设置相应的参数。这个部分仅对缺省生成程序有用。如果 Generator_Program 参数没有指定
缺省生成程序,很显然,这一部分的内容就被忽略掉了。 缺省生成程序产生HDL和完成系统综合和布局布线的准备工作等,缺省生成程序主要 完成以下三个操作: ·模块重新命名并封装 ·拷贝实现文件到工程目录 ·整理用于综合的某些文件 ·模块重新命名并封装 模块允许以系统模块或黑盒的形式出现。黑盒形式能够隐藏模块细节并避免模拟工具搜 索到它。如果在class.ptf文件的DEFAULT GENERATOR节中的black box设置为l,则缺省生 成程序会封装用户设计文件,避免模拟工具搜索到模块的HDL代码。任何要综合的文件都 需要列在synthesis files参数下,而那些需要布局布线但不需综合或模拟的文件,则必须列在 black box files参数下。 SOPC Builder必须知道顶层模块的名称,以便把IP模块包括到系统内。顶层模块的名称 通过模块class..ptf文件中的top module name参数给出。如果该参数不存在,则SOPC Builder 默认顶层模块名与库里的P模块名一致。 对那些由.edf文件定义的模块,缺省生成程序将忽略black box设置,直接用黑盒来代表 这个模块。 ·拷贝实现文件到工程目录 缺省生成程序会把所有列在black_box files、synthesis files、verilog_simulation files和 vhdl simulation files参数下的文件,从模块库的目录中复制到当前的工程目录里。 如果这些参数下的文件列表没有重叠,则缺省生成程序会拷贝以下的文件类型:*.tf、 *.edf、*.bdf、*.bsf、*.vqm、*.mif、*.v(Verilog)和*.vhd(VHDL)。不同的文件列表的 区别如表1-1所示。 表1-1不同文件列表 参数 说明 black_box_files 从不模拟的文件 synthesis_files 综合文件 verilog_synthesis_files 选定Werilog时的综合文件 vhdl_systhesis_files 选定VDL时的综合文件 verilog_simulation_files 选定Verilog时模拟但不综合的文件 vhdl_simulation_files 选定VHDL时模拟但不综合的文件 ·整理用于综合的某些文件 模块synthesis files参数下的所有文件都将由Quartus软件进行综合。缺省生成程序将 synthesis_files参数(或者是verilog_synthesis_files和vhdl synthesis files参数)下的所有文件 列表复制到模块的Synthesis HDL Files参数下。 (8)总线生成阶段 SOPC Builder为系统生成所有实现总线互连逻辑的HDL代码(VHDL或Verilog)。一 个完整的系统PT℉文件包含有足够的信息,为每一个系统主设备和从设备生成地址解码器、 数据选择器、共享从端口的仲裁器、中断逻辑和总线时序逻辑等
缺省生成程序,很显然,这一部分的内容就被忽略掉了。 操作: • 模块重新命名并封装 录 • 模 .ptf文件的DEFAULT_GENERATOR节中的black_box设置为1,则缺省生 成程序会封装用户设计文件,避免模拟工具搜索到模块的HDL代码。任何要综合的文件都 需要列在synthesis_files参数下,而那些需要布局布线但不需综合或模拟的文件,则必须列在 black_box_files参数 SO 顶层模块的 顶层模块的名称 通过模 top_module 出。如果该参数不存在,则SOPC Builder 默认顶 对 ,缺 box设置,直接用黑盒来代表 这个模 拷贝实现文件到工程目录 在black_box_files、synthesis_files、 verilog_simulation_files和 vhdl )和*.vhd(VHDL)。不同的文件列表的 别如表1-1所示。 缺省生成程序产生 HDL 和完成系统综合和布局布线的准备工作等,缺省生成程序主要 完成以下三个 • 拷贝实现文件到工程目 • 整理用于综合的某些文件 块重新命名并封装 模块允许以系统模块或黑盒的形式出现。黑盒形式能够隐藏模块细节并避免模拟工具搜 索到它。如果在class 下。 PC Builder必须知道 名称,以便把IP模块包括到系统内。 块class.ptf文件中的 _name参数给 层模块名与库里的IP模块名一致。 那些由.edf文件定义的模块 省生成程序将忽略black_ 块。 • 缺省生成程序会把所有列 _simulation_files参数下的文件,从模块库的目录中复制到当前的工程目录里。 如果这些参数下的文件列表没有重叠,则缺省生成程序会拷贝以下的文件类型:*.tdf、 *.edf、*.bdf、*.bsf、*.vqm、*.mif、*.v(Verilog 区 表1-1 不同文件列表 参数 说明 black_box_files 从不模拟的文件 synthesis_files 综合文件 verilog_synthesis_files 选定Verilog时的综合文件 vhdl_systhesis_files 选定VHDL时的综合文件 verilog_simulation_files 选定Verilog时模拟但不综合的文件 vhdl_simulation_files 选定VHDL时模拟但不综合的文件 • 整 esis_files参数)下的所有文件 列表 理用于综合的某些文件 模块synthesis_files参数下的所有文件都将由Quartus软件进行综合。缺省生成程序将 synthesis_files参数(或者是verilog_synthesis_files和vhdl_synth 复制到模块的Synthesis_HDL_Files参数下。 (8)总线生成阶段 SOPC Builder 为系统生成所有实现总线互连逻辑的 HDL 代码(VHDL 或 Verilog)。一 个完整的系统 PTF 文件包含有足够的信息,为每一个系统主设备和从设备生成地址解码器、 数据选择器、共享从端口的仲裁器、中断逻辑和总线时序逻辑等
Lbrary Component System S automatically generated arbitration'Module X Z m m m2 B 图1-5主模块系统 SOPC Builder的今后版本,也要求总线互连逻辑的实现必须符合Avalon总线规范或 AMMB-AHB规范。IP模块的开发者不能根据特殊的总线逻辑实现,但可以根据符合规范的 接口来开发P。图1-5以较高的抽象级显示了一个总线逻辑的内部实现。 系统S有三个主模块X,Y和Z。假定X和Y都有一个名为m的主端口,而Z有两个 主端口,m1和m2。系统中还有三个从模块,A,B和C,每一个都仅有一个从端口s。用 户创建完系统后,要配置哪个主模块可以访问哪个从模块。 目前的SOPC Builder版本会在每一个模块的主或从端口处生成一个独立的总线逻辑模 块。无论这些模块是否真正包含一个仲裁器,它们都被称为仲裁模块。这个例子中共有7 个仲裁模块。这些模块中生成的逻辑都用来保证给相应主/从端口提供信号和协议。 所有实现总线逻辑的HDL代码都写入了系统HDL文件中。系统HDL文件的名称与生 成的系统名称相同。例如,用户用VHDL生成的系统名称为fan control processor,则所有 总线生成逻辑就写入文件fan control processor..vhd中。在顶层模块生成阶段,更多的内容 会写入系统HDL文件中。在总线生成阶段,系统PTF文件不会有任何改变。 (9)顶层模块生成阶段 在这一阶段,SOPC Builder把系统顶层模块的定义写入系统HDL文件中。顶层模块的 定义包括:系统所有/O端口的声明、系统中每个模块的实例、包含总线逻辑的仲裁模块的 实例、以及各个模块间的互连逻辑。 SOPC Builder还在系统HDL文件中定义了一个测试模块(一般命名为test bench)。测 试模块包含一个系统模块的实例(命名为DUT),还有系统时钟和复位输入的激励源。SOPC Builder还产生一个原理图文件(.bsf),使得系统模块可以在Quartus的图形编辑方式下使用
图 1-5 主模块系统 SOPC Builder 的今后版本,也要求总线互连逻辑的实现必须符合 Avalon 总线规范或 AMM 个主模块 X,Y 和 Z。假定 X 和 Y 都有一个名为 m 的主端口,而 Z 有两个 主端 每一个模块的主或从端口处生成一个独立的总线逻辑模 块。 ol_processor,则所有 总线 9)顶层模块生成阶段 er 把系统顶层模块的定义写入系统 HDL 文件中。顶层模块的 定义 个测试模块(一般命名为 test_bench)。测 模块包含一个系统模块的实例(命名为 DUT),还有系统时钟和复位输入的激励源。SOPC .bsf),使得系统模块可以在 Quartus 的图形编辑方式下使用。 B-AHB 规范。IP 模块的开发者不能根据特殊的总线逻辑实现,但可以根据符合规范的 接口来开发 IP。图 1-5 以较高的抽象级显示了一个总线逻辑的内部实现。 系统 S 有三 口,m1 和 m2。系统中还有三个从模块,A,B 和 C,每一个都仅有一个从端口 s。用 户创建完系统后,要配置哪个主模块可以访问哪个从模块。 目前的 SOPC Builder 版本会在 无论这些模块是否真正包含一个仲裁器,它们都被称为仲裁模块。这个例子中共有 7 个仲裁模块。这些模块中生成的逻辑都用来保证给相应主/从端口提供信号和协议。 所有实现总线逻辑的 HDL 代码都写入了系统 HDL 文件中。系统 HDL 文件的名称与生 成的系统名称相同。例如,用户用 VHDL 生成的系统名称为 fan_contr 生成逻辑就写入文件 fan_control_processor.vhd 中。在顶层模块生成阶段,更多的内容 会写入系统 HDL 文件中。在总线生成阶段,系统 PTF 文件不会有任何改变。 ( 在这一阶段,SOPC Build 包括:系统所有 I/O 端口的声明、系统中每个模块的实例、包含总线逻辑的仲裁模块的 实例、以及各个模块间的互连逻辑。 SOPC Builder 还在系统 HDL 文件中定义了一 试 Builder 还产生一个原理图文件(
(10)工程文件生成阶段 除了在前面阶段生成的硬件(HDL)文件和软件(SDK)文件,SOPC Builder还会生 成一些文件和目录以支持第三方的工具。 (11)模拟工程生成 SOPC Builder为快速模拟系统,会生成一个ModelSim工程目录:<ystem name>sim/, 并在该目录下生成下列文件: ·与每一个模块CONTENTS节内容相应的存储器初始化文件 ·名为<system_name>sim.mpf的ModelSim工程文件,例如用户可在ModelSim中双 击该文件,就可以载入特定系统的模拟工程。 ·一个名为create_<system_name>project..do的ModelSim命令脚本文件,该文件包含 ModelSim命令可以让用户按需要重新创建ModelSim工程文件(如上)。此文件很少直接使 用,它主要作为高级用户如何建立正确命令文件的参考。 ·一个名为modelsim.tcl的启动脚本文件,当用户打开工程文件时,该脚本就立即自动 执行,不需要用户做任何操作。而这个脚本实际上只执行一条命令,即执行脚本文件 setup sim.do。 ·脚本文件setup sim.do定义了系统特定的宏,这些宏用于在模拟器内方便地处理生成 的系统。定义的宏列表可以在脚本运行时,以消息的形式显示出来。用户可以编辑这个文件 用来扩展、修改或添加自己的宏。 ·文件virtuals..do定义虚拟信号类型。任何模块可以通过增加一个 SIMULATION/DISPLAY/TYPES节来定义自己的虚拟信号类型。ModelSim以特殊的标识和 格式在波形图窗口内显示虚拟信号类型。例如,CPU可以定义一个虚拟信号,以显示指令 总线上的信号变化。virtuals.do文件由load simulation(s)宏自动加载。 ·wave_presets..do文件,包含一系列打开和配置波形图显示窗口的命令。窗口会显示 每一个模块在SIMULATION/DISPLAY/SIGNAL节中声明的信号波形图。wave_presets.do文 件与定义的w宏有关。 (12)命令行系统生成脚本 在工程文件生成阶段,SOPC Builder生成一个<system_name>generation_script文件。这 是一个sh脚本,可以从命令行执行,也可以从其他脚本或程序中执行。这个脚本可以在不 进入图形用户界面的情况下,重新生成系统。 (13)Quartus II软件综合 SOPC Builder仅仅生成系统模块的HDL描述。如果要综合和编译系统,则需要使用 Quartus IⅡ软件工具。 有时P开发者仅提供综合好的硬件描述,这种情况下,需要对该P封装以避免Quartus 对其再次综合。P开发者可以使用缺省生成程序,并通过设置 DEFAULT GENERATOR/black box参数,来实现封装。设置了black box参数之后,缺省 生成程序会自动生成一个封装文件,以黑盒的方式封装这个P。 1.2.3S0P℃系统开发流程 在采用Nios处理器设计SOPC嵌入式系统时,通常会按照以下的步骤: 1.分析系统需求说明,包括功能需求和性能约束等等
(10)工程文件生成阶段 SOPC Builder为快速模拟系统,会生成一个ModelSim工程目录:<system_name>_sim/, • 与每一个模块 CONTENTS 节内容相应的存储器初始化文件 odelSim 中双 击该 ModelSi )。此文件很少直接使 用,它主要作为高级用户如何建立正确命令文件的参考。 打开工程文件时,该脚本就立即自动 执行 执行一条命令,即执行脚本文件 setup 脚本文件 setup_sim.do 定义了系统特定的宏,这些宏用于在模拟器内方便地处理生成 的系统。定义的宏列表可以在脚本运行时,以消息的形式显示出来。用户可以编辑这个文件 用来扩展、修改或添加自己的宏。 • 文 件 virtuals.do 定义虚拟信号类型。任何模块可以通过增加一个 SIMULATION/DISPLAY/TYPES 节来定义自己的虚拟信号类型。ModelSim 以特殊的标识和 格式在波形图窗口内显示虚拟信号类型。例如,CPU 可以定义一个虚拟信号,以显示指令 总线上的信号变化。virtuals.do 文件由 load simulation(s)宏自动加载。 • wave_presets.do 文件,包含一系列打开和配置波形图显示窗口的命令。窗口会显示 每一个模块在 SIMULATION/DISPLAY/SIGNAL 节中声明的信号波形图。wave_presets.do 文 件与定义的 w 宏有关。 (12)命令行系统生成脚本 在工程文件生成阶段,SOPC Builder生成一个<system_name>_generation_script文件。这 是一个shell脚本,可以从命令行执行,也可以从其他脚本或程序中执行。这个脚本可以在不 进入图形用户界面的情况下,重新生成系统。 (13)Quartus II 软件综合 SOPC Builder 仅仅生成系统模块的 HDL 描述。如果要综合和编译系统,则需要使用 Quartus II 软件工具。 有时 IP 开发者仅提供综合好的硬件描述, 种情况下,需要对该 IP 封装以避免 Quartus 对其再次综合 。 IP 开发者可以使用缺省生成程序,并通过设置 EFAULT_GENERATOR/black_box 参数,来实现封装。设置了 black_box 参数之后,缺省 装文件,以黑盒的方式封装这个 IP。 1.2 Nios SOPC 除了在前面阶段生成的硬件(HDL)文件和软件(SDK)文件,SOPC Builder 还会生 成一些文件和目录以支持第三方的工具。 (11)模拟工程生成 并在该目录下生成下列文件: • 名为<system_name>_sim.mpf 的 ModelSim 工程文件,例如用户可在 M 文件,就可以载入特定系统的模拟工程。 • 一个名为 create_<system_name>_project.do 的 ModelSim 命令脚本文件,该文件包含 m 命令可以让用户按需要重新创建 ModelSim 工程文件(如上 • 一个名为 modelsim.tcl 的启动脚本文件,当用户 ,不需要用户做任何操作。而这个脚本实际上只 _sim.do。 • 这 D 生成程序会自动生成一个封 .3 SOPC 系统开发流程 在采用 处理器设计 嵌入式系统时,通常会按照以下的步骤: 1. 分析系统需求说明,包括功能需求和性能约束等等