×
嵌入式 > 技术百科 > 详情

EDK之路(1)——GPIO之XPS篇

发布时间:2020-06-08 发布时间:
|

说明

EDK在现在已经略显过时了,毕竟vivado才是续集的主角。但不排除现在还有许多工程用着EDK,且EDK和vivado还是有很多操作是共通的。所以还是把之前写的EDK之路系列搬移至此。

工程目的

通过建立一个简单的GPIO工程,熟悉EDK软件以及整个EDK流程,特别是SDK的使用。本工程所用板子为Atlys,预实现的效果为当拨码开关SW0打开时,8位led开始显示流水灯;否则8位led常亮。(注:将忽略部分常见过程)。

XPS部分

由于我们使用的是digilent所生产的开发板,这种开发板一般都有相对应的BSB板级支持包供我们使用,里面包括一些IP核,ucf文件等,可以极大的方便我们使用。因此,在建立工程时记得将板级支持包的库(路径到lib)添加进去,如下图所示(还有一种方式是将板级支持包放在ISE工具的某个文件夹中,这样就不必每次新建工程都要这样添加了,但试了几次都没有成功,以后成功了再补充说明吧):

这样,在如下窗口中我们就可以选择digilent的atlys开发板,而不用选择定制开发板。

在接下来的窗口中:

1号位置表示的是处理器的频率,注意并不是外部晶振的频率(外部晶振频率信息已经包含在板级支持包中),因此此处可以灵活设置。

2号位置所设置的容量大小是用来存储程序的,当程序很大时,如果该容量太小,则会发生程序溢出。该错误会在SDK进行程序编译的时候报出,如果该问题出现,则需要返回xps中修改存储器容量(后面会提到)。因此为了尽量避免这种情况的发生,这里我选择64K。当然,也可以根据需要选择。另外,如果64K还不够,则需要将程序放到外部存储器(如DDR)中。Instruction Memory Size 和Data Cache Size 暂时不用管,保持默认。

3号位置是atlys自带的IP核,好处在于当我们选择了里面的IP核,那么很多东西如ucf文件等就不需要我们去编写了。而不足之处在于,这些IP核不够灵活,比如在本工程中,我们只需要一个拨码开关,而这里提供的IP核是8个拨码开关。因此,在此我们remove所有IP核,在接下来的操作中再按自己的需要创建,这里只需要建立一个最小系统即可。

接着,我们自己添加两个GPIO的IP核,如下,dip0是一位的,led_8bits是8位的。

然后需要将GPIO的相应端口连接到外部端口。这里既可以使用GPIO_IO来连接外部端口,也可以根据输入输出

特性选择特定的输入输出端口来连接外部端口。如dip0是输入,则选择GPIO_IO_I,led_8bits是输出,则可以选择GPIO_IO_O来连接到外部端口。

此时,可以看到External Ports栏多了下面两个端口:

接着记得编写ucf文件。

回到之前所提到的,万一所设置的程序容量太小,导致装不下所编译的程序,则需要在这里修改。这里有2个64K,对应的就是我们建立工程时所选择的64K,在这里修改其中一个的大小,则另外一个也会跟着变化。

修改后点击一下右上角的按钮重新分配地址,但其实好像不点也会自动分配。

最后点击run DRCs,检查一下是否存在语法错误。接着把工程导入到sdk,开始sdk部分的操作,SDK部分由于篇幅限制,将在下篇博客中说明。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分布式光纤温度传感器(DTS)系统的应用