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

User Tag List

Страница 1 из 20 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 202

Тема: SQRUM 1M

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Master
    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    593
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию SQRUM 1M

    Делаю клон на CPLD EPM7128SLC84-15 (MAX 7000S)
    Решил, короче, запихнуть свой кворум, в том виде как он у меня сейчас в CPLD.

    Получается смесь Кворум БК-04 и PROFI 1024

    Память 1Мб на 2 чипах NN514405 или аналогичных мелких чипах с симов 4/8 мб, где 8-16 чипов.

    Первые попавшиеся аналоги MB814400C TMS44400DJ M514400DL KM44C1000J HM514400CS6 V53C404HK60

    Процессор, память, ПЗУ и большая часть портов ввода-вывода будут внешние, менеджер памяти и видеоконтроллер будут внутри.

    Порты расширения
    -------- Память ------------
    1) #7FFD
    D0 = bank 0 ;128 kB memory
    D1 = bank 1 ;128 kB memory
    D2 = bank 2 ;128 kB memory
    D3 = select screen 0/1
    D4 = ROM A14 (128/48)
    D5 = disable paging
    2) #1FFD
    D1 = ROM A15 (когда установлен, то ROM A14 выбирает Сервис ROM / TR-DOS)
    3) #DFFD
    D0 = bank 3 ;256 kB memory
    D1 = bank 4 ;512 kB memory
    D2 = bank 5 ;1024 kB memory
    D4 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF, also enable port #7FFD if disabled

    Структура ПЗУ 0 - 128, 1 - 48, 2 - Service (например Real Commander), 3 - TR-DOS
    Сервисная страница выбирается пропатченным 128 Basic, можно взять здесь http://www.avray.ru/ru/zx-spectrum-256k-upgrade/
    Возможно еще буду что-то делать с ПЗУ, а то 4 банка маловато конечно же )
    ------------------------------
    4) #FE запись
    D0 = BORDER B
    D1 = BORDER R
    D2 = BORDER G
    D3 = TAPE OUT
    D4 = BEEPER

    Собрал пока что такую макетку

    Вид снизу :-D


    ГЛАВНЫЕ ОТЛИЧИЯ от Кворум-БК-04
    1) экран как у пентагона, т.е. 320 строк решил сделать 312 как у оригинала
    2) видеоконтроллер выбирается по DC1(hcnt[1])=0
    3) смена адресов идет не по S0, а по DC0(hcnt[0])

    Прошивка уже работает и выдает меню 128 бейсика с TR-DOS (сигнал DOS реализован внутри CPLD)


    Еще примеры картинок


    Вложения Вложения
    Последний раз редактировалось EvgenRU; 19.08.2017 в 17:00.

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

  3. #2
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    рекомендую в будущем всё же отказаться от схемного ввода.

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

    По умолчанию

    shurik-ua, это почему же?

  5. #4
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    shurik-ua, это почему же?
    всё равно к нему (HDL) рано или поздно придёшь, так что лучше сразу )

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

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    всё равно к нему (HDL) рано или поздно придёшь, так что лучше сразу )
    Ага, и отпугнуть новичка, да? Придет он, когда созреет и будет готов. А пока пусть схемками балуется.

  7. #6
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    можно чисто ради интереса - на этом конкретном примере написать код в ХДЛ и посмотреть что лучше скомпилируется - схема или ХДЛ )

  8. #7
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Ага, и отпугнуть новичка, да?

    178 каналов ШИМ.

    Скрытый текст


    module PWM_10_Ch
    (
    input wire inclk, //Вход тактовой частоты (16MHz)
    input wire nSSIN, //Выбор чипа, по положительному перепаду запись по адресу в старших 8 битах SPI
    input wire SCKin, //Вход такта SPI
    input wire MOSIin, //Вход данных от МК
    output wire MISOout, //Выход данных на МК
    output wire [num_PWM-1:0] PWM //Выход 10 каналов ШИМ 50Гц
    );
    parameter SPI_Width = 16; //Ширина шины SPI, бит
    parameter CNT_Width = 8; //Ширина счётчиков PWM, бит
    parameter num_PWM = 178; //Количество каналов PWM
    parameter fCLK = 16000000; //Тактовая частота, Гц
    parameter fPWM = 50; //Частота ШИМ, Гц
    parameter fDiv = fCLK/fPWM/2**CNT_Width; //Коэффициент деления, вычисляемое
    parameter psc = $clog2(fDiv); //Ширина сччётчика прескалера, вычисляемое
    //**************************************************
    wire [SPI_Width - CNT_Width - 1:0] SPI_Addr; //Шина адреса модулей CCP
    wire [CNT_Width - 1:0] SPI_Data; //Шина данных модулей CCP
    wire [CNT_Width - 1:0] Cur_Cnt; //Текущее значение счётчика PWM
    wire [SPI_Width - 1:0] dataOUT;
    assign SPI_Addr = dataOUT[SPI_Width -1: CNT_Width];
    assign SPI_Data = dataOUT[CNT_Width - 1:0];
    //**************************************************
    // Предделитель на 1250
    //**************************************************
    reg [psc-1:0] f_cnt = 0; //Счетчик предделителя
    reg pulse = 0; //Такт предделителя
    always @ (posedge inclk) begin
    f_cnt <= f_cnt + 1;
    if (f_cnt == fDiv + 1) begin
    f_cnt <= 0;
    pulse <= 1;
    end else pulse <= 0;
    end
    //**************************************************
    // Дешифратор адреса CCP
    //**************************************************
    reg [CNT_Width - 1:0] CCP_Addr [num_PWM-1:0];

    always @ (posedge nSSIN) begin
    CCP_Addr[SPI_Addr] <= SPI_Data;
    end
    //**************************************************
    // Подключение модулей
    //**************************************************
    SPIslave #(SPI_Width) SPI_1(.SCK(SCKin), .MOSI(MOSIin), .MISO(MISOout), .data(dataOUT));
    Counter #(CNT_Width) CNT_1(.clock(pulse), .Cnt(Cur_Cnt));
    // Создание модулей CCP
    genvar y;
    generate
    for(y = 0; y < num_PWM; y = y + 1 ) begin : CCP_generation
    CCP #(CNT_Width) CCP_0(.clock(pulse), .CurCNT(Cur_Cnt), .CompareVal(CCP_Addr[y]), .PWM_out(PWM[y]));
    end
    endgenerate
    //**************************************************
    endmodule
    //**************************************************
    [свернуть]



    Страшно?

  9. #8
    Moderator
    Регистрация
    25.11.2007
    Адрес
    Симферополь
    Сообщений
    2,164
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    shurik-ua, это почему же?
    Vhdl в отличие от схемного ввода - позволяет портировать код практически на любой кристал. А схемный ввод ограничен средой разработки и семейством CPLD. Чистое ИМХО.
    Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
    Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
    ZX Evo 4Mb- в строю.
    Speccy2010 v1
    Специалист (пока готовлюсь к восстановлению).
    Это все мое!
    Родное!
    Все люблю на свете я! Это родина моя!

  10. #9
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от balu_dark Посмотреть сообщение
    схемный ввод ограничен средой разработки и семейством CPLD.
    Если юзать встроенные в среду макро/мегафункции и встроенные в кристалл модули, то HDL "прилипает" к среде и семейству ничуть не меньше.
    Хотя согласен, текст будет гибче.

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

    По умолчанию

    Цитата Сообщение от balu_dark Посмотреть сообщение
    Vhdl в отличие от схемного ввода - позволяет портировать код практически на любой кристал. А схемный ввод ограничен средой разработки и семейством CPLD. Чистое ИМХО.
    Дану? А я, дурак, под циклон V делал схемным и оно работало, а ведь не должно было, да?

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

    Цитата Сообщение от omercury Посмотреть сообщение
    Хотя согласен, текст будет гибче.
    Текст удобнее для редактирования. И копипасты. А так же, когда мозги встанут на синхронные рельсы. А вот в схеме, новичок может рулить тем же триггером по всем сигналам от разных событий искаропки. Попробуйте это сделать в тексте, когда надо чтобы один и тот же регистр управлялся из разных always блоков.

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

    Цитата Сообщение от omercury Посмотреть сообщение
    По поводу блочного построения схемы. Модули делайте отдельными файлами, потом на общей блок-схеме их соберёте. В HDL после этого их тоже проще переводить.
    И это самый дельный совет. Если рисовать блоками, то даже редактирование будет не в тягость.

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

    Можно просто на зоны поделить, как это я делал во время проектирования МХ2:

    Скрытый текст

    [свернуть]


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

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

    Скрытый текст

    [свернуть]


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

    Цитата Сообщение от EvgenRU Посмотреть сообщение
    Как-то так пока что получается

    Скрытый текст

    [свернуть]
    Ой, ма... А зачем на выходе 8ми тактовая задержка всех сигналов изображения? А бордюр у тебя будет рисоваться по всему экрану: он у тебя по ИЛИ с обычным выходом, но ты его не гасишь во время экрана. И еще, приведи схему к стандарту, когда слева входы а справа выходы, мы же не арабы какие наоборот считывать. И это только то, что я увидел за секунду просмотра.

Страница 1 из 20 12345 ... ПоследняяПоследняя

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

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

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

Ваши права

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