С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Да нет, оно тупо заменяет таб на три пробела. Ну, тогда я, видимо, не совсем понимаю, чего именно мы добиваемся. Мне казалось, что проблема у нас в том, что текст, отлично смотрящийся в редакторе квартуса, в просмотрщике гитхаба превращается в мусор, из-за разного размера табуляций. Вот, например, кусок кода с гитхаба:
Если его пропустить через sed по приведенному выше правилу, то на том же гитхабе он становится таким:Код:case (interrupt_state) // нет активного прерывания i_idle : begin // Если поднят флаг - переходим в состояние активного прерывания if ((ide == 1'b1) & (interrupt_trigger == 1'b1)) begin interrupt_state <= i_req ; irq <= 1'b1 ; // запрос на прерывание end else irq <= 1'b0 ; // снимаем запрос на прерывания end // Формирование запроса на прерывание i_req : if (ide == 1'b0) interrupt_state <= i_idle ; else if (iack == 1'b1) begin // если получено подтверждение прерывания от процессора irq <= 1'b0 ; // снимаем запрос interrupt_trigger <= 1'b0; interrupt_state <= i_wait ; // переходим к ожиданию окончания обработки end // Ожидание окончания обработки прерывания i_wait : if (iack == 1'b0) interrupt_state <= i_idle ; endcase
Вроде все отлично, все отступы встали на свои места, ничего не разрушено.Код:case (interrupt_state) // нет активного прерывания i_idle : begin // Если поднят флаг - переходим в состояние активного прерывания if ((ide == 1'b1) & (interrupt_trigger == 1'b1)) begin interrupt_state <= i_req ; irq <= 1'b1 ; // запрос на прерывание end else irq <= 1'b0 ; // снимаем запрос на прерывания end // Формирование запроса на прерывание i_req : if (ide == 1'b0) interrupt_state <= i_idle ; else if (iack == 1'b1) begin // если получено подтверждение прерывания от процессора irq <= 1'b0 ; // снимаем запрос interrupt_trigger <= 1'b0; interrupt_state <= i_wait ; // переходим к ожиданию окончания обработки end // Ожидание окончания обработки прерывания i_wait : if (iack == 1'b0) interrupt_state <= i_idle ; endcase
Да, для этого верилога отлично. Просто моя утилита писалась изначально для ассемблера, она умеет в локальные метки и еще всякое. Вот в ассемблере где табуляции бывают после имен меток, мнемоник и операндов разной длины умная табуляция нужна. Для верилога нужна чтобы выравнивать строчные комментарии после кода:
Код:module am2901 ( input cp, // clock positive input [8:0] i, // operation code input [3:0] a, // port A address (readonly) input [3:0] b, // port B address (read/write) input [3:0] d, // direct data input output [3:0] y, // data output (3-state) // input oe_n, // Y output enable inout q0, // shift line Q-register LSB inout q3, // shift line Q-register MSB inout ram0, // shift line register stack LSB inout ram3, // shift line register stack MSB input cin, // carry input // output cout, // carry output output ovr, // arithmetic overflow output f3, // MSB of ALU output output zf, // (F[3:0] == 0) flag output (OC) output g_n, // carry generate output output p_n // carry propagate output );
Финальный этап закончен - теперь в проекте вместо текстового терминала VT52 есть родные контроллеры КГД и КСМ.
Контроллеры выводят на VGA картинку в режиме 800*600*75 Гц. В режиме удвоения пикселей графическая картинка вписывается в экран по горизонтали пиксель-в-пиксель, по вертикали остается небольшое черное поле сверху. Вот пример графической картинки:
Скрытый текст
[свернуть]
Теперь, как и в оригинале, возможен вывод накладывающихся друг на друга текстовых и графических слоев:
Скрытый текст
[свернуть]
Как и раньше, для КСМ я использовал шрифт 8х12, как более четко выглядящий на современных мониторах. Для сравнение в дереве проекта лежит также и оригинальных шрифт КСМ, который можно загрузить в ПЗУ знакогенератора и посмотреть, как текст выглядел 30 лет назад:
Скрытый текст
[свернуть]
Кроме КГД+КСМ, я внес в проект еще несколько важных дополнений.
В корне проекта появился файл конфигурации conifg.v. С его помощью можно легко убирать из схемы ненужные модули:
Достаточно закомментировать строку - и соответствующий модуль будет заменен набором заглушек, подтягивающих некоторые выходные сигналы модуля к нужному уровню. Больше не надо для этого ковыряться в потрохах схемы. Ведущий и ведомый модули sdspi теперь объединены в один, и больше не нужно заботится о назначении ведущего контроллера - все будет сделано автоматически.Код:`define KSM_module // текстовый контроллер КСМ `define KGD_module // графический контроллер КГД `define IRPS2_module // второй последовательный порт ИРПС `define IRPR_module // параллельный порт ИРПР `define RK_module // диск RK-11/RK05 `define DW_module // жесткий диск DW `define DX_module // гибкий диск RX01 `define MY_module // гибкий диск двойной плотности MY
В схему добавлена возможность снижения тактовой частоты до 4.5 Мгц, спасибо VSLAV, предусмотревшего такую возможность в своем процессоре. Режим пониженной тактовой частоты включается переключателем sw[3]. Без этого режима поиграть в игрушки не получится. Некоторый набор игрушек я собрал на диск MY0, входящий в стартовый комплект initdisk.img.
Документация серьезно переработана, по модулям КГД и КСМ написана отдельная дока. Ну и выявлена и исправлена кучка мелких, но досадных багов, как обычно.
Вот, вроде бы, и все. Теперь ЭВМ ДВК-3 полностью закончена и готова к эксплуатации. Больше тут доделывать вроде как и нечего.
На всякий случай напоминаю, что проект лежит в репозитории https://github.com/forth32/mc1201-02.
Последний раз редактировалось IgorR76; 31.01.2021 в 18:46.
forth32, проделанную вами работу трудно переоценить!
Предлагаю (на усмотрение модераторов) закрепить эту тему как важную в разделе.
forth32, можно уточнение от вас организационное? Я помню, что вы делали проект для своих конкретных целей и задач, но, если пользователь вроде меня (не программист и не электронщик) захотел бы дома для личного пользования иметь такую ДВК-3, что это в деньгах и как это внешне? Неужели снова голая плата с макарошками на столе, тебе надо ты и прошивай, иди лесом дядя Ваня? Или есть вариант или планируется вариант хоть как-то оформленный в плане корпуса и полностью готовый к эксплуатации? Вопрос прошу не считать "наездом" или "реальным запросом" - просто нужно чётко и этот момент осветить. Ведь далеко не все могут самостоятельно поднять такую железячину? Для тех кто не может, но хотел бы иметь "без проблемную" ДВК-3 как хобби, дома - нужен вариант plug&play из коробки, как с этим?
программатор
Плюс ещё скачивать софт для программирования. В общем -
- - - Добавлено - - -
Поскольку проект выглядит теперь законченным, попробую его перенести на DE10. Вроде как за вечер должно получиться. Осталось только вечер свободный найти...
А что там не так с конденсаторами?
Я QMTECH в глаза не видел никогда, но на китайских ALINX и A-ESTF конденсаторов по питанию вполне хватает. Особых пульсаций ни по 3.3v, ни по 1.2v осциллограф не видит. Я в свое время всю плату щупом истыкал, пока разобрался, почему не работает запись на SD-карту...
hobot, Собственно, с минимальными усилиями по портированию подойдет любая плата на cyclone 4, начиная с EP4CE15. Но лучше, конечно, брать FPGA с запасом, чтобы потом, будем надеяться, и ДВК-4 туда затолкать. Ну и для развлечений с SignalTap запас не помешает - он же очень прожорливый на внутреннюю память.
На aliexpress есть разные платы, и совсем голые, и с набором разъемов. Минимально нужно, чтобы на плате обязательно стояла микросхема SDRAM - ее снаружи не повесишь. Остальное можно прикрутить без всякой пайки. Особенно если делать корпус, то все равно разъемы, кнопки, переключатели, светодиоды надо будет выносить на переднюю/заднюю панель.
А что касается корпуса - то тут возможностей море, от плоской консервной банки до 3D-принтера![]()
Последний раз редактировалось forth32; 01.02.2021 в 10:33.
Предупреждение : нарушение правил п. 5.4, оффтоп.
Последний раз редактировалось IgorR76; 01.02.2021 в 11:30.
Круть![]()
Наиболее близко выглядит китайская плата QMTECH Cyclone IV Starter Kit
https://www.aliexpress.com/item/33007471265.html
но к ней надо докупать или доделывать PS/2 адаптер и SD-card reader в формате Digilent PMOD:
https://store.digilentinc.com/pmod-p...use-connector/
https://store.digilentinc.com/pmod-m...osd-card-slot/
или купить б/у борду Terasic DE0, что малость дороже. Но ничего соединять не надо
https://www.terasic.com.tw/cgi-bin/p...o=364&PartNo=1
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)