FPGA实验指导书end//从两边向中间熄else if (flag == 3'b011)beginlight[len : 4] <= (1'b0, light[len : 5]] :light[len-4 : 0] <= (light[len-5 : 0],1'b0] ;if(light[2] == 1'b0)flag<=3'b100;end//奇偶位循环点亮else if (flag =- 3'b100)beginlight[len : 4]<= [1'bl,light[len: 5]] ;light[len-4 : 0] <= (1'b1,light[len-4 : 1]] ;if(light[1] =- 1'b1)flag<= 3'b101:end1/从新开始elseif(flag=-3'b101)beginlight <= 8'h00;flag<=3'b110;end//t_switch信号转换,实现第二种节拍else if (flag =- 3'bl10)begint_switch<=~t_switch;flag<=3'b00o;endendendmodule在上面的VHDL程序中,clk1用于控制LED流水灯的点亮和熄灭的频率,clk1在程序内部进行二分频,分频后的值来作1ight的敏感信号,1ight用于控制8位LED流水灯的亮与灭,3.3.2设计输入任何一项设计都是一项工程(Project),必须为此工程建立一个放置此工程相关文件的文件夹,此文件夹将被EDA软件默认为工作库(WorkLibrary)。针对LED流水灯的设计实例,我们在D盘根目录下建立一个文件夹,取名为1ight,路径为D:llight。需注意的是:文件夹不能用中文字符命名,也不要有空格,建议用英文字母和数字命名,长度最好8个字符之内。打开QuartusII,选择“File”菜单下的“New”命令。在“New”窗口中的“DeviceDesingFiles”选项中选择“VHDLFile”(如图4所示)。然后在VHDL文本编辑窗中输入例1-1的VHDL程序。21
FPGA 实验指导书 21 end //从两边向中间熄 else if (flag == 3'b011) begin light[len : 4] <= {1'b0,light[len : 5]}; light[len-4 : 0] <= {light[len-5 : 0],1'b0}; if(light[2] == 1'b0) flag <= 3'b100; end //奇偶位循环点亮 else if (flag == 3'b100) begin light[len : 4] <= {1'b1,light[len : 5]}; light[len-4 : 0] <= {1'b1,light[len-4 : 1]}; if(light[1] == 1'b1) flag <= 3'b101; end // 从新开始 else if (flag == 3'b101) begin light <= 8'h00; flag <= 3'b110; end //t_switch 信号转换,实现第二种节拍 else if (flag == 3'b110) begin t_switch <= ~ t_switch; flag <= 3'b000; end end endmodule 在上面的 VHDL 程序中,clk1 用于控制 LED 流水灯的点亮和熄灭的频率,clk1 在程序 内部进行二分频,分频后的值来作 light 的敏感信号,light 用于控制 8 位 LED 流水灯的亮与灭, 3.3.2 设计输入 任何一项设计都是一项工程(Project),必须为此工程建立一个放置此工程相关文件的文 件夹,此文件夹将被 EDA 软件默认为工作库(Work Library)。 针对 LED 流水灯的设计实例,我们在 D 盘根目录下建立一个文件夹,取名为 light,路径为 D:\light。需注意的是:文件夹不能用中文字符命名,也不要有空格,建议用英文字母和数字 命名,长度最好 8 个字符之内。 打开 Quartus II,选择“File”菜单下的“New”命令。在“New”窗口中的“Device Desing Files”选项中选择“VHDL File”(如图 4 所示)。然后在 VHDL 文本编辑窗中输入例 1-1 的 VHDL 程序
FPGA实验指导书-DsuaaTe0othoEeouo图4打开VHDL文本编辑窗选择“File”菜单下的“SaveAs”命令,存放到D盘根目录下的light文件夹,保存类型选择VHDLFile(*.v*.vlg*.vh*.VHDL),存盘文件名应与实体名一致,即为1ight.vhd。此时会出现如图5所示的对话框“Doyouwanttocreateanewprojectwiththisfile?”。如果单击“是”按钮,则直接创建工程流程。在此,为了下一节熟悉利用“NewProjectWizard”工具创建设计文档,我们单击“否”按钮。Danoe0800Oapu+Son国96EEElAe weegAEeewareEag krpeuedAn图5编辑输入设计文档并存盘3.3.3创建工程(1)选择“File”菜单下的“NewProjectWizard”,打开新建项目指南(图6),将出现如图7所示的对话框。22
FPGA 实验指导书 22 图 4 打开 VHDL 文本编辑窗 选择“File”菜单下的“Save As”命令,存放到 D 盘根目录下的 light 文件夹,保存类型选 择 VHDL File(*.v *.vlg *.vh *.VHDL),存盘文件名应与实体名一致,即为 light.vhd。此时会出 现如图 5 所示的对话框“Do you want to create a new project with this file?”。如果单击 “是”按钮,则直接创建工程流程。在此,为了下一节熟悉利用“New Project Wizard”工具创建 设计文档,我们单击“否”按钮。 图 5 编辑输入设计文档并存盘 3.3.3 创建工程 (1)选择“File”菜单下的“New Project Wizard”,打开新建项目指南(图 6),将出现 如图 7 所示的对话框
FPGA实验指导书PQuartusII-Ivhdll.vhdlEileEditYiewErojectAssienmentsProcessingToolsDH-wCtr1+NCtr1+onnatPrVhd1.vhdCtrl+FE理ENDNew Froject WizardOpen Froject.ARCH美#电地址555351238PseA1EileSt图6打开新建项目向导Ne Proiect izard: Direetory,Nane, Top-Level Entity Epag..XDVighWhat isthenameof thispioject?lghmewacty match the entity name in the denign filghUse Esistrg Project Seltings <Bsek图7创建工程light图7中最上面一栏指示工作目录,可单击最上面一栏右侧的“...”按钮,找到相应的目录下的文件(一般为顶层设计文件),在我们的例子中就是1ight.v,将其打开。图中的第二栏为项目名称,可以为任何名字,推荐为顶层设计的文件名。第三栏为顶层设计的实体名。设置完后,单击“Next”按钮。(2)将设计文件加入工程。在图8中,最上面一栏“Filename”用于加入设计文件,可单击右侧的“..”按钮,找到相应的目录下的文件并加入。加入的文件可以有Graphic(.BDF、.GDF)、AHDL、VHDL、VHDLHDL以及EDIF文件。单击“AddA11”按钮,将设定目录下的所有VHDL文件加入到此工程。如果单击下面的“UserLibraries”按钮,将打开如图9所示的对话框,可以加入用户自己定义的库函数的路径名和文件名。在我们的交通灯的例子中,设计文件1ight.V已经加入,所以就不需要加入其他文件了,也不需要加入自定义的库函数了。设置完成后,单击“Next”按钮,进行下一步,出现如图10所示的对话框。(3)选择目标芯片。首先在“Family”栏中选择CycloneIII系列;然后在“Targetdevice”选项框中选择“Specificdeviceselectedin‘Availabledevices'list”,即选择一个确定的目标芯片。在这里,我们选择此系列的具体芯片EP3C16Q240。EP3C表示CycloneIII系列及此器件的规模:Q240表示PQFP240-pin封装;C8表示速度级别。可以通过图10所示窗口右边的“Filters”窗格“过滤”选择。23
FPGA 实验指导书 23 图 6 打开新建项目向导 图 7 创建工程 light 图 7 中最上面一栏指示工作目录,可单击最上面一栏右侧的“„”按钮,找到相应的目录 下的文件(一般为顶层设计文件),在我们的例子中就是 light.v,将其打开。图中的第二栏为 项目名称,可以为任何名字,推荐为顶层设计的文件名。第三栏为顶层设计的实体名。设置完 后,单击“Next”按钮。 (2)将设计文件加入工程。在图 8 中,最上面一栏“File name”用于加入设计文件,可 单击右侧的“„”按钮,找到相应的目录下的文件并加入。加入的文件可以有 Graphic (.BDF、 .GDF)、AHDL、VHDL、VHDL HDL 以及 EDIF 文件。单击“Add All”按钮,将设定目录 下的所有 VHDL 文件加入到此工程。如果单击下面的“User Libraries„”按钮,将打开如图 9 所示的对话框,可以加入用户自己定义的库函数的路径名和文件名。在我们的交通灯的例子中, 设计文件 light.v 已经加入,所以就不需要加入其他文件了,也不需要加入自定义的库函数了。 设置完成后,单击“Next”按钮,进行下一步,出现如图 10 所示的对话框。 (3)选择目标芯片。首先在“Family”栏中选择 Cyclone III 系列;然后在“Target device” 选项框中选择“Specific device selected in ‘Available devices’ list”,即选择一个确 定的目标芯片。在这里,我们选择此系列的具体芯片 EP3C16Q240。EP3C 表示 Cyclone III 系列 及此器件的规模:Q240 表示 PQFP 240-pin 封装;C8 表示速度级别。可以通过图 10 所示窗口右 边的“Filters”窗格“过滤”选择
FPGA实验指导书New Project Vizard:Add Files Ipage 2of 5]XSelect the design filesoject Click AddAll to add all design fles in theproiectdeectorytotheproject Note:youcan alwaysadddesignfilestotheprojectEle name:PiloaLibn Dexig ntra HOL versionAdd ATYP1logHSpecty the path names oany.non.detaultlibralUger LibratiesBackNext)Pinish图8在工程中加入所有相关文件User LibrariesSpecifyuserlibrariesforthepojectListthebarynamstheorderyouwantto searchthem.Userlibrariescancontainuser-definecendor-suppliedmgafunctionsBlockSymbolFlesndAHDLIncluFileNote:To specify user libraries that apply to all projects,use the Optionis0000Libtary name:LibrariesOKCance图9加入用户自定义的库函数Me Projeditpage3of5lSelect the family anddevice you want to taget forcomplahiorDevice famShowinAvalatledevicPQFREamiyocoreakeo2PnooSppedTatnetdutodeSpecihicdevicAyalable devicMarEmbed.PLFRNEP3C16Q240C81EP3C400240C8(BackAFinish双油图10选择目标芯片(4)选定目标芯片后,单击“Next”按钮,将出现图11所示的对话框,用于选择仿真器24
FPGA 实验指导书 24 图 8 在工程中加入所有相关文件 图 9 加入用户自定义的库函数 图 10 选择目标芯片 (4)选定目标芯片后,单击“Next”按钮,将出现图 11 所示的对话框,用于选择仿真器
FPGA实验指导书和综合器类型。如果我们不选的话,将使用QuartusII自带的仿真器和综合器。在此例子中,我们使用QuartusII自带的仿真器和综合器。Nev Project izard: EDA Tool Settinge Epage 4 of 5lXSpecilytheothwiththeprojecJEDAd国AA-厂EDAtiminganalysistooT<BackHext>Finish润清图11选择仿真器和综合器(5)再次单击“Next”按钮后,工程设置统计列出了此项工程的相关设置情况。最后单击“Finish”按钮,结束该工程的设置,已经成功建立了工程。在ProjectNavigator栏中可以查看该工程的各项文件以及层次结构。工程建立后,可以打开“Assignments”菜单下的“Settings”对话框,更改并重新设置一些选项。利用“General”页面可以重新指定顶层实体,在“Files”页面中可以添加和删除文件。在“UserLibraries”中页面可以加入用户自定义的库函数。另外,如果想在QuartusII中使用原有的Max+PLUSII下的工程,则可以使用“File”菜单下的“ConvertMax+PLUSIIProject..”命令,将Max+PLUSII相关文件转换成QuartusII工程。3.3.4编译前设置在对工程进行编译前,我们需要做好以下设置。具体步骤如下。(1)选择目标芯片,在我们的例子中,我们在建立工程时已经选择好了目标芯片,所以就不需要这一步过程了。如果我们想重新选择,可以单击“Assignments”菜单下的“Device”,打开始图14所示的对话框,重新选择目标芯片。Nev Project ixard: Fanily A Device Settinea Tpage or tlPQFFm-acka.an0SikHeFinish10图14器件选择(2)选择配置器件的工作方式。单击图14中的“Device&PinOptions.”按钮,进入如图15所示的选择窗口。首先选择“General”项,在“Options”栏中选中“Auto-restart25
FPGA 实验指导书 25 和综合器类型。如果我们不选的话,将使用 Quartus II 自带的仿真器和综合器。在此例子中, 我们使用 Quartus II 自带的仿真器和综合器。 图 11 选择仿真器和综合器 (5)再次单击“Next”按钮后,工程设置统计列出了此项工程的相关设置情况。最后单击 “Finish”按钮,结束该工程的设置,已经成功建立了工程。在 Project Navigator 栏中 可以查看该工程的各项文件以及层次结构。 工程建立后,可以打开“Assignments”菜单下的“Settings”对话框,更改并重新设置一 些选项。利用“General”页面可以重新指定顶层实体,在“Files”页面中可以添加和删除文 件。在“User Libraries”中页面可以加入用户自定义的库函数。 另外,如果想在 Quartus II 中使用原有的 Max+PLUS II 下的工程,则可以使用“File”菜单 下的“Convert Max+PLUS II Project„”命令,将 Max+PLUS II 相关文件转换成 Quartus II 工程。 3.3.4 编译前设置 在对工程进行编译前,我们需要做好以下设置。具体步骤如下。 (1)选择目标芯片,在我们的例子中,我们在建立工程时已经选择好了目标芯片,所以就 不需要这一步过程了。如果我们想重新选择,可以单击“Assignments”菜单下的“Device„”, 打开始图 14 所示的对话框,重新选择目标芯片。 图 14 器件选择 (2)选择配置器件的工作方式。单击图 14 中的“Device & Pin Options„”按钮,进入 如图 15 所示的选择窗口。首先选择“General”项,在“Options”栏中选中“Auto-restart