Nexys3学习笔记(二)——添加GPIO外设

作者: Pollux
上传时间为: 2012-02-15 11:52 PM
2012-02-15
阅读:

上次已经建立了一个简单的嵌入式系统。怎样往这个系统里添加设备呢?

Nexys3上有8个LED灯和一个4位7段数码显示管,都是通过GPIO接口与FPGA相连。今天就在系统里加入这些GPIO外设。希望达到8个开关分别控制LED灯的亮灭。4个按钮能控制4位的数码管相应的亮灭。同时希望数码管能定时显示数字,这就需要一个定时器,而且希望按钮按下和放开时能产生一个中断。这样算下来总共需要添加4个IP:LED控制,数码管控制,一个定时器,一个中断控制。

1.硬件修改

运行XPS,直接打开建立好的最小系统。在IP catalog栏目下能看到所有能添加的IP,首先添加LED控制IP,这个属于General Purpose IO,如下

GPIO信号宽度选择8位,同样的可以添加其他3个IP。数码管控制IP

计时器

中断控制

所有IP添加好了后,这才是第一步,此时所有的连接都没有。首先考虑所有的添加的IP核外部连线有多少,可以知道led灯有8个外部引脚,数码管有12个外部连线。所以首先修改system.mhs文件,先添加引脚端口,如下

然后确定这些外部端口的管脚分配,修改system.ucf文件

之后先连接新添加的IP的PLB总线接口

连接IP之间的信号连线,同时修改button控制IP增加一个中断。新添加的IP信号都是没有连接的,因此这里需要知道些信号流向。如下:定时器中断和按钮中断连接到中断控制器;中断控制器和microblaze中断信号相连;两个GPIO的IP输出都接到外部引脚。

接下来设置各个IP的地址分配

到这里,硬件修改算是完成了,可以编译产生流文件了。

2.软件测试

同样的在XPS中将硬件设计导入EDK,这里以前建立的BSP支持包不能再使用了。删除以前的BSP,重新生成BSP支持包。步骤还是一样的File->New->Xilinx board support package。

然后我们可以使用digilent的一个demo程序,稍微修改就能够测试刚刚建立的系统。(GPIO_demo.rar)

首先建立一个空的工程File->New->Xilinx C Project,弹出窗口,选择Empty Application

导入源文件进行编译。生成.elf文件。

可以看到先前建立的peripheral test工程还在,重新编译后也能够下载到FPGA中运行,硬件平台建立好了以后,可以运行不同的软件工程,非常方便。

还是同样的步骤选择Xilinx Tools->Program FPGA,之后右键点击.elf文件选择Run As->Launch on Hardware,程序开始运行了。

串口监视程序能显示运行的结果,按开关能控制相应的LED,7段数码管也显示正常。

小结:

学习了如何在嵌入式系统里添加需要的外设,操作还是很简便.不过需要知道所添加的IP核的内部信号连接,以及有没有外部信号连接,地址需要手动分配。总的来说,这个小系统的功能又增强了点。

参考链接: http://www.eefocus.com/blog/myspace/index.php?act=update&tmpid=10535 http://www.xilinx.com/support/documentation/spartan-6.htm

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示