在本节,我来演示一下,使用Quartus软件建立一个工程的步骤。想要建立一个工程,运行一个工程,不仅仅是需要Quartus软件,还需要配套的仿真软件ModelSim软件。所以,本节的内容,可能会比较长一些。
一. 建立工程文件夹
本步骤,大家可以跟我一起来操作。并且,我也比较建议大家和我一起来操作着。
首先呢,在你的电脑上,找到一个路径,在某某文件夹下面,新建一个文件夹。在这里,我将这个文件夹,命名为【me01】。注意,所选择的路径,和你所创建的文件夹的名字,不要有中文,空格,也不要有特殊字符。这个【me01】文件夹,它是作为我们的整个项目的存放路径。
第2步,在【me01】文件夹里面,新建四个文件夹,名字分别为【doc】,【project】,【rtl】和【sim】。在【doc】文件夹里面,可以存放着一个项目的各种文档,比如项目的波形图文档,项目的说明文档,各种需要引用的图片,word文件等等的文档。【project】文件夹,用于存放工程文件。使用Quartus软件建立项目,会形成一个后缀为【.qpf】的文件,这个文件,就是工程文件。我们要将工程文件存放在【project】里面。【rtl】文件夹,用于存放我们所编写的设计文件。【sim】文件夹,用于存放仿真文件。
一般地,我们去编写Verilog代码文件时,我们会将代码文件分为两种。一个叫做设计模块,另外一个叫做激励模块或者仿真模块。所谓的设计模块,就是我们的代码文件的正式的代码。这个代码,若是用于FPGA开发的话,可以将其写入FPGA开发板上面。若是用于写可以交付流片的代码,则设计模块是可以被制作出来的芯片所采用的逻辑代码。而激励模块或者仿真模块,则用于对设计模块的代码进行仿真模块。可以对设计模块中的某一个模块进行单独仿真,也可以对设计模块的顶层模块进行总体仿真。
为啥设计模块的代码,要存放在【rtl】文件夹里面,而不是将这个文件夹命名为【design】呢?
rtl的大写形式为RTL,英文全名为Register Transfer Level,翻译为寄存器传输级。在Verilog HDL硬件语言里面,一共有四种层次的代码抽象层级。由高到低,分别为行为级,数据流级,门极,开关级。其中,行为级也叫做算法级。
在四个抽象等级里面,开关级较少使用。门极,按照我的理解,可以使用它来优化一些个关键代码。但是,在真正的项目里面,是如何来使用门极代码的,我并不清楚。只是,按照我的理解,可以用门极代码,优化一些个关键代码。我的理解未必正确。
在平常使用Verilog HDL的时候,人们多是将行为级和数据流级结合在一起来使用。所以,人们就将行为级与数据流级结合起来使用的代码,起了一个名字,这个名字就叫做寄存器传输级,英文简写为RTL。所以,我们的项目里,以及许多的国内的FPGA开发板卖家的配套教程里面,都将设计模块的代码所在的文件夹,取名为【rtl】。
【sim】这个名字,其实就是ModelSim的简写而已,这个文件夹里面存放着ModelSim仿真文件。
建立好的文件夹结构如下图所示。
二. 编写设计模块的代码
在正点原子,野火等等的国内FPGA开发板销售厂家那里,常常会在其教程里面去讲波形图,流程图的绘制。在我这里,我目前并不擅长画图。并且,我自己在学习Verilog与FPGA的时候,我基本上是把Verilog当作是一种特殊的编程语言。同时,我也将FPGA的设计,芯片的设计,当作是一种编程活动,而不是将其当作是一门硬件课程。
之所以是这么来学习与看待Verilog与FPGA,那是因为,在学习Verilog与FPGA之前,我学习编程的时间比较久,经验更多一些。所以,对于FPGA与Verilog,我是将其当做一个编程语言来学习的。
正点原子,野火等等的厂家的教程里面,会去绘制波形图啥的。而我自己在学习相关的教程的时候,通常地,我看不懂里面的波形图。在学习和理解里面的代码逻辑的时候,我主要地,还是通过学习编程时候的方法,来理解代码逻辑。对于流程图,这个东西时很有用的。但是,在这里,我就暂时不去画了。因为我确实不咋会画。
关于设计模块,我只编写一个代码文件,文件名为【me01.v】。代码内容如下。
module me01
(
input wire [9:0] num01,
input wire [9:0] num02,
output wire [9:0] sum
);
assign sum = num01 + num02;
endmodule
在大家那里,请大家先打开自己电脑上的Notepad++软件。打开以后,首先来设置好代码格式。
第1步,依次点击【设置】,【首选项】菜单项,打开【首选项】对话框,如下图所示。


第2步,在图2的左侧一栏,有一个【新建】字样的东西,点击这个【新建】选项。结果如下图所示。

在图3的右侧,是【新建文档】选项组的内容。也许大家那里的选项和我这里的不同。请大家和我的选项设置保持一致。为此,我再讲【新建文档】选项组里面的【格式(行尾)】和【编码】两个选项组分别专门截图,来更清晰地展示。


进行到了这里,我们的设置文档编码格式的工作就完成了。接下来呢,大家点击对话框下方的【关闭】按钮,关闭【首选项】对话框。
然后呢,大家依次点击【文件】,【新建】菜单项,新建一个文档,并将本小节上面的代码块的内容,输入到这个新建立的代码文档里面。当然了,为了省事一些,你也可以直接将本小节的代码块的内容,拷贝到新建的Notepad++文档里面。
接下来,大家依次点击【文件】,【另存为】菜单项,弹出【另存为】对话框,如下图所示。

打开【另存为】对话框以后,首先呢,请大家在这个对话框里面,浏览到【me01】文件夹里面的【rtl】文件夹,进入【rtl】文件夹里面,如下图所示。

在我这里,我是将整个的me01项目,设置在了【D:\doc\QuartusII-91\simple_teach\】路径下面。
我们还是来看【另存为】对话框。在另存为对话框下面,有一个【保存类型】字样。在它的右边,是一个可以选择东西的框框。如下图所示。

在图8的红色框线所示的位置,是保存类型一栏与这一栏右边的选择框。这一栏,是用来设置保存文件的类型的。我们点击【保存类型】字样右边的选择框,弹出来一个列表,如下图所示。