彻底掌握Quartus II——基础篇
2015-05-30
下面介绍Quartus II 13.0最基础的日常使用方法,其它版本差别非常小。
如何新建工程就不说了,但是要注意,工程目录和工程名不要有中文和空格,还有,要有一个设计文件(如,.v、.vhd、.bsf文件)的名称要跟工程名一样,不然会有警告。 一、新建工程,New个设计文件,会出现下图所示。
上面那么多种文件有什么卵用?
1、AHDL文件,用于编写Altera发明的AHDL语言,此语言已经被淘汰,可以不管它。 2、Block Diagram/Schematic文件,原理图文件,跟AD、PADS、Cadence等电路图设计软件的用法差不多。
3、EDIF文件,网表文件。
4、Qsys system文件,用于设计软核,Qsys前身是NIOS。 5、State Machine文件,状态机文件。
6、System Verilog文件,用于系统级验证。 7、Tcl script文件,TCL脚本文件。
8和9、常用的HDL文件(包括verilog和VHDL)
10是十六进制文件,11是MIF文件,用于ROM或RAM的初始化。 12、Probe文件,用于观察FPGA内部某一信号,一般用Signaltap 13、 逻辑分析仪接口文件,暂时不知道有什么用。 14、VWF文件,用于调用quartus自带的仿真工具QSIM 15、AHDL头文件,可以不管它。
16、原理图的Symbol文件,用于编辑原理图Symbol,跟你用电路图设计软件时,画原理图库差不多。
17、JTAG链描述文件,给一个或多个芯片下载代码时用的。 18、Synopsys约束文件,时序约束用的SDC文件。 19、txt文件。
就算quartus支持那么多种文件,但常用的没几个,一般是原理图.bdf文件或者纯文本的.v或.vhd文件,就算后面需要用逻辑分析仪或者时序约束,也是可以用quartus自动给你生成的。
特别要注意一下,不同类型的文件,名字最好不一样。比如,已经有了 test.v,就不要用弄test.vwf,不然你双击test的原理图Symbol的时候,会问你要打开test.v还是test.vwf,让你浪费不 必要时间。我一般是除了.v或.vhd文件用test之外,vwf就用test_vwf.vwf,bdf就用test_top.bdf。
二、如何把HDL文件,转成原理图Symbol 先选中你要转的HDL文件。
白色衬底(左边)是被选中的HDL文件,右边是没有选中的,然后在菜单栏File下面。
点Create Symbol Files for Current File,即可把HDL转成原理图Symbol了,然后新建一个.bdf的原理图文件。
双击红圈位置,在libraries->Project下,已经生成了原理图Symbol了,点OK,可以调用了。(我的机子是高分屏,Symbol显示有点问题,是quartus对高分屏支持得不好)。
如果你觉得原理图的symbol不够大,可以按住Ctrl键,滑动鼠标滚轮,可以使symbol放大/缩小。
再来对照一下,原理图Symbol和.vhd文件的实体 entity bin2bcd is port(
clk_50M : in std_logic; add : in std_logic; sub : in std_logic;
bcdout1 :out std_logic_vector(3 downto 0) );
end bin2bcd;
这是一一对应,输入在左,输出在右,有多个输入的时候,也会按顺序排列,如果不方便连线,可以改一下引脚的顺序,再保存,生成Symbol,再update。
右击Symbol,就可以update了,update时,会出现下面的对话框。
懂点英语的,都能看懂上面三个选择。1、只update选中的symbol,2、update所有关联(名字一样)的symbol,3、update全部symbol。一般选第一个。 quartus13有个bug,生成的symbol的实例名可能会重名,而报警告。这时,可以右击symbol,选properties。
把上图的inst改成其它名字就可以了。
三、在刚才调用symbol的位置,还可以调用其它IP核。
在Name下面输入input,可以调用输入端口,output就是输出端口了,这些都是quartus自带的一些symbol,把primitives下面的折叠全部打开,你会发现有很多东西,如:与或非门、各种触发器等。当然,还有其它东西,自己去挖掘吧。特别要说明两个symbol,VCC代表高电平,GND代表低电平,可用于使能或者其它用途。
也是在刚才那个对话框,下面有MegaWizard,用来调用quartus自带的IP核,也叫宏功能模块(LPM),有部分是免费,部分是收费,还有部分需要联网下载的。
MegaWizard的使用方法也很简单,写上IP核的名字,一步步next到finish就可以了,调用也是在上面那个对话框里调用。
其中,原理图symbol之间的连线要注意一下位宽,不然会出错。也可以使用网络标号,先把线引出来,选中线,再输入网格标号就可以了,但是要注意一下格式,如:qout是8位,网络标号就要写成qout[7..0]。也有些特殊用法,如下图所示:
这里,引出64位宽的fre信号,而在另一个symbol则只连了[63..32]这几个脚,这是合法的,空出来的引脚,没用的话,可以不管。
四、编写好你的设计文件之后,就可以编译(也可以叫综合)了。因为综合很慢,所以先分析一下设计文件有无语法错误之类的,再综合。
综合的时候,要注意,哪个是顶层文件。比如你弄一个流水灯,在 led_top.bdf里面,有分频模块fre_div的symbol和流水灯控制模块led_ctrl的symbol的话,那么led_top.bdf 就是顶层文件,因为它调用了你所有的设计文件。你可以先选中led_top.bdf,再用快捷键Ctrl+Shift+J,把它设置为顶层文件,不然综合 出来有很多警告,甚至出错。
上图所示,就是分析设计文件了,而最左边的就是综合。综合之后,就会生成report,告诉你,你设计出来的电路占用哪些资源。
懂点英文和FPGA的内部结构的,都能看懂上图。现在解释一下: 1、电路占用了62个LE。
2、电路占用了43个组合电路。 3、电路占用了55个专用的寄存器。 4、整个电路占用了55个寄存器。
5、电路使用了31个引脚,我的FPGA是EP2C8Q208C8N,一共有208个引脚,其中138个引脚是可用的。
6、电路使用了0个虚拟引脚,虚拟引脚是前期设计时,预先分配的,可以解决引脚不够用导致无法综合的问题。
7、电路使用的内存为0 bit,这里memory是指FPGA内部的存储单元,包括ROM和RAM,其中RAM指的是块RAM而不是分布式RAM,因为分布式RAM是用LE实现的。