<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://socialledge.com/sjsu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=146+user10</id>
		<title>Embedded Systems Learning Academy - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://socialledge.com/sjsu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=146+user10"/>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php/Special:Contributions/146_user10"/>
		<updated>2026-05-06T03:33:28Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34479</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34479"/>
				<updated>2016-12-21T15:14:06Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* The most significant issue was getting the SPI_Master module to work with the Microchip unit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
&lt;br /&gt;
[[File:SPIwaveforms.jpeg|500px|Figure 1: SPI datasheet ideal wave forms indicating timing sequence]]&lt;br /&gt;
&lt;br /&gt;
[[File:waveforms.jpeg|500px|Figure 2: Simulation wave forms indicating a that all tests passed but Rx_In missing data]]&lt;br /&gt;
&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
No video media at this time.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
I would like to thank Dr. Haluk Ozemek for taking the time to educate and regulate, and also our mentor/lab instructor Preetpal Kang for delivering one heck of a series on embedded systems. Although the time has been limited, we have been introduced to so many new topics and barely even begun to scratch the surface. &lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
*Microchip MRF24WG0MA Datasheet&lt;br /&gt;
*Nexys4 DDR FPGA Development Board Reference Manual&lt;br /&gt;
*Digi XBee Wi-Fi RF Module - User Guide&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
[[File:MRF24WG0MA.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:nexys4ddr_rm.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:S6BUserManual.pdf]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34475</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34475"/>
				<updated>2016-12-21T15:10:32Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* The most significant issue was getting the SPI_Master module to work with the Microchip unit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
&lt;br /&gt;
[[File:SPIwaveforms.jpeg|250px|Figure 1: SPI datasheet ideal wave forms indicating timing sequence]]&lt;br /&gt;
&lt;br /&gt;
[[File:waveforms.jpeg|200px|Figure 2: Simulation wave forms indicating a that all tests passed but Rx_In missing data]]&lt;br /&gt;
&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
No video media at this time.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
I would like to thank Dr. Haluk Ozemek for taking the time to educate and regulate, and also our mentor/lab instructor Preetpal Kang for delivering one heck of a series on embedded systems. Although the time has been limited, we have been introduced to so many new topics and barely even begun to scratch the surface. &lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
*Microchip MRF24WG0MA Datasheet&lt;br /&gt;
*Nexys4 DDR FPGA Development Board Reference Manual&lt;br /&gt;
*Digi XBee Wi-Fi RF Module - User Guide&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
[[File:MRF24WG0MA.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:nexys4ddr_rm.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:S6BUserManual.pdf]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34474</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34474"/>
				<updated>2016-12-21T15:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* The most significant issue was getting the SPI_Master module to work with the Microchip unit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
&lt;br /&gt;
[[File:SPIwaveforms.jpeg|250px|thumb|left|Figure 1: SPI datasheet ideal wave forms indicating timing sequence]]&lt;br /&gt;
&lt;br /&gt;
[[File:waveforms.jpeg|200px|thumb|right|Figure 2: Simulation wave forms indicating a that all tests passed but Rx_In missing data]]&lt;br /&gt;
&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
No video media at this time.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
I would like to thank Dr. Haluk Ozemek for taking the time to educate and regulate, and also our mentor/lab instructor Preetpal Kang for delivering one heck of a series on embedded systems. Although the time has been limited, we have been introduced to so many new topics and barely even begun to scratch the surface. &lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
*Microchip MRF24WG0MA Datasheet&lt;br /&gt;
*Nexys4 DDR FPGA Development Board Reference Manual&lt;br /&gt;
*Digi XBee Wi-Fi RF Module - User Guide&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
[[File:MRF24WG0MA.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:nexys4ddr_rm.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:S6BUserManual.pdf]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34464</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34464"/>
				<updated>2016-12-21T13:52:31Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Project Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
No video media at this time.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
I would like to thank Dr. Haluk Ozemek for taking the time to educate and regulate, and also our mentor/lab instructor Preetpal Kang for delivering one heck of a series on embedded systems. Although the time has been limited, we have been introduced to so many new topics and barely even begun to scratch the surface. &lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
*Microchip MRF24WG0MA Datasheet&lt;br /&gt;
*Nexys4 DDR FPGA Development Board Reference Manual&lt;br /&gt;
*Digi XBee Wi-Fi RF Module - User Guide&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
[[File:MRF24WG0MA.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:nexys4ddr_rm.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:S6BUserManual.pdf]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34460</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34460"/>
				<updated>2016-12-21T13:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Appendix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
I would like to thank Dr. Haluk Ozemek for taking the time to educate and regulate, and also our mentor/lab instructor Preetpal Kang for delivering one heck of a series on embedded systems. Although the time has been limited, we have been introduced to so many new topics and barely even begun to scratch the surface. &lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
*Microchip MRF24WG0MA Datasheet&lt;br /&gt;
*Nexys4 DDR FPGA Development Board Reference Manual&lt;br /&gt;
*Digi XBee Wi-Fi RF Module - User Guide&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
[[File:MRF24WG0MA.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:nexys4ddr_rm.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[File:S6BUserManual.pdf]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34459</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34459"/>
				<updated>2016-12-21T13:50:22Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Appendix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
I would like to thank Dr. Haluk Ozemek for taking the time to educate and regulate, and also our mentor/lab instructor Preetpal Kang for delivering one heck of a series on embedded systems. Although the time has been limited, we have been introduced to so many new topics and barely even begun to scratch the surface. &lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
*Microchip MRF24WG0MA Datasheet&lt;br /&gt;
*Nexys4 DDR FPGA Development Board Reference Manual&lt;br /&gt;
*Digi XBee Wi-Fi RF Module - User Guide&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
[[File:MRF24WG0MA.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:nexys4ddr_rm.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:S6BUserManual.pdf]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34458</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34458"/>
				<updated>2016-12-21T13:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
I would like to thank Dr. Haluk Ozemek for taking the time to educate and regulate, and also our mentor/lab instructor Preetpal Kang for delivering one heck of a series on embedded systems. Although the time has been limited, we have been introduced to so many new topics and barely even begun to scratch the surface. &lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
*Microchip MRF24WG0MA Datasheet&lt;br /&gt;
*Nexys4 DDR FPGA Development Board Reference Manual&lt;br /&gt;
*Digi XBee Wi-Fi RF Module - User Guide&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
[[File:MRF24WG0MA.pdf]]&lt;br /&gt;
[[File:nexys4ddr_rm.pdf]]&lt;br /&gt;
[[File:S6BUserManual.pdf]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34456</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34456"/>
				<updated>2016-12-21T13:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Software Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34455</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34455"/>
				<updated>2016-12-21T13:39:55Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Software Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34454</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34454"/>
				<updated>2016-12-21T13:39:25Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Design &amp;amp; Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|300px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|300px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&lt;br /&gt;
:When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34452</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34452"/>
				<updated>2016-12-21T13:30:12Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|200px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34451</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34451"/>
				<updated>2016-12-21T13:29:50Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|200px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34450</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34450"/>
				<updated>2016-12-21T13:29:32Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|200px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34449</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34449"/>
				<updated>2016-12-21T13:27:24Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|200px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34448</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34448"/>
				<updated>2016-12-21T13:26:50Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|200px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&amp;lt;br\ &amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34444</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34444"/>
				<updated>2016-12-21T13:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146Hardware-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master to Microchip Wifi module diagram]][[File:146Hardware-Page2.jpeg|200px|thumb|right|Figure 2: LPC1758 to XBee UART diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34443</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34443"/>
				<updated>2016-12-21T13:13:01Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34442</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34442"/>
				<updated>2016-12-21T13:10:15Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Software Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|250px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]][[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]When designing in Verilog, the developer must understand system timing and output control. There is a difference between synthesizing and compiling. As you can see, the state machine for the control is largely different due to the nature of Verilog versus C programming. Also, these are two different hardware communication protocols. SPI in Verilog, and UART in C using FreeRTOS. The FreeRTOS scheduler allows the system to run off of the tick task. Other interrupts that are high priority may also utilize CPU during the tick taskDelay. This is where the UART task is able to run its functions, and then turn the CPU back over to the rest of the system.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34437</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34437"/>
				<updated>2016-12-21T12:52:32Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34435</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34435"/>
				<updated>2016-12-21T12:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]] &lt;br /&gt;
[[File:146ASM-Page2.jpeg|200px|thumb|right|Figure 2: UART task Logic Flow diagram]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34434</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34434"/>
				<updated>2016-12-21T12:50:26Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|200px|thumb|left|Figure 1: SPI_Master Control Unit ASM Chart]] &lt;br /&gt;
[[File:146ASM-Page2.jpeg|200px|thumb|right|alt text]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34433</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34433"/>
				<updated>2016-12-21T12:49:35Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|200px|thumb|left|alt text]] &lt;br /&gt;
[[File:146ASM-Page2.jpeg|200px|thumb|right|alt text]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=File:146ASM-Page1.jpeg&amp;diff=34432</id>
		<title>File:146ASM-Page1.jpeg</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=File:146ASM-Page1.jpeg&amp;diff=34432"/>
				<updated>2016-12-21T12:46:47Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: 146 user10 uploaded a new version of File:146ASM-Page1.jpeg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Figure 1: SPI_Master Control Unit ASM Chart&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=File:146ASM-Page1.jpeg&amp;diff=34431</id>
		<title>File:146ASM-Page1.jpeg</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=File:146ASM-Page1.jpeg&amp;diff=34431"/>
				<updated>2016-12-21T12:45:49Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: Figure 1: SPI_Master Control Unit ASM Chart&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Figure 1: SPI_Master Control Unit ASM Chart&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34430</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34430"/>
				<updated>2016-12-21T12:44:50Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.jpeg|200px|thumb|left|alt text]] &lt;br /&gt;
[[File:146ASM-Page2.jpeg|200px|thumb|right|alt text]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34428</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34428"/>
				<updated>2016-12-21T12:41:05Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.png|200px|thumb|left|alt text]] &lt;br /&gt;
[[File:146ASM-Page2.png|200px|thumb|right|alt text]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34427</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34427"/>
				<updated>2016-12-21T12:37:59Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:146ASM-Page1.png|200px|thumb|left|alt text]]&lt;br /&gt;
[[File:146ASM-Page2.png|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=File:146ASM-Page2.jpeg&amp;diff=34426</id>
		<title>File:146ASM-Page2.jpeg</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=File:146ASM-Page2.jpeg&amp;diff=34426"/>
				<updated>2016-12-21T12:34:03Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: Figure 2: UART task Logic Flow diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Figure 2: UART task Logic Flow diagram&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34425</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34425"/>
				<updated>2016-12-21T12:32:31Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146ASM-Page1.jpeg]]&lt;br /&gt;
[[File:146ASM-Page2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=File:146ASM-Page1.jpg&amp;diff=34424</id>
		<title>File:146ASM-Page1.jpg</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=File:146ASM-Page1.jpg&amp;diff=34424"/>
				<updated>2016-12-21T12:30:22Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: Figure 1: ASM for FPGA Control Unit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Figure 1: ASM for FPGA Control Unit&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34423</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34423"/>
				<updated>2016-12-21T12:28:43Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
[[File:146ASM-Page1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34421</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34421"/>
				<updated>2016-12-21T12:07:06Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
To recap, the purpose of the design was to integrate an FPGA development board with a micro-controller board to establish a simple communication between platforms on a common wireless network. Overall, the results did not prove the intended design implementation to be achievable, although further testing and development would return successful results. Making some state timing changes on the SPI_Master control unit and then further implementing a datapath would solve the issue of a broken communication bus.&lt;br /&gt;
&lt;br /&gt;
Some further ideas to expand on this platform would be integrating the micro-controller into a Real Time Traffic Control System ('''RTTCS'''). With the given need for traffic optimization, environmental sensory information, data collection and analysis, and the emergence of self driving cars, we must find a way to control the lights more efficiently. To have the wireless capability of gathering real time information, and optimizing the controller unit with no lapse in coverage is a powerful tool for the near future.&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34420</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34420"/>
				<updated>2016-12-21T12:06:24Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Testing &amp;amp; Technical Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
The primary challenges to the project were: creating an application that is feasible given the time constraints, withdrawing information from the base class files and implementing it in an inherited class, and getting the FPGA to properly function the correct way for sampling byte information from the SPI bus.&lt;br /&gt;
&lt;br /&gt;
=== UART communication was transmitting to the XBee module, and output console was skipping application ===&lt;br /&gt;
Followed the UART_Dev .h and .cpp file for useful helper functions. Designed a UART function using the helpers '''putChar()''' and '''getChar()'''. Then set the priority to high from medium, but included a taskDelay to allow the user time to input their byte as well as see what is happening on the console.&lt;br /&gt;
&lt;br /&gt;
=== The most significant issue was getting the SPI_Master module to work with the Microchip unit ===&lt;br /&gt;
At first, the module was laid out as a hybrid control unit and data path, but unfortunately this architecture does not function properly as seen in the timing diagrams. There needs to be a data path with D-type registers to store and send bits one after the other, and then output as a single byte once the exchange state is complete. This timing would allow the bits to be transferred no the bus lines from MSB to LSB.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34418</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34418"/>
				<updated>2016-12-21T12:03:13Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Design &amp;amp; Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
:For the FPGA, a datapath and control unit are required the SPI_Master module to operate properly. The overall system can be seen in the following diagrams. The control signals generated by the state machine manage how each byte is written into memory off of the SPI bus one bit at a time. This is required due to the simplicity of the SPI bus only having two lines in which to exchange data. This data is then extrapolated out into two BCD values, and passed into a 7-segment LED MUX that then generates control signals for the proper decimal output.&lt;br /&gt;
&lt;br /&gt;
:For the LPC, the UART2 object initialized the baud rate 9600 bps and the UART2 RX/TX for operation out of pins 50 and 49. On top of the headers, the XBee is placed. Keep in mind, the XBee configuration settings were set by default. Any configuration updates it needs can be update through the proper command signal followed by the data byte value needed.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
:Communication between the FPGA and Microchip Wifi is carried out over an SPI protocol. It makes sense as it contains its own flash memory on board, and when bytes are communicated through it, it stores them and reads them as needed. As mentioned previously, the SJone communicates with the XBee via UART at a 9600 bps rate. The two wifi daughter boards communicate with each other over the IEEE 802.11/g frequency band. With rates up to 54Mb/s, there is no issue sending one byte at a time across the network.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34417</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34417"/>
				<updated>2016-12-21T12:00:09Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Parts List &amp;amp; Cost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
| 290.99&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34416</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34416"/>
				<updated>2016-12-21T11:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Parts List &amp;amp; Cost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Total&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 290.99&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34415</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34415"/>
				<updated>2016-12-21T11:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Parts List &amp;amp; Cost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Item#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Nomenclature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Qty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Cost($)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Details (mfr, pn, etc.)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| WiFi / 802.11 Modules&lt;br /&gt;
| 1&lt;br /&gt;
| 29.00&lt;br /&gt;
| XB2B-WFPT-001&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| SJOne Development Board&lt;br /&gt;
| 1&lt;br /&gt;
| 80.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| Pmod WiFi: WiFi Interface 802.11g &lt;br /&gt;
| 1&lt;br /&gt;
| 22.99&lt;br /&gt;
| Microchip MRF24WG0MA&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| Nexys 4 DDR Artix-7 FPGA &lt;br /&gt;
| 1&lt;br /&gt;
| 159.00&lt;br /&gt;
| unk&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34413</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34413"/>
				<updated>2016-12-21T11:48:32Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34412</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34412"/>
				<updated>2016-12-21T11:47:50Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 11/18&amp;lt;/font&amp;gt;&lt;br /&gt;
| This process was up and down as other tasks occupied time. Also, project ideas swirled.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/8&amp;lt;/font&amp;gt;&lt;br /&gt;
| Once the new concept was established, this step was first to be completed.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/8 &amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Milestone flag for progress check.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;Late 12/14&amp;lt;/font&amp;gt;&lt;br /&gt;
| Manufacturing became a simple task of plug and play WiFi units.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| &amp;lt;font color=&amp;quot;yellow&amp;quot;&amp;gt;Incomplete 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| Only incomplete task as FPGA development became more demanding than expected.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/20&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Completed 12/21&amp;lt;/font&amp;gt;&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34409</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34409"/>
				<updated>2016-12-21T11:33:53Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 11/2&lt;br /&gt;
| Perform research on FreeRTOS resources. Layout the required applications. Apply the FreeRTOS concepts to these applications. Begin hardware/circuit design. Specify parts required.&lt;br /&gt;
| Completed&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/11&lt;br /&gt;
| Design the System State Machine including, states, conditions, transitions, and control signals. Order parts and materials. Layout software logic diagram, and pseudocode.&lt;br /&gt;
| Overdue&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/18&lt;br /&gt;
| Begin software development.&lt;br /&gt;
| Pending&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 11/25&lt;br /&gt;
| Begin manufacturing. Continue with software development.&lt;br /&gt;
| Pending&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/02&lt;br /&gt;
| Complete manufacturing. Begin software testing. Begin Presentation development.&lt;br /&gt;
| Pending&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/09&lt;br /&gt;
| Complete software testing and development. Complete presentation production&lt;br /&gt;
| Pending&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| 12/16&lt;br /&gt;
| Rehearse final demonstration. Revise and edit any presentation material needed.&lt;br /&gt;
| Pending&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Last Day&lt;br /&gt;
| 12/20&lt;br /&gt;
| Demonstrate full system functionality. Present project.&lt;br /&gt;
| Pending&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34408</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34408"/>
				<updated>2016-12-21T11:30:26Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
:The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34407</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34407"/>
				<updated>2016-12-21T11:30:04Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Objectives &amp;amp; Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
:The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
=== Objectives ===&lt;br /&gt;
&lt;br /&gt;
*Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
*Map out the software state machine diagram&lt;br /&gt;
*Design WiFi Modular physical layer&lt;br /&gt;
*Compile a Bill of Materials (BOM)&lt;br /&gt;
*Manufacture the prototype and test for reliability&lt;br /&gt;
*Record and document results for analysis and reports&lt;br /&gt;
*Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
:Brian Josefowicz&amp;lt;br /&amp;gt;&lt;br /&gt;
:B.S. Computer Engineering&amp;lt;br /&amp;gt;&lt;br /&gt;
:San Jose State University 2016&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*Overall concept and methodology&amp;lt;br /&amp;gt;&lt;br /&gt;
*Hardware and Software Design&amp;lt;br /&amp;gt;&lt;br /&gt;
*FGPA Implementation and testing&amp;lt;br /&amp;gt;&lt;br /&gt;
*Micro-controller programming&amp;lt;br /&amp;gt;&lt;br /&gt;
*Report and Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34403</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34403"/>
				<updated>2016-12-21T11:17:13Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Objectives &amp;amp; Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
&lt;br /&gt;
|The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
Objectives:&lt;br /&gt;
&lt;br /&gt;
-Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
-Map out the software state machine diagram&lt;br /&gt;
-Design WiFi Modular physical layer&lt;br /&gt;
-Compile a Bill of Materials (BOM)&lt;br /&gt;
-Manufacture the prototype and test for reliability&lt;br /&gt;
-Record and document results for analysis and reports&lt;br /&gt;
-Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
Brian Josefowicz&lt;br /&gt;
B.S. Computer Engineering&lt;br /&gt;
San Jose State University 2016&lt;br /&gt;
&lt;br /&gt;
-Overall concept and methodology&lt;br /&gt;
-Hardware and Software Design&lt;br /&gt;
-FGPA Implementation and testing&lt;br /&gt;
-Micro-controller programming&lt;br /&gt;
-Report and Analysis&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34402</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34402"/>
				<updated>2016-12-21T11:12:46Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Objectives &amp;amp; Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
The initial idea was to somehow bring two powerful aspects of computer engineering, digital design using FPGA and FreeRTOS API software implementation on a microcontroller to create one useful embedded system. Motivation to design such a system comes from the need to use sensors and communications to measure, analyze, and control the physical elements of our world. Combined with this, is our ever changing evolution of CPU architecture and optimization. Furthermore, the benefit of having control over your sensory functionality from a remote location and being able to reconfigure your host CPU is in essence a flexible capability.&lt;br /&gt;
&lt;br /&gt;
The purpose of WiFi Modular is to provide a means of wireless communication between a microcontroller and FPGA unit. To do this, a Nexys4 DDR development board with an Artix-7 was chosen for the FPGA platform. It also contains the dipswitches, pushbuttons, 7-segments and I/O port needed for the objectives. An add-on to the board is the Microchip MRF24WG0MA pmod wireless card. On the other hand, the SJone development board with an LPC1758 microcontroller was supplemented with an XBee S6B wireless card. With these two boards, a wireless communication can be established and data can be exchanged for use in various applications.&lt;br /&gt;
The goal for this project is to successfully exchange bytes between the Nexys 4 and SJone board and display the characters on the 7-segment display and output console, respectively. The bytes should be entered via an 8-dipswitch configuration for the Nexys4, and a Hercules console user input for the SJone. Each signal should be exchanged upon the Start button being depressed to initiate the idling state of the FPGA to look for incoming bytes. Bytes are exchanged between the SPI module, designed in Verilog HDL, and the Microchip wifi unit. Each state was designed to respect the timing diagram of the SPI bus provided by the wifi unit datasheet. Startup, control signal setup times, and read/write cycles were accounted for through the ASM design. Further details can be derived from the source code supplied in later sections.&lt;br /&gt;
&lt;br /&gt;
Moreso, the SJone board was supplied with an XBee SB6 unit that essentially plugs directly into the conveniently placed headers of the host board. It lands directly into the DIN and DOUT lines which are inherently either UART2 or UART3 RX/TX depending on the position of the bus select switch. For this project, the UART2 channel was chosen. To utilize the bus, a UART2 object was instantiated in software. The UART_DEV class is built on the C language, and implemented the main.cpp of a FreeRTOS API powered project. To to do this, a scheduler task was created using the ASM chart found in the later section. The basic functionality is to prioritize the task, run the routine, and break out of it entering a delay of 3 seconds to allow any other tasks to run thereafter. The program then continues to loop looking for bytes to send and receive.&lt;br /&gt;
&lt;br /&gt;
System testing will require a series of different checks. For the FPGA, a simulator test bench is required to verifiy that the SPI_Module is generating the expected outputs to all inputs. Then once the module is verfied, it must be synthesized, generated, and loaded into the FPGA. From there, dipswitch positions should be set to the desired byte to be exchanged. The SPI_Module is loaded with the value during the exchange byte operation, and sent over the MOSI line to the wifi. On the other side, the SJone has already taken an input from the user to the txC variable. This byte is sent over UART to the XBee for transmission. Afterwards, the receive function looks for the incoming byte from the FPGA. FreeRTOS allows the task to run for 3 seconds while it waits, and then exits if timeout occurs. When the program does receive a byte, it prints it to the console. This test completes when the FPGA has receive the SJone byte, vice versa, and each byte value is displayed on the others 7-segment display and output console.    &lt;br /&gt;
&lt;br /&gt;
Objectives:&lt;br /&gt;
&lt;br /&gt;
-Learn and incorporate the various RTOS resources for overall system design&lt;br /&gt;
-Map out the software state machine diagram&lt;br /&gt;
-Design WiFi Modular physical layer&lt;br /&gt;
-Compile a Bill of Materials (BOM)&lt;br /&gt;
-Manufacture the prototype and test for reliability&lt;br /&gt;
-Record and document results for analysis and reports&lt;br /&gt;
-Develop product proposal presentation (Powerpoint, Video, Website/Report)&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
Brian Josefowicz&lt;br /&gt;
B.S. Computer Engineering&lt;br /&gt;
San Jose State University 2016&lt;br /&gt;
&lt;br /&gt;
-Overall concept and methodology&lt;br /&gt;
-Hardware and Software Design&lt;br /&gt;
-FGPA Implementation and testing&lt;br /&gt;
-Micro-controller programming&lt;br /&gt;
-Report and Analysis&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34401</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34401"/>
				<updated>2016-12-21T11:11:46Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Objectives &amp;amp; Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Show list of your objectives.  This section includes the high level details of your project.  You can write about the various sensors or peripherals you used to get your project completed.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
Brian Josefowicz&lt;br /&gt;
B.S. Computer Engineering&lt;br /&gt;
San Jose State University 2016&lt;br /&gt;
&lt;br /&gt;
-Overall concept and methodology&lt;br /&gt;
-Hardware and Software Design&lt;br /&gt;
-FGPA Implementation and testing&lt;br /&gt;
-Micro-controller programming&lt;br /&gt;
-Report and Analysis&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34399</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34399"/>
				<updated>2016-12-21T10:57:38Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The contents of this report discuss the concepts, design methods, hardware, software, verification methods, and results from an embedded systems design project focused on the 802.11g band wireless communication between a micro-controller and FPGA. SPI and UART protocols were exercised as a means to exchange data between chip and wireless transceiver modules whilst a common networking protocol was used to exchange data between reference’s. All state machine, logic, and hardware diagrams are included to support the design and analysis of the project. Further test cases are presented to aide the results and remaining tasks of implementation.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Show list of your objectives.  This section includes the high level details of your project.  You can write about the various sensors or peripherals you used to get your project completed.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Yaron Alexandrovich&lt;br /&gt;
**   &lt;br /&gt;
*  Emil Kurian&lt;br /&gt;
**   &lt;br /&gt;
*  Gerard Ramos&lt;br /&gt;
**   &lt;br /&gt;
*  Fred Sun&lt;br /&gt;
**   &lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34398</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34398"/>
				<updated>2016-12-21T10:56:54Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /* Project Title */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title: Wifi Modular ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
This section should be a couple lines to describe what your project does.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Show list of your objectives.  This section includes the high level details of your project.  You can write about the various sensors or peripherals you used to get your project completed.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Yaron Alexandrovich&lt;br /&gt;
**   &lt;br /&gt;
*  Emil Kurian&lt;br /&gt;
**   &lt;br /&gt;
*  Gerard Ramos&lt;br /&gt;
**   &lt;br /&gt;
*  Fred Sun&lt;br /&gt;
**   &lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34397</id>
		<title>F16: SJone to FPGA wireless integration</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_SJone_to_FPGA_wireless_integration&amp;diff=34397"/>
				<updated>2016-12-21T10:55:47Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: Created page with &amp;quot;=== Grading Criteria === &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt; *  How well is Software &amp;amp; Hardware Design described? *  How well can this report be used to reproduce this project? *  Code Quali...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Title ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
This section should be a couple lines to describe what your project does.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Show list of your objectives.  This section includes the high level details of your project.  You can write about the various sensors or peripherals you used to get your project completed.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Yaron Alexandrovich&lt;br /&gt;
**   &lt;br /&gt;
*  Emil Kurian&lt;br /&gt;
**   &lt;br /&gt;
*  Gerard Ramos&lt;br /&gt;
**   &lt;br /&gt;
*  Fred Sun&lt;br /&gt;
**   &lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
Show your software design.  For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level.  Do not show the details of the code.  For example, do not show exact code, but you may show psuedocode and fragments of code.  Keep in mind that you are showing DESIGN of your software, not the inner workings of it.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
This section includes implementation, but again, not the details, just the high level.  For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash.  You can include sub-sections for each of your component implementation.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=Realtime_OS_on_Embedded_Systems&amp;diff=34391</id>
		<title>Realtime OS on Embedded Systems</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=Realtime_OS_on_Embedded_Systems&amp;diff=34391"/>
				<updated>2016-12-21T10:50:37Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /*  Fall 2016 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Program History ==&lt;br /&gt;
My contribution in Embedded System courses started with CmpE146.  This course teaches students on how to write UART, SPI, and I2C Drivers and interface their drivers to peripherals.  There are about 8 weekly labs in which students not only write drivers, but also learn the core of Real-time Operating Systems including threading (tasks), and inter-task communication using Queues and Semaphores.  FreeRTOS is the operating system used with C/C++ Compiler based on GNU.&lt;br /&gt;
&lt;br /&gt;
When the course was started by Dr. Ozemek @ SJSU (sometime before 2005), not many resources were out there.  Still, with helpful guidance from Dr. Ozemek, interesting projects were created.  This is when I started to help out in Embedded System Courses, and by collecting and sharing knowledge, we've raised the bar at SJSU!  &lt;br /&gt;
&lt;br /&gt;
There have been many great projects at SJSU, but since no one knew about them, the hard work went to a waste for anyone but the creator.  But now we've got the infrastructure to share the projects, which turn out as great references for future students.  Here is my project that started around 2007, and turned into Bachelor's Senior Design Project: &amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.youtube.com/watch?v=QEadXdRl3ws&amp;amp;feature=plcp YouTube Video of Self-Navigating Car]&lt;br /&gt;
&lt;br /&gt;
As of 2013, I have broadened my contribution to other embedded system courses like CmpE240, CmpE243 and CmpE244.&lt;br /&gt;
&lt;br /&gt;
== Lab Assignments ==&lt;br /&gt;
This article contains laboratory assignments and resources.  The assignments are under construction as we move towards SJ-One development board.&lt;br /&gt;
*  [[Embedded System Tutorial GPIO | Lesson 1 : GPIO]]&lt;br /&gt;
*  [[Embedded System Tutorial UART | Lesson 2 : UART]]&lt;br /&gt;
*  [[Embedded System Tutorial SPI  | Lesson 3 : SPI]]&lt;br /&gt;
*  [[Embedded System I2C Tutorial  | Lesson 4 : I2C]]&lt;br /&gt;
*  [[Embedded System Tutorial Interrupts | Lesson 5 : Interrupts]]&lt;br /&gt;
*  [[Embedded System Tutorial FreeRTOS | Lesson 6 : FreeRTOS Tasks]]&lt;br /&gt;
*  [[Embedded System Tutorial File I/O | Lesson 7 : FreeRTOS Application Programming]]&lt;br /&gt;
&lt;br /&gt;
==Other reference articles==&lt;br /&gt;
*  [[Bitmasking Tutorial]] (+ GPIO Example)&lt;br /&gt;
*  [[ LPC17xx Memory Map &amp;amp; Interrupts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
== Senior Design Projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
== Semester Projects ==&lt;br /&gt;
Every semester, students are given about 7-10 weeks to complete their projects.  During this short time-span, students form groups, order parts, and begin working on their projects.  The work performed during the semester is documented at this Wiki.&lt;br /&gt;
&lt;br /&gt;
Here is the list of Preet's documented projects:&amp;lt;BR/&amp;gt;&lt;br /&gt;
*  [[Preet's Relay Controller Project]]&lt;br /&gt;
*  [[Nordic Low Powered Mesh Network stack]]&lt;br /&gt;
*  [http://www.youtube.com/watch?v=QEadXdRl3ws&amp;amp;feature=plcp Senior Design Project (MS-CmpE) Video]&lt;br /&gt;
&lt;br /&gt;
Here is another resource for good project references :&lt;br /&gt;
[http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/ Cornell EE476 Projects]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
=== [[Fall 2016 | Fall 2016]] ===&lt;br /&gt;
&lt;br /&gt;
CMPE146:&lt;br /&gt;
* Add Your Group on Here, then follow the link to add more to your template *&lt;br /&gt;
* [http://www.socialledge.com/sjsu/index.php?title=F16:_Seismograph F16: Seismograph]&lt;br /&gt;
* [[F16: Piano Glove]]&lt;br /&gt;
* [[F16: Object Detector]]&lt;br /&gt;
* [[F16: Autonomous Nautical System]]&lt;br /&gt;
* [[F16: Autonomous Fire Extinguishing Vehicle]]&lt;br /&gt;
* [[F16: Autonomous Runaway Alarm Car]]&lt;br /&gt;
* [[F16: E-Bike]]&lt;br /&gt;
* [[F16: NotifyBox]]&lt;br /&gt;
* [[F16: Wireless Tilt Controlled Camera Arm]]&lt;br /&gt;
* [[F16: OBD2 Reader]]&lt;br /&gt;
* [[F16: Micro Watch Monitoring System]]&lt;br /&gt;
* [[F16: Door Alarm System]]&lt;br /&gt;
* [[http://www.socialledge.com/sjsu/index.php?title=F16:_I2Coffee F16: UART Coffee]]&lt;br /&gt;
* [[F16: SJone to FPGA wireless integration]]&lt;br /&gt;
&lt;br /&gt;
=== [[Spring 2016 | Spring 2016]] ===&lt;br /&gt;
*  [[S16: Fantastic Four]]&lt;br /&gt;
*  [[S16: Simpsons]]&lt;br /&gt;
*  [[S16: Mars 1]]&lt;br /&gt;
*  [[S16: OpenSJ Bluz]]&lt;br /&gt;
*  [[S16: Motion Copy Bot]]&lt;br /&gt;
*  [[S16: Biker Assist]]&lt;br /&gt;
*  [[S16: Helios]]&lt;br /&gt;
*  [[S16: Sound Buddy]]&lt;br /&gt;
*  [[S16: Warriors]]&lt;br /&gt;
*  [[S16: Expendables]]&lt;br /&gt;
*  [[S16: Ahava]]&lt;br /&gt;
*  [[S16: Number 1]]&lt;br /&gt;
*  [[S16: SkyNet]]&lt;br /&gt;
*  [[S16: SmartDoorLock]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cmpe 146:&lt;br /&gt;
*  [[S16: Camera Gimbal]]&lt;br /&gt;
*  [[S16: Laser Harp]]&lt;br /&gt;
*  &amp;lt;strike&amp;gt;[[S16: Laser Cutter Motor Controller]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
*  [[S16: Sprinkler]]&lt;br /&gt;
*  [[S16: The Jatrick Car]]&lt;br /&gt;
*  [[S16: Dan]]&lt;br /&gt;
*  [[S16: Robolamp]]&lt;br /&gt;
*  [[S16: Pinball]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[Fall 2015 | Fall 2015]] ===&lt;br /&gt;
&lt;br /&gt;
CmpE146:&lt;br /&gt;
* [[F15: Autonomous Mobile]]&lt;br /&gt;
* [[F15: Car Report]]&lt;br /&gt;
* [[F15: Electronic Piano]]&lt;br /&gt;
* [[F15: Doorknock over Bluetooth]]&lt;br /&gt;
* [[F15: Smart Car]]&lt;br /&gt;
* [[F15: Plant Control]]&lt;br /&gt;
* [[F15: Laser Security System]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE244 Spring 2015 | Spring 2015]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* [[S15: Quadcopter - It flies]]&lt;br /&gt;
* [[S15: Remote Learner]]&lt;br /&gt;
* [[S15: Protocol Interface: I2C - CAN Bridge]]&lt;br /&gt;
* [[S15: Vision RC Car]]&lt;br /&gt;
* [[S15: SJeight Octocopter]]&lt;br /&gt;
* [[S15: Swarm Robots]]&lt;br /&gt;
* [[S15: Smart Sparta Parking System]]&lt;br /&gt;
* [[S15: Touch Navigator]]&lt;br /&gt;
* [[S15: Wizard's Chess System]]&lt;br /&gt;
* [[S15: Bug Rider]]&lt;br /&gt;
* [[S15: Real Time Brake Assist (RTBA)]]&lt;br /&gt;
* [[S15: Wireless Mesh Network]]&lt;br /&gt;
* [[S15: Wireless Power Transfer System]]&lt;br /&gt;
* [[S15: Drone]]&lt;br /&gt;
* [[S15: Tree Node using Google Protocol Buffers]]&lt;br /&gt;
* [[S15: Multi-media Car]]&lt;br /&gt;
* [[S15: Hand Gesture Recognition using IR Sensors]]&lt;br /&gt;
* [[S15: CAN controlled RGB LED cubes]]&lt;br /&gt;
* [[S15: Rubik's Cube Solver]]&lt;br /&gt;
* [[S15: RFID Security Box]]&lt;br /&gt;
* [[S15: Automated Meeting Room Reservation]]&lt;br /&gt;
* [[S15: Patient Buddy System (PBS)]]&lt;br /&gt;
&lt;br /&gt;
CmpE146:&lt;br /&gt;
* [[S15: Hovercopter]]&lt;br /&gt;
* [[S15: Triclops: Smart RC Car]]&lt;br /&gt;
* [[S15: Connect Four - Robotic Player]]&lt;br /&gt;
* [[S15: Self-Balancing Robot]]&lt;br /&gt;
* [[S15: MP3 Player with Graphic Equalizer Display]]&lt;br /&gt;
* [[S15: Motion-Controlled RC Car]]&lt;br /&gt;
* [[S15: MENL (Monster Encounter Night Light) ]]&lt;br /&gt;
* [[S15: Tilt Motion Controlled LED Alarm Clock]]&lt;br /&gt;
* [[S15: Alarm Based Coffee Maker]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE244 Spring 2014 | Spring 2014]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*  Senior Project: [[Project Advising: Remote Security System]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* [[S14: Quadcopter]]&lt;br /&gt;
* [[S14: Smart Weather Clock]]&lt;br /&gt;
* [[S14: Divine WINd]]&lt;br /&gt;
* [[S14: Data Acquisition using CAN bus]]&lt;br /&gt;
* [[S14: E-Ink Display for Shopping Tags]]&lt;br /&gt;
* [[S14: Spectrum Analyzer for Audio Frequency Signals]]&lt;br /&gt;
* [[S14: CAN Firmware Uploader]]&lt;br /&gt;
* [[S14: Asset Management and Location System]]&lt;br /&gt;
* [[S14: Location  Tracker]]&lt;br /&gt;
* [[S14:  Androbot]]&lt;br /&gt;
* [[S14: Virtual Dog]]&lt;br /&gt;
* [[S14: Android based Automation]]&lt;br /&gt;
* [[S14: FaceTime Robo]]&lt;br /&gt;
* [[S14: Wireless Control Car]]&lt;br /&gt;
* [[S14: Power Efficient Security Door System for Light-rail using CAN Bus]]&lt;br /&gt;
* [[S14: Android based home monitoring system]]&lt;br /&gt;
* [[S14: Need For Speed]]&lt;br /&gt;
&lt;br /&gt;
CmpE146&lt;br /&gt;
* [[S14: Hyperintelligent NFC Locker of the Future]]&lt;br /&gt;
* [[S14: Smart Planter]]&lt;br /&gt;
* [[S14: Modular Security System]]&lt;br /&gt;
* [[S14: Autonomous Control System]]&lt;br /&gt;
* [[S14: Anti-Crash Car]]&lt;br /&gt;
* [[S14: Tricopter]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE240 Fall 2013 | Fall 2013]] ===&lt;br /&gt;
&lt;br /&gt;
* [[F13: POV Display]]&lt;br /&gt;
* [[F13: Line Following Robot]]&lt;br /&gt;
* [[F13: LED Display]]&lt;br /&gt;
* [[F13: Bulb Ramper]]&lt;br /&gt;
* [[F13: Garage Parking Assistant]]&lt;br /&gt;
* [[F13: Quadcopter]]&lt;br /&gt;
* [[F13: BarkMaster2000]]&lt;br /&gt;
* [[F13: Remote Control Car]]&lt;br /&gt;
* [[F13: Obstacle Avoidance Robot]]&lt;br /&gt;
* [[F13: Vehicle On Board Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Spring 2013 | Spring 2013]] ===&lt;br /&gt;
&lt;br /&gt;
* [[S13: 2D Plotter]]&lt;br /&gt;
* [[S13: Smart Cube]]&lt;br /&gt;
* [[S13: Garage Parking Aid]]&lt;br /&gt;
* [[S13: Smart Security]]&lt;br /&gt;
* [[S13: Door Alarm System]]&lt;br /&gt;
* [[S13: Solar Panel Tracker]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Fall 2012|Fall 2012]] ===&lt;br /&gt;
&lt;br /&gt;
* [[F12: Evil Watchdog]]&lt;br /&gt;
* [[F12: Smart Bulb]]&lt;br /&gt;
* [[F12: All Your Base are Belong to You]]&lt;br /&gt;
* [[F12: Android Controlled MP3]]&lt;br /&gt;
* [[F12: Unified Wireless Health Monitoring System]]&lt;br /&gt;
* [[F12: OBD-II Android Monitor]]&lt;br /&gt;
* [[F12: Self-Driving GPS Following Car]]&lt;br /&gt;
* [[F12: Android Door Lock]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Spring 2012|Spring 2012]] ===&lt;br /&gt;
*  [[S12: FreeRTOS based QuadCopter]]&lt;br /&gt;
*  [[S12: Web-based MP3 Player]]&lt;br /&gt;
*  [[S12: Self Drive Car]]&lt;br /&gt;
*  [[S12: VAndroid]]&lt;br /&gt;
*  [[S12: Traffic Light Sensing Vehicle]]&lt;br /&gt;
*  [[S12: Sound Reader]]&lt;br /&gt;
*  [[S12: Remote Controlled MP3 Player]]&lt;br /&gt;
*  [[S12: Android Controlled Robot]]&lt;br /&gt;
*  [[S12: Eyes-Free GPS]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Handy References ==&lt;br /&gt;
*  [[Sample Project Report]]&lt;br /&gt;
*  [[Project Proposal Guidelines]]&lt;br /&gt;
*  [[CmpE146 Lab. Resources]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=Realtime_OS_on_Embedded_Systems&amp;diff=34390</id>
		<title>Realtime OS on Embedded Systems</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=Realtime_OS_on_Embedded_Systems&amp;diff=34390"/>
				<updated>2016-12-21T10:49:41Z</updated>
		
		<summary type="html">&lt;p&gt;146 user10: /*  Fall 2016 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Program History ==&lt;br /&gt;
My contribution in Embedded System courses started with CmpE146.  This course teaches students on how to write UART, SPI, and I2C Drivers and interface their drivers to peripherals.  There are about 8 weekly labs in which students not only write drivers, but also learn the core of Real-time Operating Systems including threading (tasks), and inter-task communication using Queues and Semaphores.  FreeRTOS is the operating system used with C/C++ Compiler based on GNU.&lt;br /&gt;
&lt;br /&gt;
When the course was started by Dr. Ozemek @ SJSU (sometime before 2005), not many resources were out there.  Still, with helpful guidance from Dr. Ozemek, interesting projects were created.  This is when I started to help out in Embedded System Courses, and by collecting and sharing knowledge, we've raised the bar at SJSU!  &lt;br /&gt;
&lt;br /&gt;
There have been many great projects at SJSU, but since no one knew about them, the hard work went to a waste for anyone but the creator.  But now we've got the infrastructure to share the projects, which turn out as great references for future students.  Here is my project that started around 2007, and turned into Bachelor's Senior Design Project: &amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.youtube.com/watch?v=QEadXdRl3ws&amp;amp;feature=plcp YouTube Video of Self-Navigating Car]&lt;br /&gt;
&lt;br /&gt;
As of 2013, I have broadened my contribution to other embedded system courses like CmpE240, CmpE243 and CmpE244.&lt;br /&gt;
&lt;br /&gt;
== Lab Assignments ==&lt;br /&gt;
This article contains laboratory assignments and resources.  The assignments are under construction as we move towards SJ-One development board.&lt;br /&gt;
*  [[Embedded System Tutorial GPIO | Lesson 1 : GPIO]]&lt;br /&gt;
*  [[Embedded System Tutorial UART | Lesson 2 : UART]]&lt;br /&gt;
*  [[Embedded System Tutorial SPI  | Lesson 3 : SPI]]&lt;br /&gt;
*  [[Embedded System I2C Tutorial  | Lesson 4 : I2C]]&lt;br /&gt;
*  [[Embedded System Tutorial Interrupts | Lesson 5 : Interrupts]]&lt;br /&gt;
*  [[Embedded System Tutorial FreeRTOS | Lesson 6 : FreeRTOS Tasks]]&lt;br /&gt;
*  [[Embedded System Tutorial File I/O | Lesson 7 : FreeRTOS Application Programming]]&lt;br /&gt;
&lt;br /&gt;
==Other reference articles==&lt;br /&gt;
*  [[Bitmasking Tutorial]] (+ GPIO Example)&lt;br /&gt;
*  [[ LPC17xx Memory Map &amp;amp; Interrupts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
== Senior Design Projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
== Semester Projects ==&lt;br /&gt;
Every semester, students are given about 7-10 weeks to complete their projects.  During this short time-span, students form groups, order parts, and begin working on their projects.  The work performed during the semester is documented at this Wiki.&lt;br /&gt;
&lt;br /&gt;
Here is the list of Preet's documented projects:&amp;lt;BR/&amp;gt;&lt;br /&gt;
*  [[Preet's Relay Controller Project]]&lt;br /&gt;
*  [[Nordic Low Powered Mesh Network stack]]&lt;br /&gt;
*  [http://www.youtube.com/watch?v=QEadXdRl3ws&amp;amp;feature=plcp Senior Design Project (MS-CmpE) Video]&lt;br /&gt;
&lt;br /&gt;
Here is another resource for good project references :&lt;br /&gt;
[http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/ Cornell EE476 Projects]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
=== [[Fall 2016 | Fall 2016]] ===&lt;br /&gt;
&lt;br /&gt;
CMPE146:&lt;br /&gt;
* Add Your Group on Here, then follow the link to add more to your template *&lt;br /&gt;
* [http://www.socialledge.com/sjsu/index.php?title=F16:_Seismograph F16: Seismograph]&lt;br /&gt;
* [[F16: Piano Glove]]&lt;br /&gt;
* [[F16: Object Detector]]&lt;br /&gt;
* [[F16: Autonomous Nautical System]]&lt;br /&gt;
* [[F16: Autonomous Fire Extinguishing Vehicle]]&lt;br /&gt;
* [[F16: Autonomous Runaway Alarm Car]]&lt;br /&gt;
* [[F16: E-Bike]]&lt;br /&gt;
* [[F16: NotifyBox]]&lt;br /&gt;
* [[F16: Wireless Tilt Controlled Camera Arm]]&lt;br /&gt;
* [[F16: OBD2 Reader]]&lt;br /&gt;
* [[F16: Micro Watch Monitoring System]]&lt;br /&gt;
* [[F16: Door Alarm System]]&lt;br /&gt;
* [[http://www.socialledge.com/sjsu/index.php?title=F16:_I2Coffee F16: UART Coffee]]&lt;br /&gt;
* [[F16: ''WiFi'' Modular]]&lt;br /&gt;
&lt;br /&gt;
=== [[Spring 2016 | Spring 2016]] ===&lt;br /&gt;
*  [[S16: Fantastic Four]]&lt;br /&gt;
*  [[S16: Simpsons]]&lt;br /&gt;
*  [[S16: Mars 1]]&lt;br /&gt;
*  [[S16: OpenSJ Bluz]]&lt;br /&gt;
*  [[S16: Motion Copy Bot]]&lt;br /&gt;
*  [[S16: Biker Assist]]&lt;br /&gt;
*  [[S16: Helios]]&lt;br /&gt;
*  [[S16: Sound Buddy]]&lt;br /&gt;
*  [[S16: Warriors]]&lt;br /&gt;
*  [[S16: Expendables]]&lt;br /&gt;
*  [[S16: Ahava]]&lt;br /&gt;
*  [[S16: Number 1]]&lt;br /&gt;
*  [[S16: SkyNet]]&lt;br /&gt;
*  [[S16: SmartDoorLock]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cmpe 146:&lt;br /&gt;
*  [[S16: Camera Gimbal]]&lt;br /&gt;
*  [[S16: Laser Harp]]&lt;br /&gt;
*  &amp;lt;strike&amp;gt;[[S16: Laser Cutter Motor Controller]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
*  [[S16: Sprinkler]]&lt;br /&gt;
*  [[S16: The Jatrick Car]]&lt;br /&gt;
*  [[S16: Dan]]&lt;br /&gt;
*  [[S16: Robolamp]]&lt;br /&gt;
*  [[S16: Pinball]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[Fall 2015 | Fall 2015]] ===&lt;br /&gt;
&lt;br /&gt;
CmpE146:&lt;br /&gt;
* [[F15: Autonomous Mobile]]&lt;br /&gt;
* [[F15: Car Report]]&lt;br /&gt;
* [[F15: Electronic Piano]]&lt;br /&gt;
* [[F15: Doorknock over Bluetooth]]&lt;br /&gt;
* [[F15: Smart Car]]&lt;br /&gt;
* [[F15: Plant Control]]&lt;br /&gt;
* [[F15: Laser Security System]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE244 Spring 2015 | Spring 2015]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* [[S15: Quadcopter - It flies]]&lt;br /&gt;
* [[S15: Remote Learner]]&lt;br /&gt;
* [[S15: Protocol Interface: I2C - CAN Bridge]]&lt;br /&gt;
* [[S15: Vision RC Car]]&lt;br /&gt;
* [[S15: SJeight Octocopter]]&lt;br /&gt;
* [[S15: Swarm Robots]]&lt;br /&gt;
* [[S15: Smart Sparta Parking System]]&lt;br /&gt;
* [[S15: Touch Navigator]]&lt;br /&gt;
* [[S15: Wizard's Chess System]]&lt;br /&gt;
* [[S15: Bug Rider]]&lt;br /&gt;
* [[S15: Real Time Brake Assist (RTBA)]]&lt;br /&gt;
* [[S15: Wireless Mesh Network]]&lt;br /&gt;
* [[S15: Wireless Power Transfer System]]&lt;br /&gt;
* [[S15: Drone]]&lt;br /&gt;
* [[S15: Tree Node using Google Protocol Buffers]]&lt;br /&gt;
* [[S15: Multi-media Car]]&lt;br /&gt;
* [[S15: Hand Gesture Recognition using IR Sensors]]&lt;br /&gt;
* [[S15: CAN controlled RGB LED cubes]]&lt;br /&gt;
* [[S15: Rubik's Cube Solver]]&lt;br /&gt;
* [[S15: RFID Security Box]]&lt;br /&gt;
* [[S15: Automated Meeting Room Reservation]]&lt;br /&gt;
* [[S15: Patient Buddy System (PBS)]]&lt;br /&gt;
&lt;br /&gt;
CmpE146:&lt;br /&gt;
* [[S15: Hovercopter]]&lt;br /&gt;
* [[S15: Triclops: Smart RC Car]]&lt;br /&gt;
* [[S15: Connect Four - Robotic Player]]&lt;br /&gt;
* [[S15: Self-Balancing Robot]]&lt;br /&gt;
* [[S15: MP3 Player with Graphic Equalizer Display]]&lt;br /&gt;
* [[S15: Motion-Controlled RC Car]]&lt;br /&gt;
* [[S15: MENL (Monster Encounter Night Light) ]]&lt;br /&gt;
* [[S15: Tilt Motion Controlled LED Alarm Clock]]&lt;br /&gt;
* [[S15: Alarm Based Coffee Maker]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE244 Spring 2014 | Spring 2014]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*  Senior Project: [[Project Advising: Remote Security System]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* [[S14: Quadcopter]]&lt;br /&gt;
* [[S14: Smart Weather Clock]]&lt;br /&gt;
* [[S14: Divine WINd]]&lt;br /&gt;
* [[S14: Data Acquisition using CAN bus]]&lt;br /&gt;
* [[S14: E-Ink Display for Shopping Tags]]&lt;br /&gt;
* [[S14: Spectrum Analyzer for Audio Frequency Signals]]&lt;br /&gt;
* [[S14: CAN Firmware Uploader]]&lt;br /&gt;
* [[S14: Asset Management and Location System]]&lt;br /&gt;
* [[S14: Location  Tracker]]&lt;br /&gt;
* [[S14:  Androbot]]&lt;br /&gt;
* [[S14: Virtual Dog]]&lt;br /&gt;
* [[S14: Android based Automation]]&lt;br /&gt;
* [[S14: FaceTime Robo]]&lt;br /&gt;
* [[S14: Wireless Control Car]]&lt;br /&gt;
* [[S14: Power Efficient Security Door System for Light-rail using CAN Bus]]&lt;br /&gt;
* [[S14: Android based home monitoring system]]&lt;br /&gt;
* [[S14: Need For Speed]]&lt;br /&gt;
&lt;br /&gt;
CmpE146&lt;br /&gt;
* [[S14: Hyperintelligent NFC Locker of the Future]]&lt;br /&gt;
* [[S14: Smart Planter]]&lt;br /&gt;
* [[S14: Modular Security System]]&lt;br /&gt;
* [[S14: Autonomous Control System]]&lt;br /&gt;
* [[S14: Anti-Crash Car]]&lt;br /&gt;
* [[S14: Tricopter]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE240 Fall 2013 | Fall 2013]] ===&lt;br /&gt;
&lt;br /&gt;
* [[F13: POV Display]]&lt;br /&gt;
* [[F13: Line Following Robot]]&lt;br /&gt;
* [[F13: LED Display]]&lt;br /&gt;
* [[F13: Bulb Ramper]]&lt;br /&gt;
* [[F13: Garage Parking Assistant]]&lt;br /&gt;
* [[F13: Quadcopter]]&lt;br /&gt;
* [[F13: BarkMaster2000]]&lt;br /&gt;
* [[F13: Remote Control Car]]&lt;br /&gt;
* [[F13: Obstacle Avoidance Robot]]&lt;br /&gt;
* [[F13: Vehicle On Board Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Spring 2013 | Spring 2013]] ===&lt;br /&gt;
&lt;br /&gt;
* [[S13: 2D Plotter]]&lt;br /&gt;
* [[S13: Smart Cube]]&lt;br /&gt;
* [[S13: Garage Parking Aid]]&lt;br /&gt;
* [[S13: Smart Security]]&lt;br /&gt;
* [[S13: Door Alarm System]]&lt;br /&gt;
* [[S13: Solar Panel Tracker]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Fall 2012|Fall 2012]] ===&lt;br /&gt;
&lt;br /&gt;
* [[F12: Evil Watchdog]]&lt;br /&gt;
* [[F12: Smart Bulb]]&lt;br /&gt;
* [[F12: All Your Base are Belong to You]]&lt;br /&gt;
* [[F12: Android Controlled MP3]]&lt;br /&gt;
* [[F12: Unified Wireless Health Monitoring System]]&lt;br /&gt;
* [[F12: OBD-II Android Monitor]]&lt;br /&gt;
* [[F12: Self-Driving GPS Following Car]]&lt;br /&gt;
* [[F12: Android Door Lock]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Spring 2012|Spring 2012]] ===&lt;br /&gt;
*  [[S12: FreeRTOS based QuadCopter]]&lt;br /&gt;
*  [[S12: Web-based MP3 Player]]&lt;br /&gt;
*  [[S12: Self Drive Car]]&lt;br /&gt;
*  [[S12: VAndroid]]&lt;br /&gt;
*  [[S12: Traffic Light Sensing Vehicle]]&lt;br /&gt;
*  [[S12: Sound Reader]]&lt;br /&gt;
*  [[S12: Remote Controlled MP3 Player]]&lt;br /&gt;
*  [[S12: Android Controlled Robot]]&lt;br /&gt;
*  [[S12: Eyes-Free GPS]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Handy References ==&lt;br /&gt;
*  [[Sample Project Report]]&lt;br /&gt;
*  [[Project Proposal Guidelines]]&lt;br /&gt;
*  [[CmpE146 Lab. Resources]]&lt;/div&gt;</summary>
		<author><name>146 user10</name></author>	</entry>

	</feed>