CN101034383A - DMA controller and transmit method for implementing software/hardware reusing - Google Patents
DMA controller and transmit method for implementing software/hardware reusing Download PDFInfo
- Publication number
- CN101034383A CN101034383A CN 200710098670 CN200710098670A CN101034383A CN 101034383 A CN101034383 A CN 101034383A CN 200710098670 CN200710098670 CN 200710098670 CN 200710098670 A CN200710098670 A CN 200710098670A CN 101034383 A CN101034383 A CN 101034383A
- Authority
- CN
- China
- Prior art keywords
- dma
- transmission
- hardware
- value
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 13
- 230000005540 biological transmission Effects 0.000 claims abstract description 275
- 230000002093 peripheral effect Effects 0.000 claims description 53
- 230000014509 gene expression Effects 0.000 claims description 39
- 230000006978 adaptation Effects 0.000 claims description 18
- 238000000151 deposition Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 2
- 241000894007 species Species 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Bus Control (AREA)
Abstract
The invention discloses a DMA controller and its transmission method, achieving the reuse of a hardware / software; DMA controller includes control modules for receiving DMA transfer requests of the hardware and determining whether the hardware request can be run; If possible it can be referred that the DMA transmission launched by the hardware; Also used in providing the information of transmission resources to the CPU when the CPU needs to issue a request of DMA transmission; After receiving DMA transmission request of the CPU, operating DMA transmission by the use of the idle transmission resources chosen by the CPU, and the transmission also stopping the process of the hardware request of the transmission resources until the end or termination of DMA transmission initiated by the CPU. Using this program provided by the invention, as each channel of a DMA controller can support not only the DMA operation of the hardware request but also the DMA operation launched by the CPU, therefore being able to come true the reuse of the hardware / software to the DMA controller.
Description
Technical field
The present invention relates to DMA (Direct Memory Access Control, direct memory access) transmission, be specifically related to a kind of dma controller and transmission method of realizing that software/hardware is multiplexing.
Background technology
In the embedded system that contains central processing unit (CPU), in order to improve internal memory and CPU service efficiency, when a large amount of internal storage datas were clocklike operated, (DirectMemory Access Control, mode DMA) was operated data to adopt direct memory access usually.And the operation of DMA is that (DMA Controller DMAC) realizes by dma controller.For bus system, dma controller is the slave unit of bus, and the same with CPU again is the main equipment (Master) of bus.
Existing dma controller and CPU are jointly as the main equipment of bus.As shown in Figure 1, when input equipment need carry out the DMA transmission, it sent request by the DMA request trigger to dma controller.CPU is with in the address register in the control information dispensing dma controllers such as address before this.When dma controller was received the DMA transmission requests, it was initiated bus to CPU and takies request.CPU gives dma controller with bus control right usually after executing current instruction.This moment, control, the status register of dma controller changed, and showed to obtain bus control right, and initiated a DMA transmission.Usually the DMA transmission is that data buffer peek from peripheral hardware is put into the storer on the bus.In the process of transmission, counter is constantly counted, and stops to count and changing the content of control, status register when transmitting length up to the note of counter.Dma controller is given back bus control right to CPU this moment.
This dma controller can't satisfy the growing demand to performance.In the present application, under a lot of situations, require software directly to initiate a DMA transmission, rather than trigger by hardware by the CPU configuration register.This just needs dma controller to be triggered by CPU, also can be by hardware trigger, but both triggering modes are different, hardware is to come active channel by initiating signal, initiate the DMA transmission, and CPU initiates by configuration register, therefore dma controller can only adopt single by hardware or software control, if multiplexing by software/hardware, then need in system, dispose two cover dma controllers, wasted a large amount of hardware resources like this.
In addition, the DMA transmission initiated of CPU another sector address from the memory copying one piece of data to internal memory and need not central processing unit and participate in normally.For data transmission can be carried out more efficiently, take the transmission mode of " burst " usually.The transmission mode of so-called " burst " is exactly just can carry out the transmission of a plurality of data to primary address and control signal, comprises one or many " burst " transmission in the DMA transmission.For embedded system, once " burst " transmission can be carried out half-word, individual character, 4, the transmission of 8 or 16 " word " usually, and promptly " burst " data length of transmitting is followed successively by half-word, individual character, 4 words, 8 words and 16 words; The burst transfer pattern is to define according to the data length that " burst " transmitted, as 16 word burst transfer patterns, 8 word burst transfer patterns etc.For traditional dma controller of supporting " burst " transmission usually to transmitting limited length system.Suppose that burst transfer length is n word, the data total length by the DMA transmission must be the integral multiple byte of 4n so.For example when transmission " burst " length was 16 words, the length of its DMA transmission need be the integral multiple of the individual byte in 64 (4 * 16).Yet this requirement meeting brings extra burden to CPU, CPU needs at first to calculate the length of the data that need transmission, carries out suitable reduction again, and unnecessary data need the die change formula to carry out a DMA transmission again, perhaps directly carry, had a strong impact on the efficient of transmission by CPU.
And in the prior art, the DMA transmission that peripheral hardware is initiated is normally fetched data from the buffer memory of peripheral hardware and is put in the storer on the bus; Such as need carry out DMA when transmission as peripheral hardware, after its buffer memory was filled data, it initiated the DMA transmission requests by the DMA request trigger to dma controller.CPU is with in the address register in the control information dispensing dma controllers such as address before this, and when dma controller was received the DMA transmission requests, it was initiated bus to CPU and takies request.CPU gives dma controller with bus control right usually after executing present instruction.This moment, control, the status register of dma controller changed, and showed to obtain bus control right, began to carry out the DMA transmission.With a counter data quantity transmitted is counted in the transmission, when counting reached peripheral hardware spatial cache size, dma controller was given back bus control right to CPU, finished this DMA transmission; An i.e. DMA transmission can only be finished the DMA transmission requests of a peripheral hardware.When peripheral hardware needs to carry out the DMA transmission once more, just initiate a DMA transmission again.Though spatial cache is bigger comparatively speaking in the internal memory, still can only transmit the data volume that is equivalent to peripheral hardware spatial cache size at every turn, can not make full use of the space of buffer memory in the internal memory.Because each DMA data quantity transmitted is subjected to the restriction of peripheral hardware spatial cache size, so when transferring large number of data, often need to initiate repeatedly the DMA transmission, and each DMA transmission all must waiting for CPU be given dma controller with bus control right, so transfer efficiency is low.In addition, whenever carry out a DMA transmission, will internally deposit into once visit of row.And the efficient of internal memory is determined by accessed number of times, visits frequently more, and memory efficient is low more, and system effectiveness is directly related with memory efficient, and such working method has reduced the work efficiency of system to a certain extent.
Summary of the invention
At above deficiency, the invention provides a kind of dma controller of realizing that software/hardware is multiplexing, can either initiate the DMA transmission by hardware, also can initiate the DMA transmission by CPU.
The technical solution used in the present invention is:
A kind of direct memory access dma controller of realizing that software/hardware is multiplexing comprises the DMA control module, is used to control the DMA transmission; It is characterized in that:
Described DMA control module is used to receive the DMA transmission requests of hardware, and judges whether to carry out hardware requests; If could would carry out the DMA transmission that described hardware is initiated; Also be used for when CPU need send the DMA transmission requests, the use information of transfer resource is provided to CPU; And after receiving the DMA transmission requests of CPU, utilize the selected idle transfer resource of CPU to carry out the DMA transmission, stop to handle the DMA transmission that the hardware requests of this transfer resource is initiated up to described CPU simultaneously and finish or stop.
Further, described dma controller also comprises:
Hardware requests enabled state register is used to deposit the numerical value of representing the hardware requests enabled state; The value that comprises " permission hardware-enabled " and " not allowing hardware-enabled "; When initiating the DMA transmission, be configured to the value of " not allowing hardware-enabled " by CPU;
The channel status register is used to deposit the numerical value of representing channel status, comprises the value of expression " passage is occupied " and the value of expression " passage can be used ";
The DMA control module also is used in the time will carrying out the DMA transmission, whether the value of inquiring after the channel status register is " passage can be used ", if then carry out the DMA transmission, and the value of described channel status register is changed to the value of expression " passage is occupied " by this passage; Otherwise continue to inquire after the value of described channel status register; And the transmission of the DMA on this passage is finished or in have no progeny, the value of channel status register is changed to the value of expression " passage can be used ";
Described DMA control module judges whether to carry out hardware requests and is meant the value of inquiring after the hardware requests enable register, if for the value of " permission hardware requests " then represent to carry out hardware requests; Otherwise do not handle described hardware requests, continue to inquire after;
Described DMA control module provides the use information of transfer resource to be meant by the value of described channel status register to CPU and informs whether cpu access is idle;
Described DMA control module is changed to " permission hardware-enabled " with the value of hardware-enabled register after the DMA that finishes or interrupts of CPU is initiated transmits.
Further, described dma controller also comprises:
The software asks register is used to deposit the numerical value whether expression CPU initiates the DMA transmission requests, comprises that expression " has software asks " and the value of " no software asks ", is configured to the value of " software asks is arranged " when initiating the DMA transmission by CPU;
Described DMA control module is changed to " no software asks " with the value of the software asks register of this passage after the DMA transmission that CPU initiates is finished, also be used for when the value of transmission course software asks register is changed to " no software asks " by CPU, stop the DMA transmission of this passage;
The DMA transmission requests that described DMA control module receives CPU is meant the monitoring software request register, and when its value was configured to the value of expression " software asks is arranged " by CPU, expression received the DMA transmission requests that CPU initiates.
Further, described DMA control module is controlled each passage and is taken bus in time-multiplexed mode.
Further, described dma controller also comprises: data length computing module and at least one adaptation module;
Described DMA control module also is used for controlling the length that described data length computing module calculates data to be transmitted when carrying out burst transfer, and sends to adaptation module; And carry out burst transfer according to the burst transfer pattern that described adaptation module is selected;
At least one adaptation module is used for according to the highest burst transfer pattern of the automatic efficiency of selection of length of transmission data and exports to described DMA control module.
Further, described adaptation module comprises N group selection unit, and the value of N is that the adoptable transmission mode species number of burst transfer subtracts one;
Each selected cell is used for selecting a kind of according to the length of transmission data in first transmission mode and second transmission mode; Wherein, the efficient of second transmission mode is higher than first transmission mode; When data length that data length second transmission mode once can be transmitted, select second transmission mode; Otherwise select first transmission mode;
In first selected cell, first transmission mode is the minimum transmission mode of efficient; Second transmission mode is an efficient low transmission mode second from the bottom;
First transmission mode of other each selected cell is the selected transmission mode in last unit;
Second transmission mode of last selected cell is best transmission mode; Described last selected cell is exported selected transmission mode and is given the DMA control module.
Further, each selected cell comprises a subtracter, a comparer and a selector switch;
Described selector switch has an output terminal, first, second input end and a selecting side, and selector switch selects road signal in first, second input end to export according to the signal of selecting side;
The first input end of described selector switch is imported the enable signal of first transmission mode; Second input end is imported the enable signal of second transmission mode;
The selector output end of last selected cell links to each other with the DMA control module; In addition, the output terminal of the selector switch of other each selected cell links to each other with the first input end of next selected cell selector switch;
Described subtracter is used to obtain the data length value and second transmission mode can be transmitted the difference of byte number, and exports to comparer;
Described comparer compares described difference and 0, and the output corresponding signal is given the selecting side of described selector switch;
If this difference is more than or equal to 0, then output allows selector switch select the signal of first input end, allows selector switch select the signal of second input end otherwise export.
Further, described DMA control module is being carried out between peripheral hardware and internal memory between the DMA transmission period, when the byte number that transmits between peripheral hardware and dma controller reaches peripheral hardware spatial cache size, finish the signal of the DMA transmission requests between this peripheral hardware and dma controller to peripheral hardware; When the byte number that transmits between dma controller and internal memory reaches memory cache space size, send passage to CPU and finish the transmission interrupt request.
Further, described dma controller also comprises:
Peripheral hardware cache size register is used to deposit the numerical value of the spatial cache size of peripheral hardware;
The memory cache sized registers is used for depositing the numerical value of internal memory spatial cache size;
First counter, the byte number that is used for transmitting between the transmission of the DMA between peripheral hardware and dma controller is to peripheral hardware and dma controller is counted;
Second counter, the byte number that is used for transmitting between a DMA transmission is to dma controller and internal memory is counted;
Whether the count value that described DMA control module is passed through to judge first counter judges whether the byte number that between peripheral hardware and dma controller transmit reach the size of peripheral hardware spatial cache less than the numerical value in the peripheral hardware cache size register; Whether count value by second counter relatively judges whether the byte number that between dma controller and internal memory transmit reach the size in memory cache space less than the numerical value in the memory cache sized registers.
Further, described dma controller also comprises:
Source address variation pattern register is used for depositing the numerical value that the source address variation pattern is transmitted in expression;
Destination address variation pattern register is used for depositing the numerical value of expression transmission destination address variation pattern; Increase such as 1 expression, 2 expressions reduce, and other numeric representation is constant;
The 3rd counter is used to deposit the source address of DMA transmission;
Four-counter is used to deposit the destination address of DMA transmission;
Described DMA control module is carried out the DMA transmission according to the destination address of depositing in source address in the 3rd counter and the four-counter; Also be used for according to the value of source address variation pattern register and destination address variation pattern register control the 3rd, the numerical value of the source/destination address of four-counter increases progressively or successively decrease or constant.
The present invention also provides a kind of method of carrying out the DMA transmission in above-mentioned dma controller, comprising:
Step when CPU will carry out the DMA transmission is:
(A) CPU selects an idle channel in dma controller;
(B) the CPU hardware requests of closing selected passage enables, and sends the DMA transmission requests to the DMA control module;
(C) the DMA control module judges that passage is whether idle, if not idle then return (C); Otherwise, execution in step (D)
(D) the DMA control module is carried out the DMA transmission in the selected passage of step (A), execution in step (E) after transmission is finished;
(E) open the hardware-enabled of described passage;
Step when hardware will carry out the DMA transmission is:
(a) hardware carries out the DMA transmission to the request of DMA control module;
(b) can the judgement of DMA control module carry out hardware requests; If being closed, hardware requests returns (b); Otherwise carry out next step;
(c) the DMA control module judges that passage is whether idle, if not idle then return (c); Otherwise execution in step (d)
(d) the DMA control module is carried out the DMA transmission, finishes up to transmission.
Further, described dma controller also comprises: in the step (C), if CPU sends the requirement of cancellation DMA transmission, then the DMA control module stops transmission, carries out (E).
After having adopted scheme provided by the present invention, because therefore the dma operation that each passage of dma controller not only can the support hardware request but also can support the dma operation that CPU initiates can realize using the software/hardware to dma controller multiplexing.After adopting prioritization scheme, when carrying out " burst " transmission, this dma controller can be adjusted transport-type according to the total length self-adaptation of transmission data, can carry out in mode the most efficiently to guarantee that DMA transmits; And when the transmission of carrying out between peripheral hardware and internal memory, each data quantity transmitted no longer is subject to the cache size of peripheral hardware, has improved transfer efficiency.
Description of drawings
Fig. 1 is the principle of work synoptic diagram of dma controller in the prior art;
Fig. 2 is the synoptic diagram of the concrete enforcement of dma controller of the present invention;
Fig. 3 is the logical circuitry of the concrete enforcement of adaptation module in the dma controller of the present invention.
Embodiment
A kind of dma controller of realizing that software/hardware is multiplexing as shown in Figure 2, comprises at least one adaptation module, at least one passage, DMA control module, data length computing module, registers group and several counters.
Each passage links to each other with a hardware by different interfaces respectively.
Described registers group comprises:
Peripheral hardware cache size register is used to deposit the numerical value of the spatial cache size of peripheral hardware;
The memory cache sized registers is used for depositing the numerical value of internal memory spatial cache size;
The hardware requests enabled state register of each passage is used to deposit the numerical value of representing the hardware requests enabled state; Allow hardware requests such as 1 expression, other numeric representation does not allow hardware requests; The initial value of this register acquiescence is the value of expression " permission hardware requests ";
The channel status register of each passage is used to deposit the numerical value of representing channel status; Occupied such as 1 expression passage, other numeric representation passage can be used;
The software asks register of each passage is used to deposit the numerical value whether expression CPU initiates the DMA transmission requests, such as 1 expression software asks is arranged; Other numeric representation does not have software asks.
When software will be initiated the DMA transmission requests, elder generation selected a passage at random and the value of its channel status register is judged, if be " passage is occupied ", then reselects; If be " passage can with ", the passage free time is described, then CPU is changed to the value of " not allowing hardware requests " with the value of the hardware requests enable register of this passage, and the value of configuration software request register is " software asks is arranged ";
The source address variation pattern register of each passage is used for depositing the numerical value that the source address variation pattern is transmitted in expression; Increase such as 1 expression, 2 expressions reduce, and other numeric representation is constant;
The destination address variation pattern register of each passage is used for depositing the numerical value of expression transmission destination address variation pattern; Increase such as 1 expression, 2 expressions reduce, and other numeric representation is constant;
In carrying out the process of DMA transmission, exist multiple demand for the variation of address.For example,, when depositing in a slice internal memory, just need source address constant, and destination address increase when needs are peeked from a FIFO; When peek is deposited among the FIFO from internal memory, then need source address to increase, destination address is constant.In the practical application, the value of source address variation pattern register and destination address variation pattern register is disposed according to the DMA transmission requirements by CPU.
Described counter comprises:
First counter, the byte number that is used for transmitting between the transmission of the DMA between peripheral hardware and dma controller is to peripheral hardware and dma controller is counted;
Second counter, the byte number that is used for transmitting between a DMA transmission is to dma controller and internal memory is counted;
The 3rd counter is used to deposit the source address of DMA transmission;
Four-counter is used to deposit the destination address of DMA transmission.
Described DMA control module is used to receive the DMA transmission requests of hardware, and judges whether the value of the hardware requests enable register of its continuous passage is the value of " permission hardware requests ", if then carry out the DMA transmission that this hardware is initiated; Otherwise not processing hardware request continues to inquire after the value of described hardware requests enable register, and up to the DMA end of transmission (EOT) that CPU initiates, the DMA control module is changed to the value of hardware requests enable register till " permission hardware requests ".
Described DMA control module also is used to monitor the software asks register of each passage, when its value is configured to the value of expression " software asks is arranged " by CPU, carries out the DMA transmission that CPU initiated by this passage; And after transmission is finished, the value of the software asks register of this passage is changed to " no software asks ", the value of hardware-enabled register is changed to " permission hardware-enabled "; Also be used for when the value of transmission course software asks register is changed to " no software asks " by CPU, stop the DMA transmission of this passage, and the value of hardware-enabled register is changed to " permission hardware-enabled ".
Described DMA control module is in the time will carrying out the DMA transmission, whether the value of at first inquiring after the channel status register is " passage can be used ", if then carry out the DMA transmission, and the value of described channel status register is changed to the value of expression " passage is occupied " by this passage; Otherwise continue to inquire after the value of described channel status register.
The DMA control module is used for after beginning DMA transmission, and the value of the channel status register of used transmission channel is changed to " passage is occupied "; After the transmission of the DMA on this passage is finished or stopped, the value of channel status register is changed to the value of expression " passage can be used ".
So, each passage of this dma controller not only can receive the dma operation of hardware requests but also can receive the dma operation that CPU initiates, the request of support software and hardware simultaneously, and improved the utilization rate of DMA hardware resource.When the continuous hardware of a passage does not need to carry out the DMA transmission, just can take this passage by configuration register and initiate a DMA transmission by CPU.If CPU because any reason need to cancel before transmission or in the transmission course before request DMA transmission also can by CPU join register cancel before the DMA transmission operation of request.CPU can initiate the outer transmission that is set to internal memory when the FIFO of peripheral hardware is full, initiate the transmission of internal memory to peripheral hardware when the FIFO of peripheral hardware is discontented, and need not wait for that hardware controls and ask DMA to transmit.
The DMA control module is controlled each passage and is taken bus in time-multiplexed mode.Carrying out DMA when transmission when a passage like this, other passage just can carry out data that DMA transmits to needs and prepare and handle; Improved the transfer efficiency of system.
Described DMA control module also is used for controlling described data length computing module and calculates the length---what bytes are data have---of data to be transmitted and send to adaptation module when carrying out burst transfer; And carry out burst transfer according to the burst transfer pattern of described adaptation module output.
Described DMA control module is also being carried out between the DMA transmission period, controls described first, second counter and counts; And by judging that whether the count value of first counter is less than the numerical value in the peripheral hardware cache size register, judge whether the byte number that transmits between peripheral hardware and dma controller reaches the size of peripheral hardware spatial cache, finish the signal of the DMA transmission requests between this peripheral hardware and dma controller when reaching to peripheral hardware; Also be used for count value by second counter relatively whether less than the numerical value of memory cache sized registers, judge whether the byte number that transmits between dma controller and internal memory reaches the size in memory cache space, send passage to CPU when reaching and finish the transmission interrupt request, and the value of described hardware requests enabled state register is configured to the value of " not allowing hardware requests "; When receiving the data cached signal of handling of internal memory---when internal memory can receive again or send data, the value of described hardware requests enabled state register is configured to the value of " permission hardware requests "; To proceed the DMA transmission between peripheral hardware and internal memory.
Described DMA transmission is meant from dma controller and initiates request and obtain bus control right to CPU, to the transmission of carrying out till dma controller sends interruption; In a DMA transmission, dma controller only need be visited internal memory one time, and institute's data quantity transmitted is the size of spatial cache in the internal memory.
DMA transmission between a described peripheral hardware and dma controller is meant that institute's data quantity transmitted is the spatial cache size of peripheral hardware from carrying out the transmission course of exchanges data between peripheral hardware and the dma controller; The size of the spatial cache integral multiple of peripheral hardware cache size normally in the internal memory; In the present invention, can comprise repeatedly the DMA transmission between peripheral hardware and dma controller in the DMA transmission.
In addition, described DMA control module is carried out the DMA transmission according to the destination address of depositing in source address in the 3rd counter and the four-counter; Also be used for according to the value of source address variation pattern register and destination address variation pattern register control the 3rd, the numerical value of the source/destination address of four-counter increases progressively or successively decrease or constant.
Such as when transmitting data to a FIFO from internal memory, the value of the value representation " constant " of destination address variation pattern register; Such as, internal memory transmits the data of 8 bytes to FIFO at every turn, and every transmission primaries just adds 8 with the value of the 3rd counter, will be worth as new source address in the transmission next time then.
When practical application, in the time the number in the internal memory need being covered in a slice internal memory, also can adopt this method, the stationary source address increases destination address and gets final product.
Described adaptation module is used for the highest burst transfer pattern of the automatic efficiency of selection of length according to the transmission data; Its input end links to each other with data length computing module in the dma controller, the highest burst transfer pattern of transmission data length efficiency of selection according to input, selected transmission mode is exported to the DMA control module, make the DMA control module carry out burst transfer according to this pattern.
As shown in Figure 3, described adaptation module comprises N group selection unit, and the value of N is that the adoptable transmission mode species number of burst transfer subtracts 1.
Each selected cell is used for selecting a kind of according to the length of transmission data in first transmission mode and second transmission mode; Wherein, the efficient of second transmission mode is higher than first transmission mode; When data length that data length second transmission mode once can be transmitted, select second transmission mode; Otherwise select first transmission mode.
In first selected cell, first transmission mode is the minimum transmission mode of efficient; Second transmission mode is an efficient low transmission mode second from the bottom;
First transmission mode of other each selected cell is the selected transmission mode in last unit;
Second transmission mode of last selected cell is best transmission mode; Described last selected cell is exported selected transmission mode and is given the DMA control module;
Each selected cell comprises a subtracter, a comparer and a selector switch;
Described selector switch has an output terminal, first, second input end and a selecting side, selector switch is according to the signal of selecting side, select road signal in first, second input end to export, such as signal, when the input low level of selecting side, export the signal of second input end when selecting side input high level time output first input end.
The first input end of described selector switch is imported the enable signal of first transmission mode; Second input end is imported the enable signal of second transmission mode; The selector output end of last selected cell links to each other with the DMA control module; In addition, the output terminal of the selector switch of other each selected cell links to each other with the first input end of next selected cell selector switch.
Described subtracter is used to obtain data length value (is unit with the byte) can transmit the difference of byte number with second transmission mode, and exports to comparer;
Described comparer compares described difference and 0, and the output corresponding signal is given the selecting side of described selector switch; If this difference is more than or equal to 0, then output allows selector switch select the signal of first input end, allows selector switch select the signal of second input end otherwise export.
Hereinafter, have 6 kinds with transmission mode, N=5 is that example is described in detail.
6 kinds of transmission modes are respectively 16 words, 8 words, 4 words, 1 word, half-word and byte transmission mode, and wherein 16 word transmission modes are optimum transmission mode.
Total subtracter, comparer and selector switch are respectively 5 in the circuit; Wherein, subtracter S
1~S
5Output terminal each and comparator C
1~C
5Input end link to each other; C
1~C
5Output terminal respectively with selector switch E
1~E
5The selecting side link to each other;
Each selector switch E
1~E
5Input end to connect signal as follows:
E
1: first input end is the enable signal of byte transmission mode; Second input end is the enable signal of half-word transmission mode;
E
2: first input end connects E
1Output terminal; Second input end is the enable signal of 1 word transmission mode;
E
3: first input end connects E
2Output terminal; Second input end is the enable signal of 4 word transmission modes;
E
4: first input end connects E
3Output terminal; Second input end is the enable signal of 8 word transmission modes;
E
5: first input end connects E
4Output terminal; Second input end is an optimum transmission mode---i.e. the enable signal of 16 word transmission modes;
E
5Output termination DMA control module, this module is according to E
5Output signal adopt corresponding transmission mode to carry out burst transfer.
At first, in the time will carrying out burst transfer, DMA control module control data length computation module is calculated the length (is unit with the byte) of the data that need transmission, and this length value is sent into the input end of each subtracter; Subtracter S
1~S
5Deduct 2 bytes, 4 bytes, 16 bytes, 32 bytes and 64 bytes with this length value respectively, the corresponding respectively comparator C of giving of resulting difference
1~C
5Input end; Each comparer compares the difference and 0 of input, if more than or equal to 0, the signal of then exporting to selector switch is for selecting the signal of second input end; Otherwise the signal of first input end is selected in output.
After this " burst " end of transmission (EOT), calculate the length of remaining data, and then length is inputed to adaptation module by the data length computing unit.
Do the time spent when circuit generation as shown in Figure 1, the transmission of random length can be accepted by dma controller.When residue is transmitted length greater than 16 words, the 16 word burst transfer patterns that the automatic efficiency of selection of dma controller is the highest.When residue transmission curtailment 16 words, during still greater than 8 words, dma controller is adjusted into 8 higher word burst transfer patterns of transfer efficiency automatically, and the rest may be inferred.When word of remaining curtailment, dma controller also can be adjusted into the transmission mode of half-word or byte automatically according to remaining transmission length.Hence one can see that, and this dma controller can be adjusted transport-type according to the total length self-adaptation of transmission, can carry out in mode the most efficiently to guarantee the DMA transmission.
In actual applications, can respectively dispose an adaptation module for each bus interface.
The present invention also provides a kind of DMA transmission method in the multiplexing dma controller of above-mentioned software/hardware, comprising:
Step when CPU will carry out the DMA transmission is:
(A) CPU selects an idle channel in dma controller---and be the passage of the value representation " passage can be used " of channel status register;
(B) CPU is changed to the value that expression " does not allow hardware-enabled " by the value with the hardware requests enabled state register of this passage, and the hardware requests of closing this passage enables; And be changed to " software asks is arranged " by value with the software asks register, send the DMA transmission requests to the DMA control module;
When the value of DMA control module software asks register is changed into " software asks is arranged ", carry out (C);
(C) the DMA control module judges according to the value of channel status register whether passage is idle, when the value of channel status register is " passage is occupied ", returns (C), promptly continues to inquire after the value of channel status register; Otherwise, execution in step (D);
(D) in the selected passage of step (A), carry out the DMA transmission, and the value of channel status register is changed to " passage is occupied "; In transmission course, if CPU will cancel transmission, then the value with the software asks register is changed to " no software asks ";
When the DMA control module finds that the value of software asks register is changed into " no software asks ", or transmission finish after execution in step (E);
(E) the DMA control module is changed to the value of hardware requests enabled state register the value of " permission hardware requests "; The value of channel status register is changed to " passage can be used "; The value of software asks register is changed to " no software asks ".
Step when hardware will carry out the DMA transmission is:
(a) hardware carries out the DMA transmission to the request of DMA control module;
(b) can the DMA control module carry out hardware requests according to the value judgement of hardware requests enabled state register; If the value of hardware requests enabled state register is " a permission hardware requests ", then carry out next step; Otherwise return (b), promptly continue to inquire after the value of hardware requests enabled state register;
(c) the DMA control module judges according to the value of channel status register whether passage is idle, when the value of channel status register is " passage is occupied ", returns (c), promptly continues to inquire after the value of channel status register; Otherwise execution in step (d);
(d) in the passage that hardware links to each other, carry out the DMA transmission, and the value of channel status register is changed to " passage is occupied "; After transmission is finished, the value of channel status register is changed in " passage can with ".
Certainly; the present invention also can have other various embodiments; under the situation that does not deviate from spirit of the present invention and essence thereof; those of ordinary skill in the art work as can make various corresponding changes and distortion according to the present invention, but these corresponding changes and distortion all should belong to the protection domain of the appended claim of the present invention.
Claims (12)
1, a kind of direct memory access dma controller of realizing that software/hardware is multiplexing comprises the DMA control module, is used to control the DMA transmission; It is characterized in that:
Described DMA control module is used to receive the DMA transmission requests of hardware, and judges whether to carry out hardware requests; If could would carry out the DMA transmission that described hardware is initiated; Also be used for when CPU need send the DMA transmission requests, the use information of transfer resource is provided to CPU; And after receiving the DMA transmission requests of CPU, utilize the selected idle transfer resource of CPU to carry out the DMA transmission, stop to handle the DMA transmission that the hardware requests of this transfer resource is initiated up to described CPU simultaneously and finish or stop.
2, dma controller as claimed in claim 1 is characterized in that, also comprises:
Hardware requests enabled state register is used to deposit the numerical value of representing the hardware requests enabled state; The value that comprises " permission hardware-enabled " and " not allowing hardware-enabled "; When initiating the DMA transmission, be configured to the value of " not allowing hardware-enabled " by CPU;
The channel status register is used to deposit the numerical value of representing channel status, comprises the value of expression " passage is occupied " and the value of expression " passage can be used ";
The DMA control module also is used in the time will carrying out the DMA transmission, whether the value of inquiring after the channel status register is " passage can be used ", if then carry out the DMA transmission, and the value of described channel status register is changed to the value of expression " passage is occupied " by this passage; Otherwise continue to inquire after the value of described channel status register; And the transmission of the DMA on this passage is finished or in have no progeny, the value of channel status register is changed to the value of expression " passage can be used ";
Described DMA control module judges whether to carry out hardware requests and is meant the value of inquiring after the hardware requests enable register, if for the value of " permission hardware requests " then represent to carry out hardware requests; Otherwise do not handle described hardware requests, continue to inquire after;
Described DMA control module provides the use information of transfer resource to be meant by the value of described channel status register to CPU and informs whether cpu access is idle;
Described DMA control module is changed to " permission hardware-enabled " with the value of hardware-enabled register after the DMA that finishes or interrupts of CPU is initiated transmits.
3, dma controller as claimed in claim 2 is characterized in that, also comprises:
The software asks register is used to deposit the numerical value whether expression CPU initiates the DMA transmission requests, comprises that expression " has software asks " and the value of " no software asks ", is configured to the value of " software asks is arranged " when initiating the DMA transmission by CPU;
Described DMA control module is changed to " no software asks " with the value of the software asks register of this passage after the DMA transmission that CPU initiates is finished, also be used for when the value of transmission course software asks register is changed to " no software asks " by CPU, stop the DMA transmission of this passage;
The DMA transmission requests that described DMA control module receives CPU is meant the monitoring software request register, and when its value was configured to the value of expression " software asks is arranged " by CPU, expression received the DMA transmission requests that CPU initiates.
4, dma controller as claimed in claim 1 is characterized in that: described DMA control module is controlled each passage and is taken bus in time-multiplexed mode.
5, dma controller as claimed in claim 1 is characterized in that: also comprise data length computing module and at least one adaptation module;
Described DMA control module also is used for controlling the length that described data length computing module calculates data to be transmitted when carrying out burst transfer, and sends to adaptation module; And carry out burst transfer according to the burst transfer pattern that described adaptation module is selected;
At least one adaptation module is used for according to the highest burst transfer pattern of the automatic efficiency of selection of length of transmission data and exports to described DMA control module.
6, dma controller as claimed in claim 3 is characterized in that: described adaptation module comprises N group selection unit, and the value of N is that the adoptable transmission mode species number of burst transfer subtracts one;
Each selected cell is used for selecting a kind of according to the length of transmission data in first transmission mode and second transmission mode; Wherein, the efficient of second transmission mode is higher than first transmission mode; When data length that data length second transmission mode once can be transmitted, select second transmission mode; Otherwise select first transmission mode;
In first selected cell, first transmission mode is the minimum transmission mode of efficient; Second transmission mode is an efficient low transmission mode second from the bottom;
First transmission mode of other each selected cell is the selected transmission mode in last unit;
Second transmission mode of last selected cell is best transmission mode; Described last selected cell is exported selected transmission mode and is given the DMA control module.
7, dma controller as claimed in claim 4 is characterized in that: each selected cell comprises a subtracter, a comparer and a selector switch;
Described selector switch has an output terminal, first, second input end and a selecting side, and selector switch selects road signal in first, second input end to export according to the signal of selecting side;
The first input end of described selector switch is imported the enable signal of first transmission mode; Second input end is imported the enable signal of second transmission mode;
The selector output end of last selected cell links to each other with the DMA control module; In addition, the output terminal of the selector switch of other each selected cell links to each other with the first input end of next selected cell selector switch;
Described subtracter is used to obtain the data length value and second transmission mode can be transmitted the difference of byte number, and exports to comparer;
Described comparer compares described difference and 0, and the output corresponding signal is given the selecting side of described selector switch; If this difference is more than or equal to 0, then output allows selector switch select the signal of first input end, allows selector switch select the signal of second input end otherwise export.
8, dma controller as claimed in claim 1, it is characterized in that: described DMA control module is being carried out between peripheral hardware and internal memory between the DMA transmission period, when the byte number that transmits between peripheral hardware and dma controller reaches peripheral hardware spatial cache size, finish the signal of the DMA transmission requests between this peripheral hardware and dma controller to peripheral hardware; When the byte number that transmits between dma controller and internal memory reaches memory cache space size, send passage to CPU and finish the transmission interrupt request.
9, dma controller as claimed in claim 6 is characterized in that, also comprises:
Peripheral hardware cache size register is used to deposit the numerical value of the spatial cache size of peripheral hardware;
The memory cache sized registers is used for depositing the numerical value of internal memory spatial cache size;
First counter, the byte number that is used for transmitting between the transmission of the DMA between peripheral hardware and dma controller is to peripheral hardware and dma controller is counted;
Second counter, the byte number that is used for transmitting between a DMA transmission is to dma controller and internal memory is counted;
Whether the count value that described DMA control module is passed through to judge first counter judges whether the byte number that between peripheral hardware and dma controller transmit reach the size of peripheral hardware spatial cache less than the numerical value in the peripheral hardware cache size register; Whether count value by second counter relatively judges whether the byte number that between dma controller and internal memory transmit reach the size in memory cache space less than the numerical value in the memory cache sized registers.
10, dma controller as claimed in claim 1 is characterized in that, also comprises:
Source address variation pattern register is used for depositing the numerical value that the source address variation pattern is transmitted in expression;
Destination address variation pattern register is used for depositing the numerical value of expression transmission destination address variation pattern; Increase such as 1 expression, 2 expressions reduce, and other numeric representation is constant;
The 3rd counter is used to deposit the source address of DMA transmission;
Four-counter is used to deposit the destination address of DMA transmission;
Described DMA control module is carried out the DMA transmission according to the destination address of depositing in source address in the 3rd counter and the four-counter; Also be used for according to the value of source address variation pattern register and destination address variation pattern register control the 3rd, the numerical value of the source/destination address of four-counter increases progressively or successively decrease or constant.
11, a kind of method of carrying out the DMA transmission in the described dma controller of claim 1 comprises:
Step when CPU will carry out the DMA transmission is:
(A) CPU selects an idle channel in dma controller;
(B) the CPU hardware requests of closing selected passage enables, and sends the DMA transmission requests to the DMA control module;
(C) the DMA control module judges that passage is whether idle, if not idle then return (C); Otherwise, execution in step (D)
(D) the DMA control module is carried out the DMA transmission in the selected passage of step (A), execution in step (E) after transmission is finished;
(E) open the hardware-enabled of described passage;
Step when hardware will carry out the DMA transmission is:
(a) hardware carries out the DMA transmission to the request of DMA control module;
(b) can the judgement of DMA control module carry out hardware requests; If being closed, hardware requests returns (b); Otherwise carry out next step;
(c) the DMA control module judges that passage is whether idle, if not idle then return (c); Otherwise execution in step (d)
(d) the DMA control module is carried out the DMA transmission, finishes up to transmission.
12, method as claimed in claim 11 is characterized in that, in the step (C), if CPU sends the requirement of cancellation DMA transmission, then the DMA control module stops transmission, carries out (E).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100986701A CN100481045C (en) | 2007-04-24 | 2007-04-24 | DMA controller and transmit method for implementing software/hardware reusing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100986701A CN100481045C (en) | 2007-04-24 | 2007-04-24 | DMA controller and transmit method for implementing software/hardware reusing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101034383A true CN101034383A (en) | 2007-09-12 |
CN100481045C CN100481045C (en) | 2009-04-22 |
Family
ID=38730946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100986701A Expired - Fee Related CN100481045C (en) | 2007-04-24 | 2007-04-24 | DMA controller and transmit method for implementing software/hardware reusing |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100481045C (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988953A (en) * | 2015-02-12 | 2016-10-05 | 深圳市中兴微电子技术有限公司 | DMA (Direct Memory Access) controller and data transmission method |
CN107844435A (en) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | A kind of caching system, method and device |
CN109857686A (en) * | 2019-03-26 | 2019-06-07 | 北京简约纳电子有限公司 | A kind of method that DMA data synchronous transfer becomes asynchronous transmission |
WO2020037621A1 (en) * | 2018-08-23 | 2020-02-27 | 深圳市汇顶科技股份有限公司 | Master chip, slave chip, and dma transfer system between chips |
CN111831595A (en) * | 2020-06-30 | 2020-10-27 | 山东云海国创云计算装备产业创新中心有限公司 | DMA transmission method and related device |
CN112269749A (en) * | 2020-10-30 | 2021-01-26 | 厦门紫光展锐科技有限公司 | I2C communication system |
CN113434441A (en) * | 2021-06-24 | 2021-09-24 | 深圳市航顺芯片技术研发有限公司 | DMA transmission method, device, controller and readable storage medium |
-
2007
- 2007-04-24 CN CNB2007100986701A patent/CN100481045C/en not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988953B (en) * | 2015-02-12 | 2019-03-12 | 深圳市中兴微电子技术有限公司 | A kind of direct memory access dma controller and the method for data transmission |
CN105988953A (en) * | 2015-02-12 | 2016-10-05 | 深圳市中兴微电子技术有限公司 | DMA (Direct Memory Access) controller and data transmission method |
CN107844435A (en) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | A kind of caching system, method and device |
US11188486B2 (en) | 2018-08-23 | 2021-11-30 | Shenzhen GOODIX Technology Co., Ltd. | Master chip, slave chip, and inter-chip DMA transmission system |
WO2020037621A1 (en) * | 2018-08-23 | 2020-02-27 | 深圳市汇顶科技股份有限公司 | Master chip, slave chip, and dma transfer system between chips |
CN111149097A (en) * | 2018-08-23 | 2020-05-12 | 深圳市汇顶科技股份有限公司 | Master chip, slave chip and DMA transmission system between chips |
CN111149097B (en) * | 2018-08-23 | 2022-09-06 | 深圳市汇顶科技股份有限公司 | Master chip, slave chip and DMA transmission system between chips |
CN109857686A (en) * | 2019-03-26 | 2019-06-07 | 北京简约纳电子有限公司 | A kind of method that DMA data synchronous transfer becomes asynchronous transmission |
CN109857686B (en) * | 2019-03-26 | 2020-12-29 | 北京简约纳电子有限公司 | Method for converting synchronous transmission of DMA data into asynchronous transmission |
CN111831595A (en) * | 2020-06-30 | 2020-10-27 | 山东云海国创云计算装备产业创新中心有限公司 | DMA transmission method and related device |
CN112269749A (en) * | 2020-10-30 | 2021-01-26 | 厦门紫光展锐科技有限公司 | I2C communication system |
CN112269749B (en) * | 2020-10-30 | 2022-10-25 | 厦门紫光展锐科技有限公司 | I2C communication system |
CN113434441A (en) * | 2021-06-24 | 2021-09-24 | 深圳市航顺芯片技术研发有限公司 | DMA transmission method, device, controller and readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
CN100481045C (en) | 2009-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101034383A (en) | DMA controller and transmit method for implementing software/hardware reusing | |
CN101046786A (en) | DMA controller and transmission method of implementing high efficient DMA transmission | |
CN1188794C (en) | Coprocessor with multiple logic interface | |
CN1148666C (en) | High speed processor system with bus reconciliation mechanism | |
CN1135798C (en) | Packet exchange equipment in data network and method thereof | |
CN101055533A (en) | Multithreading processor dynamic EMS memory management system and method | |
CN1104128C (en) | ATM communication apparatus | |
CN1010808B (en) | Providing 80386 with entry into bus arbitration in 80386/82385 microcomputer system wherein the 82385 opetates in master made | |
CN1706165A (en) | Method and apparatus for network field communication control | |
CN1828541A (en) | Implementation method for timing task in Java operating system | |
CN1356831A (en) | Buffer management for supporting QoS ensuring and data stream control in data exchange | |
CN1641614A (en) | Processor system, DMA control circuit, DMA control method, control method for DMA controller, graphic processing method, and graphic processing circuit | |
CN1901708A (en) | Device, method and chip and cell phone for realizing image data collection | |
CN100346285C (en) | Processor chip, storage control system and method | |
CN1551592A (en) | Data transmission control device, electronic device and data transmission control method | |
CN101035067A (en) | Flow control implementation method and device based on the output queue | |
CN1286029C (en) | Device for controlling interior storage of chip and its storage method | |
CN1754349A (en) | Dynamic band allocation circuit, dynamic band allocation method, dynamic band allocation program, and recording medium | |
CN1214592C (en) | Direct internal storage access system and method of multiple path data | |
CN1917478A (en) | Method for processing forwarding message, and process module | |
CN1172986A (en) | Real-time control system | |
CN1859275A (en) | Multiple port ethernet exchanging device and data transmission method | |
CN1638357A (en) | Memory management system having a linked list processor | |
CN1300703C (en) | Arbitration circuit and function processing circuit provided therein | |
CN1851678A (en) | Method for transmitting data between internal memory and digital signal processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090422 Termination date: 20120424 |