Quartus、SOPC、Nios使用过程问题总结

来源:互联网 发布:计算机大数据网校 编辑:程序博客网 时间:2024/03/28 17:04

      Quartus、SOPC、Nios是硬件课程设计当中使用到的开发工具,在课程设计中我们使用它们来实现一个DDS(数字直接合成)信号源,具体方案是使用Quartus进行FPGA外设的设计,利用SOPC进行Cpu的定制,最后利用Nios进行上述Cpu的软件编程。下面对课程设计当中遇到的问题及其解决方案进行总结。

      1) 关于Quartus顶层文件

      每一个Quartus都有一个顶层文件,它的文件名在一开始建立Quartus工程的时候就被指定了,不过它的名字也可以在建立完工程后进行修改,或指定一个文件作为顶层文件。工程在编译的时候仅对顶层文件按照层次进行分析、综合、布线、计算延时等操作,对于不属于顶层文件层次的其他文件不会进行编译。

      所以一个Quartus工程当中必须有一个文件名与顶层文件名相同的文件,或指定某一文件作为顶层文件。否则,工程将通过不了编译,并会报出“Top Design Entity Undefined”的错误。

      2) 关于编写Verilog HDL源文件

      使用Verilog HDL语言编写模块时,要注意模块名必须与保存的文件名相一致,否则也是通过不了编译的。虽然Maxplus II已经升级称为Quartus了,但是这个不方便的特性仍然还是保留了下来。

      当然文件名中也不能出现中文字符、空格与其他非常用字符,文件也不能放在中文路径下面,否则工程也是不能编译该文件的。

      3) 由BDF文件生成符号文件

      在编写硬件描述语言程序的时候,我们经常会将我们的源文件(如.v文件)转化为符号文件,那么符号文件的集合BDF文件是否也能转换为一个符号文件呢?答案是肯定的。

      首先我们要在这个BDF文件中设置好作为输入、输出的引脚,具体操作方法为插入输入、输出引脚的符号文件,然后为其取一个名称。然后就可以点击菜单栏上的File-Create/Update-Create Symbol Files for Current File。 

      4) 关于连线的方法

      在BDF文件中连线的方法较为简单,直接用鼠标点击各个引脚,然后拖动便可以绘制出一条条连线来。当然也可以采用将连线取相同名称的方法将其连接起来,因为Quartus在编译时,会将相同名称的数据线默认连载一起,这样在电路图比较复杂的情况下,使用名称的方法来进行连线会减少视觉上的复杂度。

      在为总线型数据线取名字的时候要注意,若总线宽度为N位,则其名字应该是形如Bus[N-1..0]的形式,而不是Bus[N-1:0]的形式,这个与使用硬件描述语言编程的时候不同。

      5) 时序仿真与功能仿真

      第一次用Quartus自带仿真器进行仿真,发现有时序仿真与功能仿真两种仿真方式,而且时序仿真的结果波形很诡异,和设计的完全不一样,所以这里研究一下。

      功能仿真是进行设计逻辑功能上的仿真,验证代码逻辑是否有问题,不考虑门电路或布线的延时影响。例如一个4进制的加法计数器(时钟上跳沿触发)功能仿真波形如下所示: 

      时序仿真不仅对电路的逻辑功能进行仿真,还会考虑门电路或布线的延时影响。与上面同一个加法计数器的时序仿真波形如下所示:

      6) 对未使用的引脚进行配置

      在引脚分配完毕后,可能会有一些引脚没有进行配置,这些引脚如果使用不当,则可能发生危险,损坏我们的实验板。所以,我们在编译生成最终的配置文件前,首先要对未使用的引脚进行一下配置,使它变为三态输出。具体配置引脚属性的方法为点击菜单上的Assignments-Device,然后在弹出的对话框中按如下方法进行配置:

      7) 引脚分配的方法

      引脚分配的方法可以使用老师介绍的Tcl脚本语言实现,也可以使用Quartus自带的Pin Planner图形界面来实现。Pin Planner在进行引脚分配的时候支持多行复制的功能,所以可以一次分配多个引脚。这两种方法在速度上的区别是不太大的,后者在某些情况下也显得特别方便。

      8) 关于Nios工程的建立

      在使用Nios II 9.1 SP2进行工程创建的时候,会通过一个扩展名为.sopcinfo的文件来创建工程。这个文件是SOPC定制Cpu的时候生成的,所以在设计过程中向Cpu中添加新的模块后,编译得到的.sopcinfo文件也会发生改变。这时,利用之前.sopcinfo文件创建的工程便不能使用了,需要删除它重新创建一个工程;否则,新编写的Nios代码可能会通不过编译。

      9) 关于Nios工程的编译

      在Nios集成开发环境中编译工程时,不会对当前发生修改的文件进行保存,而是直接编译修改前的文件。所以在修改完毕源文件之后,一定记得进行保存,否则编译器还是编译的原来的代码。 

原创粉丝点击