The Arizona Cardinals running back signed a three-year extension Saturday, the team announced.

The deal is for $39 million, including $30 million guaranteed, and can be worth up to $45 million, a source told ESPN's Adam Schefter. Johnson's $30 million in guaranteed money is the third-highest figure among active running backs.

Earlier this week, he said he wanted his deal done as soon as possible.

"Every player wants to have a contract done and know that they have a contract," Johnson said.

Now he does.

Johnson made it known this summer that he wanted a new deal. He held out of Arizona's minicamp in June but reported to training camp. However, his impending contract was a topic every time he spoke publicly.

Johnson's extension came the night before he was about to enter the fourth and final year of his rookie contract, which was worth $2.9 million. He was scheduled to earn $1.9 million this season.

His new deal doesn't come without questions, however. Johnson, 26, has gotten injured in his past two games. He suffered a fractured wrist in Week 1 last season that forced him to miss the final 15 games. He also suffered a sprained MCL in Week 17 in 2016, which put a damper on an impressive season.

However, when Johnson was healthy in 2016, he was an All-Pro and Pro Bowler for the first time. That season, Johnson rushed for 1,239 yards and 16 touchdowns on 293 carries. He complemented that with 879 receiving yards and four touchdowns on 80 catches. Johnson led the NFL with 2,118 all-purpose years and 373 touches in 2016.

Johnson was a third-round pick in 2015 out of the University of Northern Iowa.

Keeping Johnson under contract through the 2021 season will pair him with rookie quarterback Josh Rosen, whom the Cardinals drafted 10th overall this year, giving Arizona's offense its foundation for the foreseeable future.