原创 【博客大赛】Nexys3学习手记5:流水灯在线运行

2013-8-16 11:26 2550 14 22 分类: FPGA/CPLD 文集: Nexys3学习手记

Nexys3学习手记5:流水灯在线运行

         在进行第一个工程实例前,顺便提一下设计工具相关资源的获取。从特权同学接触的几家FPGA开发工具来看,Xilinx在这方面做得应该算是最人性化的了,其设计资源可谓唾手可得。如图1所示,当我们开启ISE软件后,主窗口便会显示这样一个带有介绍和引导链接的页面。这里我们主要提一下它的Documentation。

001.jpg

图1 ISE设计资源引导界面

         点开Documentation,如图2所示,其实是直接打开了Xilinx的一个客户端小工具Documentation Navigator(简称DocNav)的下载页面。这是一款不错的Xilinx设计文档在线浏览工具,非常推荐各位下载并安装。

002.jpg

图2 Documentation页面

         如图3所示,打开DocNav软件的首页,可以看到各类开发相关的归类文档,这个小工具让Xilinx的各类文档一目了然,极大的方便了设计者对文档资源的索取和阅读。这么大的一个文档资源库,恐怕花个一年半载的都未必能够通读一遍,实际上压根个也没有这个必要。一般来说,建议设计者对这些文档的基本用处有所了解即可,而在遇到一些设计小问题的时候脑子里能够灵光一现,想起来大概哪个文档里会有解决问题的办法,而后再过来翻看也就足够了。

003.jpg

图3 DocNav首页

         再说每个软件都有Help,ISE中点开菜单栏的HelpàHelp Topics…,便如图4所示。记得特权同学大三那年一个被认为牛的不行的留过洋的微波课老师第一次和我们提Project,还让我们用 Matlab画smith圆图,那时对专业英文一知半解的我们才发现原来Help里面要啥有啥,真可谓大百科全书。所以捏,同学们都要好好利用Help这玩意,不懂就问,最简单快捷的问法就是Search。

004.jpg

图4 ISE Help页面

好了,那么下面我们要简单的做个ISE工程的范例,写个流水灯的小代码下载到FPGA中看看效果。

双击打开桌面的快捷方式“Xilinx ISE Design Suite 13.3”,点击菜单栏的FileàNew Project…。出现如图5所示的新工程设置界面,输入工程名并定位好工程存储文件夹位置,完成后点击Next进入下一步。

005.jpg

图5 工程名与存储设置

         器件与工程属性设置如图6所示。设置完毕再Next便Finish。

006.jpg

图6 器件与工程属性设置

         此时我们看工具左侧窗口,选中Design便如图7所示。Hierarchy下只有工程名和相应器件显示,可谓设计文件一片空白,咱要来此拓荒了。首先,我们需要添加源代码文件到工程中。

007.jpg

图7 Design窗口

         在Hierarchy窗口的空白处右键点击New Source…,如图8所示。这里可以选择新建各类源文件,包括IP核、基于处理器的系统、verilog或VHDL源文件以及测试脚本等等。我们需要新建一个verilog源代码文件,所以选择Verilog Module,给模块命名,通常顶层代码源文件名建议和工程名一致,免得后面一串麻烦事。

008.jpg

图8 新建源文件

         新建的源代码.v文件会自动添加到Hierarchy下,并且直接在主窗口中打开源文件如图9所示。

009.jpg

图9 源代码文件

         此时需要编写一段流水灯测试代码,如下所示:

module test1led(

            clk,rst_n,

            led

        );

 

input clk;      //100MHz

input rst_n;    //低电平复位信号

 

output[7:0] led;    //分频信号,连接到蜂鸣器

 

//---------------------------------------------------

reg[2:0] cnt;   //分频计数器

 

always @ (posedge clk or negedge rst_n) //异步复位

    if(!rst_n) cnt <= 23'd0;

    else cnt <= cnt+1'b1;   //寄存器cnt循环计数

 

//----------------------------------------------------

reg[7:0] ledr;  //LED流水灯

 

always @ (posedge clk or negedge rst_n)

    if(!rst_n) ledr <= 8'd1;

    else if(cnt == 23'h7fffff) ledr <= {ledr[6:0],ledr[7]}; //大约每80ms让led左移一次

 

assign led = ledr;

 

endmodule

         接下来需要对管脚进行分配,如图10所示,Hierarchy中需要先选中顶层代码文件testled.v,然后双击Processes下的User ConstraintsàI/O Pin Planning(PlanAhead) – Post-synthesis(或者I/O Pin Planning(PlanAhead) – Pre-synthesis,两者的区别在于在分配管脚时是否synthesis了,一般是无关紧要的)。

010.jpg

图10 PlanAhead启动

         Xilinx的工具做得真是独具匠心啊,打开PlanAhead后的欢迎界面不得不让我们发出“设计文档无处不在”的感慨。如果想深入了解PlanAhead工具,不妨好好拜读下这里罗列的PlanAhead User Guide。

11.jpg

图11 PlanAhead的欢迎界面

         如图12所示,参照原理图NEXYS3_sch.pdf,在PlanAhead的I/O Ports中对该实例的管脚进行分配。其中rst_n使用了拨码开关SW1,板级验证的时候注意将SW1朝板子内侧拨动即处于正常运行状态。分配完成后保存设置即可退出PlanAhead。

12.jpg

图12 管脚分配

         回到ISE中,双击图10的Processes下Generate Programming File进行编译生成.bit下载文件。然后使用上节提到的Adept工具,在Config功能项中加载并烧录工程文件夹下生成的test1led.bit文件。接着,我们就可以看到在线烧录到FPGA器件中的代码运行起来了,SW1拨码开关处于内侧时,8个流水灯跑的很欢。

 

 

文章评论8条评论)

登录后参与讨论

用户377235 2012-11-20 12:54

分频计数器的位数,在申明的时候是不是写错了 ?你写的[2:0] cnt;应该是[22:0] cnt;吧?

用户417053 2012-5-5 22:50

很不错啊

用户377235 2012-4-1 16:54

呵呵 顶特权

ilove314_323192455 2012-3-20 13:02

哈哈,谢谢

用户403664 2012-3-20 08:52

特权大哥,帮你把11、12图加进去了~

用户403664 2012-3-20 08:45

已经把11和12加进去了~

用户404801 2012-3-13 11:57

很好

用户1417837 2012-3-13 11:29

特权同学,这篇博文能不能弄个PDF格式的附件啊。图11和图12显示不出来(在博文里)
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
8
14
关闭 站长推荐上一条 /2 下一条