Issue with reading serial data

Yeah I'm using digitalRead() and it will have ~4us delay(based on the tests that I ran with the code) but I'm searching for other ways to read the digital data which is much faster or more precise than the present one.

Yes, my ultimate goal is to read the serial data which I receive at every 4us or at least at every 8us. I'll give a try with the RISING interrupt today.

My application is to read serial data coming out of an RFID based hardware working at 125kHz. The actual data will be encoded, I would need the Arduino to read that data at every 8usecs and save it in an array for further data processing. So, I'm trying to first manually read a 125kHz and 62.5kHz signals as I know what exactly the output should be, later on, I'll use the same code to read that encoded data.

@TomGeorge, Yes I'm trying to read lower frequency data signals like 32us and 64us time period, it is working fine but still, sometimes I get error bits for a few bits which I need to avoid.

For example, I read a 32us and 64us time period signals and the actual output should be 010101010101010101...so on. When I try to run my present code and read first 100 bits, then I get almost the same code as expected but a few errors bits(8-9wrong bits out of 100), like 11 or 00 instead of 01(same number of errors bits with 16us and 8us time period signals as well), so I'm looking for a more efficient way to avoid even those 8-9 error bits.

My final application is to read the serial data coming out of an RFID hardware working at 125kHz frequency range.