The design files reside in GPS_Baseband/verilog/rtl/gps_engine
and are listed below.
accumulator.v
- 20 bit accumulatoradc2to3bit.v
- Two to three bit mapping of the input dataclk_gen_gps_new.v
- Module containing NCO for Carrier Generation and code clock generationcodectrllogic.v
- Topmost module for generation of three versions of Goldcodes (Early,Late,Prompt)codegen.v
- Goldcode instantiation modulegoldcode.v
- Goldcode generation module based on the Satellite IDgps_multichannel.v
- Topmost Module containing 8 single channels and address decodinggps_single_channel.v
- Single channel module containing all module instantiations and Wishbone Interfacesignmag_twocomp_vv.v
- Sign Magnitude to Two's complement Conversionsignmul.v
- 3 bit Sign Magnitude Number multiplierthresh_control.v
- Threshold check block to generate Carrier change pulse to invoke Dopplerthreshold.v
- Threshold check block to check whether the satellite is acquired or nottrack_intganddump.v
- Gold code multiplication with Integrate and dumping of 6 signals(3 - i and 3 - q)wb_interface.v
- Wishbone Interface containing Registers and flag declarationsFurther explanation on the operation given in.
The testbench given here requires two programs.
Icarus Iverilog - Please take a look at iverilog's github repository (link given above) for installation instructions.
GTKWave Analyser - GTKWave can be installed easily on Ubuntu using apt
, the package manager.
sudo apt-get install gtkwave
Once these programs are installed, you can open your terminal in this folder (/verilog/dv/wb_bfm_goldcode_test
) and run the following commands.
chmod +x verify_gold.sh ./verify_gold.sh
In the window opened by GTKWave, please click on gps_engine_tb
that appears on the left pane. It will list internal instantiations. Go through the hierarchy and select any signal which you want to view and click insert which will be present at the bottom.
Go Inside gps_engine_i
--> ch1
--> tid
--> Click on it to list the waveforms in that module --> Click on dip_track
,die_track
,dil_track
and give insert --> You will be able to see a drastic increase in the accumulated value around 6ms which shows us that the Gold code generation is done correctly.