Создание прошивки для GAL22V10 вручную...

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Создание прошивки для GAL22V10 вручную...

Post by Shaos »

Решил создать прошивку для GAL22V10 не прибегая к помощи разнообразных средств разработки, а именно - вручную. Берём страницу даташита где изображена картинка внутреннего устройства (DIP Package Pinouts), берём ручку и обозначаем те места, где должны остаться перемычки... :roll:
Last edited by Shaos on 08 Dec 2007 20:17, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Rokl
Fanat
Posts: 93
Joined: 16 May 2007 01:01
Location: 212.5.73.205

Re: Разработка прошивки для GAL вручную...

Post by Rokl »

Shaos wrote:Решил создать прошивку для GAL22V10 не прибегая к помощи разнообразных средств разработки, а именно - вручную. Берём страницу даташита где изображена картинка внутреннего устройства (DIP Package Pinouts), берём ручку и обозначаем те места, где должны остаться перемычки... :roll:
А дальше???? Берём иголочку с ниткой и прошиваем на картинке обозначенные места????...Так, как дальше то, например, счетчик собрать, как это вручную сделать???
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Re: Разработка прошивки для GAL вручную...

Post by HardWareMan »

Rokl wrote:
Shaos wrote:Решил создать прошивку для GAL22V10 не прибегая к помощи разнообразных средств разработки, а именно - вручную. Берём страницу даташита где изображена картинка внутреннего устройства (DIP Package Pinouts), берём ручку и обозначаем те места, где должны остаться перемычки... :roll:
А дальше???? Берём иголочку с ниткой и прошиваем на картинке обозначенные места????...Так, как дальше то, например, счетчик собрать, как это вручную сделать???
Надо вышивать крестиком.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Разработка прошивки для GAL вручную...

Post by Shaos »

Rokl wrote:
Shaos wrote:Решил создать прошивку для GAL22V10 не прибегая к помощи разнообразных средств разработки, а именно - вручную. Берём страницу даташита где изображена картинка внутреннего устройства (DIP Package Pinouts), берём ручку и обозначаем те места, где должны остаться перемычки... :roll:
А дальше???? Берём иголочку с ниткой и прошиваем на картинке обозначенные места????...Так, как дальше то, например, счетчик собрать, как это вручную сделать???
А дальше пишем в текстовом редакторе .jed файл и шьём любым GAL-совместимым программатором ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Минимальный формат JEDEC (без тестовых векторов), необходимый для прошивки GAL22V10 (аналогично и для других перепрограммируемых микросхем с открытой архитектурой), до безобразия прост - основной текст находится между двумя символами - '\x02' и '\x03', обозначающими начало и конец сообщения, между ними располагаются команды, разделённые звёздочками (далее свои комментарии по тексту пишу после трёх минусов --- их в тексте файла .jed не должно быть):

здесь произвольный текст
.--- тут должен быть символ '\x02'
GAL22V10*QP24*QF5892* --- некий текст, далее количество ног у микросхемы (после QP) и количество перепрограммируемых перемычек (после QF)
G0*F0* --- секьюрный бит (после G) и состояние перемычек по умолчанию (после F, обычно 0 - нетронуто)
N note* --- комментарии пишутся после символа N
L0000 11111111011111111111111111111101111111111111* --- список прожигаемых (1) и оставляемых (0) перемычек, непосредственно после L пишется номер первой перемычки в этой строке (тут 0)
L0044 11111111110111111101111111110111111111111111* --- списков может быть несколько (в этой строке адрес первой перемычки - 44)
C5C65* --- после буквы C идёт шестнадцатиричное представление 16-битной контрольной суммы прошивки (сумма байтов, составленных из битов-перемычек)
. --- тут должен быть символ '\x03'
0000 --- шестнадцатиричная контрольная сумма текстового сообщения (вместе с переводами строк и т.д.), однако допустимо использовать 0000 в качестве признака игнориования контрольной суммы сообщения.

Краткое описание составлено вот по этому тексту: http://ftp.dataio.com/appnotes/jedec2.txt
Я тут за главного - если что шлите мыло на me собака shaos точка net
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

А кто-нибудь у нас в России использует GAL-ы? Есть вообще желание их пощупать? ;)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Different wrote:А кто-нибудь у нас в России использует GAL-ы? Есть вообще желание их пощупать? ;)
В России есть ATF-ы, а вариант ispGAL вряд ли кому интересен из-за дороговизны и засекреченности...
Я тут за главного - если что шлите мыло на me собака shaos точка net
AlexM
Fanat
Posts: 73
Joined: 02 Oct 2007 02:25
Location: 78.108.67.186

Post by AlexM »

Different wrote:А кто-нибудь у нас в России использует GAL-ы? Есть вообще желание их пощупать? ;)
Использовали и в России, и выглядело это, что то, типа, так :
; INPUTS
pin 1 meandr
pin 2 cikl
pin 3 stabil
pin 4 p0
pin 5 p1
pin 6 p2
pin 7 busy
pin 8 strti ; ПУСК - нефиксируемая кнопка.
pin 9 stopi ; СТОП - кнопка.
pin 10 in1 ; Концевик заслонки 1 разгрузки бункера.
pin 11 in2 ; Концевик заслонки 2 загрузки бункера.
pin 13 run
; OUTPUTS
pin 14 strreg regfbk
pin 15 stop regfbk
pin 16 strt regfbk
pin 17 tare regfbk
pin 18 out6 regfbk ; out6 Подхват кнопки "Пуск"
pin 19 doza_ok regfbk ; out5 "Доза набрана"-Разгрузка заслонка 1
pin 20 null regfbk ; out4 "Ноль"
pin 21 fine regfbk ; out3 питатель "Точно"
pin 22 gross regfbk ; out2 питатель "Грубо"
pin 23 load regfbk ; out1 "Загруз" заслонка 2

EQUATIONS

; Имеется накопительный бункер, из которого заслонкой или шнековыми питателями
;материал подается в весовой бункер
; после замыкания кнопки "Пуск" и при отпущенной кнопке "Стоп" и при замкнутых концевиках
; на заслонках разгрузки-выгрузки весового бункера
; Цикл "загрузка-разгрузка" продолжается непрерывно при замкнутой кнопке "Пуск",
; пока не будет нажата кнопка "Стоп".

/strreg.d := ( /strt + /stop + /strreg ) * busy * run
/null.d := /p0 * /p1 * /p2 * run
/out6.d := /strti * /null * /cikl * stopi * /in1 * /in2 * run
+ /out6 * /cikl * stopi * /in1 * /in2 * doza_ok * run
/strt.d := /out6 * /null * /in1 * /in2 * /cikl * stabil * doza_ok * strreg * run
/gross.d := /null * cikl * stopi * /in1 * strreg * doza_ok * run
+ /gross * /p1 * /p2 * /in1 * cikl * doza_ok * run
/fine.d := p0 * p1 * /p2 * gross * cikl * stopi * /in1 * strreg * doza_ok * run
+ /fine * p0 * /p2 * /in1 * cikl * doza_ok * run
/tare.d := /out6 * /null * /in1 * /in2 * /cikl * stabil * doza_ok * strreg * run
/load.d := /null * stopi * doza_ok * cikl * strreg * /in1 * /in2 * run
+ /p2 * /load * doza_ok * cikl * /in1 * in2 * run
/stop.d := p0 * p1 * p2 * load * doza_ok * cikl * stabil * strreg * run
+ /stopi * strreg * run
+ in1 * load * cikl * strreg * run
/doza_ok.d := p0 * p1 * p2 */in2 * /cikl * load * run
+/doza_ok * /cikl * p0 * run

strreg.trst = run doza_ok.trst = run
strt.trst = run out6.trst = run
stop.trst = run tare.trst = run
load.trst = run null.trst = run
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

Shaos wrote: В России есть ATF-ы, а вариант ispGAL вряд ли кому интересен из-за дороговизны и засекреченности...
ATF-ы медленнее, а по ценам практически одинаковые.
И насчет секретности сомневаюсь.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

AlexM wrote:
Different wrote:А кто-нибудь у нас в России использует GAL-ы? Есть вообще желание их пощупать? ;)
Использовали и в России, и выглядело это, что то, типа, так :
; INPUTS
pin 1 meandr
pin 2 cikl
pin 3 stabil
pin 4 p0
pin 5 p1
pin 6 p2
pin 7 busy
pin 8 strti ; ПУСК - нефиксируемая кнопка.
pin 9 stopi ; СТОП - кнопка.
pin 10 in1 ; Концевик заслонки 1 разгрузки бункера.
pin 11 in2 ; Концевик заслонки 2 загрузки бункера.
pin 13 run
; OUTPUTS
pin 14 strreg regfbk
pin 15 stop regfbk
pin 16 strt regfbk
pin 17 tare regfbk
pin 18 out6 regfbk ; out6 Подхват кнопки "Пуск"
pin 19 doza_ok regfbk ; out5 "Доза набрана"-Разгрузка заслонка 1
pin 20 null regfbk ; out4 "Ноль"
pin 21 fine regfbk ; out3 питатель "Точно"
pin 22 gross regfbk ; out2 питатель "Грубо"
pin 23 load regfbk ; out1 "Загруз" заслонка 2

EQUATIONS

; Имеется накопительный бункер, из которого заслонкой или шнековыми питателями
;материал подается в весовой бункер
; после замыкания кнопки "Пуск" и при отпущенной кнопке "Стоп" и при замкнутых концевиках
; на заслонках разгрузки-выгрузки весового бункера
; Цикл "загрузка-разгрузка" продолжается непрерывно при замкнутой кнопке "Пуск",
; пока не будет нажата кнопка "Стоп".

/strreg.d := ( /strt + /stop + /strreg ) * busy * run
/null.d := /p0 * /p1 * /p2 * run
/out6.d := /strti * /null * /cikl * stopi * /in1 * /in2 * run
+ /out6 * /cikl * stopi * /in1 * /in2 * doza_ok * run
/strt.d := /out6 * /null * /in1 * /in2 * /cikl * stabil * doza_ok * strreg * run
/gross.d := /null * cikl * stopi * /in1 * strreg * doza_ok * run
+ /gross * /p1 * /p2 * /in1 * cikl * doza_ok * run
/fine.d := p0 * p1 * /p2 * gross * cikl * stopi * /in1 * strreg * doza_ok * run
+ /fine * p0 * /p2 * /in1 * cikl * doza_ok * run
/tare.d := /out6 * /null * /in1 * /in2 * /cikl * stabil * doza_ok * strreg * run
/load.d := /null * stopi * doza_ok * cikl * strreg * /in1 * /in2 * run
+ /p2 * /load * doza_ok * cikl * /in1 * in2 * run
/stop.d := p0 * p1 * p2 * load * doza_ok * cikl * stabil * strreg * run
+ /stopi * strreg * run
+ in1 * load * cikl * strreg * run
/doza_ok.d := p0 * p1 * p2 */in2 * /cikl * load * run
+/doza_ok * /cikl * p0 * run

strreg.trst = run doza_ok.trst = run
strt.trst = run out6.trst = run
stop.trst = run tare.trst = run
load.trst = run null.trst = run
это чтоли PALASM? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Different wrote:
Shaos wrote: В России есть ATF-ы, а вариант ispGAL вряд ли кому интересен из-за дороговизны и засекреченности...
ATF-ы медленнее, а по ценам практически одинаковые.
И насчет секретности сомневаюсь.
Медленные и по цене одинаковые? У нас ATF16V8-10 стоят в несколько раз меньше, чем GAL16V8-10 (и то, и это 10 нс)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

Shaos wrote: Медленные и по цене одинаковые? У нас ATF16V8-10 стоят в несколько раз меньше, чем GAL16V8-10 (и то, и это 10 нс)
ispGAL и просто GAL - немного разные вещи ;)
ispGAL имеет 2,3нс, а GAL - вообще прошлый век, имхо
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Different wrote:
Shaos wrote: Медленные и по цене одинаковые? У нас ATF16V8-10 стоят в несколько раз меньше, чем GAL16V8-10 (и то, и это 10 нс)
ispGAL и просто GAL - немного разные вещи ;)
ispGAL имеет 2,3нс, а GAL - вообще прошлый век, имхо
ispGAL 2.3 нс есть за 4 доллара в корпусе QFN-32 - вручную такой не запаять...

P.S. и вообще все PAL/GAL - это прошлый век, а в этом веке рулят FPGA ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Минимальный формат JEDEC (без тестовых векторов), необходимый для прошивки GAL22V10 (аналогично и для других перепрограммируемых микросхем с открытой архитектурой), до безобразия прост - основной текст находится между двумя символами - '\x02' и '\x03', обозначающими начало и конец сообщения, между ними располагаются команды, разделённые звёздочками (далее свои комментарии по тексту пишу после трёх минусов --- их в тексте файла .jed не должно быть):

здесь произвольный текст
.--- тут должен быть символ '\x02'
GAL22V10*QP24*QF5892* --- некий текст, далее количество ног у микросхемы (после QP) и количество перепрограммируемых перемычек (после QF)
G0*F0* --- секьюрный бит (после G) и состояние перемычек по умолчанию (после F, обычно 0 - нетронуто)
N note* --- комментарии пишутся после символа N
L0000 11111111011111111111111111111101111111111111* --- список прожигаемых (1) и оставляемых (0) перемычек, непосредственно после L пишется номер первой перемычки в этой строке (тут 0)
L0044 11111111110111111101111111110111111111111111* --- списков может быть несколько (в этой строке адрес первой перемычки - 44)
C5C65* --- после буквы C идёт шестнадцатиричное представление 16-битной контрольной суммы прошивки (сумма байтов, составленных из битов-перемычек)
. --- тут должен быть символ '\x03'
0000 --- шестнадцатиричная контрольная сумма текстового сообщения (вместе с переводами строк и т.д.), однако допустимо использовать 0000 в качестве признака игнориования контрольной суммы сообщения.

Краткое описание составлено вот по этому тексту: http://ftp.dataio.com/appnotes/jedec2.txt
Сделал "вручную" прошивку для GAL16V8 (основная разница - надо писать *QP20*QF2194 и структура у микрухи иная) и попробовал прошить старые PALCE16V8 - в основном получилось, но входы 1 и 11 почему-то не хотят участвовать в вычислениях...
Я тут за главного - если что шлите мыло на me собака shaos точка net
AlexM
Fanat
Posts: 73
Joined: 02 Oct 2007 02:25
Location: 78.108.67.186

Post by AlexM »

Shaos wrote:
AlexM wrote:...
/doza_ok.d := p0 * p1 * p2 */in2 * /cikl * load * run
+/doza_ok * /cikl * p0 * run

strreg.trst = run doza_ok.trst = run
strt.trst = run out6.trst = run
stop.trst = run tare.trst = run
load.trst = run null.trst = run
это чтоли PALASM? ;)
Возможно, но на CUPL не похож, а может и ABEL ? :-?