-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
700 lines (685 loc) · 34.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ben Glines</title>
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans">
<link rel="icon" type="image/png" href="svg/bg_logo.png" sizes="32x32">
</head>
<body>
<div id="front">
<div id="front__text">
<div id="name"></div>
<div class="comment" id="front__comment">// COMPUTER ENGINEER</div>
</div>
<div id="front-background">
<svg id="front-background" viewBox="0 0 1 1" preserveAspectRatio="none">
<path id="front-1" transform="scale(.1)"
d="m9.123 0.19141c-0.31072-0.01691-0.61101-0.014322-0.86719 0.025391-1.0247 0.15885-1.2242 0.91503-2.1602 0.83008-0.93597-0.084951-1.389-0.18634-1.7598-0.18555-0.81742 0.00174-0.93456 0.0031272-1.7637 0.59961-0.67969 0.48891-1.7015 0.13067-2.3613 0.037109-0.055931-0.0079316-0.14361 0.0064129-0.21094 0.0058593v8.4961h10v-9.7207c-0.28874-0.036342-0.58499-0.072001-0.87695-0.087891z" />
<path id="front-2" transform="scale(.1)"
d="m10 2.6617c-0.3734-0.015757-0.73064-0.013517-1.0391 0.025391-1.2592 0.15885-1.5081 0.91503-2.6582 0.83008-1.1501-0.084951-1.7046-0.18634-2.1602-0.18555-1.0045 0.0017401-1.1491 0.003127-2.168 0.59961-0.56696 0.33188-1.2914 0.26699-1.9746 0.16602v5.9027h10z"
fill="#ff0" />
<path id="front-3" transform="scale(.1)"
d="m10 5.7516c-1.3493 0.23456-1.7757 0.8425-3.207 0.76562-1.5817-0.084951-2.3442-0.18634-2.9707-0.18555-1.3813 0.0017401-1.5813 0.003127-2.9824 0.59961-0.25537 0.1087-0.54056 0.16984-0.83984 0.20703v2.8617h10z"
fill="#00f" />
<path id="front-4" transform="scale(.1)"
d="m10 8.5684c-0.78835 0.24229-1.4491 0.49014-2.6504 0.43945-2.0132-0.084952-2.9838-0.18634-3.7812-0.18555-1.6674 0.0016502-2.0193 0.018461-3.5684 0.52734v0.65039h10v-1.4316z"
fill="#f00" />
</svg>
</div>
<div id="scroll-down-icon">
scroll down
<object style="margin-top: 0.5em;" type="image/svg+xml" data="svg/scroll_down_icon.svg"></object>
</div>
</div>
<div id="intro">
<img id="intro__img" src="img/portrait.jpeg" width="150px" height="200">
<div id="intro__text">Welcome to my website! Here you can learn about my projects, academics, and experience.
Contact info can be found at the bottom of this page.</div>
</div>
<div class="comment comment-title">// PORTFOLIO</div>
<div class="comment comment-title">/* click projects to see full descriptions */</div>
<div id="portfolio">
<div id="projects">
<div class="project-box" onclick="showModal('spydrnetTMR-popup')"
onmouseover="displayProject(spydrnetTMRPreview)" onmouseout="hideProject(spydrnetTMRPreview)">
<div class="project" id="spydrnet-TMR-project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">SpyDrNet TMR</div>
</div>
<div class="project__description">Python tool for triplicating FPGA netlists for increased fault
tolerance. SpyDrNet TMR can replicate specific cells and top-level ports within a design and
insert voters to partition, cut feedback, and reduce triplicated signals for non-replicated
logic. </div>
<div class="project__skills">
<div class="project__skills__item">Python</div>
<div class="project__skills__item">PyTest</div>
<div class="project__skills__item">Sphinx Documentation</div>
<div class="project__skills__item">GitHub</div>
<div class="project__skills__item">FPGA Netlists</div>
</div>
</div>
<div class="project-image" id="spydrnetTMRPreview"
style="background-image: url('img/spydrnet_tmr/spydrnet_tmr_preview.png');">
</div>
</div>
<div class="project-box" onclick="showModal('lasertag-popup')" onmouseover="displayProject(lasertagPreview)"
onmouseout="hideProject(lasertagPreview)">
<div class="project" id="lasertag-project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">Lasertag: Cats & Dogs</div>
</div>
<div class="project__description">Lasertag system with backpacks that can detect/shoot LED
pulses on 10 frequencies to play exciting gamemodes. In addition to a standard
gamemode, the game includes a "Cats & Dogs" gamemode that relies on stealth and wit in order to
win.</div>
<div class="project__skills">
<div class="project__skills__item">C Programming</div>
<div class="project__skills__item">Circuit Design</div>
<div class="project__skills__item">Signal Processing</div>
</div>
</div>
<div class="project-image" id="lasertagPreview"
style="background-image: url('img/lasertag/lasertag-preview.png');">
</div>
</div>
<div class="project-box" onclick="showModal('bit-inspector-popup')"
onmouseover="displayProject(bitInspectorPreview)" onmouseout="hideProject(bitInspectorPreview)">
<div class="project" id="bit-inspector-project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">FPGA Bit Inspector</div>
</div>
<div class="project__description">Python tool for determining the features associated with
particular bits inside of a bitstream used to program an FPGA. Created for fault tolerance
testing to predict design changes due to "flipped" bits.</div>
<div class="project__skills">
<div class="project__skills__item">Python</div>
<div class="project__skills__item">reStructuredText</div>
<div class="project__skills__item">GitHub</div>
</div>
</div>
<div class="project-image" id="bitInspectorPreview"
style="background-image: url('svg/bit_inspector_preview.png');">
</div>
</div>
<div class="project-box" onclick="showModal('femtosat-popup')" onmouseover="displayProject(femtosatPreview)"
onmouseout="hideProject(femtosatPreview)">
<div class="project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">Femto-Satellite</div>
</div>
<div class="project__description">Small satellite powered by an ATmega328 microcontroller designed
to be launched and send several different kinds of motion and atmospheric measurements back to a
base station by radio.</div>
<div class="project__skills">
<div class="project__skills__item">Arduino</div>
<div class="project__skills__item">EAGLE PCB Design</div>
<div class="project__skills__item">Surface Mount Soldering</div>
</div>
</div>
<div class="project-image" id="femtosatPreview"
style="background-image: url('img/femtosat/femtosat-preview.png');">
</div>
</div>
<div class="project-box" onclick="showModal('family-map-popup')"
onmouseover="displayProject(familyMapPreview)" onmouseout="hideProject(familyMapPreview)">
<div class="project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">Family Map App</div>
</div>
<div class="project__description">Android app that generates several generations of random family
data and provides an interactive way to view family information. Complete with secure
login/register using a server-side SQL database.</div>
<div class="project__skills">
<div class="project__skills__item">Java</div>
<div class="project__skills__item">JUnit</div>
<div class="project__skills__item">Android</div>
<div class="project__skills__item">HTTP</div>
<div class="project__skills__item">SQLite</div>
</div>
</div>
<div class="project-image" id="familyMapPreview"
style="background-image: url('img/family_map/family-map-preview.png');">
</div>
</div>
<div class="project-box" onclick="showModal('wam-popup')" onmouseover="displayProject(wamPreview)"
onmouseout="hideProject(wamPreview)">
<div class="project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">Whack-A-Mole</div>
</div>
<div class="project__description">Classic Whack-A-Mole game with level difficulty progression that
includes faster moles and multiple moles appearing at the same time. Created for a 3.5"
touchscreen LCD powered by a Digilent ZYBO.</div>
<div class="project__skills">
<div class="project__skills__item">C Programming</div>
<div class="project__skills__item">CMake</div>
<div class="project__skills__item">State Machines</div>
</div>
</div>
<div class="project-image" id="wamPreview" style="background-image: url('img/wam-preview.png');">
</div>
</div>
<div class="project-box" onclick="showModal('simon-popup')" onmouseover="displayProject(simonPreview)"
onmouseout="hideProject(simonPreview)">
<div class="project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">Simon Says</div>
</div>
<div class="project__description">Classic Simon Says game that progressively increases the length of
the sequence until the player can no longer memorize the sequence. Created for a 3.5"
touchscreen LCD powered by a Digilent ZYBO.</div>
<div class="project__skills">
<div class="project__skills__item">C Programming</div>
<div class="project__skills__item">CMake</div>
<div class="project__skills__item">State Machines</div>
</div>
</div>
<div class="project-image" id="simonPreview" style="background-image: url('img/simon-preview.png');">
</div>
</div>
<div class="project-box" onclick="showModal('pong-popup')" onmouseover="displayProject(pongPreview)"
onmouseout="hideProject(pongPreview)">
<div class="project">
<div class="project__title">
<div><img class="project__icon" src="svg/project_icon.svg"></div>
<div class="project__title__text">Pong</div>
</div>
<div class="project__description">Classic Pong using simple controls to move paddles across screen
to hit the ball. Score is tracked and displayed on a seven segment display. The game is played
on a Digilent Nexys 4 FPGA board.</div>
<div class="project__skills">
<div class="project__skills__item">SystemVerilog</div>
<div class="project__skills__item">Vivado</div>
<div class="project__skills__item">FPGA</div>
</div>
</div>
<div class="project-image" id="pongPreview" style="background-image: url('img/pong/pong-preview.png');">
</div>
</div>
</div>
<div id="project__modal">
<div class="project__modal__content" id="spydrnetTMR-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">SpyDrNet Triple Modular Redundancy (TMR)</div>
<div class="project__modal__content__info__paragraphs">
<p>
SpyDrNet-TMR is a plugin for SpyDrNet, an open source tool for analyzing and transforming netlists, that applies triple modular reduncancy to FPGA netlist designs for fault tolerance.
</p>
<div style="text-align: center;">
<object class="bit-inspector__popup-image" type="image/svg+xml"
data="svg/spydrnet_cut_feedback.svg"></object>
<div class="popup-image-text">Diagram of triplication with voters cutting feedback</div>
</div>
<p>
I managed the release of SpyDrNet TMR, pulling from previous work done on an private version
of the tool. I implemented reduction voter placement, as well two voter insertion algorithms
(voter before/after every flip-flop) for cutting feedback in a design. I also created tests,
documentation, and tests for each of these features.
</p>
</div>
</div>
</div>
<div class="project__modal__content" id="lasertag-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">Laser Tag Game</div>
<div class="project__modal__content__info__paragraphs">
<div class="family-map__popup-image-container" style="width: 50%">
<img class="family-map__popup-image" style="margin-top: 35px"
src="img/lasertag/full_system.jpg">
</div>
<div class="popup-image-text">Lasertag backpack with LED gun</div>
</div>
</div>
</div>
<div class="project__modal__content" id="bit-inspector-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">FPGA Bit Inspector</div>
<div class="project__modal__content__info__paragraphs">
<p>
The Bit Inspector Tool provides information on all possible features associated with
individual bits that either appear or do not appear in a given bitstream for programming
FPGAs. This tool relies on the Symbiflow Project X-Ray database and is compatible with all
devices that the database supports. Below is a flow chart of how this tool is used.
</p>
<div style="text-align: center;">
<object class="bit-inspector__popup-image" type="image/svg+xml"
data="svg/bit_inspector_flow_diagram.svg"></object>
<div class="popup-image-text">Flowchart for Usage of FPGA Bit Inspector Tool</div>
</div>
<p>
With Xilinx's Vivado Design Suite, a string of bits can be created from a SystemVerilog
design to program an FPGA for a specific purpose. Each bit is associated with a "feature"
related to some element in the FPGA (flip-flops, muxes, interconnects, etc.) In some
circumstances (such as in satellite applications), FPGAs are prone to radiation-induced
faults that will "flip" bits to incorrect values. With this tool, more can be understood
about what happens when these faults occur.
</p>
<p>
By using a .bits file (a human readable file that shows each bit set to "1" on separate
lines) to select certain bit locations and a normal bitstream file used to program an FPGA,
this tool can show every feature that each bit in the .bits file affects (whether in the
actual design or not) and whether it is found in the original bitstream.
</p>
<p>
I built upon pre-existing Project X-Ray tools that utilize open source FPGA databases, and
used Python to create this tool. I wrote documentation and created an easy to follow demo
intended to help someone with minimal knowledge of Linux terminal commands and FPGA
programming to be able to use this tool. I created this tool as a Research Assistant at BYU
and it is only available on a private GitHub repository.
</p>
</div>
</div>
</div>
<div class="project__modal__content" id="femtosat-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">Femto-Satellite</div>
<div class="project__modal__content__info__paragraphs">
<p>
The Femto-Satellite (femto- refers to the unit prefix denoting a factor of 10<sup>-15</sup>)
is a small satellite that can record several different motion and atmospheric measurements
and send them back to a base station by radio. I worked on this project with a fellow BYU
student as a part of the BYU Spacecraft Group. We worked side-by-side, collaberating on
every step of the process. </p>
<p>
We started by choosing the different modules that we would use to take measurements, as well
as a radio module to send the data. We chose the 9-axis MPU-9250 TDK InvenSense for motion,
the BME280 by Bosch Sensortech for atmospheric measurements, and the RFM69 for radio
communication. </p>
<div class="family-map__popup-image-container" style="width: 50%">
<img class="family-map__popup-image" src="img/femtosat/femtosat-pcb.jpeg">
</div>
<div class="popup-image-text">Femto-Satellite PCB Without Modules/Components</div>
<p>
During the design process we used a breadboard and breakoutboards for each module to create
and test the software required for the satellite. We had to read through documentation for
each module and choose the features/functions that would best fit out needs. At a 9600
baudrate, we sent 30 character packets (for simplicity reasons) with data from the different
modules to a radio base station provided by the club. </p>
<p>
To create the custom PCB, we used EAGLE. After several iterations, we were able to fit all
of the modules on a board sized 22mm x 70mm. We used placed solder paste on the appropriate
surfaces on the PCB using a stencil, and after placing our modules and various components on
the PCB, we used a reflow oven to join everything. </p>
<div class="family-map__popup-image-container" style="width: 100%">
<img class="family-map__popup-image" style="margin-right: 15px; margin-left: 15px;"
src="img/femtosat/femtosat-work.jpeg">
<img class="family-map__popup-image" style="margin-right: 15px; margin-left: 15px;"
src="img/femtosat/femtosat-preview.png">
</div>
<div class="popup-image-text">Surface Mount Preparation and Finished Femto-Satellite</div>
<div class="family-map__popup-image-container" style="width: 50%">
<img class="family-map__popup-image" style="margin-top: 35px"
src="img/femtosat/femtosat-problem.jpeg">
</div>
<div class="popup-image-text">Close-up of PCB Overlapping Connection</div>
<p>
Due to a mistake with our PCB design, a ground overlapped with another wire. We tried many
jerry-rigging techniques to get it to work, but the bad connection ultimately led to the
femto-satellite not working in its final form. We were unable to launch our satellite, but
we gained invaluable experience. I learned a lot about working in a team, scheduling
milestones, finding compromises, and making the best of failures. </p>
</div>
</div>
</div>
<div class="project__modal__content" id="family-map-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">Family Map App</div>
<div class="project__modal__content__info__paragraphs">
<p>
The Family Map App is an Android App that allows you to create a user account and then
generate several generations of random family data. The family data generated includes
different types of events such as birth, marriage, and death, but can also support several
more kinds of events.
</p>
<p>
All family events can be viewed using Google Maps with clickable markers for each event that
open interactive menus to navigate a person's events/immediate family. Between each event
are lines that show a person's life story, lines that show genealogy, and lines that connect
spouses.
</p>
<div class="family-map__popup-image-container" style="width: 50%">
<img class="family-map__popup-image" src="img/family_map/map_view.png">
</div>
<div class="popup-image-text">Map View Showing Various Family Lines</div>
<p>
All of these lines, as well as filters for events of family members on the father's/mother's
side and events of male/female family members, can be turned on and off in the settings
menu. There is also a search menu that allows the user to search for any person or event
depending on the filters set.
</p>
<div class="family-map__popup-image-container" style="width: 70%">
<img class="family-map__popup-image" style="margin-right: 15px; margin-left: 15px;"
src="img/family_map/person_menu.png">
<img class="family-map__popup-image" style="margin-right: 15px; margin-left: 15px;"
src="img/family_map/settings_menu.png">
</div>
<div class="popup-image-text">Menu for Individual People and Settings Menu</div>
<p>
The Family Map server allows for several users to be logged in simultaneously and view their
own family data. This is done with a Java HTTP server that recieves requests and to read and
write information from an SQLite database.
</p>
<p>
This project was created as a part of the Advanced Programming Concepts (CS 240) course at
Brigham Young University.
</p>
</div>
</div>
</div>
<div class="project__modal__content" id="wam-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">Whack-A-Mole</div>
<div class="project__modal__content__info__paragraphs">
<p>
This is a touch-screen version of the classic Whack-A-Mole game. In the game, moles pop out
of holes and your job is to “whack” them by touching the screen before they go back into
their hole. The game gets progressively harder, including faster movement from the moles,
and multiple moles appearing at the same time. By using the switches on the board, the user
can choose between four, six, and nine mole modes. Once a certain amount of moles are
missed, the game ends, and the score is shown at the end.
</p>
<div class="c-programming-project-video">
<video style="width: 100%;" controls>
<source src="videos/whack_a_mole.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<p>
The game was developed in two parts: the display, and the control. The display code is
responsible for drawing the mole display, supporting the three different modes,
activating/deactivating random moles, showing user stats, etc. The control code is
responsible for waiting for the user to touch the display, waiting for the touch
analog-to-digital converters to settle, and sending those coordinates to the display code to
determine what needs to be drawn/erased on the screen.
</p>
<p>
I used graphic routines provided by the Adafruit LCD display library, and created low-level
C code to communicate with the GPIO IP blocks for the switches and buttons on the ZYBO.The
GCC compiler was used to compile the C code into executable programs that can be run on the
ARM processor on the Digilent ZYBO. The demo shown above was run on an emulator for the
ZYBO.
</p>
<div>
<div class="family-map__popup-image-container" style="width: 70%">
<img class="family-map__popup-image" style="margin-right: 15px; margin-left: 15px;"
src="img/330board.jpg">
</div>
<div class="popup-image-text">Digilent ZYBO with Adafruit 3.5" touchscreen LCD screen</div>
</div>
<p>
This project was created as a part of the Intro to Embedded Programming (ECEn 330) course at
Brigham Young University.
</p>
</div>
</div>
</div>
<div class="project__modal__content" id="simon-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">Simon Says</div>
<div class="project__modal__content__info__paragraphs">
<p>
This is a touch-screen version of Simon Says. In the game, a sequence of colors is played to
you and you attempt to re-key in the sequence correctly. If you correctly re-key the
sequence, you continue and the sequence gets longer. </p>
<div class="c-programming-project-video">
<video style="width: 100%;" controls>
<source src="videos/simon_says.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<p>
The game was developed with four different state machines: one for drawing the buttons and
detecting touches/time-outs (buttonHandler), one for flashing the current random sequence
that the player will try to match (flashSequence), one for verifying that the sequence of
button touches match the random sequence (verifySequence), and one for controlling
everything at a top level (simonControl). </p>
<p>
I used graphic routines provided by the Adafruit LCD display library, and created low-level
C code to communicate with the GPIO IP blocks for the switches and buttons on the ZYBO.The
GCC compiler was used to compile the C code into executable programs that can be run on the
ARM processor on the Digilent ZYBO. The demo shown above was run on an emulator for the
ZYBO.
</p>
<div>
<div class="family-map__popup-image-container" style="width: 70%">
<img class="family-map__popup-image" style="margin-right: 15px; margin-left: 15px;"
src="img/330board.jpg">
</div>
<div class="popup-image-text">Digilent ZYBO with Adafruit 3.5" touchscreen LCD screen</div>
</div>
<p>
This project was created as a part of the Intro to Embedded Programming (ECEn 330) course at
Brigham Young University.
</p>
</div>
</div>
</div>
<div class="project__modal__content" id="pong-popup">
<span class="close">×</span>
<div class="project__modal__content__info">
<div class="project__modal__content__info__title">Pong</div>
<div class="project__modal__content__info__paragraphs">
<p>
This is a version of pong designed for both the Digilent Nexys 4 and the Basys 3 FPGA
boards. Both players control their paddles with the buttons on the board and hit the ball
back and forth. If a player fails to return the ball, the other player earns a point, and
their score is updated on the board's built-in seven segment display.
<div class="c-programming-project-video">
<video style="width: 100%;" controls>
<source src="videos/pong.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<p>
The game was created with a module to draw the ball, a module to draw the paddles, as well
as a module to handle the ball movement, player input, and to update the score. These
modules, in conjunction with a bitmap to VGA module and seven segment display module
provided by BYU, make up all the circuitry for this project. With a constraints file mapping
the I/O signals to the correct pins, the game is ready to be played.
</p>
<p>
The game is ready to be played on both the Nexys 4 board and the Basys 3 board (with a
modified seven segment controller module). </p>
<div>
<div class="family-map__popup-image-container" style="width: 70%">
<img style="box-shadow: 0 1px 2px #00000080; margin-bottom: 3vh; width: 90%"
src="img/pong/digilent_boards.jpeg">
</div>
<div class="popup-image-text">Digilent Nexys 4 Board and Basys 3 Board</div>
</div>
<p>
This project was created as a part of the Fundamentals of Digital Systems (ECEn 220) course
at Brigham Young University. </p>
</div>
</div>
</div>
</div>
</div>
<div class="comment comment-title">// ABOUT</div>
<div id="about">
<div id="about__me">
<div class="about__me__title">
<i class="icon pointer-icon"></i>SUMMARY
</div>
<div class="about__me__description">
<div>
I am a computer engineer, undergradute student, and tech enthusiast. Clear, efficient, lightweight,
and elegant solutions are what I strive for. I love anything computers and hope to use my passion
and skills to work with others to create these solutions.
</div>
</div>
<div class="about__me__title"><i class="icon pointer-icon"></i>EDUCATION</div>
<div class="about__me__description">
<div>I am currently a student at Brigham Young University and I anticipate graduating in Spring of 2022.
I currently hold a 3.68 GPA. </div>
</div>
<div class="about__me__title"><i class="icon pointer-icon"></i>COURSE WORK</div>
<div class="about__me__description">
<ul class="about-list" id="course-work-list">
<li>Adv. Programming Concepts (Java, Android, SQLite)</li>
<li>Electronic Circuit Design (LTSpice)</li>
<li>Signals & Systems (Matlab)</li>
<li>Fundamentals of Digital Systems (SystemVerilog)</li>
<li>Computational Data Structures (C++)</li>
<li>Discrete Structures (C++)</li>
<li>Intro to Embedded Systems (C)</li>
<li>Circuit Analysis and Lab </li>
<li>Diff Eq. and Linear Algebra</li>
<li>Calculus of Several Variables</li>
</ul>
</div>
<div class="about__me__title"><i class="icon pointer-icon"></i>HOBBIES <div
style="opacity: 0.1; margin-left: 1em;">(BESIDES COMPUTERS)</div>
</div>
<div class="about__me__description">
Skiing, bowling, skateboarding, playing the accordion, car enthusiast
</div>
</div>
<div id="about__skills">
<div class="about__me__title">
<i class="icon pointer-icon"></i>SKILLS
</div>
<div class="about__me__description" id="skills-description">
<div>Languages
<ul class="skills-list" id="skills-list">
<li>C++</li>
<li>Java</li>
<li>C</li>
<li>SystemVerilog</li>
<li>Python</li>
<li>Matlab</li>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li>Markdown</li>
</ul>
</div>
<div>
Miscellaneous
<ul class="skills-list" id="skills-list">
<li>VSCode</li>
<li>GitHub</li>
<li>Linux</li>
<li>IntelliJ</li>
<li>Android Studio</li>
<li>Vivado</li>
<li>SQLite</li>
<li>JUnit</li>
<li>CMake</li>
</ul>
</div>
</div>
</div>
</div>
<div class="comment comment-title">// EXPERIENCE</div>
<div id="experience">
<div id="experience__list">
<div id="cclItem" class="experience__list__item" onclick="showDescription('cclDescription','cclItem')">BYU
Configurable Computing Lab</div>
<div id="collegeItem" class="experience__list__item"
onclick="showDescription('collegeDescription','collegeItem')">BYU College of Engineering</div>
<div id="spaceItem" class="experience__list__item"
onclick="showDescription('spaceDescription','spaceItem')">BYU Spacecraft Group</div>
<div id="volunteerItem" class="experience__list__item"
onclick="showDescription('volunteerDescription','volunteerItem')">Volunteer Missionary</div>
</div>
<div>
<div class="experience__description" id="cclDescription">
<div class="experience__description__title">Research Assistant<div
class="experience__description__title__location">@ Brigham Young University</div>
</div>
<div class="experience__description__dates">April 2020 - December 2020</div>
<div class="experience__description__paragraph">
Developed special tools for FPGA fault tolerance testing primarily with Python. Wrote coherent,
direct, and descriptive documentation for quick understanding and application of said tools.
Collaborated with others to find solutions to complex problems. Created a tool to use open source
SymbiFlow’s Project X-Ray database to inspect the features associated with each bit in a bitstream.
</div>
</div>
</div>
<div>
<div class="experience__description" id="collegeDescription">
<div class="experience__description__title">Teaching Assistant<div
class="experience__description__title__location"> @ Brigham Young University</div>
</div>
<div class="experience__description__dates">January 2020 - April 2020</div>
<div class="experience__description__paragraph">
Planned effective ways to teach students about digital systems with a team of TAs and professors.
Explained hard-to-understand topics in simple language for students who sought deeper understanding.
Troubleshooted extensively during lab hours to correct broken code and other errors, in-person and
remotely.</div>
</div>
</div>
<div>
<div class="experience__description" id="spaceDescription">
<div class="experience__description__title">Spacecraft Group<div
class="experience__description__title__location"> @ Brigham Young University</div>
</div>
<div class="experience__description__dates">Fall 2019</div>
<div class="experience__description__paragraph">
Built a “femtosat” powered by an ATmega328 microcontroller on a custom designed PCB with various
modules to take inertial and atmospheric measurements and to send data by radio to a ground base.
Worked in a 2-person team to coordinate efforts in order to create and meet deadlines.</div>
</div>
</div>
<div>
<div class="experience__description" id="volunteerDescription">
<div class="experience__description__title">Volunteer Missionary<div
class="experience__description__title__location"> @ Brigham Young University</div>
</div>
<div class="experience__description__dates">July 2017 - August 2019</div>
<div class="experience__description__paragraph">
Led groups of 10-22 volunteers, coordinated efforts and planned events with local leaders in El
Salvador and Belize, organized and conducted councils to set goals and plans. Taught abstract
concepts in simple to understand terms. Became fluent in Spanish.</div>
</div>
</div>
</div>
<div style="margin-top:50px" class="comment comment-title">// CONTACT</div>
<div id="contact">
<div id="contact-list">
<a href="https://www.linkedin.com/in/ben-glines/" target="_blank" rel="noopener noreferrer"><img
class="contact-list__icon" src="img/contact/linkedin_icon.svg" height="50px"></a>
<a href="https://github.com/benglines" target="_blank" rel="noopener noreferrer"><img
class="contact-list__icon" src="img/contact/github_icon.svg" height="50px"></a>
<a href="mailto: [email protected]" target="_blank" rel="noopener noreferrer"><img
class="contact-list__icon" src="img/contact/mail_icon.svg" height="50px"></a>
</div>
<div id="bottom-resume-link">
<a href="Benjamin_Glines_resume.pdf" target="_blank" id="bottom-resume-link">
Download my resume here.
</a>
</div>
<div id="bottom-text">
Designed and Created by Ben Glines
</div>
</div>
<script src="javascript/main.js"></script>
<div id="bottom-background">
<svg viewBox="0 0 2.6458 .26882" preserveAspectRatio="none">
<g transform="translate(-156.67 -31.616)">
<path id="bottom"
d="m159.32 31.616c-0.35698 0.04159-0.46983 0.14938-0.84852 0.13575-0.41848-0.01506-0.62023-0.03304-0.786-0.0329-0.36548 3.09e-4 -0.4184 5.55e-4 -0.7891 0.10632-0.0676 0.01927-0.14302 0.03011-0.22221 0.03671v0.02294h2.6458z"
fill="#00f" />
</g>
</svg>
</div>
</body>
</html>