Maintain delay with NEO-6M
What is outPin?
Don't start a SoftwareSerial object on the Serial port.  Just use Serial
The Serial Monitor window will have to use the GPS baud rate if the GPS is connected to pins 0 &amp; 1.  This is a good choice, but you'll have to disconnect pin 0 to upload a new sketch over USB.
Don't use delay.  This prevents the sketch from reading GPS characters.  Eventually, the input buffer will overflow and characters will be lost.  Instead, save a timestamp and compare the current time with the timestamp.  When the difference is 50ms, simply toggle the pin and save another timestamp.
Try NeoGPS.  It's smaller, faster, more reliable and more accurate than all other GPS libraries.  There are many tips on the Installation and Troubleshooting pages, and the examples are structured properly.  If you want to use pins other than 0 &amp; 1, be sure the read the section about choosing a serial port.  SoftwareSerial is the worst choice.  


Here is your sketch, modified to use Serial and NeoGPS:

#include &lt;AD9850.h&gt;
#include &lt;NMEAGPS.h&gt;
NMEAGPS gps;

#define gpsPort Serial  // GPS on pins 0 &amp; 1
static const uint32_t GPSBaud = 9600;

const int OUT_PIN   = 4; ???
const int W_CLK_PIN = 8;
const int FQ_UD_PIN = 9;
const int DATA_PIN  = 10;
const int RESET_PIN = 11;

const double trimFreq = 124999500.0;

int phase = 0;

unsigned long lastToggle;

void setup()
{
  //Serial.begin(115200);  // NOT needed if gpsPort *is* Serial (pins 0 &amp; 1)
  gpsPort.begin( GPSBaud );

  DDS.begin(W_CLK_PIN, FQ_UD_PIN, DATA_PIN, RESET_PIN);
  DDS.calibrate(trimFreq);

  pinMode( OUT_PIN, OUTPUT ); // must be set to output mode
  lastToggle = millis();
}

void loop()
{
  // Toggle the OUT_PIN every 50ms
  if (millis() - lastToggle &gt; 50) {
    digitalWrite( OUT_PIN, !digitalRead(OUT_PIN) );   // toggle the pin
    lastToggle += 50; // step to the next toggle time
  }

  // Dispatch incoming characters
  if (gps.available( gpsPort )) {
    gps_fix fix = gps.read(); // get a fix structure with all GPS fields

    Serial.print(F("SPEED km/h="));

    // for testing, use some random values (comment this out later)
    fix.valid.speed = true;
    fix.spd.whole   = random( 0, 35 );

    if (fix.valid.speed) {
      float speed=fix.speed_kph();
      Serial.print( speed );

      double freq = map(speed, 0, 100, 0, 160);
      DDS.setfreq(freq, phase);

      Serial.print( ' ' ); // for debugging, show the DDS frequency
      Serial.print( freq );
    }
    Serial.println();
  }

}


Notice that it checks to see if there is a valid speed.  The GPS device may not know the speed, depending on satellite reception.

If you want to try it, NeoGPS is available from the Arduino IDE Library Manager, under the menu Sketch -> Include Library -> Manage Libraries.


UPDATE

For the code you posted (which is not a complete program) in an Answer (instead of editing your question :-/), you could do something like this:

#include &lt;NMEAGPS.h&gt;
NMEAGPS gps;
gps_fix fix;

#define gpsPort Serial  // GPS on pins 0 &amp; 1 or whatever
static const uint32_t GPSBaud = 9600;

void setup()
{
  Serial1.begin(115200);
  Serial2.begin(115200);

  gpsPort.begin( 9600 );

    ...other things?
}

void loop()
{
  // Constantly read GPS characters
  if (gps.available( gpsPort )) {

    // Update the global fix structure with the latest GPS info.
    //   The speed will be used later by SendData.
    fix = gps.read(); 
  }

  // Constantly read Serial2 characters (a sensor?)
  if (Serial2.available())
  {
    int b     = Serial2.read();
    int chunk = b &gt;&gt; 6;
    if (chunk == syncc)
    {
      bytes[syncc] = b &amp; 63;
      syncc++;

      if (syncc == 4)
      {
        syncc = 0;
        tach = bytes[0] + (bytes[1]&lt;&lt;6);
        velocityfreq = bytes[2] + (bytes[3]&lt; delayTime)  ??? "&lt;" ???

        SendData();
        prevTxTime = millis();
      }
    }
  }
}

void SendData()
{
  // No need to use sprintf, just print the pieces.

  Serial1.print( data1 );
  Serial1.print( '|' );
  Serial1.print( data2 );
  Serial1.print( '|' );
  Serial1.print( data3 );
  Serial1.print( '|' );
  Serial1.print( data4 );
  Serial1.print( '|' );

  // use the current GPS speed, as set in loop
  Serial1.print( fix.speed_kph() );
  Serial1.print( F("\r\n") ); // F macro saves RAM for doubled-quoted string constants
}


I had to guess at the nesting of curly braces because IT IS NOT INDENTED, nor do the CURLY BRACES MATCH.  sad.