Patent ID: 8081599

Claim:
A method for fair sub-carrier allocation and dynamic bit allocation for an orthogonal frequency-division multiplexing (OFDM) system, comprising: obtaining data transmission rates requested by a plurality of users; generating a user sequence based on the data transmission rates requested by the plurality of users, wherein the user after the last user in the user sequence is the first user in the user sequence; obtaining a sub-carrier group having a plurality of sub-carriers; continually and sequentially selecting an allocated user from the user sequence, and performing an allocation process for the allocated user until there are no more users in the user sequence or sub-carriers in the sub-carrier group, the allocation process including: allocating a sub-carrier with the largest response in the sub-carrier group to the allocated user; removing the sub-carrier with the largest response from the sub-carrier group; removing the allocated user from the user sequence when the sum of the data transmission rates of all the sub-carriers allocated to the allocated user is larger than that requested by the allocated user; allocating at least one sub-carrier to each user in the user group to form a user-sub-carrier group; and continually performing an assignment process when the user group includes at least one user, the assignment process including: selecting a user with the highest sum of transmission rates from the user group as an assigned user; selecting a sub-carrier with the lowest response from the user-sub-carrier group allocated to the assigned user as a first assigned sub-carrier; selecting a sub-carrier with the highest response from the unallocated sub-carrier group for the assigned user as a second assigned sub-carrier; calculating the bit error rate (BER) for the assigned user when a portion of the data carried by the first assigned sub-carrier is assigned to the second assigned sub-carrier, the result being an assigned BER; when the assigned BER is lower than a predetermined BER, including: assigning the portion of the data carried by the first assigned sub-carrier to the second assigned sub-carrier; allocating the second assigned sub-carrier to the assigned user; and then removing the second assigned sub-carrier from the unallocated sub-carrier group; removing the first assigned sub-carrier from the user-sub-carrier group of the assigned user; and removing the assigned user from the user group when there are no more sub-carriers in the user-sub-carrier group of the assigned user.