Merge commit 'v3.3.0' into upstream
[debian/gnuradio] / usrp2 / firmware / divisors.py
1 #!/usr/bin/env python
2
3 speeds = (9600, 19200, 38400, 57600, 115200, 230400)
4
5 master_clk = 100e6
6 wb_clk = master_clk / 2
7
8 def divisor(speed):
9     div0 = wb_clk // (speed * 16)
10     div1 = div0 + 1
11     actual0 = actual_speed(div0)
12     actual1 = actual_speed(div1)
13     if abs(actual0 - speed) < abs(actual1 - speed):
14         return div0
15     else:
16         return div1
17
18 def actual_speed(divisor):
19     return (wb_clk // divisor) / 16
20
21 def doit(speed):
22     div = divisor(speed)
23     actual = actual_speed(div)
24     rel_error = (actual - speed) / speed
25     print "target: %6d  divisor: %6d  actual: %11.4f  %6.3f%%" % (speed, div, actual, rel_error*100)
26
27 def main():
28     print "wb_clk = %f" % (wb_clk,)
29     for s in speeds:
30         doit(s)
31
32 if __name__ == '__main__':
33     main()
34