📄 readme
字号:
convolution===========This module does a convolutional encoding/decoding.The code can be chosen according to the following parametersn Number of transmitted bits per k data bitsk Number of data bits per n transmitted bitsm Number of memory registerspolys Array of polynome definition. The number of polynomes must be equal to nAny values of n and k are legal, but a useful code can only be achievedif k>=n and n<=mThe transmitted code blocklength is >= n/k times the data blocklength. Thusa large n/k reduces capacity but improves error resistance due to higher redundancy.For implementation reasons, m is limited to 32 (number of bits in an int value).Still, for memory and performance reasons only m << 32 are possibleconvolution_rcv---------------For description also refer to convolution.cThis module is the receiver part (decoder) of the convolution code.Besides the configuration parameters described in convolution.c, thefollowing decoder specific parameters must be set:trunclength Indicates the length of the trellis which will never be exceeded. This Parameter must always be > 2, large values produce better error correction but reduce decoder speed performance and increase memory consumptionInputs: U8outputs: U8Config: *polys<REG_STATUS>: 0x37,0x73 array of polynome-definitions. The array has length n, and holds one REG_STATUS value for each polynome. The bits of a value define if this term should be added to the result or not. Of each value, only the m LSB are relevant. All others should be set to 0. Be aware that the LSB (bit 0) represents the term d^m, while the bit m represent the term d^0. E.g. A polynome which calculates the result as the latest, 4th latest and the 5th latest bits p=1+d^3+d^4 has value=0b00000000 00000000 00000000 00011001 = 0x000000019 k<int>: 1 The number of input bits (number of input bits to generate n output bits) m<int>: 8 Number of memory registers used (limited to 32 because of use of unsigned int to define a state) n<int>: 2 The number of output bits (output bits per input bit) truncblock<int>: 50 indicates how many trellis-steps should be truncated in one truncate operation trunclength<int>: 100 length of state-history of trellis. The trellis is truncated whenever it exceeds this sizeStats: time_calcsucc<double>: Stores the total time spent in calculating the trellis time_truncate<double>: Stores the total time spent in truncating the code total_time_decode<double>: Stores the total time spent in the decodingconvolution_send----------------For description also refer to convolution.cThis module is the sender part (encoder) of the convolution code.Data blocks are coded independently, i.e. the registers are flushed after each block.Besides the configuration parameters described in convolution.c, thefollowing decoder specific parameters must be set:NO SPECIFIC CONFIGInputs: U8outputs: U8Config: *polys<REG_STATUS>: 0x37, 0x73 k<int>: 1 The number of input bits (number of input bits to generate n output bits) m<int>: 8 Number of memory registers used (limited to 32 because of use of unsigned int to define a state) n<int>: 2 The number of output bits (output bits per input bit)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -