FPGA入门及QuartusII使用教程内部资料Word格式文档下载.docx
- 文档编号:16719548
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:34
- 大小:1.84MB
FPGA入门及QuartusII使用教程内部资料Word格式文档下载.docx
《FPGA入门及QuartusII使用教程内部资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《FPGA入门及QuartusII使用教程内部资料Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
9、对于复杂的设计,工程编译好了,我们可以通过Quartus软件或者其他仿真软件来对设计进行反复仿真和验证,直到满足要求。
(主要是时序仿真)。
第二章基于QuartusII的实例
一、建立工程
软件。
QuartusII首先,打开
接下来,建议一个新工程
第一行,是所建工程的路径,第二工程项目名称,第三项,是填好后,如下图
下边一直点击NEXT,直到出现以下界面
Family里边选择SratixII,Availabledevices里边选择EP2S60F672C5(具体内容根据你所使用的芯片所决定),接着点NEXT,不需要做任何修改了,一直点到Finish。
到此为止,工程已经建立完成。
需要建立一个BlockDiagram/Schematic
出现如下图。
File->
New,点击File
文件。
,建立完成,工程中出现一个点击OKBlock1.bdf
现在点“保存”是不管用的,建议随便放一个器件后点保存文件为bdf文件。
方法是在这个bdf文件空白处双击鼠标,或者右键点鼠标,点insert->
symbol
这里边的器件很多,可以再里边输入你所需要的器件,也可以直接点分类,根据分类查找你需要的器件。
点击File->
New,选择VHDLFile(根据你所使用的编程语言)
程序了。
OK后,再下边的界面就可以编写VHDL点击
当然可以根据自己掌握的语言种类进行编程。
.
语言,注意:
保存的文件名字,必须与实体名字一致,否则编译会出VHDL错。
设置当前为最高实体。
点击那个紫色的三角,进行编译.
下面就是产生模块了。
如图点击就可以
下拉栏,就会出现刚才所Project主界面。
双击该界面,再生成模块完成后,回到bdf编译文件生成的模块,左键点击就可以将其放入主原理图实体中,并且今后如果重新改变程序,必须走这个过程,先设置最高实体,然后编译,产生模块,最后要添加这样如VHDL下的过程。
放置模块的时候,通过自己的程序编译产生的模块,会在Project目录下,如图所示
特别注意:
已经做好的并且放入到原理图的模块程序如果需要改动,改动后也必须先编译,后产生模块,最后按照如下所示进行模块更新。
根据需求进行选择一下
以后每次要用的时候,都可以双击鼠标,进入project里边进行选择,进行使用。
右键点击模块,点Generate-……
引脚也可以自己设置输入输出引脚并且命名。
设置当前实体为最高实体,再次进行编译.
一种是直接在工程分通常分配引脚有两种方式,编译完成后,要分配引脚,配,这种方式对于引脚较少比较方便,如下图所示。
PIN选择
引脚分配情况。
,就可以确定应用的to和locationFPGA双击引脚分配处的
,分配好引脚后,点击保存,再看原理图,每个引脚后边都有一个“小尾巴”表示信号线的实际物理引脚分配情况。
TOOL->
Programmer然后再编译。
最后在点击,或者直接点击下载图标
就会出现下载对话框.
,打开后不会有显示,如Setup如果你没插USB-BLASTER点击Hardware
果插上后,这里就会显示有一个硬件可以选择,右上位置选择下载方式。
注意:
模式接口是不同的JTAG模式和AS
Start
,然后点Close后,点USB-BLASTER选择好
,可以看调试结果。
模式,因此下载程序到当前选择的是JTAGRAM的原理图制作,代码编写流程及下载流程已经全部完毕。
现在FPGA至此,以一个简单的分频器来讲一下。
的系统需要一个时钟源作为第一件事,如同单片机的最小系统一样,FPGA可以对输入频率进行倍频。
PLL锁相环FPGA内部有个PLL()资源,这个支撑,因此,几乎在每个系统设计的时候,都需要对这个PLL进行设置。
如下所示
选择第一个
点NEXT,往下进行选择IO栏目下的ALTPLL,给这个模块起一个名字叫PLL然后点NEXT
根据提示进行选择,选择好了后,点击进入下一个设置
一直到下面图示,然后一直点下一步,在这里,把所有的勾全部去掉就可以,
每个芯片可以设置输出的频率个数不同,当前我用的ep2s60总共有2个PLL,每个PLL可以设置6个不同的频率输出。
现在就可以一直点下一步,直到Finish就可以。
然后再Project里边将PLL放置到原理图上。
新建一个test_div的程序,程序代码如下
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitytest_divis
port(
clkin:
instd_logic;
clkout1:
outstd_logic;
clkout2:
outstd_logic
);
endtest_div;
architecturefenpin_arcoftest_divis
signalcount1:
integerrange0to7;
--计数寄存器16分频
signalclkbuff1:
std_logic;
分频8计数寄存器--signalcount2:
integerrange0to3;
signalclkbuff2:
begin
process(clkin,count1,count2)
begin
ifrising_edge(clkin)then--计数、分频1
if(count1>
=7)then
count1<
=0;
clkbuff1<
=notclkbuff1;
else
=count1+1;
clkout1<
=clkbuff1;
endif;
ifrising_edge(clkin)then--计数、分频2
if(count2>
=3)then
count2<
clkbuff2<
=notclkbuff2;
=count2+1;
clkout2<
=clkbuff2;
endprocess;
endfenpin_arc;
保存程序,设置当前为最高实体,进行编译,编译后产生模块,最终也可以放在原理图上了。
用鼠标将所需要连接的线连接起来,然后设置当前为最高实体,进行编译,分配引脚,编译,下载就可以完成了。
同时,除了下载进FPGA中进行调试外,我们还可以提前利用Quartus进行时序仿真。
如上边这个程序,生成一个Block放置在原理图上,然后再加上一个,连接起来后,以下图示:
PLL.
点击Processing->
SimulationDebug->
CurrentVectorInputs
Inset->
InsetNodeorBusname在处点右键,选择
,进入点击NodeFinder
,当然也可all处选择可以选择引脚,通常我习惯于显示所有引脚,在Filter,然后再点击加入以选择一些你需要的引脚,其他的引脚不显示,然后点击List符号,如图所示
,一直回到仿真页面,鼠标左键单击输入信号,给输入信号加所需点击OK,是时钟信号,直接点击时钟符号,就可以进行设置信号,如clkin
可以选择仿真多长时间。
EndTime菜单下的Edit设置好输入后,可以点.
,便开始进行时全部设置好后,点保存,起好名字,然后点Startsimulation序仿真。
仿真结束后,可以观察信号时序。
第三章MATLAB、DSPBUILDER、QUARTUS联合仿真
首先我们了解一个背景,现在在DSP算法软件中最牛的毋庸置疑的就是Matlab了。
N多人在用它搭建模型。
我们可以把Matlab分为matlab和simulink两部分。
Matlab更多的是对数组进行一系列的计算,而这些计算式静态的,纯粹算法上的。
而simulink是使用模块化的方式来搭建一个平台,这个模型才是动态的。
当我们用matlab做成一个算法的时候,这个算法在实际应用中有可能可以实现,当然也有可能实现不了,更多的是一种理论上的公式。
只有当我们用simulink来搭建出一个模型的时候,我们可以知道,它是可以被实现出来的,无论是软件,还是硬件方式。
DSPbuilder是什么?
通过前边的学习,我们知道,FPGA内部就如同一个个小积木。
DSPbuilder就是ALTERA公司工程师,专门用这些小积木已经搭建好了各式各样的小门、小窗、房梁……..而这些一个个做好的小模块,都放到了DSP
BUILDER里边。
好了,这样,我们就可以在MATLAB的simulink环境下,用DSPBUILDER的内部小模块,开始堆积我们想要的那栋房子。
这一下就省去了我们的好多工作,因为现在很多模块资源都是现成的,不需要我们用VHDL或者是Verilog语言去做这些小模块。
当在simulink环境下模拟搭建好了后,我们通过DSP工具,就可以直接转换到QuartusII环境下,进行真正的搭建过程了。
当然了,这个过程QuartusII可以完全替代我们去完成。
同样,有一些功能模块,是DSPbuilder库里边所不具备的,这个时候还可以通过使用QuartusII进行语言编程,生成一个功能模块,并且加载到matlab的simulink库里边进行仿真应用。
利用Matlab软件中的Simulink模块进行通信系统的仿真,并通过DSP
Builder软件将系统级和RTL级(寄存器传输级)两个设计领域的设计工具连接起来,把Simulink的设计文件(后缀为.mdl文件)转成相应的硬件描述语言VHDL设计文件(后缀为.vhd文件),以及用于控制综合与编译的TCL脚本,之后即可通过FPGA/CPLD开发工具QuartusII来完成相应的处理。
DSPBuilder依赖于数学分析工具Matlab/Simulink,以Simulink的Blockset形式出现,可以在Simulink中进行图形化设计和仿真。
在安装DSPBuilder软件后,Matlab软件的Simulink库中会自动添加如下两个库:
AlteraDSPBuilder
Blockset和AlteraDSPBuilderAdvancedBlockset。
后续的仿真及编译工作主要基于AlteraDSPBuilderBlockset库中的各个模块组成的系统。
下面以MatlabR2009b(Matalb7.9.0)版本为例,与Altera公司QuartusII
9.1/DSPBuilderv9.1软件对应使用,并以BFSK(二进制频移键控)的调制系统为例,详细介绍Simulink的使用步骤。
1.打开Matlab环境
Matlab环境界面如图所示,Matlab的主窗口界面被分割成三个窗口:
命令窗口(CommandWindow)、工作区(Workspace)和命令历史记录(Command
History)。
在命令窗口中可以键入Matlab命令,同时获得Matlab对命令的响应信息、出错警告提示等。
2.建立工作库在建立一个新的设计模型前,最好先建立一个新的文件夹,作为工作目录,Set”中的“当前的并把Matlabwork目录切换到新建的文件夹下。
可以点击“FileF:
\Program图所示“,目加选”项,添该工作录路径如Path”然后保存。
,并将其移到目录顶部“Movetotop”Files\MATLAB\R2009b\work,选择该目”在下一次打开Matlab时,可以通过改变主界面中的“CurrentFolder录路径,改变当前Matlab工作目录。
库Simulink、打开3.
的库文件,如Simulink(Simulink)可以打开单击Matlab界面上的快捷键图所示。
,在库浏览器的左侧是Browser)的库浏览器(Library上图即为SimulinkLibrary中的组件、子模块列表。
列表,右侧是选中的SimulinkLibrary的基本模型库。
当安”库是Simulink其中左侧Library列表中的“Simulink的库浏览器中可以看到多出的两个库文件:
在Simulink装完DSPBuilderv9.1后,。
在以”AlteraDSPBuilderAdvancedBlockset”和“AlteraDSPBuilderBlockset“库中的组件、”“AlteraDSPBuilderBlocksetDSPBuilder下的应用中,主要是使用Simulink子模型来完成各项设计,再使用完成模型的仿真验证。
Simulink的模型文件4.
后缀为(库浏览器后,需要新建一个Simulink的模型文件在打开Simulink”菜单,在出现的菜单项中选的库浏览器中选择“Filemdl),如图,在Simulink”即可,或者通过直接单,在弹出的子菜单项中选择新建模型“Model”择“New
打开一个空白文件。
击界面上的.
5、添加正弦产生模块”条,Simulink如下图,点击Simulink库浏览器左侧的库内树形列表中的“(Block)使其库器件展开,这时会出现一长串树形列表,对基本模型库的子模块”“SineWave中库浏览器右侧的选”“进行了分组。
再次点击其中的Sources项,
”模块到新模型窗口中。
SineWave组件,按住鼠标左键并拖动“
双击模块下方的名调制的一个输入载波,为了便于确认,该模块即为BFSK。
”SineWave”,将其修改为“fc1字“”的对话框,这里包括了SourceBlockParameters:
fc1双击该模块可以得到“其中幅度修改参数设置如上图,该模块功能的介绍,以及各个相关参数的设定。
位;
频率Bits)of为11(Amplitude)为2^10-1,表示输入信号位宽(Number
表示产生余弦波;
由于263.158kHz;
初始相位为pi/2(Frequency(rad/sec))设定为”OK1/2000000设为。
设置完成后点击“,采样频率为2MHz采样时间(Sampletime)即可。
调制的另一个输入载波,频率为可以利用同样的方法放置并设置BFSK277.778kHz,其余参数相同即可。
6、添加输入端口模块DSP库浏览器左侧的库内树形列表中的“如下图,点击SimulinkAltera
”项并展开,选中库浏览器右侧的IO&
Bus”条,选择其中的“BuilderBlockset”模块,同样按住鼠标左键将其拖动到模型窗口中。
Input“
将该输入端口名称改为“SinIn1”,双击模块,得到如下图的参数设置对话框,设置如下,总线类型(BusType)选择有符号整数(SignedInteger),输出位宽位。
11设定为(numberofbits).
下面把这两个模块连接起来,将鼠标的指针移动到模块的输入或输出端口上,鼠标指针就会变成十字形“+”,这时按住鼠标左键,拖动鼠标就可以连线了。
或者先按住“Ctrl”键,然后用鼠标单击第一个模块fc1,再单击第二个模块SinIn1,则会自动产生连线,连线后如图所示。
7、完成BFSK调制模型
可以逐步添加各个功能模调制系统的原理框图,BFSK依照按照上述方法,
块以及输入、输出端口,最终完成的BFSK调制模型文件如下图所示。
上图中用到了波形观察模块示波器“Scope”,该模块属于Simulink库下的Sinks库。
双击该模块,打开的是一个示波器窗口,其中只有一个信号的波形观察窗口,若希望可以同时观察多路信号,可以点击Scope模块窗口上侧工具栏的第二个工具按钮“Parameters”,参数设置按钮,打开Scope参数设置对话框。
在Scope参数设置对话框中有“Gerneral”(通用)和“Datahistory”(数据历史)两个选项页。
在“Gerneral”选项页中将“Numberofaxes”参数改为2,如图所示。
点击“OK”按钮确认后,可以看到Scope窗口增加为两个波形观察窗,每个观察窗都可以分别观察信号波形,而且相对独立。
频谱观察模块“SpectrumScope”属于“SignalProcessingBlockset”下的“Signal
ProcessingSinks”库,可以用来观察输出BFSK调制信号的频谱波形情况。
8、加入时钟模块
展开“AlteraDSPBuilderBlockset”库下的“AltLab”,选择“Clock”模块添加到模型文件中,并双击模块,设置参数如下图所示。
9、设计文件存盘
完成系统中各个模块的设置与连接后,在进行仿真验证和编译(Signal
Compiler)之前,先对设计进行存盘操作。
点击新建模型窗口的“File”菜单,在
”项,取名并保存,等同于直接点击窗口界面的按钮。
Save下拉菜单中选择“
在上述例子中,对新建模型取名为“fskmodu”,模型文件为fskmodu.mdl。
在保存完毕后,新建模型窗口的标题栏就会显示模型名称,如下图所示。
对模型文件取名时,尽量用英文字母开头,不使用空格,不用中文,文件名不要过长。
10、Simulink模型仿真
在对模型取名存盘后,就可以对文件进行编译,并把mdl文件转换为VHDL文件。
不过现在模型的正确性还是未知的,需要进行仿真验证。
Matlab的Simulink环境具有强大的图形化仿真验证功能。
用DSPBuilder模块设计好一个新的模型后,可以直接在Simulink中进行算法级、系统级仿真验证。
对一个模型文件进行仿真,需要施加合适的激励、一定的仿真步进和仿真周期,并添加合适的观察点和观察方式。
在fskmodu模型窗口中,点击“Simulation”菜单,在下拉菜单中选择“ConfigurationParameters...”菜单项,将弹出fskmodu模型的仿真参数设置对话框“ConfigurationParameters:
fskmodu/Configuration
(Active)”。
该对话框中的“Solver”选项包括了仿真基本的时间设置、步进间隔、方式设置及输出选项设置。
具体各项设置如上图所示,最后,点击“OK”按钮确认。
、启动仿真11.
在fskmodu模型窗口中选择“Simulation”菜单,再选“Start”项开始仿真,
或者直接点击按钮开始。
待仿真结束,双击Scope模块,打开示波器观察窗。
下图给出了仿真结果,显示的是系统生成的BFSK调制信号的基带波形及时域波形图,在下面的放大波形图中,可以清晰的看到在不同的基带信号值“0”和“1”下,BFSK信号具有不同的频率,此时生成的是相位不连续的BFSK信号。
在Scope观察窗中,可以使用工具栏中的按钮来放大或缩小波形,或者用鼠标左键选择波形并放大,也可以在波形上单击鼠标右键使用“Autoscale”,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 入门 QuartusII 使用 教程 内部 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)