📄 fft.asm
字号:
.mmregs
.ref bit_rev,unpack,fft,power,find
.def fft_data,sine,cosine,MAIN
K_FFT_SIZE .set 512 ; # of complex points (=N)
K_LOGN .set 9 ; # of stages (=logN/log2)
K_ZERO_BK .set 0
K_TWID_TBL_SIZE .set 512 ; Twiddle table size
K_DATA_IDX_1 .set 2 ; Data index for Stage 1
K_DATA_IDX_2 .set 4 ; Data index for Stage 2
K_DATA_IDX_3 .set 8 ; Data index for Stage 3
K_FLY_COUNT_3 .set 4 ; Butterfly counter for Stage 3
K_TWID_IDX_3 .set 128 ; Twiddle index for Stage 3 (K_TWID_TBL_SIZE/4)
K_STACK_SIZE .set 200 ; stack size
; Set start addresses of buffers
fft_data .usect "fft_bffr", 4*K_FFT_SIZE ; fft data processing buffer
FFT_ORIGIN .set fft_data+2*K_FFT_SIZE
; Copy twiddle tables
.sect "sin_tbl"
.global sine
sine
.WORD 0, 201, 402, 603, 804, 1005, 1206, 1407
.WORD 1607, 1808, 2009, 2210, 2410, 2611, 2811, 3011
.WORD 3211, 3411, 3611, 3811, 4011, 4210, 4409, 4609
.WORD 4808, 5006, 5205, 5403, 5602, 5800, 5997, 6195
.WORD 6392, 6589, 6786, 6983, 7179, 7375, 7571, 7766
.WORD 7961, 8156, 8351, 8545, 8739, 8933, 9126, 9319
.WORD 9512, 9704, 9896, 10087, 10278, 10469, 10659, 10849
.WORD 11039, 11228, 11416, 11605, 11793, 11980, 12167, 12353
.WORD 12539, 12725, 12910, 13094, 13278, 13462, 13645, 13828
.WORD 14010, 14191, 14372, 14552, 14732, 14912, 15090, 15269
.WORD 15446, 15623, 15800, 15976, 16151, 16325, 16499, 16673
.WORD 16846, 17018, 17189, 17360, 17530, 17700, 17869, 18037
.WORD 18204, 18371, 18537, 18703, 18868, 19032, 19195, 19358
.WORD 19519, 19681, 19841, 20001, 20159, 20318, 20475, 20631
.WORD 20787, 20942, 21097, 21250, 21403, 21555, 21706, 21856
.WORD 22005, 22154, 22301, 22448, 22594, 22740, 22884, 23027
.WORD 23170, 23312, 23453, 23593, 23732, 23870, 24007, 24144
.WORD 24279, 24414, 24547, 24680, 24812, 24943, 25073, 25201
.WORD 25330, 25457, 25583, 25708, 25832, 25955, 26077, 26199
.WORD 26319, 26438, 26557, 26674, 26790, 26905, 27020, 27133
.WORD 27245, 27356, 27466, 27576, 27684, 27791, 27897, 28002
.WORD 28106, 28208, 28310, 28411, 28511, 28609, 28707, 28803
.WORD 28898, 28993, 29086, 29178, 29269, 29359, 29447, 29535
.WORD 29621, 29707, 29791, 29874, 29956, 30037, 30117, 30196
.WORD 30273, 30350, 30425, 30499, 30572, 30644, 30714, 30784
.WORD 30852, 30919, 30985, 31050, 31114, 31176, 31237, 31298
.WORD 31357, 31414, 31471, 31526, 31581, 31634, 31685, 31736
.WORD 31785, 31834, 31881, 31927, 31971, 32015, 32057, 32098
.WORD 32138, 32176, 32214, 32250, 32285, 32319, 32351, 32383
.WORD 32413, 32442, 32469, 32496, 32521, 32545, 32568, 32589
.WORD 32610, 32629, 32647, 32663, 32679, 32693, 32706, 32718
.WORD 32728, 32737, 32745, 32752, 32758, 32762, 32765, 32767
.WORD 32767, 32767, 32765, 32762, 32758, 32752, 32745, 32737
.WORD 32728, 32718, 32706, 32693, 32679, 32663, 32647, 32629
.WORD 32610, 32589, 32568, 32545, 32521, 32496, 32469, 32442
.WORD 32413, 32383, 32351, 32319, 32285, 32250, 32214, 32176
.WORD 32138, 32098, 32057, 32015, 31971, 31927, 31881, 31834
.WORD 31785, 31736, 31685, 31634, 31581, 31526, 31471, 31414
.WORD 31357, 31298, 31237, 31176, 31114, 31050, 30985, 30919
.WORD 30852, 30784, 30714, 30644, 30572, 30499, 30425, 30350
.WORD 30273, 30196, 30117, 30037, 29956, 29874, 29791, 29707
.WORD 29621, 29535, 29447, 29359, 29269, 29178, 29086, 28993
.WORD 28898, 28803, 28707, 28609, 28511, 28411, 28310, 28208
.WORD 28106, 28002, 27897, 27791, 27684, 27576, 27466, 27356
.WORD 27245, 27133, 27020, 26905, 26790, 26674, 26557, 26438
.WORD 26319, 26199, 26077, 25955, 25832, 25708, 25583, 25457
.WORD 25330, 25201, 25073, 24943, 24812, 24680, 24547, 24414
.WORD 24279, 24144, 24007, 23870, 23732, 23593, 23453, 23312
.WORD 23170, 23027, 22884, 22740, 22594, 22448, 22301, 22154
.WORD 22005, 21856, 21706, 21555, 21403, 21250, 21097, 20942
.WORD 20787, 20631, 20475, 20318, 20159, 20001, 19841, 19681
.WORD 19519, 19358, 19195, 19032, 18868, 18703, 18537, 18371
.WORD 18204, 18037, 17869, 17700, 17530, 17360, 17189, 17018
.WORD 16846, 16673, 16499, 16325, 16151, 15976, 15800, 15623
.WORD 15446, 15269, 15090, 14912, 14732, 14552, 14372, 14191
.WORD 14010, 13828, 13645, 13462, 13278, 13094, 12910, 12725
.WORD 12539, 12353, 12167, 11980, 11793, 11605, 11416, 11228
.WORD 11039, 10849, 10659, 10469, 10278, 10087, 9896, 9704
.WORD 9512, 9319, 9126, 8933, 8739, 8545, 8351, 8156
.WORD 7961, 7766, 7571, 7375, 7179, 6983, 6786, 6589
.WORD 6392, 6195, 5997, 5800, 5602, 5403, 5205, 5006
.WORD 4808, 4609, 4409, 4210, 4011, 3811, 3611, 3411
.WORD 3211, 3011, 2811, 2611, 2410, 2210, 2009, 1808
.WORD 1607, 1407, 1206, 1005, 804, 603, 402, 201
.sect "cos_tbl"
.global cosine
cosine
.WORD 32767, 32765, 32762, 32758, 32752, 32745, 32737, 32728
.WORD 32718, 32706, 32693, 32679, 32663, 32647, 32629, 32610
.WORD 32589, 32568, 32545, 32521, 32496, 32469, 32442, 32413
.WORD 32383, 32351, 32319, 32285, 32250, 32214, 32176, 32138
.WORD 32098, 32057, 32015, 31971, 31927, 31881, 31834, 31785
.WORD 31736, 31685, 31634, 31581, 31526, 31471, 31414, 31357
.WORD 31298, 31237, 31176, 31114, 31050, 30985, 30919, 30852
.WORD 30784, 30714, 30644, 30572, 30499, 30425, 30350, 30273
.WORD 30196, 30117, 30037, 29956, 29874, 29791, 29707, 29621
.WORD 29535, 29447, 29359, 29269, 29178, 29086, 28993, 28898
.WORD 28803, 28707, 28609, 28511, 28411, 28310, 28208, 28106
.WORD 28002, 27897, 27791, 27684, 27576, 27466, 27356, 27245
.WORD 27133, 27020, 26905, 26790, 26674, 26557, 26438, 26319
.WORD 26199, 26077, 25955, 25832, 25708, 25583, 25457, 25330
.WORD 25201, 25073, 24943, 24812, 24680, 24547, 24414, 24279
.WORD 24144, 24007, 23870, 23732, 23593, 23453, 23312, 23170
.WORD 23027, 22884, 22740, 22594, 22448, 22301, 22154, 22005
.WORD 21856, 21706, 21555, 21403, 21250, 21097, 20942, 20787
.WORD 20631, 20475, 20318, 20159, 20001, 19841, 19681, 19519
.WORD 19358, 19195, 19032, 18868, 18703, 18537, 18371, 18204
.WORD 18037, 17869, 17700, 17530, 17360, 17189, 17018, 16846
.WORD 16673, 16499, 16325, 16151, 15976, 15800, 15623, 15446
.WORD 15269, 15090, 14912, 14732, 14552, 14372, 14191, 14010
.WORD 13828, 13645, 13462, 13278, 13094, 12910, 12725, 12539
.WORD 12353, 12167, 11980, 11793, 11605, 11416, 11228, 11039
.WORD 10849, 10659, 10469, 10278, 10087, 9896, 9704, 9512
.WORD 9319, 9126, 8933, 8739, 8545, 8351, 8156, 7961
.WORD 7766, 7571, 7375, 7179, 6983, 6786, 6589, 6392
.WORD 6195, 5997, 5800, 5602, 5403, 5205, 5006, 4808
.WORD 4609, 4409, 4210, 4011, 3811, 3611, 3411, 3211
.WORD 3011, 2811, 2611, 2410, 2210, 2009, 1808, 1607
.WORD 1407, 1206, 1005, 804, 603, 402, 201, 0
.WORD -201, -402, -603, -804, -1005, -1206, -1406, -1607
.WORD -1808, -2009, -2210, -2410, -2611, -2811, -3011, -3211
.WORD -3411, -3611, -3811, -4011, -4210, -4409, -4609, -4808
.WORD -5006, -5205, -5403, -5602, -5800, -5997, -6195, -6392
.WORD -6589, -6786, -6983, -7179, -7375, -7571, -7766, -7961
.WORD -8156, -8351, -8545, -8739, -8933, -9126, -9319, -9512
.WORD -9704, -9896, -10087, -10278, -10469, -10659, -10849, -11039
.WORD -11228, -11416, -11605, -11793, -11980, -12167, -12353, -12539
.WORD -12725, -12910, -13094, -13278, -13462, -13645, -13828, -14010
.WORD -14191, -14372, -14552, -14732, -14912, -15090, -15269, -15446
.WORD -15623, -15800, -15976, -16151, -16325, -16499, -16673, -16846
.WORD -17018, -17189, -17360, -17530, -17700, -17869, -18037, -18204
.WORD -18371, -18537, -18703, -18868, -19032, -19195, -19358, -19519
.WORD -19680, -19841, -20001, -20159, -20318, -20475, -20631, -20787
.WORD -20942, -21097, -21250, -21403, -21555, -21706, -21856, -22005
.WORD -22154, -22301, -22448, -22594, -22740, -22884, -23027, -23170
.WORD -23312, -23453, -23593, -23732, -23870, -24007, -24144, -24279
.WORD -24414, -24547, -24680, -24812, -24943, -25073, -25201, -25330
.WORD -25457, -25583, -25708, -25832, -25955, -26077, -26199, -26319
.WORD -26438, -26557, -26674, -26790, -26905, -27020, -27133, -27245
.WORD -27356, -27466, -27576, -27684, -27791, -27897, -28002, -28106
.WORD -28208, -28310, -28411, -28511, -28609, -28707, -28803, -28898
.WORD -28993, -29086, -29178, -29269, -29359, -29447, -29535, -29621
.WORD -29707, -29791, -29874, -29956, -30037, -30117, -30196, -30273
.WORD -30350, -30425, -30499, -30572, -30644, -30714, -30784, -30852
.WORD -30919, -30985, -31050, -31114, -31176, -31237, -31298, -31357
.WORD -31414, -31471, -31526, -31581, -31634, -31685, -31736, -31785
.WORD -31834, -31881, -31927, -31971, -32015, -32057, -32098, -32138
.WORD -32176, -32214, -32250, -32285, -32319, -32351, -32383, -32413
.WORD -32442, -32469, -32496, -32521, -32545, -32568, -32589, -32610
.WORD -32629, -32647, -32663, -32679, -32693, -32706, -32718, -32728
.WORD -32737, -32745, -32752, -32758, -32762, -32765, -32767, -32768
FFT_DP .usect "fft_vars",0
d_grps_cnt .usect "fft_vars",1 ; (# groups in current stage)–1
d_twid_idx .usect "fft_vars",1
; index of twiddle tables
d_data_idx .usect "fft_vars",1 ; index of input data table
data_find .usect "fft_result",1
data_index .usect "fft_result",1
********************************************************************
*ST1 Register Organization
*
* ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
* | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 0 |
* |––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––|
* |BRAF| CPL| XF | HM |INTM| 0 |OVM|SXM|C16|FRCT|CMPT| ASM |
* ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
*
**********************************************************************************
K_BRAF .set 0b << 15 ; BRAF = 0 at reset
K_CPL .set 0b << 14 ; CPL = 0 at reset
K_XF .set 1b << 13 ; XF = 1 at reset
K_HM .set 0b << 12 ; HM = 0 at reset
K_INTM .set 1b << 11 ; INTM
K_ST1_RESR .set 0b << 10 ; reserved
K_OVM .set 1b << 9 ; OVM = 0 at reset
K_SXM .set 1b << 8 ; SXM = 1 at reset
K_C16 .set 0b << 07 ; C16 = 0 at reset
K_FRCT .set 1b << 06 ; FRCT = 0 at reset, Set FRCT
K_CMPT .set 0b << 05 ; CMPT = 0 at reset
K_ASM .set 00000b << 00 ; ASM = 0 at reset
K_ST1_HIGH .set K_BRAF|K_CPL|K_XF|K_HM|K_INTM|K_ST1_RESR|K_OVM|K_SXM
K_ST1_LOW .set K_C16|K_FRCT|K_CMPT|K_ASM
K_ST1 .set K_ST1_HIGH|K_ST1_LOW
STACK .usect "stack",K_STACK_SIZE
SYSTEM_STACK .set K_STACK_SIZE+STACK
.sect "data_in"
.global data_input
data_input
.WORD 004B5FH
.WORD 00F7E6H
.WORD 00445BH
.WORD 00B38CH
.WORD 00092DH
.WORD 00BA93H
.WORD 004D85H
.WORD 00F5C3H
.WORD 00467CH
.WORD 00B16DH
.WORD 000B4AH
.WORD 00B878H
.WORD 004F9EH
.WORD 00F3ACH
.WORD 004890H
.WORD 00AF5BH
.WORD 000D5AH
.WORD 00B66BH
.WORD 0051A8H
.WORD 00F1A4H
.WORD 004A96H
.WORD 00AD57H
.WORD 000F5BH
.WORD 00B46CH
.WORD 0053A5H
.WORD 00EFAAH
.WORD 004C8EH
.WORD 00AB62H
.WORD 00114EH
.WORD 00B27CH
.WORD 005593H
.WORD 00EDBFH
.WORD 004E77H
.WORD 00A97CH
.WORD 001331H
.WORD 00B09BH
.WORD 005771H
.WORD 00EBE3H
.WORD 005050H
.WORD 00A7A6H
.WORD 001505H
.WORD 00AEC9H
.WORD 005940H
.WORD 00EA17H
.WORD 005219H
.WORD 00A5DFH
.WORD 0016C9H
.WORD 00AD08H
.WORD 005AFEH
.WORD 00E85BH
.WORD 0053D2H
.WORD 00A429H
.WORD 00187DH
.WORD 00AB57H
.WORD 005CACH
.WORD 00E6B0H
.WORD 00557BH
.WORD 00A283H
.WORD 001A1FH
.WORD 00A9B8H
.WORD 005E49H
.WORD 00E516H
.WORD 005712H
.WORD 00A0EFH
.WORD 001BB0H
.WORD 00A829H
.WORD 005FD4H
.WORD 00E38EH
.WORD 005897H
.WORD 009F6DH
.WORD 001D30H
.WORD 00A6ADH
.WORD 00614EH
.WORD 00E217H
.WORD 005A0AH
.WORD 009DFCH
.WORD 001E9DH
.WORD 00A543H
.WORD 0062B5H
.WORD 00E0B3H
.WORD 005B6BH
.WORD 009C9EH
.WORD 001FF8H
.WORD 00A3EBH
.WORD 00640AH
.WORD 00DF62H
.WORD 005CBAH
.WORD 009B53H
.WORD 002140H
.WORD 00A2A6H
.WORD 00654BH
.WORD 00DE23H
.WORD 005DF5H
.WORD 009A1BH
.WORD 002275H
.WORD 00A174H
.WORD 00667AH
.WORD 00DCF8H
.WORD 005F1DH
.WORD 0098F6H
.WORD 002396H
.WORD 00A056H
.WORD 006795H
.WORD 00DBE0H
.WORD 006031H
.WORD 0097E5H
.WORD 0024A4H
.WORD 009F4CH
.WORD 00689CH
.WORD 00DADDH
.WORD 006132H
.WORD 0096E8H
.WORD 00259EH
.WORD 009E55H
.WORD 00698FH
.WORD 00D9EDH
.WORD 00621EH
.WORD 0095FFH
.WORD 002683H
.WORD 009D73H
.WORD 006A6DH
.WORD 00D912H
.WORD 0062F6H
.WORD 00952BH
.WORD 002754H
.WORD 009CA6H
.WORD 006B38H
.WORD 00D84BH
.WORD 0063B9H
.WORD 00946BH
.WORD 002811H
.WORD 009BEDH
.WORD 006BEDH
.WORD 00D799H
.WORD 006468H
.WORD 0093C0H
.WORD 0028B8H
.WORD 009B49H
.WORD 006C8EH
.WORD 00D6FCH
.WORD 006501H
.WORD 00932AH
.WORD 00294BH
.WORD 009ABAH
.WORD 006D19H
.WORD 00D674H
.WORD 006586H
.WORD 0092A9H
.WORD 0029C8H
.WORD 009A40H
.WORD 006D8FH
.WORD 00D601H
.WORD 0065F5H
.WORD 00923EH
.WORD 002A30H
.WORD 0099DCH
.WORD 006DF0H
.WORD 00D5A4H
.WORD 00664EH
.WORD 0091E8H
.WORD 002A82H
.WORD 00998DH
.WORD 006E3BH
.WORD 00D55CH
.WORD 006693H
.WORD 0091A7H
.WORD 002AC0H
.WORD 009953H
.WORD 006E71H
.WORD 00D52AH
.WORD 0066C2H
.WORD 00917CH
.WORD 002AE7H
.WORD 00992FH
.WORD 006E92H
.WORD 00D50DH
.WORD 0066DBH
.WORD 009166H
.WORD 002AF9H
.WORD 009921H
.WORD 006E9DH
.WORD 00D506H
.WORD 0066DEH
.WORD 009166H
.WORD 002AF6H
.WORD 009928H
.WORD 006E92H
.WORD 00D514H
.WORD 0066CCH
.WORD 00917CH
.WORD 002ADCH
.WORD 009945H
.WORD 006E71H
.WORD 00D538H
.WORD 0066A5H
.WORD 0091A7H
.WORD 002AAEH
.WORD 009977H
.WORD 006E3BH
.WORD 00D572H
.WORD 006668H
.WORD 0091E8H
.WORD 002A69H
.WORD 0099BFH
.WORD 006DF0H
.WORD 00D5C1H
.WORD 006615H
.WORD 00923EH
.WORD 002A10H
.WORD 009A1CH
.WORD 006D8FH
.WORD 00D625H
.WORD 0065ADH
.WORD 0092A9H
.WORD 0029A0H
.WORD 009A8FH
.WORD 006D19H
.WORD 00D69FH
.WORD 006530H
.WORD 00932AH
.WORD 00291CH
.WORD 009B17H
.WORD 006C8EH
.WORD 00D72EH
.WORD 00649DH
.WORD 0093C0H
.WORD 002883H
.WORD 009BB4H
.WORD 006BEDH
.WORD 00D7D2H
.WORD 0063F6H
.WORD 00946BH
.WORD 0027D4H
.WORD 009C66H
.WORD 006B38H
.WORD 00D88BH
.WORD 006339H
.WORD 00952BH
.WORD 002711H
.WORD 009D2CH
.WORD 006A6DH
.WORD 00D958H
.WORD 006268H
.WORD 0095FFH
.WORD 002639H
.WORD 009E08H
.WORD 00698FH
.WORD 00DA3BH
.WORD 006183H
.WORD 0096E8H
.WORD 00254DH
.WORD 009EF7H
.WORD 00689CH
.WORD 00DB31H
.WORD 006089H
.WORD 0097E5H
.WORD 00244CH
.WORD 009FFBH
.WORD 006795H
.WORD 00DC3BH
.WORD 005F7BH
.WORD 0098F6H
.WORD 002338H
.WORD 00A113H
.WORD 00667AH
.WORD 00DD5AH
.WORD 005E5AH
.WORD 009A1BH
.WORD 002210H
.WORD 00A23EH
.WORD 00654BH
.WORD 00DE8BH
.WORD 005D25H
.WORD 009B53H
.WORD 0020D5H
.WORD 00A37DH
.WORD 00640AH
.WORD 00DFD0H
.WORD 005BDDH
.WORD 009C9EH
.WORD 001F86H
.WORD 00A4CEH
.WORD 0062B5H
.WORD 00E128H
.WORD 005A82H
.WORD 009DFCH
.WORD 001E25H
.WORD 00A632H
.WORD 00614EH
.WORD 00E292H
.WORD 005915H
.WORD 009F6DH
.WORD 001CB2H
.WORD 00A7A9H
.WORD 005FD4H
.WORD 00E40FH
.WORD 005795H
.WORD 00A0EFH
.WORD 001B2CH
.WORD 00A931H
.WORD 005E49H
.WORD 00E59DH
.WORD 005604H
.WORD 00A283H
.WORD 001995H
.WORD 00AACBH
.WORD 005CACH
.WORD 00E73DH
.WORD 005462H
.WORD 00A429H
.WORD 0017EDH
.WORD 00AC76H
.WORD 005AFEH
.WORD 00E8EDH
.WORD 0052AEH
.WORD 00A5DFH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -