Electronics > FPGA

Attempting to identify mysterious PAL Hardware Description Language

(1/3) > >>

inaxeon:
I have the source code for an old PAL, developed in the early 1990s, but I have no idea what actually compiles it. According to Wikipedia the known languages are ABEL, CUPL and PALASM, but the syntax of this file does not match any of them.

Anyone seen anything like this?

Title           PM5644 LOGO TIDSCODE V8
Pattern         TIMECODE/DECODER
Revision        03
Author          SVEN NORMANN JORGENSEN
Company         PHILIPS
Date            930614
12-NC      4008 002 02011

DENNE PLD ER BEREGNET TIL AT ERSTATTE 3 ONE-SHOTS DER SIDDER
MELLEM DEN ANALOGE INTERFACE OG MIKROPROCCESSOREN PAE TEXT-
GENERATOREN
DEN BRUGES SAMTIDIG TIL ADRESSE DECODER


CLK is the clock signal.(FH I KREDSLOEBET)
denne version har rd og wd med i endualport

|PAL22V10   1:CLK,
|            2:IDATA,
|            3:A13,
|            4:A14,
|            5:A15,
|            6:WD,
|            7:RD,
|            8:-,
|            9:-,
|           10:-,
|           11:-,
|           13:-,
|           14:TICOD_MODE,
|           15:IDATADEL,
|           16:ENDUALPORT,
|           17:LD2,
|           18:LD1,
|           19:Q0,
|           20:Q1,
|           21:IDATADEL2,
|           22:TICODATA_OUT,   |TO uP TIME CODE DATA
|           23:Q2              |TO uP INT'
|
|
|REGISTERS: CLK // Q[2..0],IDATADEL,IDATADEL2
|
|ACTIVE-LOW:  ENDUALPORT,LD1,LD2,Q2,WD,RD
|
|
|P = ((IDATADEL & IDATADEL2)#(IDATADEL' & IDATADEL2'))
|
|MAP: Q[2..0] -> Q[2..0]
| { gray(n)  ->gray(n+1)    ,P  & (n/=6) & (n/=7) & TICOD_MODE
|   gray(n)  ->gray(6)      ,P  & (n==6) & TICOD_MODE
|   gray(n)  ->gray(0)      ,P  & (n==7) & TICOD_MODE
|   gray(n)  ->gray(n+1)    ,P' & (n< 4) & TICOD_MODE
|   gray(n)  ->gray(7)      ,P' & ((n==4)#(n==5)#(n==6))  & TICOD_MODE
|   gray(n)  ->gray(0)      ,P' & (n==7) & TICOD_MODE  }
|
|Q2 = TICODATA_OUT' & TICOD_MODE'
|
|TICODATA_OUT  = (TICOD_MODE  & (Q[2..0]/=gray(0)) & TICODATA_OUT )
|              # (TICOD_MODE  & (Q[2..0]/=gray(0)) & P' & (Q[2..0]==gray(1)))
|              # (TICOD_MODE  & (Q[2..0]/=gray(0)) & P' & (Q[2..0]==gray(2)))
|              # (TICOD_MODE  & (Q[2..0]/=gray(0)) & P' & (Q[2..0]==gray(3)))
|              # (TICOD_MODE' & IDATA & TICODATA_OUT  )
|              # (TICOD_MODE' & IDATA & Q2 )
|              # (TICOD_MODE' & TICODATA_OUT & Q2 )
|
|IDATADEL2      = IDATADEL
|
|IDATADEL       =IDATA
|
|LD1             = WD & A13' & A14' & A15
|
|LD2             = WD &  A13 & A14' & A15
|   
|ENDUALPORT      = A15'& (rd # wd)
|
a15 & a14 & a13     timecode   write
a15 & a14 & a13'    secund pulse
|TICOD_MODE = ( WD & A15 & A14 & A13)
|           # (TICOD_MODE & ( WD & A15 & A14 & A13')')

PCB.Wiz:
  8)
Hehe, that is a strange one.
You can ‘sort of’ see what it is trying to do.
Some are easier than others.
Eg LD1 LD2 look easy to recode.

gray(n) seems to be an operator, and MAP: is an usual state engine.

Q2 seems to have dual declarations?

Do you have any programmed pals ?
Some iterations with test vectors would get you there.

inaxeon:

--- Quote from: PCB.Wiz on September 26, 2023, 09:02:50 am ---  8)
Hehe, that is a strange one.
You can ‘sort of’ see what it is trying to do.
Some are easier than others.
Eg LD1 LD2 look easy to recode.

gray(n) seems to be an operator, and MAP: is an usual state engine.

Q2 seems to have dual declarations?

Do you have any programmed pals ?
Some iterations with test vectors would get you there.

--- End quote ---

I do not have the programmed PAL unfortunately. But I do have a picture of one and know what its checksum is!

I reckon 'gray' is a gray code converter: https://en.wikipedia.org/wiki/Gray_code

The 'MAP' is quite tricky. Lots of syntax there. And that is the main reason why I'd like to track down the manual for whatever compiles this!

mikeselectricstuff:
In an old 1994 PLD databook i see a reference to "Snap" software from Philips
http://www.bitsavers.org/components/philips/_dataBooks/1994_Philips_IC13_Programmable_Logic_Devices.pdf

mikeselectricstuff:
That syntax doesn't look far from my hazy memory of CUPL.
"&" is a bitwise concatenation operator, not logical AND, # is logical OR.
the only thing I'm not sure about is the " ' " suffix

Navigation

[0] Message Index

[#] Next page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod