Важная информация

User Tag List

Страница 49 из 67 ПерваяПервая ... 454647484950515253 ... ПоследняяПоследняя
Показано с 481 по 490 из 661

Тема: Еще один Орион на ПЛИС

  1. #481
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Такой вопрос - какие сигналы от Z80 следует подтягивать к +5В, кроме шины данных?
    Неактуально - всё это описано в Z80-UM...
    Последний раз редактировалось andreil; 01.07.2018 в 09:39.
    "Байт-48"

  2. #481
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #482
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для тестирования корректности функционирования подсистем пишу более расширенный тест, чем стандартный для ПРО.
    На данный момент готовы проверки 6 видеорежимов из 8 - остались только 3-х и 4-х битные.
    Результаты 4-х и 16-и цветных режимов:
    Нажмите на изображение для увеличения. 

Название:	test_4c1.jpg 
Просмотров:	173 
Размер:	23.0 Кб 
ID:	65691Нажмите на изображение для увеличения. 

Название:	test_4c2.jpg 
Просмотров:	186 
Размер:	18.6 Кб 
ID:	65692Нажмите на изображение для увеличения. 

Название:	test_16g.jpg 
Просмотров:	215 
Размер:	23.9 Кб 
ID:	65693Нажмите на изображение для увеличения. 

Название:	test_16p.jpg 
Просмотров:	182 
Размер:	23.3 Кб 
ID:	65694
    Заодно выводится номер столбца-знакоместа для проверки корректности широкоэкранного режима.
    Выбор теста осуществляется DIP-переключателями конфигурации ПРО (не инверсные значения, то есть "флажок" в эмуляторе означает "0" в бите):
    • Биты 0-2 - номер проверяемого видеорежима;
    • Бит 3 - активация турбо-режима;
    • Бит 4 - активация широкого экрана;
    • Биты 5-7 - не используются. Резерв для тестирования PIO.

    Пишу на С, собираю через SDCC, поэтому выходной код не самый оптимальный. Но зато легко и быстро пишутся программы).

    PS: Жду CPLD'шки для сборки макетки. А пока - вот таким вот тестом буду проверять симуляцию в FPGA...
    "Байт-48"

  4. #483
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В продолжение темы о тесте - перевёл полностью на ASM. Не требует памяти, работает чисто на регистрах.
    6 тестов из 8 уместил в 2Кб - без агрессивных оптимизаций и сжатия, включая шрифт 8*8 для 128 символов.
    Собственно, текущая версия теста (исходник и бинарник) - в аттаче, если кому интересно.
    OrionNGtest.zip
    О назначении переключателей было написано выше, потому не дублирую.
    Прошивается вместо ROM1, которая на 8Кб.

    - - - Добавлено - - -

    PS: Это мой первый опыт на ASM'е Z80, просьба тапками не закидывать -_-
    "Байт-48"

  5. #484
    Guru
    Регистрация
    16.12.2008
    Адрес
    Kharkov, Ukraina
    Сообщений
    2,221
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    18 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Этаж сколько эта мини платка с смд халявными микрухами (из прошлой жизни) жрет на один см квадратный. Орион-Про отдыхает
    Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...

  6. #485
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Такой вопрос - насколько актуален объём памяти в 1Мб? Или "всем хватит" 512Кб?
    Просто пытаюсь максимально впихнуть в ресурсы по видеопортам и не хватает ячеек из-за "жирного" диспетчера памяти. А выносить часть портов, относящихся к памяти, в другой корпус - не очень хорошо, поскольку они только внутри и коммутируются всё равно.
    "Байт-48"

  7. #486
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andreil Посмотреть сообщение
    Такой вопрос - насколько актуален объём памяти в 1Мб? Или "всем хватит" 512Кб?
    Готового ПО под такой объём ОЗУ в природе нет. И ситуация тут следующая. Если бы в Орионе был 1 Мб, то это было бы классно, и, например, я бы в своей ОС с удовольствием поддержал (а точнее сказать, в таком случае вообще пересмотрел бы архитектуру ОС). Но, есть "но"... при условии популярности такой платформы среди пользователей. А мы все понимаем, что этого не случится.. увы.
    Поэтому, если технически сложно сделать "метр", то я бы оставил 512 Кб.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  8. #487
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    Готового ПО под такой объём ОЗУ в природе нет. И ситуация тут следующая. Если бы в Орионе был 1 Мб, то это было бы классно, и, например, я бы в своей ОС с удовольствием поддержал (а точнее сказать, в таком случае вообще пересмотрел бы архитектуру ОС). Но, есть "но"... при условии популярности такой платформы среди пользователей. А мы все понимаем, что этого не случится.. увы.
    Поэтому, если технически сложно сделать "метр", то я бы оставил 512 Кб.
    Не то, что сложно, просто я пытаюсь вырезать до минимума необходимого, что бы уместить в 1 чип почти всё, касающееся памяти (порты F9, 08, 04, 05, 06 - стандартный, Z80-Card, Pro). Если порт F9 ещё можно вынести "наружу", то остальные будут реализованы "в чипе", что бы избавиться от ожиданий при обращении к ВВ55, на которых они реализованы в оригинале. Сооружать "эмулятор" ВВ55 на рассыпухе не вижу смысла вообще.

    - - - Добавлено - - -

    Очень много ячеек занимают синхронные счётчики - использовать внешние не позволит количество выводов.
    Синхронность релизована "в лоб" - выдачей данных по ниспадающему фронту (счёт - по восходящему фронту). То есть на 10 битный счётчик тратится 20 ячеек, таких у нас 2...

    - - - Добавлено - - -

    Кстати, по портам - порты диспетчера памяти (04-06) софтом только пишутся или ещё и читаются?
    Порт 0А, например, читается - тут само его назначение предписывает это (управление RAM, ROM). иначе приходилось бы это же состояние хранить отдельно в памяти для модификации отдельных битов.
    "Байт-48"

  9. #488
    Master
    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    778
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andreil Посмотреть сообщение
    Синхронность релизована "в лоб" - выдачей данных по ниспадающему фронту (счёт - по восходящему фронту). То есть на 10 битный счётчик тратится 20 ячеек, таких у нас 2...
    Немножко перефразирую: "Странно как-то ты, дядя Фёдор, бутерброд кушаешь..." (C)
    Для синхронного n-битного счётчика необходимо и достаточно n триггеров/ячеек. "Ведущий-ведомый" триггеры в ОРИОНЕ, и уж тем более в счётчиках строк/столбцов, ИМХО, совершенно не нужны...
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

  10. #489
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от LeoN65816 Посмотреть сообщение
    Немножко перефразирую: "Странно как-то ты, дядя Фёдор, бутерброд кушаешь..." (C)
    Для синхронного n-битного счётчика необходимо и достаточно n триггеров/ячеек. "Ведущий-ведомый" триггеры в ОРИОНЕ, и уж тем более в счётчиках строк/столбцов, ИМХО, совершенно не нужны...
    Делал так - в итоге получаю глитчи в реале из-за асинхронности счётчиков и полный разлад всего видеотракта, поскольку возникают "левые" импульсы для счётчика строк. Первоначально я так и было, но при проверке оно работало через раз - наблюдалась вот такая вот картина на счётчиках:
    "Байт-48"

  11. #490
    Master
    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    778
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На картинке не вижу ничего "нехорошего", нет других сигналов, от которых зависят счётчики...
    Цитата Сообщение от andreil Посмотреть сообщение
    Делал так - в итоге получаю глитчи в реале из-за асинхронности счётчиков и полный разлад всего видеотракта, поскольку возникают "левые" импульсы для счётчика строк.
    На всякий случай напомню о синхронности: у счётчиков строк и столбцов должен быть один (!), единственный (!!), общий (!!!) клок, и это должен быть пиксельклок. А вот разрешения клока у счётчиков столбцов и строк должны быть разными, являющимися комбинаторной функцией от предыдущего состояния. Причём, функция разрешения счёта/сброса счётчика столбцов должна являться переменной для функции разрешения счёта/сброса счётчика строк. Вот посмотри и проникнись :
    Код:
    module HVSync (
      input wire PixClock,
      output reg HSync,
      output reg VSync,
      output reg [2:0] R,
      output reg [2:0] G,
      output reg [2:0] B);
     
      parameter HVA = 1024;		// Visible Area
      parameter HFP = 24;		// Front Porch
      parameter HST = 136;		// Sync Time
      parameter HBP = 160;		// Back Porch
     
      parameter VVA = 768;		// Visible Area
      parameter VFP = 3;			// Front Porch
      parameter VST = 6;			// Sync Time
      parameter VBP = 29;		// Back Porch
    
      //variables  
      reg [10:0] PC = 0;			// Pixel Counter (Column, X)
      reg  [9:0] LC = 0;			// Line Counter (Row, Y)
    
      wire VA = (PC <HVA) & (LC < VVA);						// Visible Area on screen
    
    always @(posedge PixClock)
    begin
    //  VA <= ((PC < HVA-1) | (PC == HVA+HFP+HST+HBP-1)) & ((LC < VVA) | (LC == VVA+VFP+VST+VBP-1));
    
      HSync <= (PC >= HVA+HFP-1) & (PC < HVA+HFP+HST-1);
     
      if (PC < (HVA+HFP+HST+HBP-1))
        PC <= PC + 1'b1;
      else begin
        PC <= 0;
    	 VSync <= (LC >= VVA+VFP-1) & (LC < VVA+VFP+VST-1);
    	 if (LC < (VVA+VFP+VST+VBP-1))
    	   LC <= LC + 1'b1;
    	 else
    	   LC <= 0;
      end
    end
    
    
    
    // Color Image
     
    always @(posedge PixClock)
    begin
      if (VA)
      begin
    	 if  ((PC[7:0]==0) | (PC[7:0]==255) | (LC[7:0]==0) | (LC[7:0]==255))
    	 begin
    		R <= 7;
    		G <= 7;
    		B <= 7;
    	 end
    	 else begin
    	   if (LC[7:6]==0)
    		begin
    		  R <= ~PC[9:7];
    		  G <= 0;
    		  B <= 0;
    		end
    	   if (LC[7:6]==1)
    		begin
    		  R <= 0;
    		  G <= PC[8:6];
    		  B <= 0;
    		end
    	   if (LC[7:6]==2)
    		begin
    		  R <= 0;
    		  G <= 0;
    		  B <= ~PC[7:5];
    		end
    	   if (LC[7:6]==3)
    		begin
    		  R <= PC[6:4];
    		  G <= PC[6:4];
    		  B <= PC[6:4];
    		end
    	 end
      end
      else begin
    	 R <= 0;
    	 G <= 0;
    	 B <= 0;
      end		
    end
    
    endmodule
    Результат здесь.
    Последний раз редактировалось LeoN65816; 12.07.2018 в 09:44.
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

Страница 49 из 67 ПерваяПервая ... 454647484950515253 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Эмулятор ZX-Poly
    от Raydac в разделе Эмуляторы
    Ответов: 106
    Последнее: 24.01.2024, 11:52
  2. ОРИОН-2010 на ПЛИС.
    от Ewgeny7 в разделе Орион
    Ответов: 447
    Последнее: 23.11.2016, 12:27
  3. Еще один Ленинград 48
    от Ewgeny7 в разделе Ленинград
    Ответов: 0
    Последнее: 16.10.2007, 22:31
  4. Ещё один Д.Р.
    от GNTB в разделе Поздравления
    Ответов: 4
    Последнее: 19.07.2006, 01:52
  5. Ещё один подраздел
    от CityAceE в разделе Форум
    Ответов: 2
    Последнее: 22.05.2005, 11:57

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •