FPGA入门教程-Spartan-3A.ppt

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

FPGA入门教程 这里要注意,我们的实验板是Spartan3AN-XC3S200AN-FTG256,以前我们并没有把程序烧进板子里,所以可以乱选,但这次一定要根据这个图选。 一直装不Modelsim或者装上了又用不了的同学,如果你的ISE版本比较高的话,展开这栏选择Isim,是ISE自带的仿真工具,这个也可以的。 如图右键点击xc3s500e-4fg320,选择New Source。 选择VHDL Module,右侧输入文件名(文件名不能由数字开头),点Next进入下一步。 本次实验是点亮实验板上的LED灯,我们这里可以用一个std_logic_vector 来表示led的输出端口。实验板上有8个LED灯,所以位宽为8。 当你想点亮一个LED灯,只需给该led灯赋值‘1’高电平而其他位为‘0’; 例如点亮第一个led灯,则:led = ; 这样的可以了,方法有很多种, 仅供示范。 由于我们做的实验是流水灯,灯的闪烁是流动的,所以led的状态变换应该由时钟 Clk来决定,而Spartan3E的时钟频率为50Mhz,所以我们应该适当的对时钟分频, 才能看得清楚led的流动。 写完led的代码后点击左边的Synthesize – XST,进行对代码的综合。 双击Design Summary/Reports 可以看到各种报告。 例如在红框内我们可以看到我们设计的流水灯用了多少个Flip Flops(触发器),多少个 LUT(查找表)等。 综合完电路后,如图右键点击工程New Source。 选择Implementation Constraints File,命名后点击NEXT然后Finish。 UCF文件就生成好了,如图。 提醒一下还是找不到UCF文件的人,请注意你们选的是不是红色框框里Implementation 选择图中选的Simulation是用来仿真的,平时想Modelsim上观察波形的时候才点这里。 什么是UCF? UCF全称为User Constraints File,即用户约束文件。 ISE中有多种用户约束,如管脚位置约束,区域约 束,时序约束以及电平约束。 我们这个实验只需要用到管脚位置约束。 那什么又是管脚位置约束呢? 我们写的代码中有各种端口。 你在Port声明里有时钟CLK,有复位RST,有流水灯 输出LED,由于我们要把程序烧进板子里,那么我 们就要通过UCF文件告诉板子,我这个CLK对应你板 子上的哪个管脚。 这个是实验板的芯片,可以看到有很多I/O口,即可编程输入/输出口单元(IOB)。是芯 片与外界电路的接口部分,提供输入缓冲,输出驱动,接口电平转换等功能。为了便于 管理和适应各种电气标准,图中我们可以看到IO Bank被分成4组,不同Bank的接口标准 由其接口电压Vcco决定,一个Bank只有一种Vcco。 这是FPGA芯片内部的结构,我们可以看到IOB与芯片内的CLB,BRAM相连。 我们实验是点亮LED灯,我们要点亮的 第一个LED灯相对应的ucf的代码是 NET LED0 LOC = M14 ; 对LOC = “M14”,说明我们的第一个LED灯对应的管脚是M14管脚。其实我们也可以LOC=“J13” 或者”K14”,但是我们的实验板上已经把M14这个管脚连接到对应实验板上的第一个LED灯了。所以我们应该通过编写ucf告诉综合器,我的端(PORT)里的输出LED实际上是对应着你芯片的M14管脚。 从上图中我们可以看到M14管脚连线到A2_IO1这个地方。A2_IO1的线最后会连接到左图蓝色方框 位置。说明了M14管脚连接的是第一个LED灯。 原理图请在WEBCC里下载 有的人会疑惑为什么 LED0 = ‘1’; 而不是LED0 = ‘0’; 的时候灯才会亮。 左图是LED的原理图。 图中我们可以看到,当LED1来了一个高 电平‘1’的时候,二极管被导通,当 是低电平的时候,左边和右边接地都为 0,没有电流通过,所以LED不会被点亮。 在编辑UCF文件里输入如图的代码。 UCF文件的语法格式为 NET “端口名(必须与vhd文件里的端口名大小写一致)” LOC = “location” 例如NET “clk” LOC = “P9”; 由于我的vhd代码中时钟是clk小写,所以这里必须也是小写。我的LED是大写,所以也必 须大写,板子上有16个led灯,第一个灯用0代表,以此类推。 约束对象的名字大小写敏感,而NET,LOC这些关键字大小写不敏感。 LOC = “P9”的意思是把clk信号分配到FPGA板子上的P9管脚上,而Spartan3A板子 上P9管脚就是40Mhz的时钟晶振。输入完之后点击保存。 NET LED0 LOC = M14 ; NET LED

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档