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

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA入门及QuartusII使用教程(内部资料).doc

FPGA入门及Quartus II使用教程 FPGA是英文Field?Programmable?Gate?Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable?Array?Logic)、门阵列逻辑GAL(Gate?Array?Logic)等可编程器件的基础上进一步发展的产物Application Specific Integrated Circuit )内部的所有资源,是用积木堆积起来的小房子,可以是一个欧美风情的房子,还可以是一个北京四合院…….而FPGA内部就可以说是一个个小积木,也就是内部有大量的资源提供给我们,根据我们的需求进行内部的设计。并且可以通过软件仿真,我们可以事先验证设计的正确性。…… 引脚也可以自己设置输入输出引脚并且命名。 设置当前实体为最高实体,再次进行编译 编译完成后,要分配引脚,通常分配引脚有两种方式,一种是直接在工程分配,这种方式对于引脚较少比较方便,如下图所示。 选择PIN 双击引脚分配处的to和location,就可以确定应用的FPGA引脚分配情况。 分配好引脚后,点击保存,再看原理图,每个引脚后边都有一个“小尾巴”,表示信号线的实际物理引脚分配情况。 然后再编译。最后在点击TOOL-Programmer,或者直接点击下载图标 就会出现下载对话框 点击Hardware Setup 如果你没插USB-BLASTER,打开后不会有显示,如果插上后,这里就会显示有一个硬件可以选择,右上位置选择下载方式。注意:JTAG模式和AS模式接口是不同的 选择好USB-BLASTER后,点Close,然后点Start 当前选择的是JTAG模式,因此下载程序到RAM,可以看调试结果。 至此,FPGA的原理图制作,代码编写流程及下载流程已经全部完毕。现在以一个简单的分频器来讲一下。 第一件事,如同单片机的最小系统一样,FPGA的系统需要一个时钟源作为支撑,FPGA内部有个PLL(锁相环)资源,这个PLL可以对输入频率进行倍频。因此,几乎在每个系统设计的时候,都需要对这个PLL进行设置。如下所示 选择第一个 点NEXT,往下进行选择IO栏目下的ALTPLL,给这个模块起一个名字叫PLL然后点NEXT 根据提示进行选择,选择好了后,点击进入下一个设置 在这里,把所有的勾全部去掉就可以,然后一直点下一步,一直到下面图示, 每个芯片可以设置输出的频率个数不同,当前我用的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 is port( clkin:in std_logic; clkout1:out std_logic; clkout2:out std_logic ); end test_div; architecture fenpin_arc of test_div is signal 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

文档评论(0)

rewfdgd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档