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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: DRAM контроллер для 4164

  1. #1
    Junior
    Регистрация
    13.08.2021
    Адрес
    г. Краснодар
    Сообщений
    10
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию DRAM контроллер для 4164

    Здрасьте друзья.
    После столетнего перерыва вернулся к железякам поколдовать.
    Захотелось чего-то большего и более современного, а ПИО более чем на 6 мегаГ не нашел, да и кучу регистров и логики нету сил паять, то закрутил я все это вокруг СПЛД Макс2.
    Забегая вперед, все равно пришлось кучу проводов паять для трасиверов 3.3<->5В.

    Запихнул в сплд логику и маленькое ПЗУ для кода (мапнул на 0-127 адреса).

    И тут дай, думаю, ради интереса я СРАМ на ДРАМ поменяю. Нашел 41464. Так, что получилось вот такая схемка.



    Ну слепил все как смог.



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

    Код:
    P_OUT .equ 3h
    
    	.org 0h
    	
    	ld sp, 0fff0h
    	
    	; save initial counter value in RAM
    	ld hl, 3000h
    	ld (hl), 1h
    
    main:	
    	ld hl, 3000h
    	ld a, (hl)
    	out (P_OUT), a
    	inc a
    	ld (hl), a
    
    	ld de, 3FFFh	        ;Loads DE with 16383 ;MAX - 7FFFh 
    dly:
    	dec de                  ;Decrements DE
    	ld a, d                 ;Copies D into A
    	or e                    ;Bitwise OR of E with A (now, A = D | E)
    	jp nz, dly            	;Jumps back to Inner: label if A is not zero
    		
    	jp main
          
    	.END

    Натужился, занизил 20 мегаГ до 6, что бы пока с ~WAIT не путаться и написал конроллер памяти. Вот FSM.



    , протестил и..... не работает.
    Причем в тестах все круто выглядит и по таймингам и по форме.



    Тыкаюсь осцилом в RAS (красный) CAS (желтый) и чей-то вижу не то что-то. Похоже, вроде, но на инициализации (8 циклов CAS before RAS) RAS какой-то странный, а в M1 CAS кривится.
    Подумал может горелые выходы, поменял рас и кас местами - картина тоже поменялась, значит сплд в норме. Может осцилограф кривой?



    Вот уже месяц с перерывами голову ломаю - не выходит каменный цветок. Не фурычит.

    Подумал, может вообще все плохо, ан нет. Заменил для переменной память на регистр и все работает, считает.
    Значится дело в контроллере.

    Очень нужна помощь. На Вас, светлые головы нашего форума надеюсь и уповаю, ибо уже свои все мысли от напряги скисли. Если до ума доведу - сделаем это опенсорсным и подарим zx-pk и миру.

    Вот тут сорсы для icarusa:
    z80_dram.7z
    Последний раз редактировалось fromzero2infinity; 25.08.2023 в 18:46.

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

  3. #2
    Master Аватар для Rio444
    Регистрация
    23.11.2015
    Адрес
    г. Ростов-на-Дону
    Сообщений
    550
    Спасибо Благодарностей отдано 
    175
    Спасибо Благодарностей получено 
    158
    Поблагодарили
    110 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А что это у Вас на диаграмме сначала CAS опускается, потом RAS? Должно быть наоборот.
    И пауза между ними на вид очень маленькая. За это время должен успеть смениться и защелкнуться Addr.
    DRAM реально 100нс?
    464 чаще всего медленнее.

  4. #3
    Activist
    Регистрация
    17.03.2009
    Адрес
    Moscow
    Сообщений
    465
    Спасибо Благодарностей отдано 
    20
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    начнем, пожалуй, с емкостей по питанию (схему, похоже, сглючивает при максимальном потреблении dram).
    Последний раз редактировалось UncleDim; 25.08.2023 в 22:05.
    Profi v3.2 512K+color; Profi 6.2B; МС-0511

  5. #4
    Activist
    Регистрация
    17.03.2009
    Адрес
    Moscow
    Сообщений
    465
    Спасибо Благодарностей отдано 
    20
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Rio444 Посмотреть сообщение
    И пауза между ними на вид очень маленькая
    к логике отдельные вопросы, да. но сначала симулятор с осциллографом надо к одной картинке привести)

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

    Цитата Сообщение от fromzero2infinity Посмотреть сообщение
    Код:
    Вот FSM
    это читаемо. осциллограмма тоже сойдет. а вот остальное - давайте как-нибудь отдельным архивом/сторонним хостингом, не разглядеть ничего толком..
    Profi v3.2 512K+color; Profi 6.2B; МС-0511

  6. #5
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,424
    Спасибо Благодарностей отдано 
    326
    Спасибо Благодарностей получено 
    605
    Поблагодарили
    450 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Rio444 Посмотреть сообщение
    А что это у Вас на диаграмме сначала CAS опускается, потом RAS? Должно быть наоборот.
    Нет. Вы диаграму FSM посмотрите: он 8 циклов CAS_before_RAS формирует для ввода матрицу в эксплуатацию после подачи питания. Это лишнее, но ему так захотелось, оно не будет мешать.

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

    Цитата Сообщение от Rio444 Посмотреть сообщение
    DRAM реально 100нс?
    464 чаще всего медленнее.
    Обычно в букваре на главной дают tCAS, который 120нс/100нс/80нс/60нс. Но основной тайминг для простой DRAM это tRAS и он обычно от 1,5 tCAS до 2.2 tCAS. Например вот:

    И расшифровка таймингов:

  7. #6
    Activist
    Регистрация
    17.03.2009
    Адрес
    Moscow
    Сообщений
    465
    Спасибо Благодарностей отдано 
    20
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    HardWareMan, тут претензии к tRCD и к переключению адресов
    Profi v3.2 512K+color; Profi 6.2B; МС-0511

  8. #7
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,424
    Спасибо Благодарностей отдано 
    326
    Спасибо Благодарностей получено 
    605
    Поблагодарили
    450 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от UncleDim Посмотреть сообщение
    HardWareMan, тут претензии к tRCD и к переключению адресов
    Если смотреть его симуляцию, то там вообще ничего не выдерживается.

    В наших компьютерах одновременная смена адреса на RAS у наших компьютеров опирается на инерцию КПшек и ёмкость шины, которой тут нет от слова совсем. И то часто ставился конденсатор для затягивания фронта. Переключать же адрес на CAS это, конечно, пять. Единственный ЛК, который пытался в правильный тайминг, это 86РК, который использовал регистр сдвига. И даже у него были проблемы (но там связано конкретно с ИР1, они решались заменой на ИР9, вроде).

  9. #8
    Junior
    Регистрация
    13.08.2021
    Адрес
    г. Краснодар
    Сообщений
    10
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    <q> начнем, пожалуй, с емкостей по питанию (схему, похоже, сглючивает при максимальном потреблении dram).</q>
    Поставил в питание рядом с памятью 0.1 uF.

    Да. Но это инит. Если посмотреть в датаШИТ стр. 5, то
    An initial 100 u (~RAS inactive) is REQUIRED after power-up,
    followed by any 8 ~RAS cycles.

    Как только взлечу, попробую это байду убрать. А вдруг и взаправду необязательно. Сразу половина мульплексоров освободится.

    Да. уменя 100 ns uPD41464C-10. Row access Time (max) 100 ns

    Все тайминги держатся строго по спецификации и даже чутка поболее. А може я чего не догоняю.
    Ну вот, например для M1 у меня tRAS = 240 ns (зависит от mreq), t RP = 120 при требуемом 90, t RC = 360 при 200 по специи.

    Единственно пока, что не бьется это, как вы справедливо ткнули меня носом - t RCD.

    В свое оправдание скажу только, то что по спецификации
    t ASR = 0
    t RAH = 10
    t ASC = 0
    t CAH = 15

    tRCD min = 20

    Что и привело к ложному пути.
    Сейчас посмотрел еще раз и вижу - t AR = t RAH + t ASC + t CAH,
    что дает 65 = 10 + 0 + 15, что явно неверно. Получается на переключения адресов надо еще 35 ns, которых нету у меня



    Да, добавлю еще, что сигналы от процессора в симуляции брались из таблички на последних страницах, например везде пишется, что проц выставляет адрес по негативному фронту Т1.
    Но если посмотреть в AC characteristics column Z8400 и на Fure 5. Instruction Opcode Fetch, то там видим 6, TdCr(A), что и дает мой первый адресс 90 ns после позитивного фронта T1 и так далее





    UPD.
    Быстро получилось исправить. Сейчас такой вот t RCD
    Еще смущает Row addr вместе с RAS, но в шите говориться, что t ASR = 0.
    Да t ASC тоже = 0. Чего-то запутался. Получается можно вместе с CAS и RAS адресы выставлять..... хз



    Нашел еще косяк. Не в контроллере.
    assign rom_en_n = (!mreq_n) ? (cpu_address_bus[15:13] == 3'b000) ? 1'b0 : 1'b1
    : 1'b1;
    //assign dram_en_n = !rom_en_n; !!! НЕ ПРАВИЛЬНО
    assign dram_en_n = (!mreq_n) ? (cpu_address_bus[15:13] == 3'b000) ? 1'b1 : 1'b0
    : 1'b1;

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


    Все равно пока не взлетает.
    Последний раз редактировалось fromzero2infinity; 26.08.2023 в 21:43.

  10. #9
    Activist
    Регистрация
    17.03.2009
    Адрес
    Moscow
    Сообщений
    465
    Спасибо Благодарностей отдано 
    20
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fromzero2infinity Посмотреть сообщение
    followed by any 8 ~RAS cycles.
    ANY. Означает, что /cas дергать не обязательно. это может быть обычный цикл чтения, или записи, или цикл регенерации "ras only"
    короче - заработает и без инита рано или поздно
    Цитата Сообщение от fromzero2infinity Посмотреть сообщение
    осцилогамма выглядит нормально
    в ините - не выглядит. с чего ras такой короткий?
    Цитата Сообщение от fromzero2infinity Посмотреть сообщение
    В свое оправдание скажу только, то что по спецификации
    t ASR = 0
    t RAH = 10
    0, а не "ну может чуть больше нуля", ставьте адрес строки заранее хотя бы за такт (а проще его всегда там держать, когда цикл неактивен)

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

    Цитата Сообщение от fromzero2infinity Посмотреть сообщение
    Но если посмотреть в AC characteristics column Z8400 и на Fure 5.
    это потом. в первую очередь на реальный проц осциллом надо смотреть, чтоб не блуждать

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

    Цитата Сообщение от fromzero2infinity Посмотреть сообщение
    Поставил в питание рядом с памятью 0.1 uF.
    ставьте еще. рядом с каждым корпусом, который питается хотя бы через +одно от источника разъемное соединение
    Последний раз редактировалось UncleDim; 27.08.2023 в 00:00.
    Profi v3.2 512K+color; Profi 6.2B; МС-0511

  11. #10
    Junior
    Регистрация
    13.08.2021
    Адрес
    г. Краснодар
    Сообщений
    10
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Продолжение на след. странице форума...
    Последний раз редактировалось fromzero2infinity; 03.09.2023 в 20:25.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Тестер 4164 и 41256 на arduino
    от kolobokru в разделе Оборудование
    Ответов: 5
    Последнее: 18.02.2022, 23:22
  2. DRAM SDRAM DDR2/3/4/5
    от bigral в разделе Для начинающих
    Ответов: 17
    Последнее: 25.09.2020, 20:33
  3. Быстрые 41256/4164
    от LeoN65816 в разделе Память
    Ответов: 5
    Последнее: 15.03.2019, 11:52
  4. SRAM vs DRAM
    от Eugene Palenock (500:95/468.1) в разделе Память
    Ответов: 7
    Последнее: 03.10.2009, 18:26
  5. DRAM vs SRAM объясните разницу
    от DimkaM в разделе Для начинающих
    Ответов: 12
    Последнее: 03.05.2009, 12:18

Ваши права

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