实验一的内容主要就是如何为zybo创建工程,然后如何烧写这第一个程序。尽管只是一个简单的LED闪烁的程序,但是对学习开发zybo的帮助还是很大的。

上次的实验,是直接使用zynqbook提供的代码,是让led 0 3位和1 2位的交替闪烁

根据实验指导书建议的,自己修改led的闪烁方式

我将它的闪烁方式改成了类似流水灯的闪烁方式、

原理就是和一个移动的位异或,然后循环左移这个位

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* Definitions */
...
#define LED 0x0 /* Initial LED value - X00X */
...

int LEDOutputExample(void)
{
...

/* Loop forever blinking the LED. */
while (1) {
...
/* Flip LEDs. */
// led = ~led;
led = led ^ (1 << i);
i++;
if (i >= 4) i = 0;

/* Wait a small amount of time so that the LED blinking is visible. */
for (Delay = 0; Delay < LED_DELAY; Delay++);
}

return XST_SUCCESS; /* Should be unreachable */
}

效果如下:

至于第三个建议扩展一个io的部分,我没有实现

因为我在block design中添加gpio2后,在sdk中没有生成gpio2的定义

于是我决定在第二个实验中寻找答案