File: tuner.vbe

package info (click to toggle)
alliance 5.0-20120515-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 70,180 kB
  • sloc: ansic: 350,295; vhdl: 34,227; yacc: 27,122; sh: 12,416; cpp: 9,478; makefile: 7,055; lex: 3,684
file content (286 lines) | stat: -rw-r--r-- 21,436 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
-- Instrument tuner
-- Frequency of operation is 819200 Hz, obtained by dividing a
-- 3276000 Hz quartz by four
-- Author: Frdric Ptrot
entity tuner is
  port (
      ck    : in  bit;
      d     : in  bit;
      o     : out bit_vector(0 to 22);
      vdd   : in  bit;
      vss   : in  bit
    );
end  tuner;

architecture dataflow of tuner is
signal start    : bit;
-- input handling
signal d_reg    : reg_bit register;  -- previous value of input

-- incrementer related things
signal incr_out : bit_vector (14 downto 0);           -- incrementer's result
signal incr_cry : bit_vector (15 downto 0);           -- incrementer's carry
signal incr_reg : reg_vector (14 downto 0) register;  -- incrementer register

-- normalizer related things
-- reg must be at most 381 and cannot be less than 190 (hopefully)
constant c382   : bit_vector(14 downto 0) := "000_0001_0111_1110";
-- we must substract 190 from the shifted result
constant c191   : bit_vector (8 downto 0) := "0_1011_1111";
signal test_out : bit_vector (14 downto 0);
signal test_cry : bit_vector (15 downto 0);
signal norm_out : bit_vector (14 downto 0);
signal norm_reg : reg_vector (14 downto 0) register;
signal subs_out : bit_vector (8 downto 0);
signal subs_cry : bit_vector (9 downto 0);
signal deco_reg : reg_vector (7 downto 0) register;

begin

   input : block (ck = '1' and not ck'STABLE)
   begin
     d_reg <= guarded d;
   end block;

   start <= (not d_reg) and d;

   -- compute the result out of the incrementer
   -- maximum value is 30582 for an very flat A (26.8 Hz)
   -- incr_out <= incr_reg + 1
   incr_out  <= incr_reg xor incr_cry(14 downto 0);
   incr_cry (0)           <= '1';
   incr_cry (15 downto 1) <= (incr_reg  and incr_cry (14 downto 0));

   incr : block (ck = '1' and not ck'stable)
   begin
     incr_reg <= guarded incr_out when start = '0' else B"000000000000000";
   end block;

   -- normalize the incrementer output: shift until it reaches the
   -- [17D, BE] range values, and then subtract BE to fit between 0 and
   -- whatever 
   -- test_out <= norm_reg - c382 = norm_reg + not c382 + 1
   test_out  <= norm_reg xor not(c382) xor test_cry(14 downto 0);
   test_cry (0)           <= '1';
   test_cry (15 downto 1) <= (norm_reg   and test_cry (14 downto 0)) or
                             (not(c382) and test_cry (14 downto 0)) or
                             (norm_reg   and not(c382)                ) ;

   -- loop until norm reg is less than 17E, keep its value otherwise
   -- norm_out <= norm_reg >> 2 if  (norm_reg - c382) > 0
   --             norm_reg      otherwise
   norm_out <= '0' & norm_reg(14 downto 1) when test_out(14) = '0'
                                           else norm_reg;

   -- load norm_reg with incr_out when start is true
   norm : block (ck = '1' and not ck'stable)
   begin
     norm_reg <= guarded norm_out when start = '0' else incr_out;
   end block;

   subs_out              <= norm_reg(8 downto 0) xor not(c191) xor subs_cry(8 downto 0);
   subs_cry (0)          <= '1';
   subs_cry (9 downto 1) <= (norm_reg(8 downto 0)   and subs_cry (8 downto 0)) or
                             (not(c191) and subs_cry (8 downto 0)) or
                             (norm_reg(8 downto 0)   and not(c191));


   deco : block (ck = '1' and not ck'stable)
   begin
     deco_reg <= guarded subs_out(7 downto 0) when test_out(14) = '1' else deco_reg;
   end block;

   with deco_reg select
   o <= B"1000_0_0000_0111101_0011111" when B"10111110", -- 381   rb 380 (freq: 2161.258631)
        B"1000_0_0000_0111101_0011111" when B"10111101", -- 380   rb 380 (freq: 2161.258631)
        B"0100_0_0000_0111101_0011111" when B"10111100", -- 379   rb 377 (freq: 2175.174260)
        B"0100_0_0000_0111101_0011111" when B"10111011", -- 378   rb 377 (freq: 2175.174260)
        B"0100_0_0000_0111101_0011111" when B"10111010", -- 377   rb 377 (freq: 2175.174260)
        B"0010_0_0000_0111101_0011111" when B"10111001", -- 376   rb 375 (freq: 2189.179488)
        B"0010_0_0000_0111101_0011111" when B"10111000", -- 375   rb 375 (freq: 2189.179488)
        B"0001_0_0000_0111101_0011111" when B"10110111", -- 374   rb 373 (freq: 2203.274890)
        B"0001_0_0000_0111101_0011111" when B"10110110", -- 373   rb 373 (freq: 2203.274890)
        B"0001_0_0000_0111101_0011111" when B"10110101", -- 372   rb 370 (freq: 2217.461048)
        B"0001_0_0000_0111101_0011111" when B"10110100", -- 371   rb 370 (freq: 2217.461048)
        B"0000_1_0000_0111101_0011111" when B"10110011", -- 370   rb 370 (freq: 2217.461048)
        B"0000_0_1000_0111101_0011111" when B"10110010", -- 369   rb 368 (freq: 2231.738546)
        B"0000_0_1000_0111101_0011111" when B"10110001", -- 368   rb 368 (freq: 2231.738546)
        B"0000_0_0100_0111101_0011111" when B"10110000", -- 367   rb 365 (freq: 2246.107972)
        B"0000_0_0100_0111101_0011111" when B"10101111", -- 366   rb 365 (freq: 2246.107972)
        B"0000_0_0100_0111101_0011111" when B"10101110", -- 365   rb 365 (freq: 2246.107972)
        B"0000_0_0010_0111101_0011111" when B"10101101", -- 364   rb 363 (freq: 2260.569918)
        B"0000_0_0010_0111101_0011111" when B"10101100", -- 363   rb 363 (freq: 2260.569918)
        B"0000_0_0001_0111101_0011111" when B"10101011", -- 362   rb 361 (freq: 2275.124980)
        B"0000_0_0001_0111101_0011111" when B"10101010", -- 361   rb 361 (freq: 2275.124980)
        B"1000_0_0000_0111101_0000000" when B"10101001", -- 360    r 358 (freq: 2289.773757)
        B"1000_0_0000_0111101_0000000" when B"10101000", -- 359    r 358 (freq: 2289.773757)
        B"1000_0_0000_0111101_0000000" when B"10100111", -- 358    r 358 (freq: 2289.773757)
        B"0100_0_0000_0111101_0000000" when B"10100110", -- 357    r 356 (freq: 2304.516853)
        B"0100_0_0000_0111101_0000000" when B"10100101", -- 356    r 356 (freq: 2304.516853)
        B"0010_0_0000_0111101_0000000" when B"10100100", -- 355    r 354 (freq: 2319.354874)
        B"0010_0_0000_0111101_0000000" when B"10100011", -- 354    r 354 (freq: 2319.354874)
        B"0001_0_0000_0111101_0000000" when B"10100010", -- 353    r 352 (freq: 2334.288433)
        B"0001_0_0000_0111101_0000000" when B"10100001", -- 352    r 352 (freq: 2334.288433)
        B"0001_0_0000_0111101_0000000" when B"10100000", -- 351    r 349 (freq: 2349.318144)
        B"0001_0_0000_0111101_0000000" when B"10011111", -- 350    r 349 (freq: 2349.318144)
        B"0000_1_0000_0111101_0000000" when B"10011110", -- 349    r 349 (freq: 2349.318144)
        B"0000_0_1000_0111101_0000000" when B"10011101", -- 348    r 347 (freq: 2364.444626)
        B"0000_0_1000_0111101_0000000" when B"10011100", -- 347    r 347 (freq: 2364.444626)
        B"0000_0_0100_0111101_0000000" when B"10011011", -- 346    r 345 (freq: 2379.668502)
        B"0000_0_0100_0111101_0000000" when B"10011010", -- 345    r 345 (freq: 2379.668502)
        B"0000_0_0010_0111101_0000000" when B"10011001", -- 344    r 343 (freq: 2394.990401)
        B"0000_0_0010_0111101_0000000" when B"10011000", -- 343    r 343 (freq: 2394.990401)
        B"0000_0_0001_0111101_0000000" when B"10010111", -- 342    r 341 (freq: 2410.410951)
        B"0000_0_0001_0111101_0000000" when B"10010110", -- 341    r 341 (freq: 2410.410951)
        B"1000_0_0000_1001111_0011111" when B"10010101", -- 340   mib 338 (freq: 2425.930790)
        B"1000_0_0000_1001111_0011111" when B"10010100", -- 339   mib 338 (freq: 2425.930790)
        B"1000_0_0000_1001111_0011111" when B"10010011", -- 338   mib 338 (freq: 2425.930790)
        B"0100_0_0000_1001111_0011111" when B"10010010", -- 337   mib 336 (freq: 2441.550556)
        B"0100_0_0000_1001111_0011111" when B"10010001", -- 336   mib 336 (freq: 2441.550556)
        B"0010_0_0000_1001111_0011111" when B"10010000", -- 335   mib 334 (freq: 2457.270892)
        B"0010_0_0000_1001111_0011111" when B"10001111", -- 334   mib 334 (freq: 2457.270892)
        B"0001_0_0000_1001111_0011111" when B"10001110", -- 333   mib 332 (freq: 2473.092446)
        B"0001_0_0000_1001111_0011111" when B"10001101", -- 332   mib 332 (freq: 2473.092446)
        B"0001_0_0000_1001111_0011111" when B"10001100", -- 331   mib 330 (freq: 2489.015870)
        B"0000_1_0000_1001111_0011111" when B"10001011", -- 330   mib 330 (freq: 2489.015870)
        B"0000_0_1000_1001111_0011111" when B"10001010", -- 329   mib 328 (freq: 2505.041820)
        B"0000_0_1000_1001111_0011111" when B"10001001", -- 328   mib 328 (freq: 2505.041820)
        B"0000_0_0100_1001111_0011111" when B"10001000", -- 327   mib 326 (freq: 2521.170955)
        B"0000_0_0100_1001111_0011111" when B"10000111", -- 326   mib 326 (freq: 2521.170955)
        B"0000_0_0010_1001111_0011111" when B"10000110", -- 325   mib 324 (freq: 2537.403941)
        B"0000_0_0010_1001111_0011111" when B"10000101", -- 324   mib 324 (freq: 2537.403941)
        B"0000_0_0001_1001111_0011111" when B"10000100", -- 323   mib 321 (freq: 2553.741445)
        B"0000_0_0001_1001111_0011111" when B"10000011", -- 322   mib 321 (freq: 2553.741445)
        B"0000_0_0001_1001111_0011111" when B"10000010", -- 321   mib 321 (freq: 2553.741445)
        B"1000_0_0000_1001111_0000000" when B"10000001", -- 320    mi 319 (freq: 2570.184141)
        B"1000_0_0000_1001111_0000000" when B"10000000", -- 319    mi 319 (freq: 2570.184141)
        B"0100_0_0000_1001111_0000000" when B"01111111", -- 318    mi 317 (freq: 2586.732707)
        B"0100_0_0000_1001111_0000000" when B"01111110", -- 317    mi 317 (freq: 2586.732707)
        B"0010_0_0000_1001111_0000000" when B"01111101", -- 316    mi 315 (freq: 2603.387823)
        B"0010_0_0000_1001111_0000000" when B"01111100", -- 315    mi 315 (freq: 2603.387823)
        B"0001_0_0000_1001111_0000000" when B"01111011", -- 314    mi 313 (freq: 2620.150175)
        B"0001_0_0000_1001111_0000000" when B"01111010", -- 313    mi 313 (freq: 2620.150175)
        B"0001_0_0000_1001111_0000000" when B"01111001", -- 312    mi 311 (freq: 2637.020456)
        B"0000_1_0000_1001111_0000000" when B"01111000", -- 311    mi 311 (freq: 2637.020456)
        B"0000_0_1000_1001111_0000000" when B"01110111", -- 310    mi 309 (freq: 2653.999358)
        B"0000_0_1000_1001111_0000000" when B"01110110", -- 309    mi 309 (freq: 2653.999358)
        B"0000_0_0100_1001111_0000000" when B"01110101", -- 308    mi 307 (freq: 2671.087581)
        B"0000_0_0100_1001111_0000000" when B"01110100", -- 307    mi 307 (freq: 2671.087581)
        B"0000_0_0010_1001111_0000000" when B"01110011", -- 306    mi 305 (freq: 2688.285831)
        B"0000_0_0010_1001111_0000000" when B"01110010", -- 305    mi 305 (freq: 2688.285831)
        B"0000_0_0001_1001111_0000000" when B"01110001", -- 304    mi 303 (freq: 2705.594814)
        B"0000_0_0001_1001111_0000000" when B"01110000", -- 303    mi 303 (freq: 2705.594814)
        B"1000_0_0000_1000111_0000000" when B"01101111", -- 302    fa 302 (freq: 2723.015243)
        B"0100_0_0000_1000111_0000000" when B"01101110", -- 301    fa 300 (freq: 2740.547838)
        B"0100_0_0000_1000111_0000000" when B"01101101", -- 300    fa 300 (freq: 2740.547838)
        B"0010_0_0000_1000111_0000000" when B"01101100", -- 299    fa 298 (freq: 2758.193318)
        B"0010_0_0000_1000111_0000000" when B"01101011", -- 298    fa 298 (freq: 2758.193318)
        B"0001_0_0000_1000111_0000000" when B"01101010", -- 297    fa 296 (freq: 2775.952413)
        B"0001_0_0000_1000111_0000000" when B"01101001", -- 296    fa 296 (freq: 2775.952413)
        B"0001_0_0000_1000111_0000000" when B"01101000", -- 295    fa 294 (freq: 2793.825852)
        B"0000_1_0000_1000111_0000000" when B"01100111", -- 294    fa 294 (freq: 2793.825852)
        B"0000_0_1000_1000111_0000000" when B"01100110", -- 293    fa 292 (freq: 2811.814372)
        B"0000_0_1000_1000111_0000000" when B"01100101", -- 292    fa 292 (freq: 2811.814372)
        B"0000_0_0100_1000111_0000000" when B"01100100", -- 291    fa 290 (freq: 2829.918714)
        B"0000_0_0100_1000111_0000000" when B"01100011", -- 290    fa 290 (freq: 2829.918714)
        B"0000_0_0010_1000111_0000000" when B"01100010", -- 289    fa 288 (freq: 2848.139625)
        B"0000_0_0010_1000111_0000000" when B"01100001", -- 288    fa 288 (freq: 2848.139625)
        B"0000_0_0001_1000111_0000000" when B"01100000", -- 287    fa 286 (freq: 2866.477853)
        B"0000_0_0001_1000111_0000000" when B"01011111", -- 286    fa 286 (freq: 2866.477853)
        B"1000_0_0000_1111011_0011111" when B"01011110", -- 285  solb 285 (freq: 2884.934156)
        B"0100_0_0000_1111011_0011111" when B"01011101", -- 284  solb 283 (freq: 2903.509292)
        B"0100_0_0000_1111011_0011111" when B"01011100", -- 283  solb 283 (freq: 2903.509292)
        B"0010_0_0000_1111011_0011111" when B"01011011", -- 282  solb 281 (freq: 2922.204028)
        B"0010_0_0000_1111011_0011111" when B"01011010", -- 281  solb 281 (freq: 2922.204028)
        B"0001_0_0000_1111011_0011111" when B"01011001", -- 280  solb 279 (freq: 2941.019133)
        B"0001_0_0000_1111011_0011111" when B"01011000", -- 279  solb 279 (freq: 2941.019133)
        B"0001_0_0000_1111011_0011111" when B"01010111", -- 278  solb 277 (freq: 2959.955382)
        B"0000_0_0000_1111011_0011111" when B"01010110", -- 277  solb 277 (freq: 2959.955382)
        B"0000_0_1000_1111011_0011111" when B"01010101", -- 276  solb 276 (freq: 2979.013555)
        B"0000_0_0100_1111011_0011111" when B"01010100", -- 275  solb 274 (freq: 2998.194438)
        B"0000_0_0100_1111011_0011111" when B"01010011", -- 274  solb 274 (freq: 2998.194438)
        B"0000_0_0010_1111011_0011111" when B"01010010", -- 273  solb 272 (freq: 3017.498820)
        B"0000_0_0010_1111011_0011111" when B"01010001", -- 272  solb 272 (freq: 3017.498820)
        B"0000_0_0001_1111011_0011111" when B"01010000", -- 271  solb 270 (freq: 3036.927496)
        B"0000_0_0001_1111011_0011111" when B"01001111", -- 270  solb 270 (freq: 3036.927496)
        B"1000_0_0000_1111011_0000000" when B"01001110", -- 269   sol 269 (freq: 3056.481268)
        B"0100_0_0000_1111011_0000000" when B"01001101", -- 268   sol 267 (freq: 3076.160939)
        B"0100_0_0000_1111011_0000000" when B"01001100", -- 267   sol 267 (freq: 3076.160939)
        B"0010_0_0000_1111011_0000000" when B"01001011", -- 266   sol 265 (freq: 3095.967322)
        B"0010_0_0000_1111011_0000000" when B"01001010", -- 265   sol 265 (freq: 3095.967322)
        B"0001_0_0000_1111011_0000000" when B"01001001", -- 264   sol 264 (freq: 3115.901231)
        B"0001_0_0000_1111011_0000000" when B"01001000", -- 263   sol 262 (freq: 3135.963488)
        B"0000_1_0000_1111011_0000000" when B"01000111", -- 262   sol 262 (freq: 3135.963488)
        B"0000_0_1000_1111011_0000000" when B"01000110", -- 261   sol 260 (freq: 3156.154919)
        B"0000_0_1000_1111011_0000000" when B"01000101", -- 260   sol 260 (freq: 3156.154919)
        B"0000_0_0100_1111011_0000000" when B"01000100", -- 259   sol 259 (freq: 3176.476357)
        B"0000_0_0010_1111011_0000000" when B"01000011", -- 258   sol 257 (freq: 3196.928637)
        B"0000_0_0010_1111011_0000000" when B"01000010", -- 257   sol 257 (freq: 3196.928637)
        B"0000_0_0001_1111011_0000000" when B"01000001", -- 256   sol 255 (freq: 3217.512603)
        B"0000_0_0001_1111011_0000000" when B"01000000", -- 255   sol 255 (freq: 3217.512603)
        B"1000_0_0000_1110111_0011111" when B"00111111", -- 254   lab 254 (freq: 3238.229102)
        B"0100_0_0000_1110111_0011111" when B"00111110", -- 253   lab 252 (freq: 3259.078988)
        B"0100_0_0000_1110111_0011111" when B"00111101", -- 252   lab 252 (freq: 3259.078988)
        B"0010_0_0000_1110111_0011111" when B"00111100", -- 251   lab 250 (freq: 3280.063119)
        B"0010_0_0000_1110111_0011111" when B"00111011", -- 250   lab 250 (freq: 3280.063119)
        B"0001_0_0000_1110111_0011111" when B"00111010", -- 249   lab 249 (freq: 3301.182360)
        B"0001_0_0000_1110111_0011111" when B"00111001", -- 248   lab 247 (freq: 3322.437581)
        B"0000_1_0000_1110111_0011111" when B"00111000", -- 247   lab 247 (freq: 3322.437581)
        B"0000_0_1000_1110111_0011111" when B"00110111", -- 246   lab 246 (freq: 3343.829657)
        B"0000_0_0100_1110111_0011111" when B"00110110", -- 245   lab 244 (freq: 3365.359470)
        B"0000_0_0100_1110111_0011111" when B"00110101", -- 244   lab 244 (freq: 3365.359470)
        B"0000_0_0010_1110111_0011111" when B"00110100", -- 243   lab 243 (freq: 3387.027906)
        B"0000_0_0001_1110111_0011111" when B"00110011", -- 242   lab 241 (freq: 3408.835858)
        B"0000_0_0001_1110111_0011111" when B"00110010", -- 241   lab 241 (freq: 3408.835858)
        B"1000_0_0000_1110111_0000000" when B"00110001", -- 240    la 239 (freq: 3430.784224)
        B"1000_0_0000_1110111_0000000" when B"00110000", -- 239    la 239 (freq: 3430.784224)
        B"0100_0_0000_1110111_0000000" when B"00101111", -- 238    la 238 (freq: 3452.873909)
        B"0010_0_0000_1110111_0000000" when B"00101110", -- 237    la 236 (freq: 3475.105822)
        B"0010_0_0000_1110111_0000000" when B"00101101", -- 236    la 236 (freq: 3475.105822)
        B"0001_0_0000_1110111_0000000" when B"00101100", -- 235    la 235 (freq: 3497.480878)
        B"0001_0_0000_1110111_0000000" when B"00101011", -- 234    la 233 (freq: 3520.000000)
        B"0000_1_0000_1110111_0000000" when B"00101010", -- 233    la 233 (freq: 3520.000000)
        B"0000_0_1000_1110111_0000000" when B"00101001", -- 232    la 232 (freq: 3542.664116)
        B"0000_0_0100_1110111_0000000" when B"00101000", -- 231    la 230 (freq: 3565.474158)
        B"0000_0_0100_1110111_0000000" when B"00100111", -- 230    la 230 (freq: 3565.474158)
        B"0000_0_0010_1110111_0000000" when B"00100110", -- 229    la 229 (freq: 3588.431066)
        B"0000_0_0001_1110111_0000000" when B"00100101", -- 228    la 227 (freq: 3611.535786)
        B"0000_0_0001_1110111_0000000" when B"00100100", -- 227    la 227 (freq: 3611.535786)
        B"1000_0_0000_0011111_0011111" when B"00100011", -- 226   sib 226 (freq: 3634.789270)
        B"0100_0_0000_0011111_0011111" when B"00100010", -- 225   sib 225 (freq: 3658.192476)
        B"0010_0_0000_0011111_0011111" when B"00100001", -- 224   sib 223 (freq: 3681.746367)
        B"0010_0_0000_0011111_0011111" when B"00100000", -- 223   sib 223 (freq: 3681.746367)
        B"0001_0_0000_0011111_0011111" when B"00011111", -- 222   sib 222 (freq: 3705.451914)
        B"0001_0_0000_0011111_0011111" when B"00011110", -- 221   sib 220 (freq: 3729.310092)
        B"0000_1_0000_0011111_0011111" when B"00011101", -- 220   sib 220 (freq: 3729.310092)
        B"0000_0_1000_0011111_0011111" when B"00011100", -- 219   sib 219 (freq: 3753.321886)
        B"0000_0_0100_0011111_0011111" when B"00011011", -- 218   sib 217 (freq: 3777.488284)
        B"0000_0_0100_0011111_0011111" when B"00011010", -- 217   sib 217 (freq: 3777.488284)
        B"0000_0_0010_0011111_0011111" when B"00011001", -- 216   sib 216 (freq: 3801.810281)
        B"0000_0_0001_0011111_0011111" when B"00011000", -- 215   sib 215 (freq: 3826.288880)
        B"1000_0_0000_0011111_0000000" when B"00010111", -- 214    si 213 (freq: 3850.925088)
        B"1000_0_0000_0011111_0000000" when B"00010110", -- 213    si 213 (freq: 3850.925088)
        B"0100_0_0000_0011111_0000000" when B"00010101", -- 212    si 212 (freq: 3875.719920)
        B"0010_0_0000_0011111_0000000" when B"00010100", -- 211    si 211 (freq: 3900.674399)
        B"0001_0_0000_0011111_0000000" when B"00010011", -- 210    si 209 (freq: 3925.789550)
        B"0001_0_0000_0011111_0000000" when B"00010010", -- 209    si 209 (freq: 3925.789550)
        B"0000_1_0000_0011111_0000000" when B"00010001", -- 208    si 208 (freq: 3951.066410)
        B"0000_0_1000_0011111_0000000" when B"00010000", -- 207    si 207 (freq: 3976.506020)
        B"0000_0_0100_0011111_0000000" when B"00001111", -- 206    si 205 (freq: 4002.109426)
        B"0000_0_0100_0011111_0000000" when B"00001110", -- 205    si 205 (freq: 4002.109426)
        B"0000_0_0010_0011111_0000000" when B"00001101", -- 204    si 204 (freq: 4027.877685)
        B"0000_0_0001_0011111_0000000" when B"00001100", -- 203    si 203 (freq: 4053.811856)
        B"1000_0_0000_1001110_0000000" when B"00001011", -- 202    do 201 (freq: 4079.913010)
        B"1000_0_0000_1001110_0000000" when B"00001010", -- 201    do 201 (freq: 4079.913010)
        B"0100_0_0000_1001110_0000000" when B"00001001", -- 200    do 200 (freq: 4106.182220)
        B"0010_0_0000_1001110_0000000" when B"00001000", -- 199    do 199 (freq: 4132.620568)
        B"0001_0_0000_1001110_0000000" when B"00000111", -- 198    do 198 (freq: 4159.229145)
        B"0001_0_0000_1001110_0000000" when B"00000110", -- 197    do 196 (freq: 4186.009045)
        B"0000_1_0000_1001110_0000000" when B"00000101", -- 196    do 196 (freq: 4186.009045)
        B"0000_0_1000_1001110_0000000" when B"00000100", -- 195    do 195 (freq: 4212.961372)
        B"0000_0_0100_1001110_0000000" when B"00000011", -- 194    do 194 (freq: 4240.087237)
        B"0000_0_0010_1001110_0000000" when B"00000010", -- 193    do 193 (freq: 4267.387756)
        B"0000_0_0001_1001110_0000000" when B"00000001", -- 192    do 191 (freq: 4294.864053)
        B"0000_0_0001_1001110_0000000" when B"00000000", -- 191    do 191 (freq: 4294.864053)
        B"0000_0_0000_1111111_1111111" when others;
end;