nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 01:36



Reply to topic  [ 148 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10  Next
Альтернативная система на 68000 :) 
Author Message
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Еще схемы:

Еще осталось - узел системной ПЛИСы, и узел периферийного контроллера с интерфейсами... но их еще нужно привести в нормальное состояние


Attachments:
video.pdf [106.79 KiB]
Downloaded 302 times
power.pdf [105.11 KiB]
Downloaded 301 times
bus_conn.pdf [138.43 KiB]
Downloaded 303 times


Last edited by Annett on 19 Apr 2017 08:18, edited 1 time in total.

18 Apr 2017 11:19
Profile
Doomed

Joined: 08 Apr 2013 04:04
Posts: 449
Location: 213.247.249.139
Reply with quote
Альтеры можно кстати в жтаг-цепочку соединять, и шить любую через один общий разъём

_________________
привет засранцу лавру :)


18 Apr 2017 12:19
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Да :) Просто когда дошло дело до разводки прошивалок, оказалось что уже негде протащить сигналы... И вторая (основная) причина - я так еще никогда не делала, и решила сделать ранее проверенный вариант - каждой ПЛИСе свой разъем, чтобы не наделать чего-нибудь неправильного и не резать дорожки:)

А еще лучше конечно вместо трех штук max2 просто поставить один Циклон. И сделать еще самопрошивку с SDкарточки.

Ничего, всё еще будет.
я же только-только учусь работать с ПЛИСками... но уже понимаю, что это очень крутая и прикольная штука...


Last edited by Annett on 19 Apr 2017 08:19, edited 1 time in total.



18 Apr 2017 12:24
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
заработало (радость!):
+разделение кода на супервизорский и пользовательский
+разделение привилегий доступа к памяти (к аппаратным регистрам доступ пока не разделяется). юзерский код ничего не может сделать с ядерным ОЗУ. И даже не может его читать и сделать туда переход :)
(в системной ПЛИСе идет разбор - кому принадлежит текущий цикл шины, и если он юзерский, то ядерная часть ОЗУ закрывается на доступ и генерируется исключение по линии /BERR - юзерский код безжалостно прибивается).
+снятие выполнения юзерского кода через Ctrl-Alt-Del с выпадением в менюшку ядра супервизора
+при выпадении исключения под юзерским кодом приделала возврат в супервизор по нажатию ESC, где можно пустить юзерский код на исполнение заново без перезагрузки :) Или можно перезагрузиться, если хочется.


19 Apr 2017 05:33
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Появилась такая идейка.
Для простой и удобной отрисовки всяких сложных графических интерфейсов сделать макро-функцию, которая будет исполнять некий "шитый код" из ссылок на дескрипторы графических примитивов.
Например,
есть прим "рисование линии", который описан табличкой:
$0B - опкод "рисование линии"
$10 -цвет
X1,Y1,X2,Y2 - координаты начала-конца
FFFFFFFF - битовая маска

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

Дальше: сделать табличку, в которой подряд записаны ссылки на эти дескрипторы примов. И в ее конце - маркер 00, означающий конец таблицы.

Можно сделать системный вызов через ЕМТ, например emt SYSTEM_graphics_macro, который будет за одну команду сразу отрисовывать сколько угодно всего, рисовать окошки, писать всякие там тексты и всё такое, вплоть до картинок, графиков и сглаживаний.

lea GR_descriptor_table1, a0
emt SYSTEM_graphics_macro

Под этим ЕМТ уже будет выполняться много кода, который по очереди будет запускать графические функции, загружать работой ПЛИСу и всё такое.

Будет удобнее, чем кодить множество команд чтобы нарисовать какое-то окошко.
И еще тогда можно будет рисовать интерфейсы вообще как некоторую отдельную сущность, сохраняя всё просто в файл с такими табличками и опкодами графических функций.
Так вот и получится почти Си :)

Как-нибудь попробую сделать.. Сейчас что-то снова нет ни времени ни душевных сил...


19 Apr 2017 07:57
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Общий концепт расширения системы (если когда-нибудь до этого дойдет) - горизонтальный стек - "этажерка" плат друг над другом, со сквозными разъемами в стиле PC/104.

Мне не очень нравятся краевые коннекторы в стиле PCI/ISA/и т.д. - с ними часто возникают проблемы с надежностью контакта, слотовые разъемы дорогие, золочение плат дорогое, и всё такое :( А еще это дает слишком большой объем корпуса и проблемы с механическим креплением (основная причина).


Attachments:
k5001.png
k5001.png [ 244.97 KiB | Viewed 7511 times ]
19 Apr 2017 09:14
Profile
Doomed

Joined: 08 Apr 2013 04:04
Posts: 449
Location: 213.247.249.139
Reply with quote
А на карту памяти девайса можно полюбоваться? :)

_________________
привет засранцу лавру :)


19 Apr 2017 09:45
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Конечно же можно :)
Пока вот так:
(есть мысль перенести VRAM "наверх", куда-нибудь на $D00000)
(добавила еще файл описания регистров - но он еще очень сырой, и еще будут его доработки. И там не описаны графические регистры - их пока держу только в голове и в исходниках на верилоге :)))

000000..00FFFF SYSTEM RAM (PRIVILEGED ACCESS) 64Kbytes
010000..07FFFF USER RAM-0 448Kbytes
080000..0FFFFF USER RAM-1 512Kbytes [optional]
100000..1FFFFF -- reserved
200000..27FFFF VRAM 512Kbytes
280000..2FFFFF graphics subsystem registers
300000..3FFFFF -- reserved
400000..4FFFFF FLASH MEMORY #0 [optional]
500000
600000
700000
800000
900000
A00000
B00000
C00000
D00000
E00000
F00000..FFFFEF reserved, system registers area

и сразу - карта IRQ:

IRQ0 rhytm generator
IRQ1 timer-1
IRQ2 timer-2
IRQ3 timer-3
IRQ4 peripheral controller event (ATMEGA128)
IRQ5 GPIO chip (external IRQ)
IRQ6 external IRQ_A (system bus)
IRQ7 Video vertical retrace
IRQ8 DMX512 TX
IRQ9 RS232 RX
IRQ10 MIDI-1 RX
IRQ11 MIDI-2 RX
IRQ12
IRQ13 RS232 TX
IRQ14 MIDI-1 TX
IRQ15 MIDI-2 TX
IRQ16
IRQ17 external IRQ_B (system bus)
IRQ18 external IRQ_C (system bus)
IRQ19 SD card


Attachments:
HW117.TXT [16.75 KiB]
Downloaded 586 times
19 Apr 2017 10:06
Profile
Doomed

Joined: 08 Apr 2013 04:04
Posts: 449
Location: 213.247.249.139
Reply with quote
О, гуд, спасибо!
Мои 5 копеек: прямая адресация областей FF8000...FFFFFF и 000000...007FFF у мотороллера идёт через адрес в одно слово, в отличие от остальной памяти. Не было бы удобно запихать все HW-регистры скажем в FF8000..FFFFFF (если влезут), раз уж в 000000..007FFF память полюбому живёт...
Но это так, мысли вслух, ни разу не критика.

_________________
привет засранцу лавру :)


19 Apr 2017 12:12
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Сейчас у меня там регистры расположены так (вот def- файлик):

;Hardware CPLD registers and memory mapping
;-------- System registers

_INTERRUPT_POLL_CLEAR_REGISTER equ $FFFF00
_INTERRUPT_POLL_CLEAR_REGISTER_H equ $FFFF00
_INTERRUPT_POLL_CLEAR_REGISTER_L equ $FFFF02
_INTERRUPT_MASK_REGISTER equ $FFFF04
_INTERRUPT_MASK_REGISTER_H equ $FFFF04
_INTERRUPT_MASK_REGISTER_L equ $FFFF06
_INTERRUPT_CONTROL_REGISTER equ $FFFF08

; reserved equ $FFFF0A

_RANDOM_NUMBER_GENERATOR_REGISTER equ $FFFF0C
_REAL_TIME_CLOCK_I2C_REGISTER equ $FFFF0E

; reserved equ $FFFF10

_TIMER1_CONTROL_REGISTER equ $FFFF12
_TIMER2_CONTROL_REGISTER equ $FFFF14
_TIMER3_CONTROL_REGISTER equ $FFFF16
_PERIPHERAL_CTRL_SPI_DATA_REG equ $FFFF18
_PERIPHERAL_CTRL_SPI_DATA_REG_H equ $FFFF18
_PERIPHERAL_CTRL_SPI_DATA_REG_L equ $FFFF1A
_PERIPHERAL_CTRL_SPI_CONTROL_REG equ $FFFF1E
_SD_CARD_1_DATA_REGISTER equ $FFFF20
_SD_CARD_1_CONTROL_REGISTER equ $FFFF22
_SD_CARD_0_DATA_REGISTER equ $FFFF24
_SD_CARD_0_CONTROL_REGISTER equ $FFFF26
_RHYTM_GENERATOR_K_REGISTER equ $FFFF28
_RHYTM_GENERATOR_K_REGISTER_H equ $FFFF28
_RHYTM_GENERATOR_K_REGISTER_L equ $FFFF2A
_RHYTM_GENERATOR_CONTROL_REGISTER equ $FFFF2C

; reserved equ $FFFF2E

_RS232_RX_CONTROL_REGISTER equ $FFFF30
_RS232_RX_DATA_REGISTER equ $FFFF31
_RS232_TX_CONTROL_REGISTER equ $FFFF32
_RS232_TX_DATA_REGISTER equ $FFFF33
_MIDI1_RX_CONTROL_REGISTER equ $FFFF34
_MIDI1_RX_DATA_REGISTER equ $FFFF35
_MIDI2_RX_CONTROL_REGISTER equ $FFFF36
_MIDI2_RX_DATA_REGISTER equ $FFFF37
_MIDI1_TX_CONTROL_REGISTER equ $FFFF38
_MIDI1_TX_DATA_REGISTER equ $FFFF39
_MIDI2_TX_CONTROL_REGISTER equ $FFFF3A
_MIDI2_TX_DATA_REGISTER equ $FFFF3B
_DMX512_TX_CONTROL_REGISTER equ $FFFF3C
_DMX512_TX_DATA_REGISTER equ $FFFF3D

; reserved equ $FFFF3E


;-------- Graphics subsystem

_VRAM_START_ADDRESS equ $200000
_TEST_LED_REGISTER equ $2FFF00
_RAMDAC_PALETTE_INDEX_REGISTER equ $2FFF06
_RAMDAC_PALETTE_RAM_REGISTER equ $2FFF04
_RAMDAC_PIXEL_MASK_REGISTER equ $2FFF02

_GFX_SOURCE_X_REGISTER equ $2FFF08
_GFX_X1_REGISTER equ $2FFF08
_GFX_SOURCE_Y_REGISTER equ $2FFF0A
_GFX_Y1_REGISTER equ $2FFF0A
_GFX_DESTINATION_X_REGISTER equ $2FFF0C
_GFX_X2_REGISTER equ $2FFF0C
_GFX_DESTINATION_Y_REGISTER equ $2FFF0E
_GFX_Y2_REGISTER equ $2FFF0E
_GFX_LENGTH_REGISTER equ $2FFF10
_GFX_COLOR_REGISTER equ $2FFF12
_GFX_BIT_MASK_REGISTER equ $2FFF14 ;$2FFF14 and $2FFF16

_GFX_COMMAND_STATUS_REGISTER equ $2FFF28

_OVERLAY_CROSS_POINTER_X_REG equ $2FFF30
_OVERLAY_CROSS_POINTER_Y_REG equ $2FFF32
_OVERLAY_CROSS_POINTER_CTRL_REG equ $2FFF34


Они уже и так частично там наверху (кроме графических регистров).
Можно и графические отправить например на $FFF0xx, и всё :)

А внизу с 00000 - да, память уже живет, и ее лучше там и оставить.

Спасибо за рекомендацию:)


19 Apr 2017 12:53
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Закодила отрисовку по списку дескрипторов примитивов.
И еще приделала ЕМТ-функцию завершения пользовательского кода с выходом в систему. Не знаю зачем, но пусть будет.


Attachments:
rkp1.jpg
rkp1.jpg [ 196.22 KiB | Viewed 7486 times ]
19 Apr 2017 14:19
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Неприятные новости. Изредка (раз в несколько часов) падаем в исключение:
Image
Уже давно не было ничего такого...А тут - раз и привет, вот такая радость и счастье(((
Как же я нелюблю такие спонтанные редкие глюки. Самое мерзкое, что бывает в электронике...

Сделала дамп всего-всего. Для этого у меня есть специальная отладочная самодельная программка, которая через SPI, который эмулируется через LPT, может грузить отладочные микрокоманды в системную ПЛИСу, залезать в адресное пространство 68К через DMA и скачивать/записывать любые регистры и адреса памяти.
Image
Ничего плохого там не обнаружилось, всё замечательно.

При повторном запуске кода из-под супервизора без перезагрузки - всё работает снова, как и ни в чем ни бывало.
Ситуация очень подозрительна.
Вектор $53 -это IRQ19 (прерывание по смене пользовательской SD карточки). Которое вообще-то в настоящее время замаскировано (и это подтверждается содержимым регистра маски прерываний, задампленным вместе со всем остальным... )
И еще -это последнее по счету аппаратное прерывание (их всего 20), после которого производится завершение микроцикла перебора прерываний в ПЛИСе, и возврат к проверке IRQ0. Очень похоже, что есть какой-то противный глючок в этом месте контроллера прерываний...
Уффф. Дальше прямой путь в сторону проверки верилога контроллера прерываний, а также к написанию тестов и включению осциллографа... :|


21 Apr 2017 13:26
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
angry_troll, по вашей рекомендации разместила графические регистры "наверху", теперь они будут с $FFFDxx.
;-------- Graphics subsystem
_VRAM_START_ADDRESS equ $D00000
_TEST_LED_REGISTER equ $FFFD00
_RAMDAC_PALETTE_INDEX_REGISTER equ $FFFD06
_RAMDAC_PALETTE_RAM_REGISTER equ $FFFD04
_RAMDAC_PIXEL_MASK_REGISTER equ $FFFD02

и т.д.

И заодно - видеопамять теперь тоже наверху, начиная с $D00000.


23 Apr 2017 05:26
Profile
Doomed

Joined: 08 Apr 2013 04:04
Posts: 449
Location: 213.247.249.139
Reply with quote
:roll:

А редкие проблемы с прерываниями случайно не пересинхронизацией (точнее отсутствием) асинхронных сигналов вызываются?

_________________
привет засранцу лавру :)


23 Apr 2017 06:39
Profile
Senior

Joined: 30 Mar 2017 00:55
Posts: 137
Reply with quote
Пересинхронизация самих прерываний под системный такт 16МГц там есть...

Единственное место, где нет пересинхронизации - это дешифрация шинного цикла запроса вектора прерывания и соответствующий внутренний сигнал, который асинхронно выдает на шину вектор и снимает флаг запроса. Можно сделать пересинхронизацию и туда. Еще есть примерно 100 свободных ячеек, как раз на всякие такие исправления :)

Но этот сигнал проходит уже после факта прохождения прерывания к 68-му... Значит первопричина неприятности не в этом сигнале. Скорее все-таки есть какой-то глючок в автомате сканирования флагов запросов. Или в генерации вектора... Пока я запомнила себе эту проблему, и хочу еще посмотреть - будет ли такое повторяться. Пока вот два дня работает и больше не собирается глючить... :( Очень хочется чтобы упало, но нехочет...


23 Apr 2017 06:56
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 148 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10  Next

Who is online

Users browsing this forum: No registered users and 12 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.