【从零开始走进FPGA】美好开始——我流啊流啊流_第1页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【从零开始走进fpga】美好开始我流啊流啊流 根据基于windows的语言(c、c+、c)等编程语言的初学入门教程,第一个历程应当是“hello world!”的例程。但因为硬件上的驱动难易程度,此例程将在在后续章程中推出。学习开发板的第一个例程:流水灯,一切美妙的开头。 本章将会在设计代码的同时,讲解 ii 软件的用法,后续章节中只讲软件的思想,以及解决计划,不再做过多的累赘描述。一、step by step 建立第一个工程(1)建立第一个工程,file-new-new quartus ii project,如下图所示,ok。(2)next,如下图所示,挑选工程名目(不能有空格,中文路径),

2、同时输入工程名与顶层文件名。(3)若有现成的代码,可以挺直挑选添加入工程;否则,挺直next,进入下一步,如下图所示:(4)按照自己的硬件设施,挑选相应的设备目标器件。(5)next,finish。二、工程代码设计1. water_led_design工程文件结构:如上图所示,工程分为三个模块,分离为:(1)顶层模块 : 例化各个模块,工程的最高级别文件。(2)分频模块 : 通过分频得到固定的频率(10hz)。(3)显示模块: 随固定频率,来操作led灯。2. 代码设计(1)warter_led.v模块设计a) new-file,新建verilog文件,保存于新建在工程名目下的src文件夹中(

3、只是为了工程文件结构组织的清楚,更擅长管理)。如下图所示:b) 输入代码,定义输入输出接口,如下所示:color=module water_ledcolor= (color= input clk, /global clock 50mhzcolor= input rst_n, /global clock resetcolor= output 5:0 led_data /user led interfacecolor= );color= endmodule(2)clk_design.v模块设计因为系统输入时钟是50mhz,若以50mhz的速度变换led等,人眼压根辨别不出来。因此利用分频原理,来对

4、50mhz举行分频,而适应人眼。本模块将50mhz分频至10hz,人眼辨别的极限是25hz,因此10hz能感觉得到(可以随机修改)。led_en的频率计算公式:clk_led_en = 50_000000/(49_000000+1) = 10hz,详细代码如下:color=module clk_designcolor= (color= input clk,color= input rst_n,color= output led_encolor= );color= reg 22:0 cnt; /49_99999,100mscolor= parameter led_cnt = 49_999999;

5、color= always(posedge clk or negedge rst_n)color= begincolor= if(!rst_n)cntelse if(cntcntcolor= elsecntcolor= endcolor= assign led_en = (cnt = 23'd49_99999) ? 1'b1 : 1'b0;color= endmodule模块没有分频产生10hz的频率,而是生成了10hz的使能时钟,目的是防止时钟满天飞,使得 内部布局布线紊乱,影响全局功能。虽然如此容易的工程可以不用考虑,但是“习惯了严谨便成为了一种风范”,因此用法使能

6、时钟,来对详细的时序举行操作。详细使能时钟、门控时钟的异同、优劣将会在后续章节中解说。(3)led_display.v模块设计按照输入的led_en使能信号,来操作led灯的效果,此处采纳最容易的算法递增进位。代码如下所示:color=module led_displaycolor= (color= input clk,color= input rst_n,color= input led_en,color= output reg 5:0 led_datacolor= );color= always(posedge clk or negedge rst_n)color= begincolor=

7、 if(!rst_n)led_datacolor= else if(led_en)led_datacolor= elseled_datacolor= endcolor= endmodulecolor= (4)从新修改water_led_design顶层文件,添加相关例化模块。最后结果如下:color= module water_led_designcolor= (color= input clk, /global clock 50mhzcolor= input rst_n, /global clock resetcolor= output 5:0 led_data /user led inte

8、rfacecolor= );color= /-color= /generater clock 10hzcolor= wire led_en;color= clk_design clk_design_instcolor= (color= .clk (clk),color= .rst_n (rst_n),color= .led_en (led_en)color= );color= /-color= /set the display of ledcolor= led_display led_display_instcolor= (color= .clk (clk),color= .rst_n (rs

9、t_n),color= .led_en (led_en),color= .led_data (led_data)color= );color= endmodule3. 代码编译(1)通过processing-start compilation,或者工具栏的图标如下:(2)编译结果如下,可见相关信息:(3)警告的分析及解决:a) warming(4)如上图所示,详细说明如下:i. 没有配置ii. 没有把unused的pin设置为三态。在assignment-device-device and pin opitions-unused pins,设置如下图所示:iii. 没有电容配置iv. 可以忽视

10、b) critical warming(5)如上图所示,详细说明如下:i. 引脚没有分配ioii. 没有sdc时序约束文件iii. 没有sdc约束文件iv. 时序没有达到要求v. 时序没有达到要求浮现这些警告的缘由是由于quartus ii 10.1以后的版本软件,不再自带timequest timing analyzer,惟独classic timing analyzer,虽然不加sdc时序约束对于普通状况也不一定会有错,但软件设计的必定会浮现这样的警告。关于timingquest sdc,会在后续章节中阐述,此处不做详细解释。关于quartus ii 警告信息分析以及零警告的处理,可以右击

11、警告查看help,altera会告知您相应的解决计划;此外,bingo已上传chinaaet“quartus ii 警告分析.pdf”,下载地址为:初学折有不到之处可以查阅该pdf,记住,永久不要轻易忽视警告。三、modelsim-1. 为什么要仿真首先研究两个问题:(1)仿真?是真的吗?仿真,只是为了模拟真切现象,测试代码的行为以准时序的正确性;固然,仿真永久是仿照的,不行能是肯定精确的,只能在一定程度上模拟真切时序,让我们的设计变得更牢靠。仿真对于设计者,只是一个软件测试的平台,而不是实际硬件设施的测试结果。(2)一定要仿真吗?未必!假如你有足够的掌握时序的精确性,脑子里能够完成囫囵电路的

12、时序规律工作流程,仿真就不是那个必需的了;对于已经成型的模块,保证时序精确的状况下,何必在徒劳的仿真呢?按常理,是现有quartus ii软件,再有仿真软件的吧,testbench只是测试程序,链接两者之间的桥梁。回想,在n年前的老工程师,用block中用与非门与74系列芯片设计的原理图,要仿真似乎变得很难?那些老前辈们是通过实物的测试,不断的修正、充实,最后才得到牢靠的电路。因此,仿真 不是必需的。bingo就常常不仿真!不是说懒,是由于脑子中的电路时序规律,本能性的能够保证电路的精确性,或者说出了问题能够自行改正,不会失去了方向。所谓代码在电脑上,电路在脑子中,每一句行为级语言,都加增添一

13、个电路。固然,并非每一个人都可以这样子的。对于初学者而言,仿真是十分重要的一个过程。缘由是由于在初学者脑子中,还未展现固定规律实现的时序工作流程,换句话说,阅历不够丰盛吧。固然在时序很复杂而且浩大时,时序仿真是必需的,由于在这种状况下,大脑的模拟大概无法跟计算机的计算速度比拟了。前文安装quartus ii 软件章节有提到过,quartus ii 9.1以前版本,软件自带仿真器,而9.1以后的版本,需要第三方软件的支持。第三放仿真软件有无数,而用的最多的,当然是modelsim-altera。本章节中quartuus ii 11.0与modelsim-altera协同工作,仿真测试本例程的代码

14、的时序。希翼通过节的分析,对时序规律上有一个更深刻的熟悉。2. 仿真必备的学问altera_modelsim仿真资料:四、配置fpga1. 配置综合配置引脚容易的说就是通过软件的设置,将fpga内部规律信号映射到io上,详细有下面几种办法:(1)在assignments-pin planner中对应io手动输入io引脚(2)quartus ii tcl console 手动输入,输入的格式为:“set_location_assignment pin_28 -to clk”(3)tcl scripts,通过调入tcl 文件来举行映射(4)在assignments-import assignmen

15、ts,通过调入(2)格式的文件来举行映射。后面两种办法详细步骤可见网友“小时不识月”的网页教程:配置好查看quartus ii pin planner,如下图所示:配置完引脚在举行综合,就少了上述提示没有举行引脚配置的2个警告。注重1:对于quartus ii 中引脚配置的办法,若用最原始的第一种gui手动输入配置,需要第一次编译后让软件在pin planner生成io,然后再gui下手动配置;若用其他三种办法,可以在第一次编译以前,用指令输入配置信息,在quartus ii 编译后,自动识别映射信息,达到同样的效果。注重2:对于系统及的fpga设计,因为工程之大,引脚之多,普通编译综合需要耗

16、费很大的时光,因此普通采纳不采纳第一种办法,而且在第一次编译以前事先导入映射信息。2. 目标板下载模式总而言之,quartus ii 软件只是个gui的 用户终端,用来设计代码,综合fpga规律电路,终于的目的,是通过 bluster、并口或者其他途径下载到目标板。详细有以下几种:(1)配置fpgajtag mode所谓配置fpga就是将sof文件电路配置fpga的sram(fpga是基于sram格式的),在不掉电的状况下举行现场配置,验证。此方式是通过jtag接口下载的。(2)烧录epcsactive serial programming所谓烧录epcs是生成的代码信息烧录到存储芯片epcs

17、中,通过配置信号或者重新上电,配置fpga sram;因为epcs flash结构,因此epcs中的掉电不走失(类似于)。烧录epcs有两种办法,如下a) 通过asp接口下载pof文件b) 通过jtag接口下载jic/jam文件,jic/jam文件由quartus ii 软件对sof文件举行转换后得到。(3)passive serial并口下载(4)in socket programming下载以上两种模式,因为应用不是很广泛,在此不做过多阐述。综上解释,在成本敏感,或者电路板空间苛刻的状况下,彻低可以舍去asp接口,而用jtag来替换。考虑到altera设计了两种接口的缘由,是给用户更大的挑

18、选性,特别场合下,可以只存在asp接口,只举行一次烧录,而不用jtag接口举行测试。3. jtag的下载(1)在工具栏打开或者菜单栏tool打开programming(2)若没找到hardware,在hardware setting中找到usb bluster。(3)挑选jtag mode(4)若没有自动加载sof文件,点击add file导入该工程的sof文件(5)最后点击start,等待下载完毕,如下图所示:4. epcs的下载(1)在asp模式下a) mode切换为active serial programming模式b) change file为pof文件c) 点击start,等待下载完毕。由于flash速度比sram慢,因此下载相对于flash会较慢。至此,可见目标板上的流水灯已递增的形式循环点亮。(2)在jtag模式下a) 用quartus ii 自动生成的sof文件,通过软件转换为jic文件,步骤如下:i. 打开file-convert programming file。ii. 在programming file

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论