# template tile for Lab #7, Task #5 import numpy import waveforms as w import lab7 # transmission rate bits_per_second = 20000 # Uses lab7.sync to determine if message received correctly # return None if received message does *not* contain lab7.sync def am_receive(samples,fc,samples_per_bit,channel_bw): #### your code here return None if __name__ == '__main__': # a random binary message with zeros at both ends to # ensure periodicity message_size = 30 message = numpy.zeros(message_size+2,dtype=numpy.int) message[1:-1] = numpy.random.randint(2,size=message_size) # message with sync message = lab7.sync + list(message) # send it through transmitter, modulate to legal freq near 125 kHz samples_per_bit = lab7.samples_per_bit(lab7.sample_rate, bits_per_second) fc = lab7.quantize_frequency(500e3,lab7.sample_rate, len(message)*samples_per_bit) xmit_out = lab7.am_transmit(message,samples_per_bit,lab7.sample_rate, fc,lab7.channel_bw) ####################################################### ## ADDED FOR TASK #5: try different transmission delays ####################################################### for delay in xrange(8): print "%d-sample delay:" % delay delayed_xmit_out = xmit_out.delay(nsamples=delay) delayed_xmit_out = delayed_xmit_out.noise(amplitude=0.1) # run receiver received = am_receive(delayed_xmit_out,fc, samples_per_bit,lab7.channel_bw) # report results print ' message: ',message print ' received:',received if not numpy.array_equal(message,received): print ' => differences' else: print ' => message received okay' # when ready for checkoff, enable the following line. #lab7.checkoff(am_receive,'L7_5')