原创 【博客大赛】小小菜鸟学FPGA——(3)2输入逻辑门

2013-9-11 09:39 3723 8 16 分类: FPGA/CPLD 文集: FPGA
这篇博文的主要目的是介绍基本的ise开发流程,其中的步骤比较繁琐但是写的很细致,仅仅适合刚刚入门的初学者。

ise是一个支持数字系统设计的开发平台,并且在进行设计开发时基于基于相应的器件型号,在软件设计时选择的器件型号是与实际下载板上的器件型号相同的。

二输入逻辑门设计如下图所示:

image001.jpg
 

第一步,建立工程。

双击桌面该图标image002.jpg,打开ise软件(也可以从开始菜单启动),每次打开都会默认恢复上一次的工程界面,当然如果是第一次打开的话,由于没有工程记录,所以会在工程管理区是一片空白。选择File->New Project,新建一个工程,如下图:image003.jpg

 输入工程的Name、Location、WorkingDirection以及Description,然后选择顶层代码的类型,点击Next按钮如下图:image004.jpg
 选择所使用的芯片以及仿真工具和语言,计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到,如图1-3所示。在图中我们选用了Spartan6 XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。另外,我们选择Verilog作为默认的硬件描述语言。并单击Next,如下图:
image005.jpg
 这里显示了刚才设置的相关的所有的选项,如果都对,就点击Finish。

第二步,设计输入和代码仿真

在右侧上部的工程管理区Hierarchy空白处右击->New Source,如下图所示:

image006.jpg
 选择Verilog Module语言,命名文件名字为gates,并选定Add to Project,该文件将创建并自动加入到工程当中,点击Next,出现端口设置界面,如下图:
image007.jpg 这里的界面可以不用管,当然如果写上了的话,在生成gates.v文件时,会自动生成相应的管脚的声明,这个是ise比较省力的一方面。点击Next,出现刚才设置的内容,如果没有错误,点击Finish即可。如下图:
image008.jpg 

上图①区为工程管理区,②区为过程管理区。

在gates.v中输入2输入逻辑门的设计源码,如下:

module gates2(

input wire a,

input wire b,

output wire[5:0]z

    );

assign z[5] = a&b;

assign z[4] = ~(a&b);

assign z[3] = a|b;

assign z[2] = ~(a|b);

assign z[1] = a^b;

assign z[0] = ~(a^b);

endmodule

双击过程管理区的Synthesize-XST,进行综合,如果在输入源码过程中,出现语法错误等,在综合过程中会有提示,Synthesize-XST前面会有个X,并且在信息显示去会提示警告和错误的数量,双击错误或者警告,会智能提示,当然提示不一定对。综合后如果通过,Synthesize-XST前面会显示√。

 

第三步,设计测试文件。

在工程管理区将View改为Simulation,并在工程管理区右击->New Source,选择Verilog Test Fixture,并填写filiname,如下图:image009.jpg

点击Next,选择gates文件再点击Next,检查无误后点击Finish,ise将自动生成对应的测试文件,我们的任务是在        initial begin-end中填写测试代码,代码如下:

   initial begin

       a <= 0;

       b <= 0;

       $display("a = %b,b = %b,z = %b",a,b,z);

       #200

      

       a <= 1;

       b <= 0;

       $display("a = %b,b = %b,z = %b",a,b,z);

       #200

      

       a <= 0;

       b <= 1;

       $display("a = %b,b = %b,z = %b",a,b,z);

       #200

      

       a <= 1;

       b <= 1;

       $display("a = %b,b = %b,z = %b",a,b,z);

   end

单击工程管理区中的gates_test,双击过程管理区中ISim Simulation中的Behavioral Check Syntax,进行语法检查,通过后,右击Simulate Behaviorl Model,选择Process Properties选项,对仿真进行设置,如下图:

image010.jpg 

仿真时间设置为1000ns,这个根据整个测试的周期和时钟来自己确定。设置完成后点击OK,双击Simulate Behaviorl Model,ISim窗口打开,如下图:

image011.jpg 

第四步,综合与实现。

在ise的工程管理中,View改为Implementation,双击过程管理区的Synthesize-XST,将生成Design Summary,综合可能有3种结果:如果综合后完全正确,则在Synthesize-XST前面有一个打勾的小圆圈;如果有警告,则出现一个带感叹号的黄色小圆圈;如果有错误,则出现一个带叉的红色小圆圈。如果综合步骤没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary,即可查看,如下图:
image012.jpg 

综合完成后,下一个步骤就是实现(Implementation)。所谓实现,是指将综合输出的逻辑网表翻译成所选器件的底层模块和硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。实现主要分为3个步骤:翻译(Translate)逻辑网表、映射(Map)到器件单元与布局布线(place & Route)。在ISE中,执行实现过程,会自动执行翻译、映射和布局布线过程:也可单独执行。在过程管理区双击Implementation Design选项,就可以自动完成实现的3个步骤,如下图所示:

image013.jpg 

第四步,硬件配置。

所谓硬件配置,就是将设计中的输入输出的一些端口映射到芯片相应的管脚上,有两种方法可以实现,一种是通过创建管脚约束文件,另一种是通过ISE自带的Ahead功能实现。

1、通过管脚约束文件实现方法:

在代码管理区中右击->New Source,创建Implement Constraints File,并命名为gates,然后点击Next->Finish,如下图:

image014.jpg 

在gates.ucf文件中输入管脚约束代码,如下:

NET "a" LOC = T5;

NET "b" LOC = V8;

NET "z[0]" LOC = T11;

NET "z[1]" LOC = R11;

NET "z[2]" LOC = N11;

NET "z[3]" LOC = M11;

NET "z[4]" LOC = V15;

NET "z[5]" LOC = U15;

2、通过Ahead功能实现,在过程管理区中双击即可,如下图:

image015.jpg
双击后弹出对话框,是选择用管脚约束ucf文件还是可视化方式创建,选择Yes,用可视化方式创建
image016.jpg 

双击后会发现系统自动创建一个ucf文件,然后再次双击Post-Synthesis,即可打开该软件,如下图:

image017.jpg 

并在I/OPorts区展开管脚,添加上相应的管脚约束即可,如下图:

image018.jpg 

添加完管脚约束,在过程管理区中双击Implement Design,对设计进行实现,所谓实现,是指将综合输出的逻辑网表翻译成所选器件的底层模块和硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。实现主要分为3个步骤:翻译(Translate)逻辑网表、映射(Map)到器件单元与布局布线(place & Route)。在ISE中,执行实现过程,会自动执行翻译、映射和布局布线过程:也可单独执行。在过程管理区双击Implementation Design选项,就可以自动完成实现的3个步骤,如下图所示。如果设计没有经过综合,就会启动XST完成综合,在综合后完成实现过程。经过实现后能够得到精确的资源占用情况。在Design Summary即可看到具体的资源占用情况。

image019.jpg 

双击Generate Programming File,生成相应的二进制比特文件,如下图:

image020.jpg 

第五步,下载验证。

启动Adept软件,并将开发板连接到电脑上,打开开发板电源,Adept软件将自动识别开发板,选择生成的二进制文件gates.bit,点击Program,将文件下载进开发板,如下图:

image021.jpg 

下载完成灯亮起后,拨动相对应的拨动开关,对应的LED灯就会根据程序出现相对应的亮灭,1为亮,0为灭。

文章评论8条评论)

登录后参与讨论

电子匠人 2013-9-26 16:51

Nexys3

用户377235 2013-9-26 13:26

用的是那个开发板?

电子匠人 2013-9-16 09:25

请看 搭建开发环境 那篇笔记

电子匠人 2013-9-15 17:06

多谢

用户1407078 2013-9-15 15:18

不错,楼主加油!

用户427957 2013-9-14 18:54

我想请教一下这个ISE软件在那下载的呢?能给个链接吗?WIN7 32位的

电子匠人 2013-9-12 18:18

是的,但是需要一步一步的走,新手,就怕急躁,一上来就嚷着几天内写出个32bit的RISCCPU,有时候看着他们,真心害怕

用户385857 2013-9-12 15:52

这些基本的东西还是需要我们细细的学习和体会,总的来说,FPGA也只是一种载体,Verilog也只是一种工具,真正的设计核心是思路!不断的学习,不断的总结!
相关推荐阅读
电子匠人 2017-07-13 23:40
夏夜随想
今天一个小朋友来找我扯蛋,说工资很低但是自己一定会很努力。看得出他确实很踏实,而且很坚决的说,自己定了个小目标,明年年初调薪工资能上8k/月。我一直看着他,听他讲完后,跟他说:“你的目标不够好,改一改...
电子匠人 2016-03-11 11:21
谁都有被骂成狗的日子
昨天下午,慧子**打电话给我,说她领导又骂了她,电话里的慧子**一肚子委屈——这已经不是第一次了,但凡那位领导好好说几句暖人心的话,慧子**也是绝对会屁颠屁颠的去干活。 我忽然想起刚毕业的...
电子匠人 2014-11-24 17:52
【博客大赛】年末侃大山——说说技术
今天新项目过来个领导,跟我聊了一会,他问我的一个问题是:“你擅长哪方面的技术?”这下把我给问愣了,我说,我哪样也不擅长。 和几个朋友一起准备创业,现在还在筹备阶段,经常会接触到一些人问这样的问...
电子匠人 2014-11-20 21:56
【博客大赛】年末侃大山——说说做事
在我还没有毕业的时候,一个师兄跟我说,第一份工作一定要去大公司,即使钱少,当时我很不理解,问他原因,他说,避免你成为一个山寨工程师。 虽然他告诉了我原因,但是在很长的一段时间内,我还是没理解这句话的...
电子匠人 2014-11-12 23:13
【博客大赛】年末侃大山——说说梦想
     前几天,某电商的移动客户端首页有这么一句话:“梦想是要有的,万一实现了呢?” 读小学的时候我的梦想是当一个超人,读初中的时候我的梦想是没有考试,读高中的时候梦想是隔壁班的姑娘的花裙子...
电子匠人 2014-11-08 23:31
【博客大赛】年末侃大山——前言
一眨眼就到了年末,上半年忙掉了腚,下半年忙掉了脑子,去年还在EDN写了几个专栏,今年却没怎么做贡献,想来真是惭愧。 昨晚看邮箱,看到今年最后一季的主题竟然是随便侃,像我这么有(ai)能(chu...
我要评论
8
8
关闭 站长推荐上一条 /2 下一条