Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Как синхронизировать ПЗУ и модуль управления?

Ср окт 03, 2018 08:58:08

Здравствуйте. Как синхронизировать адрес команды в модуле управления и команду, которая берётся из ПЗУ, чтобы избежать ситуации, когда после безусловного перехода выполняется команда из 8,9 адреса, а также избежать ситуации, когда команда выполняется за два такта?
Код на Verilog модуля управления:
Код:
module control(c,k,cf,zf,jmp,ak);
input c,cf,zf;
input [15:0]k;
output jmp;
output [7:0]ak;
reg [7:0]ak;
assign jmp = (k[15]&k[14]&k[13]&k[12])&((~k[10]&~k[9]&~k[8])|(~k[10]&~k[9]&k[8]&zf)|(~k[10]&k[9]&~k[8]&cf));
always @(posedge c)
if (jmp)
ak=k[7:0];
else
ak=ak+1;
endmodule
Вложения
Снимок2.JPG
Схема процессора (чтение с ПЗУ по фронту)
(195.6 KiB) Скачиваний: 234
Второй вариант.JPG
Временные диаграммы работы процессора
(93.39 KiB) Скачиваний: 222
Снимок.JPG
Прошивка ПЗУ
(25.37 KiB) Скачиваний: 232

Re: Как синхронизировать ПЗУ и модуль управления?

Ср окт 03, 2018 14:33:56

Не уверен, что правильно понял вопрос - в приложения не вникал. Но кажется дело сводится ко времени чтения.
по фронту клока выставляется адрес, а сами данные из памяти можно забирать по следующему клоку (а может и еще через несколько)
Подхода 2:
1 - разбить цикл на несколько фаз (выставление адреса, обработка данных, защелкивание результата где надо)
2 - устроить конвейер. Но этот путь тернист! :))

P.S. я исходил из того, что Вы городите свое процессорное ядро или что то подобное.

Re: Как синхронизировать ПЗУ и модуль управления?

Ср окт 03, 2018 17:35:50

За один такт должна выполняться команда.

Re: Как синхронизировать ПЗУ и модуль управления?

Чт окт 04, 2018 08:16:12

Если так разбить на фазы не катит (такое может быть исключительно при максимизации быстродействия)
тогда конвейер - пока команда выполняется следующая тянется.
Но тут надо приготовится к сюрпризам, связанных с переходами.
Тут или сжать зубы и пожертвовать тактом. либо лепить асинхронный механизм, работающий на предельной частоте памяти, который обеспечивает буфер команд на перед, учитывая возможные ветвления.
в любом случае при условном переходе "заранее" придется сделать 2 операции чтения, что не даст выигрыша быстродействия.
Так же хочется отметить, что подход нужно выбирать из соотношения быстродействий памяти\контроллера

Re: Как синхронизировать ПЗУ и модуль управления?

Ср окт 10, 2018 09:13:37

Спасибо, но я решил выше описанную проблему двухфазной синхронизацией.
Ответить