- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)