Skip to content

Commit

Permalink
ip: Pmods: PmodGPS: Validated for 2015.4
Browse files Browse the repository at this point in the history
Driver code formatting and commenting
Demo rework
   Interrupts are now required for the demo
   Interrupt system setup moved to main.c
Added README
  • Loading branch information
atangzwj committed Oct 14, 2017
1 parent f9aff46 commit f044292
Show file tree
Hide file tree
Showing 5 changed files with 1,922 additions and 1,686 deletions.
52 changes: 52 additions & 0 deletions ip/Pmods/PmodGPS_v1_1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
PmodGPS IP
==============

Using the IP in Vivado
--------------
A tutorial for using Pmod IP cores in Vivado is available [here](https://reference.digilentinc.com/learn/programmable-logic/tutorials/pmod-ips/start).
This Pmod IP does not require interrupts for normal operation, but the demo
supplied with the drivers requires interrupts, be sure to follow the section
for connecting interrupts in the tutorial above if you will be using the demo.
More details on interrupts and polling are available in the following section.

Demo Program in Xilinx SDK
--------------
The demo program continuously prints location data provided by the PmodGPS. That
data is formatted as follows:

- Latitude:
- Longitude:
- Altitude:
- Number of Satellites:

If the PmodGPS fails to connect to the GPS satellites, the demo will only print
out the line for number of satellites.

The demo program uses interrupts, but the IP can also be polled for data. To use
the IP in polling mode, call the function GPS_getData(), then call the functions
that return the information you want (getLatitude(), getLongitude(), etc.).

The PmodGPS generally has trouble connecting to the satellites while indoors. If
you have connectivity issues, try taking the Pmod outdoors or next to a window.
A way to see if the Pmod has been able to determine its location is to check
the LED on the Pmod. If the Pmod has determined its location, the LED will stay
off; otherwise, the LED will alternate between on and off every second.

To set up the demo you will need to open a serial terminal, such as TeraTerm, to
see the data being printed out. Settings for the terminal will vary depending on
your board.

For Zynq projects, apply the following settings:
- Baud rate: 115200
- Data bits: 8
- Parity: none
- Stop bits: 1

For MicroBlaze projects, apply the settings according to the AXI Uartlite IP
configurations. These settings can be found by double clicking the AXI Uartlite
IP in the block design and clicking the IP Configuration tab.

When viewing the demo's output in certain terminals, the degree symbol in the
latitude and longitude lines may not display correctly. A way to work around
this is to log the terminal's output to a text file, which should display all
characters correctly.
18 changes: 9 additions & 9 deletions ip/Pmods/PmodGPS_v1_1/component.xml
Original file line number Diff line number Diff line change
Expand Up @@ -887,7 +887,7 @@
<spirit:parameters>
<spirit:parameter>
<spirit:name>viewChecksum</spirit:name>
<spirit:value>2a23500b</spirit:value>
<spirit:value>7885f72f</spirit:value>
</spirit:parameter>
</spirit:parameters>
</spirit:view>
Expand All @@ -912,7 +912,7 @@
<spirit:parameters>
<spirit:parameter>
<spirit:name>viewChecksum</spirit:name>
<spirit:value>4f2e8964</spirit:value>
<spirit:value>d36f913e</spirit:value>
</spirit:parameter>
</spirit:parameters>
</spirit:view>
Expand Down Expand Up @@ -940,7 +940,7 @@
<spirit:parameters>
<spirit:parameter>
<spirit:name>viewChecksum</spirit:name>
<spirit:value>ae1daae8</spirit:value>
<spirit:value>010927f3</spirit:value>
</spirit:parameter>
</spirit:parameters>
</spirit:view>
Expand All @@ -954,7 +954,7 @@
<spirit:parameters>
<spirit:parameter>
<spirit:name>viewChecksum</spirit:name>
<spirit:value>142ef21f</spirit:value>
<spirit:value>1b4224ac</spirit:value>
</spirit:parameter>
</spirit:parameters>
</spirit:view>
Expand Down Expand Up @@ -1853,7 +1853,7 @@
<spirit:file>
<spirit:name>src/PmodGPS.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType>
<spirit:userFileType>CHECKSUM_b90ce24d</spirit:userFileType>
<spirit:userFileType>CHECKSUM_a9a07c38</spirit:userFileType>
<spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
</spirit:file>
</spirit:fileSet>
Expand Down Expand Up @@ -2099,15 +2099,15 @@
<xilinx:taxonomy>/UserIP</xilinx:taxonomy>
</xilinx:taxonomies>
<xilinx:displayName>PmodGPS_v1_1</xilinx:displayName>
<xilinx:coreRevision>4</xilinx:coreRevision>
<xilinx:coreCreationDateTime>2016-04-15T02:11:07Z</xilinx:coreCreationDateTime>
<xilinx:coreRevision>12</xilinx:coreRevision>
<xilinx:coreCreationDateTime>2017-10-13T20:13:55Z</xilinx:coreCreationDateTime>
<xilinx:tags>
<xilinx:tag xilinx:name="natinst.com:user:PmodGPS:1.0_ARCHIVE_LOCATION">C:/Tommywork/PmodGPS_v1_1</xilinx:tag>
<xilinx:tag xilinx:name="digilentinc.com:user:PmodGPS:1.0_ARCHIVE_LOCATION">C:/Tommywork/PmodGPS_v1_1</xilinx:tag>
<xilinx:tag xilinx:name="digilentinc.com:user:PmodGP:1.0_ARCHIVE_LOCATION">C:/Tommywork/PmodGPS_v1_1</xilinx:tag>
<xilinx:tag xilinx:name="digilentinc.com:IP:PmodGP:1.0_ARCHIVE_LOCATION">C:/Tommywork/PmodGPS_v1_1</xilinx:tag>
<xilinx:tag xilinx:name="digilentinc.com:IP:PmodGPS:1.0_ARCHIVE_LOCATION">C:/Tommywork/PmodGPS_v1_1</xilinx:tag>
<xilinx:tag xilinx:name="digilentinc.com:IP:PmodGPS:1.1_ARCHIVE_LOCATION">C:/Tommywork/PmodGPS_v1_1</xilinx:tag>
<xilinx:tag xilinx:name="digilentinc.com:IP:PmodGPS:1.1_ARCHIVE_LOCATION">C:/Users/user/Desktop/vivLib/ip/Pmods/PmodGPS_v1_1</xilinx:tag>
</xilinx:tags>
<xilinx:configElementInfos>
<xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.AXI_LITE_GPIO.ADDR_WIDTH" xilinx:valueSource="user"/>
Expand Down Expand Up @@ -2163,7 +2163,7 @@
<xilinx:xilinxVersion>2015.4</xilinx:xilinxVersion>
<xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="e9e6f907"/>
<xilinx:checksum xilinx:scope="memoryMaps" xilinx:value="cd480073"/>
<xilinx:checksum xilinx:scope="fileGroups" xilinx:value="670feef0"/>
<xilinx:checksum xilinx:scope="fileGroups" xilinx:value="67e5fa68"/>
<xilinx:checksum xilinx:scope="ports" xilinx:value="722c7981"/>
<xilinx:checksum xilinx:scope="parameters" xilinx:value="b17d4ed1"/>
</xilinx:packagingInfo>
Expand Down
Loading

0 comments on commit f044292

Please sign in to comment.