Rectangular Input signal on digital pins
Reading high frequency signals can be done. It's possible to read signals up to about 6MHz or maybe even higher (depending on the system clock frequency).

That is, as long as all you want to know is the fundamental frequency of the signal. 

Pin 5 of the Arduino Uno (PD5) is connected to Timer 1 and can be set to be the clock source for that timer.  By connecting that to your signal and allowing the timer to count up from zero using that signal as the clock source, and then waiting for a pre-defined time period, you can easily find how many clock pulses have arrived from your signal in that time. From that, you can calculate the frequency of the signal.


  The Timer/Counter can be clocked by an internal or an external clock source. The clock source is
  selected by the Clock Select logic which is controlled by the Clock Select bits in the Timer/Counter control
  Register B (TCCR1B.CS[2:0]).


Since all you are working with us the number of pulses over a given period you lose any information such as the duty cycle of the signal. 

You should read the datasheet section 20: "TC1 - 16-bit Timer/Counter1 with PWM" for more detail about how you can use the timer to count the frequency of a signal.