diff --git a/firmware/Makefile b/firmware/Makefile new file mode 100644 index 0000000..9cc38ce --- /dev/null +++ b/firmware/Makefile @@ -0,0 +1,7 @@ +all: lookup.inc + +lookup.inc: gen-dac-lookup.pl + perl gen-dac-lookup.pl > lookup.inc + +show: lookup.inc + echo 'plot "lookup.inc" with lines' | gnuplot -persist diff --git a/firmware/gen-dac-lookup.pl b/firmware/gen-dac-lookup.pl new file mode 100755 index 0000000..0a4cc17 --- /dev/null +++ b/firmware/gen-dac-lookup.pl @@ -0,0 +1,13 @@ +#!/usr/bin/perl + +srand(1337); + +# constant bits, the rest are filled with random data +$bits = $ARGV[0] || 10; + +$rem = 16 - $bits; +for ($i = 0; $i < 2**$bits; $i++) +{ + $out = $i * 2**$rem + int(rand(2**$rem)); + print $out . ",\n"; +} diff --git a/firmware/lookup.inc b/firmware/lookup.inc new file mode 100644 index 0000000..49f7130 --- /dev/null +++ b/firmware/lookup.inc @@ -0,0 +1,1024 @@ +27, +114, +153, +209, +306, +354, +386, +482, +568, +592, +681, +766, +805, +840, +928, +993, +1069, +1108, +1173, +1274, +1325, +1348, +1431, +1506, +1557, +1645, +1670, +1791, +1806, +1891, +1959, +1999, +2053, +2151, +2209, +2261, +2363, +2429, +2457, +2553, +2569, +2642, +2706, +2777, +2848, +2909, +2972, +3022, +3100, +3153, +3258, +3315, +3354, +3401, +3475, +3568, +3612, +3688, +3750, +3787, +3845, +3929, +3969, +4077, +4155, +4202, +4280, +4318, +4383, +4455, +4504, +4557, +4635, +4722, +4772, +4845, +4898, +4932, +4998, +5109, +5157, +5235, +5307, +5360, +5411, +5446, +5543, +5570, +5634, +5754, +5773, +5840, +5944, +5989, +6017, +6082, +6151, +6213, +6293, +6362, +6422, +6527, +6574, +6592, +6698, +6743, +6787, +6902, +6922, +7017, +7076, +7165, +7208, +7234, +7297, +7395, +7483, +7497, +7572, +7630, +7701, +7777, +7863, +7915, +7970, +8047, +8069, +8191, +8251, +8293, +8361, +8399, +8471, +8543, +8606, +8644, +8761, +8825, +8876, +8906, +9017, +9024, +9128, +9186, +9227, +9308, +9380, +9423, +9534, +9583, +9637, +9710, +9728, +9806, +9884, +9982, +10041, +10089, +10169, +10213, +10277, +10335, +10372, +10461, +10525, +10604, +10655, +10702, +10805, +10861, +10887, +10945, +11014, +11072, +11152, +11222, +11292, +11353, +11413, +11503, +11530, +11631, +11661, +11755, +11784, +11880, +11940, +12029, +12062, +12130, +12165, +12283, +12288, +12402, +12459, +12498, +12593, +12649, +12710, +12797, +12843, +12914, +12950, +13041, +13082, +13152, +13201, +13270, +13358, +13426, +13455, +13563, +13605, +13687, +13701, +13768, +13865, +13931, +14012, +14051, +14094, +14197, +14240, +14293, +14388, +14435, +14470, +14574, +14624, +14695, +14777, +14806, +14911, +14940, +15005, +15072, +15132, +15224, +15284, +15338, +15391, +15446, +15524, +15609, +15647, +15734, +15801, +15867, +15881, +15982, +16053, +16112, +16178, +16229, +16286, +16328, +16384, +16461, +16573, +16636, +16687, +16746, +16804, +16892, +16949, +16967, +17063, +17117, +17164, +17254, +17282, +17364, +17436, +17476, +17555, +17635, +17674, +17772, +17845, +17894, +17930, +18044, +18072, +18137, +18218, +18257, +18334, +18411, +18432, +18510, +18603, +18652, +18742, +18801, +18876, +18938, +19004, +19037, +19079, +19140, +19239, +19290, +19355, +19435, +19460, +19533, +19586, +19676, +19744, +19819, +19870, +19961, +20007, +20065, +20158, +20215, +20280, +20319, +20413, +20423, +20506, +20583, +20610, +20702, +20741, +20856, +20868, +20928, +21001, +21098, +21167, +21228, +21308, +21345, +21413, +21483, +21520, +21597, +21684, +21759, +21768, +21861, +21933, +21981, +22078, +22142, +22162, +22248, +22306, +22389, +22427, +22488, +22534, +22650, +22661, +22739, +22823, +22872, +22940, +23039, +23089, +23110, +23181, +23295, +23307, +23386, +23456, +23528, +23580, +23665, +23725, +23792, +23815, +23905, +23996, +24060, +24097, +24154, +24227, +24316, +24378, +24427, +24497, +24566, +24638, +24697, +24757, +24810, +24878, +24925, +24982, +25075, +25114, +25158, +25272, +25338, +25369, +25450, +25490, +25598, +25645, +25682, +25743, +25816, +25866, +25923, +25993, +26077, +26128, +26231, +26271, +26306, +26394, +26446, +26548, +26580, +26631, +26743, +26765, +26825, +26920, +26944, +27026, +27080, +27175, +27210, +27291, +27359, +27393, +27482, +27548, +27616, +27677, +27767, +27806, +27864, +27948, +28027, +28055, +28121, +28218, +28256, +28314, +28393, +28422, +28508, +28551, +28645, +28710, +28774, +28851, +28906, +28943, +29019, +29060, +29173, +29243, +29257, +29315, +29382, +29447, +29555, +29600, +29665, +29704, +29810, +29837, +29924, +29955, +30018, +30139, +30173, +30255, +30274, +30398, +30411, +30471, +30543, +30595, +30681, +30760, +30840, +30852, +30972, +31019, +31092, +31166, +31209, +31288, +31300, +31391, +31459, +31527, +31554, +31644, +31714, +31765, +31812, +31907, +31972, +32046, +32068, +32139, +32212, +32275, +32377, +32395, +32505, +32545, +32607, +32702, +32766, +32797, +32880, +32902, +32965, +33068, +33103, +33184, +33267, +33301, +33396, +33437, +33517, +33563, +33635, +33674, +33788, +33799, +33912, +33968, +34029, +34102, +34134, +34177, +34259, +34363, +34409, +34490, +34555, +34568, +34647, +34743, +34804, +34848, +34895, +35000, +35011, +35128, +35150, +35224, +35265, +35371, +35416, +35462, +35575, +35628, +35689, +35764, +35778, +35884, +35948, +35992, +36039, +36126, +36183, +36272, +36330, +36379, +36429, +36536, +36569, +36665, +36704, +36799, +36820, +36886, +36987, +37009, +37079, +37167, +37211, +37307, +37327, +37413, +37447, +37555, +37615, +37677, +37708, +37791, +37835, +37899, +37974, +38059, +38094, +38162, +38239, +38330, +38337, +38420, +38478, +38587, +38599, +38659, +38751, +38844, +38875, +38969, +39032, +39054, +39144, +39199, +39270, +39346, +39408, +39449, +39517, +39613, +39623, +39687, +39749, +39829, +39892, +39994, +40002, +40095, +40152, +40194, +40281, +40338, +40409, +40462, +40532, +40630, +40675, +40760, +40775, +40884, +40910, +40982, +41058, +41088, +41173, +41274, +41315, +41355, +41426, +41487, +41585, +41609, +41674, +41777, +41824, +41868, +41953, +42029, +42058, +42119, +42236, +42264, +42345, +42431, +42448, +42497, +42593, +42663, +42715, +42776, +42816, +42928, +42979, +43039, +43125, +43164, +43225, +43311, +43360, +43402, +43471, +43562, +43613, +43660, +43740, +43831, +43900, +43960, +43968, +44075, +44155, +44214, +44255, +44324, +44353, +44466, +44495, +44607, +44637, +44732, +44764, +44825, +44866, +44963, +45020, +45097, +45143, +45199, +45252, +45324, +45403, +45483, +45561, +45568, +45656, +45747, +45793, +45867, +45896, +45992, +46021, +46086, +46150, +46238, +46303, +46358, +46461, +46481, +46587, +46634, +46706, +46745, +46828, +46889, +46917, +47020, +47092, +47105, +47222, +47255, +47332, +47365, +47477, +47527, +47554, +47645, +47712, +47801, +47825, +47908, +47982, +48028, +48102, +48175, +48214, +48278, +48383, +48438, +48497, +48543, +48595, +48696, +48730, +48822, +48844, +48917, +48993, +49052, +49141, +49196, +49243, +49308, +49344, +49467, +49502, +49567, +49611, +49698, +49776, +49830, +49907, +49964, +50043, +50077, +50137, +50193, +50282, +50339, +50430, +50477, +50559, +50583, +50635, +50712, +50815, +50846, +50893, +50982, +51019, +51098, +51165, +51200, +51291, +51344, +51399, +51501, +51552, +51600, +51673, +51747, +51789, +51903, +51916, +52029, +52072, +52113, +52170, +52228, +52323, +52387, +52450, +52481, +52572, +52636, +52689, +52776, +52806, +52920, +52959, +53023, +53116, +53183, +53236, +53284, +53374, +53390, +53456, +53551, +53604, +53679, +53754, +53784, +53853, +53910, +53989, +54050, +54131, +54167, +54229, +54289, +54346, +54458, +54519, +54572, +54625, +54698, +54750, +54799, +54890, +54921, +55007, +55094, +55158, +55199, +55278, +55342, +55419, +55424, +55501, +55558, +55634, +55690, +55805, +55818, +55892, +55958, +56021, +56115, +56145, +56210, +56280, +56324, +56398, +56490, +56574, +56612, +56643, +56722, +56804, +56866, +56914, +57009, +57052, +57133, +57204, +57220, +57339, +57382, +57460, +57477, +57550, +57603, +57716, +57745, +57828, +57879, +57963, +58020, +58073, +58164, +58217, +58249, +58316, +58384, +58434, +58529, +58572, +58680, +58723, +58806, +58824, +58931, +58984, +59034, +59088, +59173, +59254, +59279, +59366, +59425, +59457, +59553, +59643, +59657, +59760, +59817, +59886, +59956, +60015, +60038, +60145, +60161, +60276, +60336, +60403, +60427, +60482, +60598, +60644, +60712, +60794, +60823, +60864, +60968, +61036, +61111, +61157, +61202, +61305, +61340, +61412, +61454, +61562, +61604, +61658, +61725, +61818, +61858, +61906, +61954, +62037, +62107, +62164, +62259, +62305, +62339, +62410, +62508, +62565, +62629, +62713, +62726, +62819, +62880, +62970, +63036, +63057, +63144, +63198, +63272, +63313, +63415, +63470, +63503, +63574, +63649, +63696, +63758, +63855, +63925, +63957, +64035, +64110, +64147, +64215, +64319, +64346, +64399, +64473, +64558, +64596, +64684, +64744, +64799, +64833, +64898, +64995, +65033, +65101, +65190, +65232, +65323, +65382, +65443, +65484,