| поискавой системы для электроныых деталей |
|
DSPIC30F датащи(PDF) 52 Page - Microchip Technology |
|
|
|||||||||||||||||||||||||||||
DSPIC30F датащи(HTML) 52 Page - Microchip Technology |
|
52 / 248 page ![]() dsPIC30F DS70083G-page 50 Preliminary 2004 Microchip Technology Inc. 4.4 Modulo Addressing Modulo addressing is a method of providing an auto- mated means to support circular data buffers using hardware. The objective is to remove the need for soft- ware to perform data address boundary checks when executing tightly looped code, as is typical in many DSP algorithms. Modulo addressing can operate in either data or pro- gram space (since the data pointer mechanism is essentially the same for both). One circular buffer can be supported in each of the X (which also provides the pointers into program space) and Y data spaces. Mod- ulo addressing can operate on any W register pointer. However, it is not advisable to use W14 or W15 for mod- ulo addressing since these two registers are used as the stack frame pointer and stack pointer, respectively. In general, any particular circular buffer can only be configured to operate in one direction, as there are cer- tain restrictions on the buffer start address (for incre- menting buffers), or end address (for decrementing buffers) based upon the direction of the buffer. The only exception to the usage restrictions is for buff- ers which have a power-of-2 length. As these buffers satisfy the start and end address criteria, they may operate in a Bidirectional mode (i.e., address boundary checks will be performed on both the lower and upper address boundaries). 4.4.1 START AND END ADDRESS The modulo addressing scheme requires that a starting and an ending address be specified and loaded into the 16-bit Modulo Buffer Address registers: XMODSRT, XMODEND, YMODSRT, YMODEND (see Table 3-3). If the length of an incrementing buffer is greater than M= 2N-1, but not greater than M = 2N bytes, then the last ‘N’ bits of the data buffer start address must be zeros. There are no such restrictions on the end address of an incrementing buffer. For example, if the buffer size (modulus value) is chosen to be 100 bytes (0x64), then the buffer start address for an increment- ing buffer must contain 7 Least Significant zeros. Valid start addresses may, therefore, be 0xXX00 and 0xXX80 , where ‘X’ is any hexadecimal value. Adding the buffer length to this value and subtracting ‘1’ will give the end address to be written into X/YMODEND. For example, if the start address was chosen to be 0x2000 , then the X/YMODEND would be set to (0x2000 + 0x0064 – 1) = 0x2063. In the case of a decrementing buffer, the last ‘N’ bits of the data buffer end address must be ones. There are no such restrictions on the start address of a decre- menting buffer. For example, if the buffer size (modulus value) is chosen to be 100 bytes (0x64), then the buffer end address for a decrementing buffer must contain 7 Least Significant ones. Valid end addresses may, therefore, be 0xXXFF and 0xXX7F, where ‘X’ is any hexadecimal value. Subtracting the buffer length from this value and adding 1 will give the start address to be written into X/YMODSRT. For example, if the end address was chosen to be 0x207F, then the start address would be (0x207F – 0x0064 + 1) = 0x201C, which is the first physical address of the buffer. The length of a circular buffer is not directly specified. It is determined by the difference between the corre- sponding start and end addresses. The maximum pos- sible length of the circular buffer is 32K words (64 Kbytes). A write operation to the MODCON register should not be immediately followed by an indirect read operation using any W register. Note: The start and end addresses are the first and last byte addresses of the buffer (irre- spective of whether it is a word or byte buffer, or an increasing or decreasing buffer). Moreover, the start address must be even and the end address must be odd (for both word and byte buffers). Note: ‘Start address’ refers to the smallest address boundary of the circular buffer. The first access of the buffer may be at any address within the modulus range (see Section 4.4.4). Note: Y space modulo addressing EA calcula- tions assume word sized data (LS bit of every EA is always clear). Note 1: Using a POP instruction to pop the con- tents of the top-of-stack (TOS) location into MODCON also constitutes a write to MODCON. Therefore, the instruction immediately following such a POP cannot be any instruction performing an indirect read operation. 2: It should be noted that some instructions perform an indirect read operation implicitly. These are: POP, RETURN, RETFIE, RETLW and ULNK. |
|
ссылки URL |
| Вашему бизинису помогли Аллдатащит? [ DONATE ] |
Что такое Аллдатащит | реклама | контакт | Конфиденциальность | Ссылка на техническое описание | обмен ссыками | поиск по производителю All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |