System Organization
The figure below depicts the top-level organization. The explanation below starts from the reader's lefthand side.
Photodetector. This should be self-explanatory. This is the receiver board that you constructed while attending ECEN 340.
Jumper Block. The PMOD connections used in this system are routed out to a jumper block on the ECEn 330 Dev board. This jumper block is located on the left-hand side of the board, near the large clear LED. The jumper block serves two purposes: 1) if the jumpers are in place, it provides a path that connects the transmitter output to the ADC input, via voltage-limiting resistors, and 2) it provides a convenient connection point for all of the connections from the gun.
Analog Digital Converter (ADC). This is where the analog-to-digital conversion takes place. The ADC is contained in the ZYNQ FPGA chip (the larger chip located in the middle of the ZYBO board). See the ZYBO reference manual. Data are retrieved from the ADC by calling the interrupts_getAdcData() function that is provided by the interrupts package. See the code in interrupts.c, .h
for details.
queue.c. This is a set of functions that implement a queue. Data are inserted into the queue by invoking queue_overwritePush()
and retrieved from the queue via queue_pop(), two of the several functions that you will write.
detector.c. This is a set of functions that implement the signal-processing-based detector. You will learn about how to implement this later in the semester.
filter.c All of your filtering functions are implemented in filter.c
lockoutTimer. When you detect a hit, you start a timer and do not detect any further hits until the timer expires.
hitLedTimer. You need to flash the LED on top of the gun for at least 1/2 a second or so when you detect a hit.
transmitter.c. This file will contain the functions that implement a simple, configurable square-wave generator. You will need to support 10 frequencies (we will assign those) and you need to be able to start/stop the transmitter. You will implement the transmitter as a state-machine, as taught in ECEN 330. You set the frequency-number by invoking transmitter_setFrequencyNo()
with the desired frequency number. For now, the number will be set on the slide-switches as a binary number.
Slide Switches. These are the 4 slide switches on the ZYBO board. You access them via the switches package.
Gun LED. Self explanatory. You built one of these in ECEN 340. The jumper block is used to connect the square-wave signal from the transmitter to the analog transmitter board.
Trigger From Gun. This is the signal from the trigger on the laser-tag gun that you used in ECEN 340. It connects to the ZYBO board using the jumper block.
It would be a good idea to review and reread the ZYBO Reference Manual.
Take a look at the system packaging page for a view of the system with actual components. The loopback path (red lines) from the transmitter to the receiver is described in more detail on the loopback circuitry page. It is used for testing software without connecting a gun and other circuitry to the system.