1
00:00:00,060 --> 00:00:07,140
So our generation is successful now, what are we going to do is we will be exporting our hardware.

2
00:00:07,170 --> 00:00:10,770
This is the next step that we follow will also be including a bit strict, right?

3
00:00:11,100 --> 00:00:13,680
And then we will be launching an SDK.

4
00:00:14,170 --> 00:00:16,860
Now when we more IP.

5
00:00:16,890 --> 00:00:22,260
OK, so here, if you remember, our peripheral IP had named according to their functions.

6
00:00:22,260 --> 00:00:26,100
So whenever it is used to communicate with an elderly, we need it as an entity.

7
00:00:26,460 --> 00:00:33,750
Similarly, when we use to communicate data from the Stooges, OK, we named it a switch, and this

8
00:00:33,750 --> 00:00:37,500
really helps when we read experimentar.

9
00:00:37,500 --> 00:00:38,130
Got it straight.

10
00:00:38,130 --> 00:00:41,730
So remember, you need your IP according to a function, right?

11
00:00:42,060 --> 00:00:49,850
So when we go to an SDK, first thing that we do is to utilize the Hallowell template, right?

12
00:00:49,850 --> 00:00:53,580
So we'll just be naming this as stupa or multiple instances.

13
00:00:53,640 --> 00:00:53,970
OK.

14
00:00:54,300 --> 00:00:57,600
And then we will be invoking an halloway template.

15
00:00:58,190 --> 00:01:05,190
Now, when we go to an EMRs file, you could see Diab's that we're required to utilize for Accept Israel

16
00:01:05,220 --> 00:01:09,410
IP that we have at a rate so which we need to use GPIO.

17
00:01:09,420 --> 00:01:14,190
And for a lily also, we need to use GPI right now.

18
00:01:14,190 --> 00:01:22,370
You could really see that we distinguish an IP by giving a name for which we are utilizing that right.

19
00:01:22,380 --> 00:01:28,440
So let me just go to a Hallowell Dot see and start developing our main application rate.

20
00:01:29,070 --> 00:01:31,680
So here some of the mandatory header files.

21
00:01:33,300 --> 00:01:38,050
They include so driver Ferrari say GPA is GPA.

22
00:01:38,160 --> 00:01:45,750
So with just be adding x GPA, you don't h OK, this is the first to fail and the next one is which

23
00:01:45,750 --> 00:01:53,460
will be serving as the file, which will be giving us data related to hardware x parameters.

24
00:01:54,620 --> 00:02:00,380
Daughter trick will just be saving Al Gore, so this will automatically build up and then we will be

25
00:02:00,380 --> 00:02:04,190
going to an x GPA right now here.

26
00:02:04,400 --> 00:02:09,920
We will be having agenda to structure one for an instance, OK, another for our conflict.

27
00:02:09,930 --> 00:02:17,600
So we have an x GPA, OK, which will be used to store all the data related to an instance of the IP.

28
00:02:17,780 --> 00:02:18,110
OK.

29
00:02:18,350 --> 00:02:24,650
And this will be adding for both Aliadiere, as well as such, because we have two independent instances

30
00:02:24,650 --> 00:02:25,370
of an IP, right?

31
00:02:25,370 --> 00:02:27,830
So we need to initialize both of them.

32
00:02:27,830 --> 00:02:36,590
So x GPA first will be for an elderly and then there will be four switch rate will just be naming this

33
00:02:36,590 --> 00:02:39,710
as at any instance and then switch and set it straight.

34
00:02:40,130 --> 00:02:46,550
The next one will require two config structures for an independent IP, so we'll just be going ahead

35
00:02:47,120 --> 00:02:48,920
and this will again be a pointer rate.

36
00:02:48,920 --> 00:02:52,660
So it will be an entity config, OK?

37
00:02:52,670 --> 00:02:57,800
And the next one that we have is for switch config.

38
00:02:58,070 --> 00:03:05,350
Right now, we will create a function that could be used to initialize are both the IP that we have

39
00:03:05,360 --> 00:03:08,660
added and not hypochlorite the white in it.

40
00:03:09,590 --> 00:03:17,450
And then we will declare the one variable which will be storing the status, whether initialization

41
00:03:17,450 --> 00:03:18,830
is successful or great.

42
00:03:19,280 --> 00:03:22,400
The function that we have is first will be looking for a device ID.

43
00:03:22,670 --> 00:03:32,510
So we have a function lookup config, correct, so that they just go ahead and first try to hide the

44
00:03:32,510 --> 00:03:35,330
config structure for a lead configuration.

45
00:03:36,030 --> 00:03:40,020
Here we will be finding the device aid for you, right?

46
00:03:40,160 --> 00:03:49,040
If you just go to the X parameter and if you look for an elderly now when you named your IP within usage,

47
00:03:49,040 --> 00:03:56,150
you could clearly see that this easily helps to find out the specific data related to that IP instance.

48
00:03:56,440 --> 00:04:02,840
So here we require to specify the device will just be copying in this, and then we'll be adding it

49
00:04:02,870 --> 00:04:03,590
over here, right?

50
00:04:03,620 --> 00:04:12,890
This is the only thing that we need to specify and then will be initializing AI in TPA, which is working

51
00:04:12,890 --> 00:04:14,060
on an entity, right?

52
00:04:14,060 --> 00:04:21,590
So to do that, we have a C of G initialize function that will basically be requiring three things.

53
00:04:21,650 --> 00:04:27,770
OK, first one is an instance finder, then the config structure and finally an interest rate so will

54
00:04:27,770 --> 00:04:29,600
go ahead would like to hear.

55
00:04:30,500 --> 00:04:35,320
So for us, the instance for a is named as ADA.

56
00:04:35,420 --> 00:04:35,780
OK.

57
00:04:36,320 --> 00:04:39,680
The config structure will be a lily config.

58
00:04:40,010 --> 00:04:47,540
And then to get an access to the base address, we going just be utilizing the data from an config structure,

59
00:04:47,570 --> 00:04:47,900
right?

60
00:04:48,500 --> 00:04:53,290
We could in fact specify the base address right directly from makes parameter dot h.

61
00:04:53,300 --> 00:04:55,490
That could also be automatic.

62
00:04:55,490 --> 00:05:01,520
Right now, we need to store this status and then we need to compare rates already just declared to

63
00:05:01,520 --> 00:05:09,980
variable status one or status L, which will be working within a lady and then status s, which will

64
00:05:09,980 --> 00:05:12,100
be working with N Switch, right?

65
00:05:12,110 --> 00:05:19,020
So whatever value this, Rutan's will just be storing and going to status and right.

66
00:05:19,610 --> 00:05:24,180
Similar thing we need to do for Switch also, so we'll just copy this function.

67
00:05:24,200 --> 00:05:28,700
This will be replacing red switch config right down here.

68
00:05:28,710 --> 00:05:31,970
The device idea that we need to specify is related to switch.

69
00:05:32,420 --> 00:05:37,220
So we'll just copy this will be adding a door here.

70
00:05:37,290 --> 00:05:37,610
Right?

71
00:05:38,390 --> 00:05:41,420
The status will be stewarding in status.

72
00:05:42,080 --> 00:05:43,220
S right.

73
00:05:43,220 --> 00:05:46,340
And then we will be going ahead.

74
00:05:46,640 --> 00:05:56,720
The instance for us, which is switch instance, OK, the structure is switch config, right?

75
00:05:57,350 --> 00:06:03,140
And then to exist, we suggest we could just use switch config basically straight.

76
00:06:03,800 --> 00:06:07,680
So this completes the mandatory steps that are required for initialization.

77
00:06:07,680 --> 00:06:08,870
Now we'll just be comparing.

78
00:06:08,870 --> 00:06:13,820
So if both of those read the Nexus two sexes that basically represent our device, initialization is

79
00:06:13,830 --> 00:06:19,970
successful right to status and ended with status.

80
00:06:21,000 --> 00:06:30,220
Yes, if that is equal to existing success, so this is possible only when both of them do it in Texas,

81
00:06:30,220 --> 00:06:32,190
so if that is the case, will just be.

82
00:06:33,520 --> 00:06:40,870
Sending the message that initialization is successful, right, so will use the brain death, and then

83
00:06:40,870 --> 00:06:45,040
here we could just mention a lady and switch.

84
00:06:46,720 --> 00:06:49,480
Success really in the.

85
00:06:50,880 --> 00:06:52,110
Sure, that's right.

86
00:06:53,250 --> 00:06:56,160
And we will just be adding again.

87
00:06:57,180 --> 00:07:03,000
It's the third death, OK, and we'll just be mentioning in it.

88
00:07:03,780 --> 00:07:04,110
Right.

89
00:07:04,680 --> 00:07:06,960
So this is the mandatory step that we need to perform.

90
00:07:06,960 --> 00:07:11,610
We'll just see what cool that it just try to understand the area that we have right to here.

91
00:07:11,620 --> 00:07:15,480
We just need to remove once, OK?

92
00:07:16,050 --> 00:07:18,960
This will probably remove the area that we have over here.

93
00:07:19,290 --> 00:07:22,950
Here the is OK, and this is not required, right?

94
00:07:24,930 --> 00:07:30,900
So now we have our entire corps completed for an initialization right to what we did is since we have

95
00:07:30,900 --> 00:07:34,320
a two different instance of a paper, we need to initialize both of them.

96
00:07:34,320 --> 00:07:36,570
So we utilize lookup config.

97
00:07:36,690 --> 00:07:41,750
We specify the device A.D. and then we utilize of genius, right?

98
00:07:41,760 --> 00:07:45,570
So same process we follow for both a as well as switch, right?

99
00:07:45,840 --> 00:07:47,700
And then we are checking with the boot of them.

100
00:07:47,700 --> 00:07:54,510
That is status of code initialize for LCD, as well as status for CFD and initialize of search rate

101
00:07:54,510 --> 00:07:55,540
and existing success.

102
00:07:55,540 --> 00:08:01,260
So if that is the case and search, both are successfully initialized and we'll just be sending the

103
00:08:01,260 --> 00:08:08,100
message that initialization field right when we complete this will go ahead and will call this init

104
00:08:08,100 --> 00:08:08,490
function.

105
00:08:08,500 --> 00:08:11,100
So this will basically initialize our benefit.

106
00:08:11,160 --> 00:08:15,900
Right then here we will add the method starting.

107
00:08:17,310 --> 00:08:24,180
This dog, so this is the first thing that we do now will proceed with setting up a direction.

108
00:08:24,330 --> 00:08:24,720
OK.

109
00:08:24,990 --> 00:08:31,150
And then the apes that we have to send Selita and send it to the output device, right?

110
00:08:31,160 --> 00:08:37,330
So if you go to an QPR or take two, once we complete an initial edition, we have a detailed directions.

111
00:08:37,530 --> 00:08:41,700
OK, so here we need to specify a GPO instance.

112
00:08:41,700 --> 00:08:42,270
Is it China?

113
00:08:42,280 --> 00:08:42,810
No, no.

114
00:08:42,810 --> 00:08:47,670
Remember, we selected single channel for both of an IP, so we just need to add one.

115
00:08:48,120 --> 00:08:54,840
OK, and that addiction was so, for example, out of 32 bins that we have on an IP.

116
00:08:55,140 --> 00:09:00,380
How many of them you want to set as an input on an output could be handled within direction.

117
00:09:00,550 --> 00:09:05,130
So we'll just explore the detail of this specific function.

118
00:09:05,280 --> 00:09:11,040
Right now, this sector input and output direction for all the discrete signal for the specified TBI

119
00:09:11,040 --> 00:09:11,500
or change.

120
00:09:11,580 --> 00:09:11,850
Right?

121
00:09:12,630 --> 00:09:16,320
The first argument is that it's just going to get off the GPIO.

122
00:09:16,680 --> 00:09:19,290
Then second one is the China number.

123
00:09:19,290 --> 00:09:23,910
So whether you have a single channel or whether you are targeting on multiple Jane, remember we are

124
00:09:23,910 --> 00:09:25,350
targeting on a single channel.

125
00:09:25,860 --> 00:09:28,290
And then we need to use it.

126
00:09:28,310 --> 00:09:29,250
Direction my state.

127
00:09:29,250 --> 00:09:31,050
So Big Tech to zero our output.

128
00:09:31,530 --> 00:09:31,860
OK.

129
00:09:32,200 --> 00:09:35,120
And set to one, I input out of 32 bit.

130
00:09:35,140 --> 00:09:40,440
You could specifically choose how many of them will be working as an input and how many of them will

131
00:09:40,440 --> 00:09:42,000
be working as in trade.

132
00:09:42,630 --> 00:09:46,590
So for an output, we need to apply zero and for an input, we need to apply one.

133
00:09:46,620 --> 00:09:48,240
So let me just copy this.

134
00:09:49,410 --> 00:09:49,830
OK.

135
00:09:49,860 --> 00:09:51,750
We'll go to Hallowell Dot C.

136
00:09:52,950 --> 00:10:00,780
We'll start with setting up direction for our elite instance rate, so all of the bits we need to set

137
00:10:00,780 --> 00:10:01,470
as an output.

138
00:10:01,710 --> 00:10:08,660
OK, and we only have four elderly, so we need to just focus on the Alice before bit out of use today.

139
00:10:08,840 --> 00:10:09,150
Great.

140
00:10:09,630 --> 00:10:13,920
So we specify an elderly instance the number of changes that we have on our IP as well.

141
00:10:14,130 --> 00:10:14,480
OK.

142
00:10:14,850 --> 00:10:19,670
And we just need to work around with the left before, but out of the 32 bit rate.

143
00:10:19,680 --> 00:10:23,080
So this function, expect the argument to be you 32.

144
00:10:23,100 --> 00:10:30,180
But we could just specify the list before the rest of them will simply be don't care or won't be affecting

145
00:10:30,180 --> 00:10:31,080
our operation, right?

146
00:10:31,500 --> 00:10:36,480
We'll just be adding 0x that basically mean the number that will be specifying is an extra decimal number,

147
00:10:36,720 --> 00:10:38,250
and we'll just be adding a zero.

148
00:10:38,250 --> 00:10:43,110
So when we added zeros that basically mean this, four pins will be considered as an output rate.

149
00:10:43,140 --> 00:10:50,790
So this we already look to a higher rate when we add a zero in the direction, much so they are considered

150
00:10:50,790 --> 00:10:51,630
as an output.

151
00:10:52,850 --> 00:10:53,570
The next.

152
00:10:54,080 --> 00:10:57,800
So we only specified the list before, but rest will simply be don't go.

153
00:10:57,990 --> 00:11:02,480
And if we do not specify what, they will simply be having a value of all zero, right?

154
00:11:02,510 --> 00:11:09,020
So this basically mean all the 32 bins, OK, which are capable of looking at this function are behaving

155
00:11:09,020 --> 00:11:09,440
as A..

156
00:11:09,590 --> 00:11:09,880
Right.

157
00:11:10,910 --> 00:11:15,050
The next thing that will be doing is to set up the direction for our switch, right?

158
00:11:15,050 --> 00:11:16,560
So we have a switch instance.

159
00:11:16,580 --> 00:11:18,260
This is also an alleged instance.

160
00:11:18,260 --> 00:11:20,870
The number of changes that we have on that type is also one.

161
00:11:21,230 --> 00:11:23,300
And here we want to set them as an input.

162
00:11:23,300 --> 00:11:29,140
So we'll just be adding a one two four one basically retreated into a hexadecimal f, right.

163
00:11:29,170 --> 00:11:34,880
So since we are utilizing X, that basically mean we are putting a number in and hexadecimal flight

164
00:11:34,910 --> 00:11:35,690
format, right?

165
00:11:36,020 --> 00:11:41,870
So this will set our four bins for an LCD instance as an output and for switch.

166
00:11:41,870 --> 00:11:47,510
And since the effect is an input rate, this complete the next process that is setting up the direction.

167
00:11:47,510 --> 00:11:53,630
Then we could look for an API that will help us to read and write the data, right?

168
00:11:53,660 --> 00:12:00,080
So we have a discrete tree that could be used to either data and then we have a discrete right that

169
00:12:00,080 --> 00:12:03,620
could be used to write the reader to the specific points rate.

170
00:12:04,010 --> 00:12:08,930
So let me just go ahead and try to explore the functionality of this function.

171
00:12:09,350 --> 00:12:14,020
So this read the suite of discrete for the specified GPI chain.

172
00:12:14,360 --> 00:12:14,720
OK.

173
00:12:15,470 --> 00:12:20,420
We just need to pass an instance and the chain is right, so we'll just go ahead and just basically

174
00:12:20,420 --> 00:12:20,770
returns.

175
00:12:20,780 --> 00:12:21,890
You thirty two, right?

176
00:12:22,250 --> 00:12:27,070
So let me just declare one of available that will be storing the value of switch rate.

177
00:12:27,080 --> 00:12:31,160
So we'll just be naming this as which data will be initializing it to a zero rate.

178
00:12:31,790 --> 00:12:38,960
Then switch data will be equal to the API that we have to read the pin.

179
00:12:39,170 --> 00:12:44,900
OK, and then the instance will be switch instance a the change number is what right?

180
00:12:45,500 --> 00:12:53,660
So this will read the data from switches, so get false light switches and then we will be sending the

181
00:12:53,660 --> 00:12:55,890
same d down to analytics, right?

182
00:12:55,910 --> 00:13:01,380
So to do that, we do have a specific function such as discrete right, right.

183
00:13:02,110 --> 00:13:02,960
We explore this.

184
00:13:02,960 --> 00:13:07,370
This is used to write the data to the specified bend of view.

185
00:13:07,790 --> 00:13:10,910
OK, we just need to pass an instance, the channel number and the data.

186
00:13:11,810 --> 00:13:12,800
So we'll go ahead.

187
00:13:12,800 --> 00:13:21,290
And then we will be specifying an instance of the alleged instances led by the channel number one and

188
00:13:21,290 --> 00:13:25,160
the data that we're going to send is switch data, right?

189
00:13:25,730 --> 00:13:32,940
We will also be printing the data in between so that we are able to debug the values that we are syncing

190
00:13:32,960 --> 00:13:41,870
OK from the switches or a value read OK will be directly considering the full bit value.

191
00:13:42,060 --> 00:13:46,880
So let me just add the format specified to be perceived to be.

192
00:13:47,120 --> 00:13:47,450
OK.

193
00:13:47,690 --> 00:13:54,950
So this will remove unwanted C2 that are data with about right will be considering only the value which

194
00:13:54,950 --> 00:13:57,200
are not equal to zero right?

195
00:13:57,530 --> 00:14:00,530
Or what we could do is we could just add Person B.

196
00:14:00,530 --> 00:14:04,820
So we will also be analyzing the bit where we have a value of C, right?

197
00:14:05,390 --> 00:14:09,050
And we will be printing the data off switch data, right?

198
00:14:09,980 --> 00:14:15,230
And this will be calling after one second, Rachel.

199
00:14:15,260 --> 00:14:19,800
This basically means we'll be updating the data after an interval of one second.

200
00:14:19,820 --> 00:14:20,120
Right.

201
00:14:20,520 --> 00:14:26,240
And just be utilizing a look so this will run forever and dinner and this user apply a reset, right?

202
00:14:26,270 --> 00:14:28,580
So this complete the whole goal is very simple.

203
00:14:28,580 --> 00:14:30,770
We initialize both the benefit of the APIs.

204
00:14:31,040 --> 00:14:36,530
OK, then we set up the detection for an input and output port, and then we are reading the data.

205
00:14:36,530 --> 00:14:42,260
We are storing it into a variable and then we are writing the same data and manually, we are also printing

206
00:14:42,260 --> 00:14:46,820
the value so that we are able to debug any dieting till we already it.

207
00:14:46,820 --> 00:14:47,860
In big fight.

208
00:14:47,870 --> 00:14:50,510
We'll just program our FPGA first.

209
00:14:51,850 --> 00:14:58,360
Then we'll be selecting a folder where we have our Helloworld or C and will be we're ending it going

210
00:14:58,540 --> 00:14:59,170
and hide.

211
00:14:59,890 --> 00:15:00,190
OK.

212
00:15:00,550 --> 00:15:04,750
In fact, in between we could just get Nick Di is to get me.

213
00:15:05,080 --> 00:15:08,560
OK, so that we also able to analyze the value, right?

214
00:15:10,320 --> 00:15:13,320
So let me just try to change the state of the switch.

215
00:15:15,690 --> 00:15:22,680
So now you could see when all the switch are in high state, you could get 15, so if they just turn

216
00:15:22,680 --> 00:15:26,910
off the MSP switch, we'll give you a lever to see seven.

217
00:15:27,990 --> 00:15:31,410
Every turn of the next light switch, we're able to get three.

218
00:15:31,560 --> 00:15:38,570
Then we have one and then finally see, OK, so be able to find out the values of a switch.

219
00:15:38,580 --> 00:15:45,230
And along with that, LEDs are also turning on on and off, depending on the state of a slight edge

220
00:15:45,270 --> 00:15:45,520
rate.

221
00:15:45,630 --> 00:15:51,480
Now you understand how we could save the data from the processing system, utilizing any kind of ease

222
00:15:51,480 --> 00:15:56,130
to any, and then we could trigger the benefit of which are connected to.
