PAL20X10 PAL DESIGN SPECIFICATION P7055 BIRKNER/UDI 07/28/81 UART CONTROL MMI SUNNYVALE, CALIFORNIA CK /9600X8 RXD /WE /INIT /SETBC2 /SETBC1 /SETBC0 NC NC NC GND /OC /READY /SAMPLE /BC3 /BC2 /BC1 /BC0 /DET2 /DET1 /DET0 /START VCC START := /READY*START ;HOLD + /READY*RXD ;DETECT START BIT :+:/READY*START*BC3*BC2*BC1*BC0 ;FILTER FALSE START */DET2*/DET1*DET0*/RXD ;CANCEL START IF NO RXD DET0 := START*DET0 ;HOLD + START*DET0 ;EXTEND :+:START*9600X8 ;CARRY DET1 := START*DET1 ;HOLD + START*DET1 ;EXTEND :+:START*9600X8*DET0 ;CARRY DET2 := START*DET2 ;HOLD + START*DET2 ;EXTEND :+:START*9600X8*DET0*DET1 ;CARRY BC0 := /SETBC0*BC0 ;HOLD + /SETBC0*READY ;SET BC TO -1 ON READY :+:/SETBC0*START*9600X8*DET0*DET1*DET2 ;CARRY + SETBC0 ;SET BC TO 7 FOR TESTING BC1 := /SETBC1*BC1 ;HOLD + /SETBC1*READY ;SET BC TO -1 ON READY :+:/SETBC1*START*9600X8*DET0*DET1*DET2 ;CARRY *BC0 + SETBC1 ;SET BC TO 7 FOR TESTING BC2 := /SETBC2*BC2 ;HOLD + /SETBC2*READY ;SET BC TO -1 ON READY :+:/SETBC2*START*9600X8*DET0*DET1*DET2 ;CARRY *BC0*BC1 + SETBC2 ;SET BC TO 7 FOR TESTING BC3 := BC3 ;HOLD + READY ;SET BC TO -1 ON READY :+:START*9600X8*DET0*DET1*DET2 ;CARRY *BC0*BC1*BC2 SAMPLE := START*9600X8*/DET2*DET1*/DET0*/BC3 ;DET=2 & BC=0..7 + START*9600X8*/DET2*DET1*/DET0*/BC3 ;EXTEND :+:START*9600X8*/DET2*DET1*/DET0 ;CANCEL BC = 7 */BC3*BC2*BC1*BC0 READY := /INIT*/WE*READY ;HOLD + /INIT*/WE*START*BC3*/BC2*/BC1*/BC0 ;SET ON BC=8 :+: INIT ;INITIAL READY, START & BC FUNCTION TABLE CK 9600X8 RXD /WE INIT SETBC2 SETBC1 SETBC0 /OC READY SAMPLE BC3 BC2 BC1 BC0 DET2 DET1 DET0 START ; 9 S ; 6 R A S ; 0 I E M T ; 0 R / N / A P A ; C X X W I SETBC O D L BC DET R ; K 8 D E T 210 C Y E 3210 210 T COMMENTS ---------------------------------------------------------------------------- C X X X H XXX L H X XXXX XXX X INITIAL READY C X L H L XXX L H X HHHH XXX L CLEAR START & INITIAL BC C X L L L XXX L L X HHHH LLL L INITIAL DET & CLEAR READY C X H L L XXX L L X HHHH LLL H SET START C H L L L LLL L L L HHHH LLH H NO RXD, DETECT FALSE START C H L L L LLL L L L HHHH LHL L CLEAR START (NOISE ON RXD) C H H L L LLL L L L HHHH LLL H INITIALIZE DET C H H L L LLL L L L HHHH LLH H NOW IT IS A REAL SIGNAL C H H L L LLL L L L HHHH LHL H INC DET, NO SAMPLING C H H L L LLL L L L HHHH LHH H NO SAMPLE, START BIT OF INFO C H H L L LLL L L L HHHH HLL H INC DET, NO SAMPLING C H H L L LLL L L L HHHH HLH H INC DET, NO SAMPLING C H H L L LLL L L L HHHH HHL H INC DET, NO SAMPLING C H H L L LLL L L L HHHH HHH H INC DET, NO SAMPLING C H H L L LLL L L L LLLL LLL H INC DET AND BIT COUNTER C H H L L LLL L L L LLLL LLH H 1'ST BIT OF ASCII CODE C H H L L LLL L L L LLLL LHL H INC DET C H H L L LLL L L H LLLL LHH H SAMPLE THE 1'ST INFO BIT C H H L L LLL L L L LLLL HLL H INC DET C H H L L LLL L L L LLLL HLH H INC DET C H H L L LLL L L L LLLL HHL H INC DET C H H L L LLL L L L LLLL HHH H INC DET C H H L L LLL L L L LLLH LLL H INC DET AND BIT COUNTER C H H L L LLL L L L LLLH LLH H 2'ND BIT OF ASCII CODE C H H L L LLL L L L LLLH LHL H INC DET C H H L L LLL L L H LLLH LHH H SAMPLE 2'ND BIT OF INFO C H H L L LLL L L L LLLH HLL H INC DET C H H L L LLL L L L LLLH HLH H INC DET C H H L L LLL L L L LLLH HHL H INC DET C H H L L LLL L L L LLLH HHH H INC DET C H H L L HLH L L L LHHH LLL H SET BIT COUNTER TO 7 C H H L L LLL L L L LHHH LLH H 7'TH BIT OF ASCII CODE C H H L L LLL L L L LHHH LHL H INC DET C H H L L LLL L L L LHHH LHH H NO SAMPLE 7'TH BIT ALWAYS 0 C H H L L LLL L L L LHHH HLL H INC DET C H H L L LLL L L L LHHH HLH H INC DET C H H L L LLL L L L LHHH HHL H INC DET C H H L L LLL L L L LHHH HHH H INC DET C H H L L LLL L L L HLLL LLL H INC DET AND BIT COUNTER C H H H L LLL L H L HLLL LLH H SET THE READY SIGNAL C H H L L LLL L L L HHHH LHL L SET START BIT & INITIAL BC C H H L L LLL L L L HHHH LLL H REPEATE FOR NEXT CHARACTER ----------------------------------------------------------------------------- DESCRIPTION "BC" IS A COUNTER FOR THE ASCII CODE BITS. A SAMPLE FROM EACH ASCII BIT IS TAKEN WHEN "DET" = 3. THE "START" SIGNAL IS SET WHEN A START BIT IS DETECTED ON THE RXD LINE AND REMAINS SET UNTIL THE LAST ASCII BIT OF THE CHARACTER THAT IS SAMPLED. AFTER ALL THE 7 BITS OF THE ASCII CODE WERE SAMPLED, A WRITE SIGNAL IS SENT TO THE RAM AND THE 7 BITS (A CODE FOR A CHARACTER) ARE WRITTEN IN PARALLEL INTO THE RAM. WHEN "BC" COUNTS 8 THE "READY" SIGNAL GOES HIGH, "START" GOES LOW AND READY TO BE SET AGAIN IF A NEW START BIT IS DETECTED. A NEW CODE FOR A NEW CHARACTER WILL START TO BE SAMPLED. BUT ASSUME THAT A NOISE OCCURS ON THE RXD LINE WHICH SET THE "START" SIGNAL. TO DETERMINE IF THIS IS A TRUE OR FALSE START, WE CHECK THE RXD LINE. IF THE RXD LINE IS NOT SET, WE KNOW THAT NO CHARACTER WAS SENT ON THE RS232 LINE; THEREFORE, A NOISE/FALSE SIGNAL WAS DETECTED. ERROR ANALYSIS FOR SAMPLING =========================== SINCE BOTH A TRANSMITTER AND A RECEIVER ARE USED IN OBTAINING INFORMATION, AN ERROR CAN OCCUR THAT INVOLVES BOTH OF THESE COMPONENTS. ASSUME: ERROR IN TRANSMITTING FREQUENCY = EX ERROR IN RECEIVING FREQUENCY = ER THEN THE TOTAL ERROR FOR ONE BIT OF INFORMATION IS (EX + ER). AND THE TOTAL ERROR FOR THE N'TH BIT OF INFORMATION IS N*(EX + ER). WHEN COUNTER "DET" IS EQUAL 3, WE HAVE THE IDEAL BIT FOR SAMPLING. THE MAXIMUM ERROR THAT IS ALLOWED DUE TO THE TOLERANCES IN THE FREQUENCIES IN BOTH TRANSMITTER AND RECEIVER, WILL BE WHEN THE SAMPLE IS TAKEN AT "DET" = 0 OR AT "DET" = 6, AS SHOWN HERE: THE FREQUENCY FOR EACH BIT OF INFORMATION IS 1/9600 Hz (104 MICROSECOND). EACH BIT OF INFORMATION IS DIVIDED INTO EIGHT TIME SLOTS. THE TOTAL ERROR ALLOWED FOR THE 7'TH BIT OF INFORMATION IS: 7 * (EX + ER) = (1/9600) * (3/8) THE TOTAL ERROR ALLOWED FOR ONE BIT OF INFORMATION IS: (EX + ER) = 104 * (3/8) * (1/7) = 5.5 MICROSECOND THE FREQUENCY RATE BETWEEN RS232 AND THE RXD LINE FOR EVERY BIT OF INFORMATION SHOULD BE BETWEEN 10150 Hz AND 9130 Hz.