System and Method for Managing a Memory as a Circular Buffer
System and method for facilitating data transfer between logic systems and a memory according to various conditions. Embodiments include systems and methods for facilitating and improving throughput of data transfers using a shared non-deterministic bus, a system and method for managing a memory as a circular buffer, and a system and method for facilitating data transfer between a first clock domain and a second clock domain. Embodiments may be implemented individually or in combination.
1 . A method for facilitating data transfer between one or more logic subsystems and a memory, wherein the method manages at least a first portion of the memory as a circular buffer, the method comprising:
maintaining a write location pointer, wherein the write location pointer indicates a location in the circular buffer which is currently being written to;
maintaining a page pointer, wherein the page pointer indicates a page of the circular buffer which is currently being written to;
receiving a notification of a desired search range, wherein the desired search range comprises a portion of the circular buffer to be searched;
determining a validity of the desired search range, wherein said determining is based on the search range, the write location pointer, and the page pointer;
sending a notification of the validity of the desired search range.
2 . The method of claim 1 ,
wherein the notification of the desired search range is received from a first logic subsystem;
wherein the notification of the validity of the desired search range is sent to the first logic subsystem;
wherein the notification of the validity of the desired search range is used by the first logic subsystem to determine whether to perform the desired search.
3 . The method of claim 1 ,
wherein the desired search range comprises locations on a plurality of pages of the circular buffer.
4 . The method of claim 1 , wherein the desired search range comprises the location indicated by the write location pointer on the page indicated by the page pointer, wherein the method further comprises:
determining that the desired search range is valid.
5 . The method of claim 1 ,
wherein the page pointer comprises a first page counter and a first page section indicator;
wherein the desired search range comprises a second page counter and a second page section indicator, wherein determining the validity of the desired search range further comprises:
comparing the first page section indicator and the second page section indicator; and
comparing the first page counter and the second page counter;
wherein if the first page section indicator and the second page section indicator are different, the comparison of the first page counter and the second page counter is a signed comparison.
6 . The method of claim 1 , further comprising:
managing a second memory as a second circular buffer.
7 . The method of claim 1 ,
wherein the one or more logic subsystems comprise at least a portion of a Global Navigational Satellite (GNS) system, wherein the data stored in the memory is GNS data.
8 . The method of claim 1 ,
wherein notification of the desired search range indicates a search range base address and a search range limit address in the memory.
9 . The method of claim 8 , further comprising:
maintaining a read location pointer during a search of the circular buffer, wherein the read location pointer indicates a location in the circular buffer which is currently being read;
determining a validity of the search of the circular buffer during the search of the circular buffer, wherein said determining is based on the read location pointer, the search range limit address, the write location pointer, and the page pointer.
10 . The method of claim 9 ,
wherein the notification also indicates a page number for at least one of the search range base address or the search range base address.
11 . A system for facilitating data transfer between one or more logic subsystems and a memory, the system comprising:
a first memory location which stores a write location pointer, wherein the write location pointer indicates a location in the memory which is currently being written to;
a second memory location which stores a page pointer, wherein the page pointer indicates a page of the memory which is currently being written to;
control logic for managing at least a first portion of the memory as a circular buffer, wherein the control logic is configured to:
maintain the write location pointer and the page pointer;
receive a notification of a desired search range, wherein the desired search range comprises a portion of the circular buffer to be searched;
determine a validity of the desired search range, wherein said determining is based on the search range, the write location pointer, and the page pointer;
send a notification of the validity of the desired search range.
12 . The method of claim 11 ,
wherein the control logic is configured to receive the notification of the desired search range from a first logic subsystem;
wherein the control logic is configured to send the notification of the validity of the desired search range to the first logic subsystem;
wherein the notification of the validity of the desired search range is configured for use by the first logic subsystem in determining whether to perform the desired search.
13 . The system of claim 11 ,
wherein the desired search range comprises locations on a plurality of pages of the circular buffer.
14 . The system of claim 11 ,
wherein the desired search range comprises the location indicated by the write location pointer on the page indicated by the page pointer;
wherein said determining determines that the desired search range is valid.
15 . The system of claim 11 ,
wherein the page pointer comprises a first page counter and a first page section indicator;
wherein the desired search range comprises a second page counter and a second page section indicator, wherein in determining the validity of the desired search range the control logic is further configured to:
compare the first page section indicator and the second page section indicator; and
compare the first page counter and the second page counter;
wherein if the first page section indicator and the second page section indicator are different, the comparison of the first page counter and the second page counter is a signed comparison.
16 . The system of claim 11 ,
wherein the control logic is further configured to manage a second memory as a second circular buffer.
17 . The system of claim 11 ,
wherein the one or more logic subsystems comprise at least a portion of a Global Navigational Satellite (GNS) system, wherein the data stored in the memory is GNS data.
18 . The system of claim 11 ,
wherein the notification of the desired search range indicates a search range base address and a search range limit address in the memory.
19 . The system of claim 18 , further comprising:
a third memory location which stores a read location pointer during a search of the circular buffer, wherein the read location pointer indicates a location in the circular buffer which is currently being read;
wherein the control logic is further configured to:
determine a validity of the search of the circular buffer during the search of the circular buffer, wherein said determining is based on the read location pointer, the search range limit address, the write location pointer, and the page pointer.
20 . The system of claim 19 ,
wherein the notification also indicates a page number for at least one of the search range base address or the search range base address.