How are pseudo ranges obtained?

  • Thread starter plain stupid
  • Start date
In summary, the professor from Standard University explains that navigation data is not necessary to compute pseudoranges, but that the C/A code or whatever is used to determine these things. Another source says that the signal sent from the satellite consists of the carrier signal, the ranging code, and the navigation data.
  • #1
plain stupid
18
1
I've been reading about this, but the sources I've consulted differ on what exactly is the case, fundamentally. I know this is a pretty basic question, but you'll see what I mean.

In this () YouTube video, the professor (I assume) from Standard University explains (in the first 5 minutes of the video) that transmission time is stamped on the signal in the navigation message. From this, and the time we record the arrival of the signal, we get these pseudoranges (simply multiply the time diff. with the speed of light), which we then use in those four equations (I know they instead linearize them and use some iterative methods, but who cares), etc.

Another source (https://www.e-education.psu.edu/geog862/node/1756) says the following under the heading Code Correlation:

To conceptualize the process, one can imagine two codes generated at precisely the same time and identical in every regard: one in the satellite and one in the receiver. The satellite sends its code to the receiver but, on its arrival, the codes do not line up even though they are identical. They do not correlate, that is until the replica code in the receiver is time shifted a little bit. Once that is done, the receiver generated replica code fits the received satellite code. It is this time shift that reveals the propagation delay. The propagation delay is the time it took the signal to make the trip from the satellite to the receiver, dτ. It is the same idea described above as the time it took the tone to travel through the telephone lines, except the GPS code is traveling through space and atmosphere. Once the time shift of the replica code is accomplished, the two codes match perfectly and the time the satellite signal spends in transit has been measured, well, almost.

From this, I see that there's no need to use the navigation message; one instead simply shifts (with time) this receiver-generated signal, until it matches the received signal (from the satellite). This time difference, when multiplied by the speed of light would give us the pseudorange.

Another source (https://gssc.esa.int/navipedia/GNSS_Book/ESA_GNSS-Book_TM-23_Vol_I.pdf) says on p.18 in the book (30 in the document), in describing the signal sent from the satellite, that it consists of:

- the carrier signal,
- the ranging code: "Sequences of zeros and ones which allow the receiver to determine the travel time of the radio signal from the satellite to the receiver. They are called PRN sequences or PRN codes."
- navigation data: "A binary-coded message providing information on thesatellite ephemeris (pseudo-Keplerian elements or satellite positionand velocity), clock bias parameters, almanac (with a reduced-accuracy ephemeris data set), satellite health status and other complementary information."

From this, again, I can only conclude that the navigation data (contained in the navigation message) isn't necessary to (ultimately) compute pseudoranges, but that this C/A code or whatever is in fact used to determine these things.

On p.65 in that same book (77 in the PDF), there's also an inadequate description of this entire process:

"As mentioned in section 2.2, the GNSS signals contain ranging codes toallow users to compute the travel time ∆T. Indeed, the receiver determines ∆T by correlating the received code (P) from the satellite with a replicaof this code generated in the receiver, so this replica moves in time (∆T)until the maximum correlation is obtained (see Fig. 4.1)."

This description sort of matches the one provided by the 'GPS and GNSS for Geospatial Professionals' (second URL) excerpt above this one.

Absolutely nowhere is this explained in any detail.

What confuses me further is when I take actual GPS data using my smartphone, I get these so-called RINEX O files, which only contain pseudoranges every, I don't know, 5 s or something. In order for me to compute actual positions, I need RINEX N files, which contain navigation messages. Now, here's the thing, these N files contain data that satellites broadcast (I use so-called brdc, broadcast files, which I download directly from cddis.nasa.gov, which contain nonredundant Navigation messages from all satellites, as recorded by many stations, and which are compiled into a single file) every two hours. So I don't think navigation messages actually contain any sort of current data (current time, satellite position) (I see no reason why they should), but rather some parameters that can be used to approximate the transmitting satellite's orbit, given any possible timestamp. Maybe it's this nonredundancy thing where they simply cut out all those equivalent messages because aside from the current time, each satellite transmits the same navigation message throughout the period of 2 hours, when they change it a bit. So maybe that's why I don't see as many navigation messages in these files as there could be.

I hope someone can clarify this basic thing for me. Thank you.
 
Engineering news on Phys.org
  • #2
Each channel of a GPS receiver locks to a different PRBS code from a different satellite. Once locked, the relative phase of those fixed length PRBS sequences can be determined, then multiplied by c to get the pseudoranges of the pseudo random binary sequences.

The position of the satellites is then computed from the ephemerides, and the receiver position found by solving for the receiver clock offset applied to all channels. An accurate time can then be computed.
 
  • #3
Baluncore said:
Each channel of a GPS receiver locks to a different PRBS code from a different satellite. Once locked, the relative phase of those fixed length PRBS sequences can be determined, then multiplied by c to get the pseudoranges of the pseudo random binary sequences.
I'm sorry, I'm still confused. This sounds like yet a third method, possibly. Could you clarify what you mean by "locking" and "relative phase"?

Are you summarizing the method described on the website (https://www.e-education.psu.edu/geog862/node/1756)? )?

That is, do you mean simply that first the receiver determines which PRBS code it should be replicating for each of those SVs, given that they have different PRBS codes (= locking(?)), and then it does what's described on the website (https://www.e-education.psu.edu/geog862/node/1756) as figuring out which portion of the PRBS code the received one represents, i.e. where (= relative phase) it is with respect to the generated PRBS code, by simply waiting until the codes match, and taking this time difference * c to get the pseudorange?

And just so it's clear, you're saying then that the YouTube video, where they talk about the receiver taking the time of transmission from the navigation message, is misleading?
 
  • #4
Pseudorange is a concept used in understanding the position computation.
plain stupid said:
Could you clarify what you mean by "locking" and "relative phase"?
For each receiver channel, the timing of the internal cyclic C/A code is adjusted until it comes into time with, and so correlates with the received C/A code. The correlator then controls the code clock rate for that channel to maintain synchronicity with the received signal. In that state it is “locked”.

Each cyclic 1023 bit C/A code transmitted, repeats with the same period and has a defined zero reference mark. Once a receiver channel has locked to a C/A code, the time of that zero mark, relative to the zero marks of other channels can be determined. That “relative phase” shift, is a differential time offset from which the pseudorange can be computed.
 
  • Like
Likes jim mcnamara and Tom.G
  • #5
To take @Baluncore's excellent explanation to completion, that "relative phase shift" is the time difference of arrival of signals from multiple satellites.

From that time difference, the relative distance to each satellite can be determined.

Knowing those distances and knowing the satellite orbits from the ephemeris, a computation of your position with two solutions is obtained. One solution is in space above the satellite orbits, and the other is a location on the Earth surface. It's that second one that is reported. :biggrin:

If I recall correctly, it takes a minimum of two satellite signals to determine X,Y (Lat. Long.) position on the Earth's surface, and three signals to determine altitude. (note: it may be 3 and 4 signals instead of 2 and 3; it's been several years since I looked into it.)

Hope this helps!

Cheers,
Tom
 
  • #6
plain stupid said:
Navigation messages from all satellites, as recorded by many stations, and which are compiled into a single file) every two hours. So I don't think navigation messages actually contain any sort of current data (current time, satellite position) (I see no reason why they should), but rather some parameters that can be used to approximate the transmitting satellite's orbit, given any possible timestamp.
I believe the Navigation Message contains the ephemerides for the GPS satellites. The ephemeris for a satellite gives the orbital data parameters sufficient for the receiver to compute the satellite position at any specific time on that day. Obviously the most recent ephemeris for a satellite will give the most accurate position.
 
  • #7
Baluncore said:
Each cyclic 1023 bit C/A code transmitted, repeats with the same period and has a defined zero reference mark. Once a receiver channel has locked to a C/A code, the time of that zero mark, relative to the zero marks of other channels can be determined. That “relative phase” shift, is a differential time offset from which the pseudorange can be computed.
I'm sorry, but this just furthers my confusion.

Where exactly is this zero mark? The issue is, this PRNS is pseudorandom, which means it repeats, and which in turn means there isn't a single zero mark. Could you please suggest a source where there's more written about what you're saying? I'm not saying I don't believe you, it's just every damn source is saying its own thing.

Also, what would this relation between zero marks with different channels (here you mean satellites, right?) accomplish? I'm really confused. Pseudoranges do not depend on multiple channels or satellites. If you had a single satellite above you, your receiver would still be able to measure pseudoranges (they wouldn't be useful, but that's a story for itself).

Right now, I believe that while there's definitely this locking phase, its only use is to actually get the Navigation message and receive that data. The pseudoranges themselves should be determinable from the timing of the C/A code. I believe this is a simple affair wherein the receiver somehow knows when the satellite is supposed to be transmitting its code. I.e. there's some consensus or something (maybe it's supposed to be transmitting exactly every "rounded" microsecond, like at 0.000001s, then 0.000002s, etc. --- actually this might be every millisecond rather than microsecond).

From what you've written, unfortunately, it's not clear at all (to me, maybe someone else has understood this relative zero mark thing, but it does not appear to hold water) how exactly the receiver knows when the satellite transmitted its code.

E.g. https://www.e-education.psu.edu/geog862/node/1756 says "imagine two codes generated at precisely the same time and identical in every regard: one in the satellite and one in the receiver", right now this is the only part that needs some further explanation. If anyone's familiar with this process, I'd really be interested to know how the receiver knows in advance when the satellite's supposed to be transmitting its signal, so that it can generate this replica itself. Thank you.

Edit: there are other sources confirming the above, e.g. http://www.nbmg.unr.edu/staff/pdfs/blewitt basics of gps.pdf, "In summary, the C/A code is a unique Gold code on each satellite, which is a pseudorandom sequence of bits with a repeating sequence length of 1023."

"The receiver knows precisely what the transmitted GPS signal is supposed to look like at any given time, and it generates an electronic replica, in synchronisation with the receiver’s own clock. The receiver then compares the replica signal with the actual signal. Since the GPS signal was actually created in the satellite some time previously (about 0.07 seconds ago, due to the speed of light), the receiver’s replica signal must be delayed into match up the incoming signal with the replica signal. This time delay is actually what the receiver is fundamentally measuring."
 
Last edited:
  • #8
I'll try:

The C/A code for each spacecraft is unique.
The C/A code for each spacecraft repeats on the same interval, with the same 'restart' point (in time).
Each C/A code is extracted from a QPSK signal where 50 BPS 'Nav Data' is also present. The data provides precise position data for the spacecraft over time (and takes a while to transmit at 50 BPS).

To find location, acquire a 'first' C/A code. Define the pseudo-range to that spacecraft as 'X.'
Acquire a 2nd C/A code. compare the 'restart' points of the 2 C/A codes. The range to the 2nd spacecraft is 'X +A,' where 'A' is the difference in relative range (computed directly from the time difference between the 'code 'restart' points).
Repeat for a 3rd C/A code (or more, for better accuracy).
You now have position over time for 3 (or more) spacecraft , and 3 (or more) range equations and an equal number of spacecraft locations. There is only 1 location that will allow the spacecraft positions/ranges to be mathematically valid. Algebra.
 
  • #9
Dullard said:
The C/A code for each spacecraft is unique.
The C/A code for each spacecraft repeats on the same interval, with the same 'restart' point (in time).
Each C/A code is extracted from a QPSK signal where 50 BPS 'Nav Data' is also present. The data provides precise position data for the spacecraft over time (and takes a while to transmit at 50 BPS).

To find location, acquire a 'first' C/A code. Define the pseudo-range to that spacecraft as 'X.'
Acquire a 2nd C/A code. compare the 'restart' points of the 2 C/A codes. The range to the 2nd spacecraft is 'X +A,' where 'A' is the difference in relative range (computed directly from the time difference between the 'code 'restart' points).
Repeat for a 3rd C/A code (or more, for better accuracy).
You now have position over time for 3 (or more) spacecraft , and 3 (or more) range equations and an equal number of spacecraft locations. There is only 1 location that will allow the spacecraft positions/ranges to be mathematically valid. Algebra.
So you're saying all satellites transmit the same 'restart point' at the same time, and this periodically repeats.

From what I understand, and I don't understand much, (correct me if I'm wrong) you need the precise time of transmission to know the position of the satellite at that time (and since they're speeding around at 4km/s, mistakes cannot be tolerated), given its navigation message, but we still haven't gotten to that point, so the navigation message is useless.

Okay, we have the first C/A code, and the pseudorange, which we don't know, we'll denote as X1 = X.
The second C/A code -> X2 = X + A, where A is known.
The third C/A code -> X3 = X + B, where B is known.

A pseudorange is defined as simply c * (t_RX - t_TX), and we don't know the t_TX, in any of the cases:

X1 = c(t_RX - t_TX)
X2 = c(t_RX - t_TX) + A
X3 = c(t_RX - t_TX) + B

We don't know X1, X2, X3, or t_TX, so right now we have 4 unknowns, and 3 equations.
How would you apply algebra to this? We also don't have satellite locations, but I'm pretty sure they require a precise time of transmission (which we don't have), and this would complicate matters further. If we further involve equations for the location of the receiver, this whole thing will explode.

What am I missing?

Suppose a simpler scenario. You get three messages, from three satellites, one at the 1s mark, another at the 2s mark, and the third one at 3s. You get another round of messages after 5s from each of those satellites: at 6s, 7s, 8s. The senders could be 20km away, or 10km, and you wouldn't know. If they send these messages every 5s, they would still arrive in 5s intervals, one after another, regardless of their initial time of arrival. So if you increase their distances from the receiver, the messages might arrive as follows: 22s, 23, 24, and then another round at 27, 28, 29.

This is the same as this zero mark, or the reset mark, arriving with the same frequency. You cannot possibly know the time they sent these messages. All you know are their relative distances.
 
  • #10
Why do you work so hard to confuse yourself ?
You need a reason to go and study the original definition of GPS.
plain stupid said:
Where exactly is this zero mark? The issue is, this PRNS is pseudorandom, which means it repeats, and which in turn means there isn't a single zero mark. Could you please suggest a source where there's more written about what you're saying? I'm not saying I don't believe you, it's just every damn source is saying its own thing.
There are 32 C/A codes. Each is clocked at 1.023 MHz, so it repeats every 1 msec exactly. Those codes are all synchronised to the GPS master clock.
The 32 codes come from only two different 1023 bit PRBS sequences that are EXOR'ed together. One of the codes is time shifted before the EXOR. There are 32 different time shifts used to generate the 32 different codes for the 32 active satellites. The codes do not repeat any sequence of 10 bits, so it only takes a 10 bit sequence to identify a defined zero mark, which will pass every millisecond.
https://en.wikipedia.org/wiki/Gold_code
https://en.wikipedia.org/wiki/GPS_signals#Coarse/acquisition_code

plain stupid said:
Also, what would this relation between zero marks with different channels (here you mean satellites, right?) accomplish? I'm really confused. Pseudoranges do not depend on multiple channels or satellites. If you had a single satellite above you, your receiver would still be able to measure pseudoranges (they wouldn't be useful, but that's a story for itself).
It is the relative differential time of arrival of four or more codes that makes the solution of position possible. Pseudoranges DO depend on multiple satellites.

plain stupid said:
Right now, I believe that while there's definitely this locking phase, its only use is to actually get the Navigation message and receive that data. The pseudoranges themselves should be determinable from the timing of the C/A code. I believe this is a simple affair wherein the receiver somehow knows when the satellite is supposed to be transmitting its code. I.e. there's some consensus or something (maybe it's supposed to be transmitting exactly every "rounded" microsecond, like at 0.000001s, then 0.000002s, etc. --- actually this might be every millisecond rather than microsecond).
The satellites all transmit their C/A code at 1.023 MHz, all starting again every 1 msec exactly, by the master GPS clock.

plain stupid said:
E.g. https://www.e-education.psu.edu/geog862/node/1756 says "imagine two codes generated at precisely the same time and identical in every regard: one in the satellite and one in the receiver", right now this is the only part that needs some further explanation. If anyone's familiar with this process, I'd really be interested to know how the receiver knows in advance when the satellite's supposed to be transmitting its signal, so that it can generate this replica itself. Thank you.
It does not need to know. If the receiver clocks a local C/A generator at 1.024 MHz it will slide past the 1.023 MHz satellite transmitted code with all possible shifts passing each second. Correlation will be detected as the codes slide past synchronicity, at which time the receiver code clock will switch to 1.023 MHz, and the phase locked loop will maintain synchronicity of the receiver C/A to the transmitted C/A. That channel will then be "locked".
 
  • #11
PS-

You're making it more complicated than it is. Try this:

Suppose that I tell you:

I don't know how far you are from Orlando, FL.
I don't know how far you are from Atlanta, but it's 500 miles less than your distance from Orlando.
I don't know how far you are from St Louis, but it's 500 miles less than you are from Orlando.

You can solve that problem (unless I've picked bad example distances).

The GPS position solution is exactly this (in 3 dimensions). The 50 BPS nav data (A.K.A. ephemiris data) provides a means to 'know' the position of each spacecraft over time (and the time). The C/A code allows you to determine the pseudo ranges (as in the example).
 
  • #12
plain stupid said:
A pseudorange is defined as simply c * (t_RX - t_TX), and we don't know the t_TX, in any of the cases:
X1 = c(t_RX - t_TX)
X2 = c(t_RX - t_TX) + A
X3 = c(t_RX - t_TX) + B
We don't know X1, X2, X3, or t_TX, so right now we have 4 unknowns, and 3 equations.
NO.
Since the exact time is not yet known, the pseudoranges are computed from the relative time of arrival, dt, of the different synchronised C/A codes.
Pseudorange = dt * c.
The real ranges to the satellites are then;
Range1 = k + Pseudorange1
Range2 = k + Pseudorange2
Range3 = k + Pseudorange3
Range4 = k + Pseudorange4
Solve for k (by least squares fit), to find the receiver position in three dimensions.

Then compute the probable propagation delay times, and you can compute an improved receiver time. That corrected time makes it possible to more accurately calculate satellite positions and so refine the estimate of receiver position and receiver time.

"Pseudo" range is NOT a “pretend” range from the satellite to the receiver. The “pseudo” in pseudorange is derived from the relative time of arrival of the zero marks of the PseudoRandomBinarySequences being received from the satellites.

The navigation message from one satellite includes the latest precise ephemeris for that one satellite, and an approximate almanac for all active satellites, so more visible satellites can be acquired by the receiver.
 
  • #13
Baluncore said:
NO.
Since the exact time is not yet known, the pseudoranges are computed from the relative time of arrival, dt, of the different synchronised C/A codes.
Pseudorange = dt * c.
The real ranges to the satellites are then;
Range1 = k + Pseudorange1
Range2 = k + Pseudorange2
Range3 = k + Pseudorange3
Range4 = k + Pseudorange4
Solve for k (by least squares fit), to find the receiver position in three dimensions.

Then compute the probable propagation delay times, and you can compute an improved receiver time. That corrected time makes it possible to more accurately calculate satellite positions and so refine the estimate of receiver position and receiver time.

"Pseudo" range is NOT a “pretend” range from the satellite to the receiver. The “pseudo” in pseudorange is derived from the relative time of arrival of the zero marks of the PseudoRandomBinarySequences being received from the satellites.
OK, so, what you're saying, in an oblique way, is to use these pseudoranges as defined in these equations, and simply "plug them into" receiver position equations, i.e. https://www.math.tamu.edu/~dallen/physics/gps/gps__20.png this thing, but we have these Pseudorange1,2,3,4 things (as in your post), which are added separately to these equations, and the "constant" part (that we don't know -- the k/c part of the propagation delay from some satellite emission time to the reference time we took as our first zero mark time) will simply be subsumed under the c*t_B term, and calculated along with satellite vs. receiver clock differential.

More concretely:
$$pseudorange1 = \sqrt{x, y, z} + c \cdot t_B$$
etc., up until ##pseudorange_4##, which means we have 4 equations, and 4 unknowns (x, y, z, t_B), and that's it (this is solved using linearization and the least squares method, etc.). The only issue here is that satellite positions aren't really known, but we can sort of estimate them from the navigation message times/corrections, whatever, combined with the ephemerides from those same navigation messages. I omitted here the whole set of delays like the ionosphere and troposphere, but I think those don't even change that often, so it's not very important.

Am I on the right track? Btw thanks for your patience so far.
 
  • #14
plain stupid said:
Am I on the right track?
Yes you are now on the right track.
Your habit of "guessing how it works" makes it harder for you to later accept the way it really does work. You need a good background in spread spectrum, PRBS direct sequence modulation, and correlation, before embarking on a re-imagination of GPS.
plain stupid said:
I omitted here the whole set of delays like the ionosphere and troposphere, but I think those don't even change that often, so it's not very important.
In the first analysis, those regional delays will appear to be part of the receiver clock error.
 
  • Like
Likes plain stupid
  • #15
uBlox GNSS Compendium:
https://www.u-blox.com/sites/default/files/gps_compendiumgps-x-02007.pdf

One of the best references I've seen for getting your hands dirty in the topic GNSS.Imagine that the clocks in the satellites were perfect, and the clock in the receiver on the ground was also perfect. Satellite sends a message indicating time of message sent. Receiver timestamps receipt of message against its perfect clock. This would not be a pseudo-range, this would be the *actual* range (after multiplying by speed of light). We say pseudo-range because the clock in the receiver has no idea of actual time. It is timestamping against its internal *arbitrary* clock. It is only by comparing these against results from other satellites that we can get back to actual range. This is what Dullard was getting at in his analogy.
BTW, the clock in the receiver is a cheap TCXO and first needs to lock to the GNSS frequency before it can even begin to align codes, and the satellite clocks, even though they are atomic, are not perfect either. The gold standard for time is maintained on the ground by the Air Force. Sensitive receivers on the ground check the timing of each satellite and transmit back to the satellite correction data that is passed down to receivers.
 
Last edited:
  • #16
plain stupid said:
From this, again, I can only conclude that the navigation data (contained in the navigation message) isn't necessary to (ultimately) compute pseudoranges, but that this C/A code or whatever is in fact used to determine these things.
That is true during the acquisition phase.
The exact time is not initially known by the receiver, so the time stamp on a transmission is quite irrelevant. An approximate time at the receiver is sufficient to get initial pseudoranges, and from that an initial approximate position.

All satellites transmit their C/A codes synchronously, starting at the same instant.
The receiver initially looks for the available satellite's C/A codes in the received data. It measures only the relative arrival times of those different C/A codes and calls them pseudoranges.

During the acquisition phase little is known. Once it is locked the position can be refined. Depending on the degree of the lock, the GPS receiver will operate in different modes. You must discriminate between the video explanations based on the different degrees of lock.

There is too much information in your posted question. Any complete answer would need to analyse and explain in detail the shortcomings of everything you reference. You watch too many videos, and you don't reject poorly expressed information. Focusing on things that do not make sense is a waste of everyone's time. You need a better crap detector for the internet sewer. You should throw out introductory videos that will always lack detail and credibility. Instead read the mathematical and engineering reference texts.

You need to decide where you are going with this. You must rationally advance step by step along a path that reaches a solution to the problem that must be solved. What do you want to do that requires you to know the precise internal workings of the hardware and the software systems ?

If you hypothesis how you think it might work, and that does not make sense, then don't present your false hypothesis as part of a question. You know it is wrong, so you should not subject readers to it, or give it exposure.

Ask only one question in one post.
 
  • Like
Likes anorlunda and jim mcnamara

1. How are pseudo ranges obtained in GPS?

Pseudo ranges in GPS are obtained by measuring the time it takes for a signal to travel from a satellite to a receiver on Earth. The receiver then multiplies this time by the speed of light to calculate the distance between the satellite and the receiver.

2. What is the purpose of obtaining pseudo ranges in GPS?

The purpose of obtaining pseudo ranges in GPS is to determine the position of the receiver on Earth. By measuring the ranges from multiple satellites, the receiver can use trilateration to calculate its precise location.

3. How accurate are pseudo ranges in GPS?

The accuracy of pseudo ranges in GPS can vary depending on several factors such as atmospheric conditions, satellite geometry, and receiver quality. Generally, pseudo ranges can have an accuracy of 5-10 meters for civilian use and even higher accuracy for military and scientific applications.

4. Can pseudo ranges be affected by external factors?

Yes, pseudo ranges in GPS can be affected by external factors such as atmospheric conditions, satellite clock errors, and signal interference. These factors can cause errors in the measured ranges and affect the accuracy of the receiver's position calculation.

5. How are pseudo ranges corrected for errors in GPS?

Pseudo ranges in GPS can be corrected for errors through a process called differential correction. This involves comparing the measured ranges from a reference station with known coordinates to the ranges measured by the receiver. Any differences can be used to calculate correction factors that can be applied to the pseudo ranges to improve their accuracy.

Similar threads

  • Electrical Engineering
Replies
8
Views
904
Replies
1
Views
930
  • Electrical Engineering
Replies
14
Views
2K
  • Electrical Engineering
Replies
1
Views
1K
Replies
1
Views
914
Replies
1
Views
3K
  • Electrical Engineering
Replies
8
Views
13K
  • Programming and Computer Science
Replies
5
Views
818
Replies
19
Views
4K
  • Electrical Engineering
Replies
1
Views
2K
Back
Top