Главный грех человека – невежество.

Меню навигации для мобильных

Последние сообщения

#1
Цифровая техника / Re: Запустить 8086
Последний ответ от Slabovik - Сегодня в 13:34
Что-то трудно с этим генератором. Не, на 3 делит чётко. Но задержками играть получается только на TTL сериях, у которых переход от 1 к 0  и от 0 к 1 происходит за разное время. У серии 74AC разница весьма незначительна, поэтому растянуть второй полупериод так просто не получается.

8086_24MHz_to_8_JK_divider.png

Слегка изменил положение строба шины

8086_24MHz_to_8_JK_divider_timings.png

Но по всему выходит и формирование строба чуток кривое - возможен глитч и без дополнительного обвеса его не побороть, и второй полупериод такта процессора коротковат от даташита.

Но с другой стороны я смотрю даташит на его родной геренатор. Там делитель на 3, вот в чём прикол!

82c84A_internal.png
ЦитатаThe CLK output is a 33% duty cycle clock driver designed to
drive the 80C86, 80C88 processors directly.
И, как такое бывает?

#2
Цифровая техника / Re: Светодиодные матрицы
Последний ответ от Slabovik - Сегодня в 11:39
Смотрю, озадачил я тебя   ::) Но увы, такова цена многозадачности. Мы ещё реентерабельность ни разу не рассматривали  ;) Впрочем, здесь она не нужна, я полагаю...
#3
Цифровая техника / Re: Запустить 8086
Последний ответ от Slabovik - 04 Май, 2024, 18:12
Продолжим. 40МГц тактирования позволяет удобно определить цикл шины памяти с 25-наносекундным дедтаймом. Он нужен изза того, что память не очень быстро снимает данные со своего выхода после цикла чтения, и если следующим будет идти цикл записи, там целых полтора-два десятка наносекунд может быть игра "перетяни шину". Чтобы этого не было, данные нужно выставлять слегка позже, чем начинается цикл.

Слегка изменил схему генератора

8086_Gena_TM8_40MHz.png

По-идее, можно обойтись без  четвёртого (D3/Q3) триггера, но его девать некуда - пусть стробирует гейт на выводы 'L' триггеров ИР22, которые забирают данные из памяти.

Строб гейтов данных на запись в память выглядит точно также, только следует чуть позже за счёт задержки в логическом элементе.
Постарался наиболее точно отобразить задержки в элементах. В основу взял серию 74AC

8086_Gena_TM8_40MHz_timings.png

Можно частоту делить на 3, взяв в качестве опорной 24МГц. Это проще. Но поделив на D-триггерах, получим ровно 1/3, получим 41нс  полутакта, а по документам надо 50.

Можно попробовать посчитать делитель на 3 на JK-триггерах. Это асинхронные триггеры и фронты будут за счёт задержек смещены, возможно, в нужную сторону. Посмотрим. Вот схема делителя

8086_Gena_TB15_24MHz.png

Пойду тайминги рисовать :)
#4
Цифровая техника / Re: Re: Орион-128 возрождение ...
Последний ответ от matrixplus - 04 Май, 2024, 13:15
запись на проект  плат SVGA  https://zx-pk.com/forum/viewtopic.php?f=7&t=23750

Орион-128 плата SVGA проект (улучшение изображения) http://rdk.regionsv.ru/orion128-super-42-turbo.htm

Принимаются заявки:  цена приблизительно озвучена на   https://zx-pk.com/forum/viewtopic.php?f=7&t=23750


информация http://rdk.regionsv.ru/orion128-super-42-turbo.htm
фото платы http://rdk.regionsv.ru/orion128svga/svga-015.jpg



в ней предусмотрены раьемы для платки расширения которая уже есть (в принципе разведена но ее бум делать позже)
#5
Фото, видео, аудио / Re: Коротко о погоде
Последний ответ от Slabovik - 03 Май, 2024, 22:13
Целый день пасмурно и прохладно, что даже до +4 еле-еле прогрело. Но с обеда зарядил дождь, который к вечеру превратился в мокрый снег, а потом в сильный мокрый снег. Ладно, что деревья ещё сильно лист не выпустили, даже вишни со сливами бутоны только-только приготовили, но тополя в городе поломало конечно... Полагаю, обойдётся  :)

TJM-2024-05-03.jpg
#6
Цифровая техника / Запустить 8086
Последний ответ от Slabovik - 03 Май, 2024, 16:43
Давно колупаюсь, когда время есть, но до практики так и не добрался ввиду объёмных затрат на хардварь. Тем не менее, давно хотел сделать какой-нибудь контроллер на базе этого проца. Да, есть NEC V40, но это уже перебор :)

Итак, имеем i8086 либо подобный. Задача-минимум - запустить. Задача-максимум - с прозрачным режимом работы с памятью и собственным видеоконтроллером, дающим картинку на телевизор либо LCD. 256 цветов достаточно. 16 - минималка.

8086 есть в нескольких вариантах. 8086 - базовый с тактовой 5МГц. 8086-2 имеет тактовую 8МГц. И есть редкий 8086-1 с тактовой 10МГц. Базовый купить полный кулёк не проблема, их много продают с разборок. 8086-2 надо поискать. 10-мегагерцовый вариант я не находил. А есть ещё вариант 80С86 - то же самое, только по КМОП-технологии.

Для начала надо разобраться с тактированием. Оно по-интеловски слегка странное - соотношение полупериодов должно быть 3/5 и 2/5

8086_timing_diagram.png

8086_timing_table.png

Тайминги версии 80C86 идентичны таймингам оригинала

Да, я видел варианты, где делают 2/3 и 1/3 и даже 3/4 и 1/4, но это с пониженными частотами, 4 а не 5, 6 а не 8...
Для 8-мегагерцового 1/3 при 125нс периоде получается только 41нс, а не 50, требуемых по даташиту (45+фронт)

3/5 и 2/5 можно чётко получить при 40-мегагерцовом осцилляторе

8086_40MHz_to_8_divider.png

Здесь подаваемая на процессор частота CT1, другие сигналы полезные для синхронизации узлов.

уфф, оказалось, у меня потерялась циклограмма. Потребуется время нарисовать по-новой... продолжу...
#7
Путешествия / Re: Из кабины машиниста
Последний ответ от Slabovik - 03 Май, 2024, 13:37
Снег идёт и поезд идёт. Зимняя Швейцария
St.Moritz - Chur with heavy snowfall
[свернуть]
#8
Цифровая техника / Re: Светодиодные матрицы
Последний ответ от zenon - 02 Май, 2024, 21:53
Случайно удалил свой пост.
Предделитель для 1Гц будет такой:
72000000/7200 = 10000Гц
Предзагрузка 10000.
Прерывание по переполнению счётчика:

↓ спойлер ↓
void TIM13_init(void){
  RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // разрешить тактирование таймера
  TIM3->PSC = 7200 - 1; // предделитель
  TIM3->ARR = 10000 - 1; // предзагрузка
  TIM3->DIER |= TIM_DIER_UIE; // прерывания будем ловить по переполнению счетчика
  TIM3->CR1 |= TIM_CR1_CEN;
  NVIC_EnableIRQ(TIM3_IRQn);
}

void TIM3_IRQHandler (void) {
  if ((TIM3->SR & TIM_SR_UIF) == TIM_SR_UIF) { //  проверяем, что прерывание произошло по событию переполнения счетчика stm32f10x.h
    TIM3->SR &= ~TIM_SR_UIF; // флаг сбросить, иначе при выходе из обработчика прерываний мы тут же попадем туда снова
    LEDTOGGLE; // моргаем
  }
}
[свернуть]
---
Но, у нас ещё есть собственное прерывание на SPI: void SPI1_IRQHandler() :)
#9
Цифровая техника / Re: Светодиодные матрицы
Последний ответ от Slabovik - 02 Май, 2024, 19:14
Это немного другая организация процесса, но в принципе подходит. Основной цикл крутит круги, в которых вызываются все процедуры. А процедуры уже смотрят, пора им или ещё нет. Тут проблема может быть в том, что вдруг возможен какой-то длительный процесс/процедура, а эта штука его прерывать не сможет. Прерывания помогают отделить процессы друг от друга.
#10
Цифровая техника / Re: Светодиодные матрицы
Последний ответ от zenon - 02 Май, 2024, 18:38
Ну у меня же есть SySTick, он же подходит?, - зашли, проверили миллисекунды, - надо выполнили задачу, нет - вышли.
Можно и меньше 1 мсек его настроить.