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

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
Аватара пользователя
Mark194
Родился
Сообщения: 3
Зарегистрирован: Ср окт 03, 2018 08:45:29
Откуда: Рязань

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

Сообщение Mark194 »

Здравствуйте. Как синхронизировать адрес команды в модуле управления и команду, которая берётся из ПЗУ, чтобы избежать ситуации, когда после безусловного перехода выполняется команда из 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 КБ) 520 скачиваний
Второй вариант.JPG
Временные диаграммы работы процессора
(93.39 КБ) 510 скачиваний
Снимок.JPG
Прошивка ПЗУ
(25.37 КБ) 515 скачиваний
Реклама
FPGAlover
Прорезались зубы
Сообщения: 210
Зарегистрирован: Пн окт 21, 2013 07:33:45

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

Сообщение FPGAlover »

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

P.S. я исходил из того, что Вы городите свое процессорное ядро или что то подобное.
Шоб я польку танцевал..
Реклама
Аватара пользователя
Mark194
Родился
Сообщения: 3
Зарегистрирован: Ср окт 03, 2018 08:45:29
Откуда: Рязань

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

Сообщение Mark194 »

За один такт должна выполняться команда.
FPGAlover
Прорезались зубы
Сообщения: 210
Зарегистрирован: Пн окт 21, 2013 07:33:45

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

Сообщение FPGAlover »

Если так разбить на фазы не катит (такое может быть исключительно при максимизации быстродействия)
тогда конвейер - пока команда выполняется следующая тянется.
Но тут надо приготовится к сюрпризам, связанных с переходами.
Тут или сжать зубы и пожертвовать тактом. либо лепить асинхронный механизм, работающий на предельной частоте памяти, который обеспечивает буфер команд на перед, учитывая возможные ветвления.
в любом случае при условном переходе "заранее" придется сделать 2 операции чтения, что не даст выигрыша быстродействия.
Так же хочется отметить, что подход нужно выбирать из соотношения быстродействий памяти\контроллера
Шоб я польку танцевал..
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Mark194
Родился
Сообщения: 3
Зарегистрирован: Ср окт 03, 2018 08:45:29
Откуда: Рязань

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

Сообщение Mark194 »

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

Вернуться в «ПЛИС»