好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

FPGA入门及QuartusII使用教程内部资料..doc

15页
  • 卖家[上传人]:M****1
  • 文档编号:487931166
  • 上传时间:2023-02-17
  • 文档格式:DOC
  • 文档大小:74.50KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • FPGA入门及Quartus II使用教程FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)等可编程器件的基础上上进一步发展的产物可以这样讲,ASIC(Application Specific Integrated Circuit )部的所有资源,是用积木堆积起来的小房子,可以是一个欧美风情的房子,还可以是一个四合院…….而FPGA部就可以说是一个个小积木,也就是部有大量的资源提供给我们,根据我们的需求进行部的设计并且可以通过软件仿真,我们可以事先验证设计的正确性第一章 FPGA的基本开发流程下面我们基于 Altera 公司的 QuantusII 软件来说明FPGA 的开发流程下图是一个典型的基于Quartus II的FPGA开发整体流程框图1、 建立工程师每个开发过程的开始,Quartus II以工程为单位对设计过程进行管理2、 建立顶层图可以这样理解,顶层图是一个容器,将整个工程的各个模块包容在里边,编译的时候就将这些模块整合在一起。

      也可以理解为它是一个大元件,比如一个单片机,部包含各个模块,编译的时候就是生成一个这样的大元件3、 采用ALTERA公司提供的LPM功能模块Quartus软件环境包含了大量的常用功能模块,比如计数器、累加器、比较器等等4、 自己建立模块由于有些设计中现有的模块功能不能满足具体设计的要求,那就只能自己设计使用硬件描述语言,当然也可以用原理图的输入方法,可以独立的把它们当成一个工程来设计,并且生成一个模块符号(Symbol),类似于那些LPM功能模块这里可以理解为,如果我们需求的滤波器,没有现成的合适的,那我们可以通过LC自己来搭建一个滤波器5、 将顶层图的各个功能模块连线起来这个过程类似电路图设计,把各个芯片连起来,组成电路系统6、 系统的功能原理图至此已经基本出炉了,下一步就是选择芯片字载体,分配引脚,设置编译选项等等7、 编译这个过程类似软件开发里德编译,但是实际上这个过程比软件的编译复杂的多,因为它最终要实现硬件里边的物理结构,包含了优化逻辑的组合,综合逻辑以及布线等步骤8、 编译后会生成2个文件,一个是*.sof文件,一个是*.pof文件,前者可以通过JTAG方式下载到FPGA部,可以进行调试,但断电后数据丢失;后者通过AS或者PS方式下载到FPGA的配置芯片里边(EEPROM或者FLASH),重新上电后FPGA会通过配置将数据读出。

      9、 对于复杂的设计,工程编译好了,我们可以通过Quartus软件或者其他仿真软件来对设计进行反复仿真和验证,直到满足要求主要是时序仿真)第二章 基于Quartus II的实例一、建立工程 首先,打开Quartus II软件接下来,建议一个新工程第一行,是所建工程的路径,第二工程项目名称,第三项,是填好后,如下图下边一直点击NE*T,直到出现以下界面Family里边选择Srati* II,Available devices里边选择EP2S60F672C5(具体容根据你所使用的芯片所决定),接着点NE*T,不需要做任何修改了,一直点到Finish到此为止,工程已经建立完成需要建立一个Block Diagram/Schematic File,点击File->New出现如下图点击OK,建立完成,工程中出现一个Block1.bdf文件现在点“保存”是不管用的,建议随便放一个器件后点保存文件为bdf文件方法是在这个bdf文件空白处双击鼠标,或者右键点鼠标,点insert->symbol这里边的器件很多,可以再里边输入你所需要的器件,也可以直接点分类,根据分类查找你需要的器件点击File->New,选择VHDL File(根据你所使用的编程语言)点击OK后,再下边的界面就可以编写VHDL程序了。

      当然可以根据自己掌握的语言种类进行编程VHDL语言,注意:保存的文件名字,必须与实体名字一致,否则编译会出错设置当前为最高实体点击那个紫色的三角,进行编译下面就是产生模块了如图点击就可以生成模块完成后,回到bdf主界面双击该界面,再Project下拉栏,就会出现刚才所编译文件生成的模块,左键点击就可以将其放入主原理图实体中,并且今后如果重新改变VHDL程序,必须走这个过程,先设置最高实体,然后编译,产生模块,最后要添加这样如下的过程放置模块的时候,通过自己的程序编译产生的模块,会在Project目录下,如图所示特别注意:已经做好的并且放入到原理图的模块程序如果需要改动,改动后也必须先编译,后产生模块,最后按照如下所示进行模块更新根据需求进行选择一下以后每次要用的时候,都可以双击鼠标,进入project里边进行选择,进行使用右键点击模块,点Generate-……引脚也可以自己设置输入输出引脚并且命名设置当前实体为最高实体,再次进行编译编译完成后,要分配引脚,通常分配引脚有两种方式,一种是直接在工程分配,这种方式对于引脚较少比较方便,如下图所示选择PIN双击引脚分配处的to和location,就可以确定应用的FPGA引脚分配情况。

      分配好引脚后,点击保存,再看原理图,每个引脚后边都有一个“小尾巴”,表示信号线的实际物理引脚分配情况然后再编译最后在点击TOOL->Programmer,或者直接点击下载图标就会出现下载对话框点击Hardware Setup 如果你没插USB-BLASTER,打开后不会有显示,如果插上后,这里就会显示有一个硬件可以选择,右上位置选择下载方式注意:JTAG模式和AS模式接口是不同的选择好USB-BLASTER后,点Close,然后点Start当前选择的是JTAG模式,因此下载程序到RAM,可以看调试结果至此,FPGA的原理图制作,代码编写流程及下载流程已经全部完毕现在以一个简单的分频器来讲一下第一件事,如同单片机的最小系统一样,FPGA的系统需要一个时钟源作为支撑,FPGA部有个PLL(锁相环)资源,这个PLL可以对输入频率进行倍频因此,几乎在每个系统设计的时候,都需要对这个PLL进行设置如下所示选择第一个点NE*T,往下进行选择IO栏目下的ALTPLL,给这个模块起一个名字叫PLL然后点NE*T根据提示进行选择,选择好了后,点击进入下一个设置在这里,把所有的勾全部去掉就可以,然后一直点下一步,一直到下面图示,每个芯片可以设置输出的频率个数不同,当前我用的ep2s60总共有2个PLL,每个PLL可以设置6个不同的频率输出。

      现在就可以一直点下一步,直到Finish就可以然后再Project里边将PLL放置到原理图上新建一个test_div的程序,程序代码如下library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity test_div isport( clkin:in std_logic; clkout1:out std_logic; clkout2:out std_logic );end test_div;architecture fenpin_arc of test_div issignal count1:integer range 0 to 7; --计数寄存器16分频signal clkbuff1:std_logic;signal count2:integer range 0 to 3; --计数寄存器8分频signal clkbuff2:std_logic;begin process(clkin,count1,count2) begin if rising_edge(clkin) then --计数、分频1 if (count1 >= 7) then count1 <= 0; clkbuff1 <= not clkbuff1; else count1 <= count1 + 1; clkout1 <= clkbuff1; end if; end if; if rising_edge(clkin) then --计数、分频2 if (count2 >= 3) then count2 <= 0; clkbuff2 <= not clkbuff2; else count2 <= count2 + 1; clkout2 <= clkbuff2; end if; end if; end process;end fenpin_arc;保存程序,设置当前为最高实体,进行编译,编译后产生模块,最终也可以放在原理图上了。

      用鼠标将所需要连接的线连接起来,然后设置当前为最高实体,进行编译,分配引脚,编译,下载就可以完成了同时,除了下载进FPGA中进行调试外,我们还可以提前利用Quartus进行时序仿真如上边这个程序,生成一个Block放置在原理图上,然后再加上一个PLL,连接起来后,以下图示:点击Processing->Simulation Debug->Current Vector Inputs在name处点右键,选择Inset->Inset Node or Bus点击Node Finder,进入可以选择引脚,通常我习惯于显示所有引脚,在Filter处选择all,当然也可以选择一些你需要的引脚,其他的引脚不显示,然后点击List,然后再点击加入符号,如图所示点击OK,一直回到仿真页面,鼠标左键单击输入信号,给输入信号加所需信号,如clkin,是时钟信号,直接点击时钟符号,就可以进行设置设置好输入后,可以点Edit菜单下的End Time可以选择仿真多长时间全部设置好后,点保存,起好名字,然后点Start simulation,便开始进行时序仿真仿真结束后,可以观察信号时序第三章 MATLAB、DSP BUILDER、QUARTUS联合仿真首先我们了解一个背景,现在在DSP算法软件中最牛的毋庸置疑的就是Matlab了。

      N多人在用它搭建模型我们可以把Matlab分为matlab和simulink两部分Matlab更多的是对数组进行一系列的计算,而这些计算式静态的,纯粹算法上的而simulink是使用模块化的方式来搭建一个平台,这个模型才是动态的当我们用matlab做成一个算法的时候,这个算法在实际应用中有可能可以实现,当然也有可能实现不了,更多的是一种理论上的公式只有当我们用simulink来搭建出一个模型的时候,我们可以知道,它是可以被实现出来的,无论是软件,还是硬件方式DSP builder是什么?通过前边的学习,我们知道,FPGA部就如同一个个小积木DSP builder就是ALTERA公司工程师,专门用这些小积木已经搭建好了各式各。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.