hsin 发表于 2019-2-25 21:03:07

最详细FPGA/CPLD开发流程快速入门指南-基于Altera QuartusII(1)

一、概述
本文以简单的26位分频器工程实例为蓝本,从头至尾演示工程建立的所有细节及注意事项,以便新手用户快速掌握QuartusII的入门操作知识
二、声明
本文以ALTERA QuartusII11.0版本进行演示,虽然是针对CPLD EPM240T100开发平台所做的入门指导书,但这些流程对于FPGA设计是完全通用的。另外,本文在行文时描述的QuartusII步骤操作,均使用菜单方式,事实上,大多数操作可以直接使用工具栏上的快捷按钮,读者可自行熟悉,执行的结果与菜单操作都是一致的
三、基本思路
工程实例建立的基本步骤如下:
(1)工程建立:建立与您的开发平台相对应的工程,比如您的开发平台是EPM3064,则后续的工程开发也应该基于该芯片进行
(2)逻辑设计:这里包括很多设计手段,如AHDL、VHDL、Verilog HDL、原理图等等 ,由于本文讲的是QuartusII设计流程,不会过多关注此步骤
(3)逻辑综合:逻辑综合用于宏观上您设计的逻辑判断是否有错,同时分析出逻辑设计中的IO引脚,以便后续进行IO引脚的分配
(4)引脚分配:将逻辑设计中的IO分配到实际器件中的IO引脚
(5)逻辑编译:全编译工程逻辑,并生成可用于下载的烧录文件
(6)逻辑下载:将逻辑下载到实际的开发平台中进行验证或使用
四、工程建立
下面我们来详细描述一个实际工程是如何建立的:
(1)打开QuartusII后,初始界面应如下图所示:

http://t11.baidu.com/it/u=2957672878,3729695258&fm=173&app=25&f=JPEG?w=402&h=275&s=EF40C71C026407099D2CF0CE030030E1(2)选择菜单【File】→【New Project Wizard…】后,即可弹出如下图所示的新工程向导对话框:

http://t11.baidu.com/it/u=3382942234,2450516707&fm=173&app=25&f=JPEG?w=457&h=354&s=CE42C5186B1F74495EEDC0C80300D0B1设置工程目录位于D:/demo,并将工程名命名为“demo”,同时软件会自动将顶层设计模块名填充为“demo”,因为QuartusII的工程名必须与顶层设计文件的模块名一致,否则编译将出错
(3)选择【Next >】后,即可进入如下图所示的添加文件页表。此页表适用于源码文件已经准备完好的情况,这样直接添加源文件即可将其加入当前工程。本文为了更详细展示设计流程,重新建立源码文件,不进行添加操作。

http://t11.baidu.com/it/u=3215265121,1292811845&fm=173&app=25&f=JPEG?w=459&h=356&s=EF42C716233B542D5E6DC0D80300F0B3(4)选择【Next >】后,即可进入如下图所示的器件选择页表项。您的开发平台是什么芯片型号,就在此页表选择相对应的器件型号,如果选择的器件型号与您实际使用的芯片型号不一致,在逻辑下载步骤时将会出错(如果你手头没有开发板,只是为了学习HDL语言或熟悉软件,随意选择一个资源多点的就可以,防止因为HDL逻辑规模太大资源不够用而出现编译错误)。
由于ALTERA的器件非常多,因此QuartusII提供一些过滤选项,以协助我们快速找到对应的器件。本文的开发平台芯片型号为“EPM240T100I5N”,该芯片为MAXII系列(Family),封装(Package)为“TQFP”,引脚数量(Pin count)为“100”,速度等级(Speed grade)为“5”,如下图所示:(对于EPM3032/3064或FPGA也是同样的方法,如果您按照此对话框设置后,没有找到您需要的器件型号,说明您可能没有安装该芯片对应的器件库)

http://t11.baidu.com/it/u=4052278633,942496402&fm=173&app=25&f=JPEG?w=504&h=390&s=EA4295181B0F44495C4160DE0300D0B2对于本工程实例,设置好器件型号后,就可以直接选择【Finish】即可进入“第五节逻辑设计”即可,但如果您想了解其它页表项,可继续往下阅读。
(5)选择【Next >】后即可进入EDA工具设置页表项。QuartusII支持很多第三方工具,比如综合工具、仿真工具等等,第三工具通常在某一方面更为专业,特别是仿真工具,QuartusII已经不再提供仿真功能,只能用第三方仿真工具,如Modelsim来进行仿真。
由于我们的实例比较简单,且仅注重开发流程,因此我们对此步骤不做调整(后续我们将详述)

http://t10.baidu.com/it/u=4270470576,3824662763&fm=173&app=25&f=JPEG?w=493&h=382&s=CE42C11A5F0F74491ECDC4DE0300D0B3(6)选择【Next >】后,即可进行进入如下图所示的总结(Summary)页表,这里简要显示了您之前所做的所有设置,如果没有问题的话,选择【Finish】即可

http://t12.baidu.com/it/u=4074793208,3921602664&fm=173&app=25&f=JPEG?w=490&h=380&s=EF42C1105B1B644D5EEDA0CC0300C0B3五、逻辑设计
工程建立完成后,就可以开始着手进行逻辑的设计了
(1)选择菜单【File】→【New…】即可弹出如下图所示的新建(New)对话框,QuartusII支持很多的逻辑设计输入方式,这里我们选择“Verilog HDL File”,表示我们将使用Verilog HDL语言作为本工程的逻辑设计输入方式。

http://t10.baidu.com/it/u=3089322327,3801356918&fm=173&app=25&f=JPEG?w=197&h=301&s=CF42C118151551CA1A7DC0DE030080B2(2)选择【OK】后,QuartusII将默认新建一个名为“Verilog1.v”的文件,我们将工程示例代码拷贝进去,此时应如下图所示:

http://t10.baidu.com/it/u=2857482876,1957066237&fm=173&app=25&f=JPEG?w=554&h=379&s=6F40C119074E55491C4DC1DE030050B3注意:这个源代码的模块名demo是与左边Project Navigator中工程名是一致的,而且是必须的
(2)选择菜单【File】→【Save】后,将文件保存在工程目录,并将其命名为“demo.v”即可,如下图所示:

http://t10.baidu.com/it/u=2450958708,1728245792&fm=173&app=25&f=JPEG?w=437&h=379&s=E742D318430F4D4D5EE9C4DA030080B2注意:文件名不一定必须是“demo.v”,QuartusII只要求模块名与工程名相同,不要求与文件名相同
完成后此时应如下图所示:

http://t12.baidu.com/it/u=2007381851,3884992521&fm=173&app=25&f=JPEG?w=453&h=364&s=E742D319155E4DCC5C4DE1DC030080B2六、逻辑综合
逻辑设计完毕后,可以初步对逻辑进行综合,以判断是否有诸如语法错误、逻辑错误等异常,并可初步对IO引脚进行分析
(1)选择菜单【Processing】→【Start】→【Start Analysis & Synthesis】后,即可开始进行逻辑设计的综合过程,完成后应如下图所示:

http://t12.baidu.com/it/u=3246410165,949811978&fm=173&app=25&f=JPEG?w=259&h=130&s=A743D5146B2864095ED4DDCC0300D0B0
http://t11.baidu.com/it/u=1373137138,235894227&fm=173&app=25&f=JPEG?w=466&h=335&s=E7C09119075F55CC1ED0A1C80300D0B3(2)菜单选择【Tools】→【Netlist Viewers】→【RTL Viewer】后即可出现RTL(寄存器传输级)图,通常,对于简单的逻辑错误,使用RTL可以看出来。本文要实现的是26位分频器,下图表示,每到来一个时钟,即使用Add0加法器将当前tmp寄存器中的值累加1,再通过一个clk_out~reg0将最高位输出,这正好应证了我们的设计思路。

http://t12.baidu.com/it/u=2178884504,3336590957&fm=173&app=25&f=JPEG?w=491&h=160&s=E742F11681726C235E4518DA0300C0B2七、引脚分配
逻辑综合如果顺利的话,设计中的输入输出引脚信息已经被分析出来,我们要做的就是将逻辑中的引脚分配到实际器件的引脚
(1)选择菜单【Assignments】→【Pin Planner】后,即可打开PinPlanner对话框。我们根据EPM240T100开发板规格书中的引脚说明(对于任何一块开发板,都必将有一个开发板的原理图或接口引脚号的说明书,用来描述开发板上主芯片与外围的连接关系),将其引脚如下图所示分配即可:

http://t11.baidu.com/it/u=538515067,3108568309&fm=173&app=25&f=JPEG?w=497&h=243&s=EF42DF180D795C090A787DC3030090B3八、逻辑编译
引脚分配完成后,就可以对工程进行全编译,这包括逻辑综合、适配、时序分析等步骤,本文暂不关注这些细节
(1)选择菜单【Processing】→【Start Compilation】后,即可开始全编译过程,如果顺利的话,将如下图所示:

http://t11.baidu.com/it/u=3451230355,2017776696&fm=173&app=25&f=JPEG?w=211&h=92&s=A742D114B17A44285ED4CDC80300C0B0
http://t12.baidu.com/it/u=2398532492,510314849&fm=173&app=25&f=JPEG?w=427&h=307&s=E740F119075F55CC1CD0A1C8030040B3在总结中显示了当前工程编译后所占用的资源情况,本工程使用51个宏单元,占用总设计资源的21%,使用了2个引脚(即clk与clk_out),占用总引脚的3%

http://t12.baidu.com/it/u=1957141289,4164577251&fm=173&app=25&f=JPEG?w=261&h=142&s=E242DA1D474C5D490C4960DF030080B3九、逻辑下载
逻辑全编译后即可生成下载文件,对于CPLD开发平台,通常是.pof文件,对于FPGA开发平台,还可以是.sof、.jic等文件
(1)选择菜单【Tools】 → 【Programmer】后,在弹出的对话框中勾选“Program/Configure”,表示我们将要进行烧录操作,此时应如下图所示:

http://t12.baidu.com/it/u=2484194555,1019779508&fm=173&app=25&f=JPEG?w=501&h=239&s=EF40D310073B44205CE505CB0300C0B3如果您没有插上下载器或下载器有异常,上图中USB-Blaster处将会显示“NoHardware”,这时您应该看看驱动是否安装,或下载器是否正常,如果确定都正常,可以点击左侧的Hardware Setup…按钮,弹出的对话框中列表中将有Usb blaster项,点击即可。
(2)将开发平台按规格书所述供好电源,再正确插上USB-Blaster JTAG口,点击【Start】按钮即可开始进行文件烧录过程,烧录顺利后应如下图所示:

http://t10.baidu.com/it/u=3669334416,1187152747&fm=173&app=25&f=JPEG?w=523&h=250&s=EF40D314073A44204CE51DD90300C0B1

mj8abcd 发表于 2019-2-26 11:12:41

ftnt1314 发表于 2019-3-3 08:54:34

ftnt1314 发表于 2019-3-6 08:26:43

pads008 发表于 2019-3-9 08:52:07

页: [1]
查看完整版本: 最详细FPGA/CPLD开发流程快速入门指南-基于Altera QuartusII(1)