Abstract:
By handling initial processing of HDLC frames, an HDLC engine can free up a server microprocessor that would otherwise be tasked to respond to incoming frames. Sharing a memory with the microprocessor, the engine periodically accesses an address status table in the memory to retrieve data in order to process received frames based on the status of the frame address.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This is a continuation of Ser. No. 07/991,669 filed Dec. 16, 1992, now abandoned. 
    
    
     FIELD OF THE INVENTION 
     This invention generally relates to the HDLC (high level data link control communications protocol. Specifically, the invention is directed to an apparatus that will parse, interpret, and respond to messages transmitted in the HDLC format. 
     BACKGROUND OF THE INVENTION 
     The HDLC (high level data link control) protocol, established by international convention (ISO 3309), supports multiple sessions or addresses on a single link. In data transmission systems, such as a telephone switching system, HDLC frames are specified for a given address and must be processed based on the status of that address, independently of the status of other addresses. 
     The function of an HDLC engine is to emulate the behavior of multiple independent HDLC transmitters and receivers. In one hypothetical arrangement, there are twenty-five individual addresses and a broadcast address. The system keeps track of these individual addresses by way of a status table stored in the system&#39;s memory. The engine analyzes incoming HDLC frames and takes appropriate action, the actual response of the engine depends on the status of the address and the incoming frame type. In the systems under discussion, the engine would either discard the frame, generate the proper response, or pass the frame to the microprocessor or a dedicated HDLC controller. 
     To achieve the necessary performance, one could provide a separate HDLC engine for each address and each such engine would have an internal address status register. While this would eliminate the need for a dedicated memory holding the status of each address, the overall cost of the system would increase greatly due to the use of separate engines and the circuit board real estate required to accommodate these components. 
     Another method of handling the HDLC messages uses a single engine that passes the address of each frame to a microprocessor through a polling or interrupt process. The processor would use the address to access the status table in memory and notify the engine of the result so that the engine could take the appropriate action. Although it would simplify hardware requirements, this arrangement would tie up the microprocessor, preventing the microprocessor from tending to other tasks, and its ability to process incoming messages would be dependent on the microprocessor&#39;s speed. 
     A third solution would be to store an address status table in a dual-port RAM (random access memory) with processor access on one port and engine access on the other port. Although this scheme would eliminate the bottleneck caused by having to pass everything through the processor and would also improve the speed of the system, dual-port RAMs are expensive and would require additional board space. 
     The ideal solution therefore would minimize the use of the microprocessor and component count, without sacrificing efficiency. 
     SUMMARY OF THE INVENTION 
     These and other objects are achieved by an HDLC engine accessing a single-port memory shared with a microprocessor. By sending a bus request signal to the microprocessor, the HDLC engine can periodically access an address status table stored in the memory. The status data would be passed back to the engine for analysis and response. The scheme thus relieves the microprocessor from the task of analysis of HDLC frames. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A more complete understanding of the present invention, as well as other objects and advantages thereof not enumerated herein, will become apparent upon consideration of the following detailed description and the accompanying drawings, wherein: 
     FIG. 1A and 1B are a schematic block diagram of an HDLC server circuit containing the HDLC engine, a microprocessor, and associated components; and 
     FIG. 2A and 2B are a flow chart of the operation of the HDLC server circuit. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     An HDLC server 10 is shown partially in the block schematic diagram of FIGS. 1A and 1B. The purpose of the server 10 is to handle functions relating to the HDLC protocol. The server 10 has an HDLC engine 12, a microprocessor 14, and a RAM 16. The server may also include a dedicated HDLC controller, as discussed further on. 
     The HDLC engine 12 has three subsystems: front end logic 50, control logic 70, and an address generator 90. The engine 12 handles the initial analysis and screening of HDLC frames, offloading these functions from the microprocessor 14. The microprocessor 14 is a general purpose device and has six ports: a data port 20, an address port 22, a memory chip select port 24, a memory read port 26, a HOLD input port 28, and an HLDA (HOLD acknowledge) output port 30. The RAM 16 has four ports: a data port 40, an address port 42, a chip select port 44, and a chip output enable port 46. The RAM 16 contains a status table used by the HDLC engine 12 and the microprocessor 14. 
     The front end logic 50 receives HDLC frames and checks for a valid address and the frame type. It has six ports: a serial HDLC input port 52, a serial HDLC output port 54, an address output port 56, an internal serial output port 58, an internal serial input port 60, and an internal control bus port 62. The serial HDLC input port 52 is connected to a serial HDLC incoming link HIL 170 while the serial HDLC output port 54 is connected to a serial HDLC outgoing link HOL 172. The two links 170 and 172 provide the connection between the HDLC engine 12 and the larger system in which the engine 12 and the server 10 reside. 
     The control logic 70 controls the operation of the HDLC engine 12. It has seven ports: a data bus port 72, an internal serial input port 74, an internal serial output port 76, an internal control bus port 78, a HOLD request port 80, an HLDA port 82, and an HDLC controller port 84. The HOLD request port 80 is connected to the HOLD input port 28 of the microprocessor 14 by a HOLD enable line 158. 
     The address generator 90 generates a RAM address to access the status table stored in the RAM 16. The address generator 90 has three ports: an address input port 92, an address output port 94, and an internal control bus port 98. 
     The front end logic 50, the control logic 70, and the address generator 90 are connected within the HDLC engine 12 in the following manner. One serial link 100 connects the internal serial output 58 of the front end logic 50 to the internal serial input 74 of the control logic 70. Another serial link 102 connects the internal serial output 76 of the control logic 70 to the internal serial input 60 of the front end logic 50. An internal address bus 104 interconnects the address output port 56 of the front end logic 50 with the address input port 92 of the address generator 90. An internal control bus 106 interconnects the internal control bus port 62 of the front end logic 50, the internal control bus port 78 of the control logic 70, and the internal control bus port 98 of the address generator 90. 
     There are four other components illustrated in the server 10: an address latch 110, a data transceiver 112, a logic module 114, and an HDLC controller 116. The address latch 110 has two address ports 120 and 122, one (122) being connected by an address bus 154 to the address port 94 of the address generator 90 in the HDLC engine 12 and to the address port 42 of the RAM 16, and the other (120) being connected by a microprocessor address bus 156 to the address port 22 of the microprocessor 14. 
     The latch 110 holds address information issued by the microprocessor 14 for accessing the RAM 16. The data transceiver 112 also has two ports 124 and 126, one (126) being connected by a data bus 150 to the data port 40 of the RAM 16 and to the data port 72 of the control logic 70 in the HDLC engine 12, and the other (124) being connected by a microprocessor data bus 152 to the data port 20 of the microprocessor 14. The data transceiver 112 acts as a conduit for data going to and from the RAM 16. 
     The logic module 114 has five ports: a chip select input 130 and a memory read input 132, connected to the memory chip select output 24 and the memory read output 26 of the microprocessor 14, respectively, an HLDA input 134, connected by an HLDA line 160 to the HLDA output 30 of the microprocessor 14 and the HLDA input 82 of the control logic 70 in the HDLC server 12, a chip select output 136 connected to the chip select input 44 of the RAM 16, and a chip enable output 138 connected to the chip output enable port 46 of the RAM 16. This module allows the HDLC engine 12 to access the address status table stored in the RAM 16, as well as permitting the microprocessor 14 access to the RAM 16. The chip select output 136 is the logical-OR of the chip select input 130 and the HLDA input 134; the chip enable output 138 is the logical-OR of the memory read input 132 and the HLDA input 134. 
     The HDLC controller 116 is connected to the HDLC engine 12 by an HDLC controller link 118. The link 118 is connected within the engine 12 to the HDLC controller port 84 of the control logic 70. The engine 12 uses the link 118 to pass selected incoming HDLC frames to the controller 116 for further processing by the controller 116 and the microprocessor 14. 
     The HDLC engine 12 can be implemented in a field programmable gate array (&#34;FPGA&#34;), which is configured by the user to provide the logic functions desired. In the embodiment under discussion, Xilinx 3000 FPGAs, available from Xilinx, 2100 Logic Drive, San Jose, Calif., were used. These components, as well as the methods for configuring and programming them, are described in detail in the 1992 Xilinx Programmable Gate Array Databook. Of course, one could use dedicated logic chips or other suitable devices. The HDLC controller can be a Siemens SAB 82525. 
     OPERATION OF THE HDLC ENGINE 
     The operation of the device will be explained with reference to the flow chart in FIGS. 2A and 2B. The numbers in parentheses refer to the blocks of the chart. 
     At the outset, the front end logic 50 receives an HDLC frame over the serial HDLC incoming link HIL 170 (200). The frame, adhering to the standard in ISO 3309, has an address field and a designation in the control field indicating the type of frame. 
     The front end logic 50 will first check to see if the address is valid (202). The list of valid addresses is fixed and resident as a hard-wired function in the front end logic 50. If the address is not valid, the frame is discarded and the front end logic 50 will wait for another frame on the incoming link HIL 170 (200). 
     Assuming a valid address, the front end logic 50 will then examine the frame control field, which follows the flag and address fields, to determine whether the designator for a poll frame is present. If not, the front end logic 50 prompts the control logic 70 to indicate that the received frame is not a poll frame (224). The control logic 70 will then pass the received frame to the HDLC controller 116 for processing (226). The front end logic 50 thereafter resumes its wait for another frame on the incoming link HIL 170 (200). 
     However, if the frame is a poll frame, the front end logic 50 will send a prompt on internal control bus 106 to the control logic 70 (206) requesting that stage to issue a HOLD command on HOLD request line 158 to the microprocessor 14 (208). The control logic 70 will wait until the microprocessor 14 finishes its current operation, at which time the microprocessor 14 will acknowledge the HOLD command by issuing a hold acknowledge HLDA signal on HLDA line 160 for reception by the control logic 70 (210). Upon receiving the HLDA signal, the control logic 70 will enable the address generator 90 using the internal control bus 106 (212). The address generator 90 will have received the proper HDLC address for the frame from the front end logic 50 on the engine&#39;s internal address bus 104 and from that will have generated the actual RAM address. 
     When the microprocessor 14 issued the HLDA signal on line 160, the signal was also coupled to the logic module 114, enabling the chip select and chip output enable ports 44 and 46 of the RAM 16. Acting on the enabling signal received from the control logic 70 on the internal control bus 106, the address generator 90 issues the address location on the address bus 154 for the frame status in the RAM 16 (214). The status of the polled address will now be placed on the data bus 150 for the control logic 70 (216). 
     The control logic 70 will now analyze the status data. First, it checks to see if the address is active (218). In the context of a telephone switch, this could mean whether a subscriber equipment line card is present and in service. If the address is inactive, the HDLC engine 12 will discard the incoming frame without issuing any response on the serial HDLC outgoing link HOL 172, returning to the start to await the next frame. 
     If the address is active, then the engine 12 will act based on whether an information frame, essentially a message, is queued for this address (220). If an information frame is queued, the control logic 70 will pass the poll frame out of the engine on the HDLC controller link 118 to the HDLC controller 116 (222). However, if no information frames are queued, then the control logic 70 will direct the front end logic 50 to respond to the poll frame on the serial HDLC outgoing link HOL 172 (228). After this, the HDLC engine 12 resumes waiting for another frame (200). p While there has been described what is believed to be the preferred embodiment of the invention, those skilled in the art will recognize that other and further modifications may be made thereto without departing from the spirit of the invention, and it is intended to claim all such embodiments that fall within the true scope of the invention. For example, although the discussion focused on HDLC, it should be recognized that the invention may be used with dam in other formats.