DE2 20 Quartus使用实例Word文档格式.docx
- 文档编号:22084780
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:49
- 大小:1.85MB
DE2 20 Quartus使用实例Word文档格式.docx
《DE2 20 Quartus使用实例Word文档格式.docx》由会员分享,可在线阅读,更多相关《DE2 20 Quartus使用实例Word文档格式.docx(49页珍藏版)》请在冰豆网上搜索。
先在DE2平台上建立SOPC系统的硬件,这个系统包括一个NIosII/s嵌入式处理器、存储器、一个JTAGUART及一个定时器,一个ID模块。
另外,我们将加入一个自定义组件,实现对DE2平台上七段数码管的控制。
1.建立工程
启动QuartusII软件,用New>
NewProjectWizard…菜单在QuartusII中新建一个工程,本例中将工程的工作目录设定在G:
\DE2,工程的名称为niosii,如图4所示,如果是希望使用自己已有的工程,则点击图4中所示的UsingExistingProjectSetting按钮,,但是在本例中不需要添加已有工程的配置。
按下next后,器件中选择EP2C35F672C6,向导完成后的汇总界面如图8所示。
图2QuartusII启动界面
图3
图4
图5
图6
图7
图8
图9
2.建立顶层设计文件
建立工程之后,需要为工程建立一个顶层设计文件,这个设计文件的名称应该与工程的名称完全一致,设计文件可以是QuartusII允许的各种设计输入格式的文件,如VerilogHDL、VHDL、AHDL及原理图设计文件等。
在本例中使用原理图设计文件。
用File>
New菜单建立一个新文件,选择BlockDiagram/SchematicFile文件,文件名称与工程名称保持一致,为niosii。
保存新建的文件。
图10
图11
图12
3.用SOPCBuilder建立一个新的SOPC硬件系统
单击
工具按钮或者是Tool>
SOPCBuilder菜单启动SOPCBuilder。
如图13所示,输入新系统的名称为nios_ii_system,当然也可以输入其他名称,但是应该注意,所有的名称中都不能出现空格。
TargetHDL选项可以选择Verilog,也可以选择VHDL,这里选择Verilog。
按OK按钮,进入到SOPCBuilder的主界面,如图15所示。
图13
图14
图15
4.向系统中添加NiosII处理器
在SOPCBuilder左侧的组件列表中,选择NiosIIProcessor,,按鼠标右键,在弹出的菜单中选择AddNewNiosIIProcessor,显示如图17所示的NiosII处理器的配置界面。
选择NiosII/s作为本设计的处理器,从界面上可以看到,NiosII/s占用约1200~1400个逻辑单元,2个M4KRAM块。
由于可以添加指令缓存,缓存需要占用额外的M4KRAM块,因此NiosII/s比NiosII/e相比,增加了指令缓存、分支预测、硬件乘法器及硬件除法器。
NiosII/s的最好性能可达25MIPS.
按下Next按钮,设置处理器的指令缓存和紧密耦合指令存储器,如图18所示,选择指令缓存为2K字节,不使用紧密耦合指令存储器。
按下Next按钮,设置JTAG调试模块,JTAG调试模块分为四个级别,每个级别的功能不同,占用的逻辑资源也不相同,在本设计中选择占用逻辑资源最少的级别Level1,如图21所示
按下Next按钮可以添加自定义指令,在本例中不添加自定义指令,按Finish按钮结束NiosII控制器的设置。
图16
图17
图18
图19
图20
图21
图22
图23
5.添加片上存储器
在SOPCBuilder主界面左侧的组件列表Memory组中,选中On-ChipMemory(RAMorROM),按鼠标右键,在弹出的菜单中选择AddNewOn-ChipMemory(RAMorROM),显示如图25所示的片上存储器的配置界面。
选择存储类型为RAM,存储器宽度为32位,总内存尺寸为40K字节。
单击Finish按钮完成片上存储器的配置。
图24
图25
图26
图27
6.添加JTAGUART
在SOPCBuilder主界面左侧的组件列表中,选择JTAGUART,按鼠标右键,在弹出的菜单中选择AddNewJTAGUART,显示如图28所示的JTAGUART配置界面。
按照默认设置,配置不作改变,单击Finish按钮完成JTAGUART的设置。
图28
图29
7.添加定时器
在SOPCBuilder主界面左侧组件列表中选中IntervalTimer,按鼠标右键,在弹出的菜单中选择AddNewIntervalTime,显示如图30所示的定时器配置界面。
按照默认的设置。
配置不作改变,即可生成一个初始周期为1ms的定时器,单击Finish按钮完成定时器的设置。
图30
8.添加自定义组件七段数码管控制器
先在QuartusII中建立两个Verilog文件,作为七段数码管显示驱动的控制器,一个是SEG7_LUT.V,如代码代码1所示,另一个是SEG7_LUT_8.V,代码如代码2所示。
SEG7_LUT.V是一个查找表,完成七段码显示的译码。
当输入iDIG在0x0~0xF之间变化时,输出oSEG的七段码也发生相应的变化,并在数码管上显示iDIG的值。
SEG7_LUT_8.V,对SEG7_LUT.V进行了8次例化,分别对应于七段数码管HEX0~HEX7。
在SEG7_LUT_8.V中,对输入/输出信号的定义不是按Avalon总线从端口标准信号来定义的。
将这两个文件保存在G:
\DE2\SEG7_LUT_8\hdl目录中。
代码1SEG7_LUT.V
moduleSEG7_LUT(oSEG,iDIG);
input[3:
0]iDIG;
output[6:
0]oSEG;
reg[6:
always@(iDIG)
begin
case(iDIG)
4'
h1:
oSEG=7'
b1111001;
h2:
b0100100;
h3:
b0110000;
h4:
b0011001;
h5:
b0010010;
4'
h6:
b0000010;
h7:
b1111000;
h8:
b0000000;
h9:
b0011000;
ha:
b0001000;
hb:
b0000011;
hc:
b1000110;
hd:
b0100001;
he:
b0000110;
hf:
b0001110;
h0:
b1000000;
endcase
end
endmodule
代码2SEG7_LUT_8.V
moduleSEG7_LUT_8(oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5,oSEG6,oSEG7,
iDIG,iWR,iCLK,iRST_N);
input[31:
inputiWR,iCLK,iRST_N;
0]oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5,oSEG6,oSEG7;
reg[31:
0]rDIG;
always@(posedgeiCLKornegedgeiRST_N)
if(!
iRST_N)
rDIG<
=0;
else
begin
if(iWR)
rDIG<
=iDIG;
end
SEG7_LUTu0(oSEG0,rDIG[3:
0]);
SEG7_LUTu1(oSEG1,rDIG[7:
4]);
SEG7_LUTu2(oSEG2,rDIG[11:
8]);
SEG7_LUTu3(oSEG3,rDIG[15:
12]);
SEG7_LUTu4(oSEG4,rDIG[19:
16]);
SEG7_LUTu5(oSEG5,rDIG[23:
20]);
SEG7_LUTu6(oSEG6,rDIG[27:
24]);
SEG7_LUTu7(oSEG7,rDIG[31:
28]);
Endmodule
返回SOPCBuilder中,用File>
NewComponent菜单添加新组件,如图31所示
SOPCBuilder会提示在设计文件的基础上用组件编辑器生成一个新组件,新组件的信息保存在一个目录中,该目录中包括一个组件说明文件class.ptf、一个perl脚本文件cb_generator.pl、一个存储Verilog或VHDL代码及其他相关文件的目录hdl_synthesis,以及一个存储软件代码的目录HAL。
SOPC将这个新组件放在当前工程目录下,完成后可以马上使用。
按Next按钮进入设计文件的添加界面,如图32所示。
可以添加HDL文本文件,也可以添加综合之后的文件,按AddHDLFile…按钮,选择G:
\DE2\SEG7_LUT_8\hdl,在HDLFile列表中出现了SEG7_LUT_8.V和SEG7_LUT.V及它们的相关的信息,组件编译器导入并综合SEG7_LUT_8.V和SEG7_LUT.V,等待一段时间后,组件编译器完成文件的导入及综合,并提示文件综合成功。
此时在组建编辑器下部的信息栏中,提示有两个错误,一个指出Avalon总线从端口没有clk信号,另一个指出Avalon总线从端口没有读/写信号,这是由于Verilog文件中的输入/输出信号定义与Avalon总线标准信号不一致造成的。
如果文件综合不成功,则按提示重新修改SEG7_LUT_8.V和SEG7_LUT.V文件。
按Next按钮,设置输入/输出信号,使七段数码管控制器的输入/输出信号与Avalon总线信号匹配。
如图33所示,组件编译器列出了所有的输入/输出信号,通过改变信号类型可实现信号匹配。
将iDIG的信号类型改为writedata,将iWR的信号类型改为write,将iCLK的信号类型改为clk,将iRST_N的信号类型改为reset_n,其他的信号保持原来的export不变。
修改过程中,下部信息栏中的信息也会相应的改变,如果匹配结果满足Avalon总线规范对信号的要求,则会显示Component“SEG7_LUT_8.V”isOK。
按Next按钮,还可以添加Avalon从接口和用户自定义软件,本例中不需要添加这两项内容。
将向导最后一步的ComponentGroup栏的内容修改为DE2UserLogic,作为组件的名称,如图35所示,以后加入的新组件都可以放在这个组里,也可以选择其他的组件名称,默认的组件名称是UnknownGroup。
按Finish按钮,组件编辑器会提示是否保存组件,按OK按钮生成组件,并返回SOPCBuilder界面,此时在组件列表中增加了一个的组DE2UserLogic,该组中有一个组件SEG7_LUT_8,如图37所示。
选中组件列表中的SEG7_LUT_8.V,按住鼠标右键,在弹出的菜单中选择AddNewSEG7_LUT_8.V。
图31
图32
图33
图34
图35
图36
图37
图38
9.自动设置基地址
至此已经添加了所有需要的组件,SOPCBuilder根据组件添加的顺序以及各组件需要的地址范围,自动为各组件分配了地址,系统中的组件信息如图38所示
用System>
AutoAssignBaseAddresses菜单,即可自动设置地址,自动设置地址之后的系统组件的信息如图39所示
图39
10.加入SystemID模块
如果需要,可以在系统中加入SystemID,为自己的系统添加独一无二的ID号。
在SOPCBuilder组件列表中选中SystemIDPeripheral,按鼠标右键,在弹出的菜单中选择AddNewSystemIDPeripheral,即可添加SystemID,每个NiosII系统只能添加一个唯一的ID。
添加SystemID模块(sysid)之后的系统模块信息列表如图41所示。
图40
图41
11.生成系统
按Next按钮转入系统生成页,按Generate按钮开始生成NiosII系统。
根据系统规模的不同,生成系统所需要的时间也不一样。
在生成系统的过程中,屏幕上会提示相关的信息,生成系统的工作完成之后,显示SYSTEMGENERATIONCOMPLETED。
按Exit按钮可退出SOPCBuilder,返回QuartusII,也可不退出SOPCBuilder,直接切换到QuartusII软件继续后面的工作。
图42
图43
图44
12.例化NiosII处理器
在QuartusII软件中,可修改文件niosii.bdf。
用鼠标左键双击niosii.bdf文件窗口中的空白处,弹出Symbol选择对话框,刚刚生成的NiosII系统在Project组中。
展开Project组,如图45所示,选中nios_ii_system,单击OK按钮,在niosii.bdf窗口中放置nios_ii_system模块,实现对NiosII系统的例化。
参照图46完成原理图设计,图中用CLOCK_50作为系统的时钟输入,SW[0]作为复位信号输入,NiosII的输出分别连接到HEX0~HEX7上。
图45
图46
13.导入引脚分配
接下来需要为设计分配引脚,可以在引脚规划器PinPlanner中手动分配引脚,也可以导入DE2系统光盘中提供的引脚分配表。
在DE2光盘中有一个叫做DE2_pin_assignments.csv的文件,文件中包含中了DE2平台上FPGA的引脚分配信息。
为方便起见,我们从DE2_pin_assignments.csv中导入引脚分配信息。
注意,若使用导入的引脚分配,则顶层原理图设计中的引脚名应该与图46中所示的完全一致。
使用Assignments>
ImportAssignments菜单,选择DE2_pin_assignments.csv文件,按照提示导入引脚分配。
图47
图48
图49
图50
图51
图52
14.编译并下载设计
用Processing>
StartCompilation或者是
快捷键启动编译过程,完成编译后的QuartusII界面如图50所示,从图中可以看出这个工程在FPGA上所占用的资源。
将编译后的pof文件下载到DE2平台上的FPGA中,完成硬件设计。
用JTAG模式配置FPGA的步骤如下:
(1)用USB连接电脑的USB口与DE2平台的J9,打开DE2平台的电源。
(2)将SW19置于RUN位置。
(3)在QuartusII中用Tools>
Programmer菜单或者工具
按钮打开如图52所示的窗口。
(4)如果显示没有硬件,则单击HardwareSetup…按钮,打开硬件设置窗口,如图所示。
(5)双击USBBlaster,然后单击Close按钮,完成硬件设置。
(6)此时已经在文件的列表中了,如果没有则单击AddFile…按钮,添加该文件,这个文件是编译器产生的数据文件,包含了FPGA的配置数据。
确认Device项列出的是EP2C35F672,选中Program/Configure选项。
(7)单击Start按钮,开始编程,编程结束后,DE2板上的发光二极管GOOD变亮。
如果QuartusII提示错误,则检查电源及连接电缆。
15.启动NiosIIIDE
可以从Window系统的开始菜单中启动NiosIIIDE,也可以从SOPCBuilder中的生成页面启动NiosIIIDE提示选择NiosIIIDE的工作空间(Workspace),NiosIIIDE将工程文件保存在一个目录中,这个目录叫做工作空间。
在本例中选择目录G:
\DE2作为NiosIIIDE的工作空间。
16.建立新工程
在NiosIIIDE中用File>
New>
Project…菜单启动工程向导,新建工程向导的对话框如图53所示,选择C/C++Application,按Next按钮进入下一步,新工程配置界面如图54所示。
我们先利用已有的模板建立一个新工程,在SelectProjectTemplate中选择CountBinary,工程名称自动变为count_binary_0,也可以改为其他的名称,注意工程名字中不能出现空格。
NiosIIIDE的任务是为NiosII软核处理器提供软件开发环境,因此必须选择一个目标硬件。
在SelectTargetHardware中单击Browse…按钮,选择SOPCBuilderSystem为G:
\DE2\nios_ii_system.ptf。
按下Next按钮为工程选择系统库,如55所示,选中Creatanewsystemlibrarynamed:
项,按Finish按钮自动生成工程,建立新工程之后的NiosIIIDE的界面如图56所示。
图53
图54
图55
图56
17.修改系统库属性
新建的工程实际上包含两个工程,即count_binary_0及count_binary_0_syslib,前面是用户工程,后面是NiosIIIDE在NiosII硬件系统上自动完成的系统库,用户最好不要去修改它。
在C/C++Project窗口中选中工程count_binary_0,按右键并在弹出的菜单中选中SystemLibraryProperties,显示如图所示的界面,在这个界面中可以修改系统库count_binary_0_syslib的属性。
取消CleanExit选项,选中SmallCLibrary选项,按OK按钮返回NiosIIIDE。
图57
18.修改代码
新工程是参照模板count_binary建立的,工程中已经有完整的代码,因此可以直接工作。
如果要在七段数码管上显示计数器的当前值,则需要对程序稍加修改。
先展开C/C++Projec窗口的工程count_binary_0,然后展开count_binary.c,如图所示,用鼠标双击count_sevenseg,定位子程序count_sevenseg()的位置,然后将count_sevenseg()改变成如代码3所示的代码,保存文件count_binary.c。
图58
代码3在七段数码管上显示计数值的子程序。
Staticviodcount_sevenseg()
{
IOWR(SEG7_LUT_8_0_BASE,0,count);
}
同样展开count_binary.h,从包含的头文件中删除文件altera_avalon_pio_regs.h,然后加入头文件io.h,最后保存文件count_binary.h。
图59
图60
19.编译并运行工程
在C/C++Project窗口中选中count_binary_0,按右键并从弹出的菜单中选择BuilderProject,NiosIIIDE开始编译工程count_binary_0。
编译完成以后,检查DE2平台与电脑的连线,并确保前面设计的硬件电路已经下载到FPGA中,且DE2平台上的SW19置于RUN位置。
在C/C++Project窗口中选中count_binary_0,按右键并从弹出的菜单中选择Runas菜单下的NiosIIHardware,NiosIIIDE先检查是否需要重新编译,如果不需要重新编译则开始在DE2平台上的NiosII处理器中运行程序。
程序运行成功时的NiosIIIDE的界面如图所示,首先在控制台窗口(Console)中出现欢迎信息,然后从0x00开始计数,并将计数值输出到控制台窗口,同时在DE2平台上的七段数码管的HEX1和HEX0上显示当前的计数值。
计数到达0xFF。
图61
图62
图63
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DE2 20 Quartus使用实例 Quartus 使用 实例