Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА:

Re: VGA 11 года 9 мес. назад #2962

Извеняюсь что так долго не отвечал. Много работы, купил дом :) Прочитал давно на планшете - но писать на нём я нелюблю..

Вобщем как я вижу - всё правильно. Так и нужно использовать ПЛИС. Ещё совет- нужно смотреть и считать где происходит задержка данных - если в обработчике - попробовать запаралелить обработчик. Под обработчиком я имел ввиду модуль "inst25" и "inst35". Всегда можно поменять разрядность данных с 8 на 32 средствами ПЛИС например, и понизить скорость обработки в 4 раза или усложнить алгоритм. Можно использовать конвеер модулей..

Ещё можно поработать над топ модулем в Verilog. Иногда помогает упростить схему и недопустить ошибок с синхронизацией. А так всё что работает правильно и не глючит - сделано правильно :)
Спасибо сказали: Alucard

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: VGA 11 года 9 мес. назад #2963

Ещё помогает выделить в отдельный модуль всю логику от ТОП модуля и почитать о синхронизации входных и выходных данных. Так как вы их защёлкиваетет в тригер тут может работать а с другим МК может и не сработать. Обычно входные синхронизаторы работают на вышей частоте чем остальная логика, иначе могут пропускать данные..

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: VGA 11 года 9 мес. назад #2968

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20

Извеняюсь что так долго не отвечал. Много работы, купил дом

Рад за вас. :)

Вобщем как я вижу - всё правильно. Так и нужно использовать ПЛИС. Ещё совет- нужно смотреть и считать где происходит задержка данных - если в обработчике - попробовать запаралелить обработчик. Под обработчиком я имел ввиду модуль "inst25" и "inst35". Всегда можно поменять разрядность данных с 8 на 32 средствами ПЛИС например, и понизить скорость обработки в 4 раза или усложнить алгоритм. Можно использовать конвеер модулей..

Спасибо за советы. Я, кстати, как раз хотел перейти к конвейеру.

Ещё помогает выделить в отдельный модуль всю логику от ТОП модуля и почитать о синхронизации входных и выходных данных. Так как вы их защёлкиваетет в тригер тут может работать а с другим МК может и не сработать. Обычно входные синхронизаторы работают на вышей частоте чем остальная логика, иначе могут пропускать данные..

Это учел. Синхронизаторы работают на частоте в два раза большей, чем все остальное. :)

Хочу еще попробовать передавать данные и адрес на внешнем интерфейсе по одним и тем же линиям. (адрес по фронту, а данные по спаду) Однако еще не проводил испытания.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: VGA 11 года 9 мес. назад #2969

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20

Хочу еще попробовать передавать данные и адрес на внешнем интерфейсе по одним и тем же линиям. (адрес по фронту, а данные по спаду) Однако еще не проводил испытания.

А нет, дурак. :) Таких триггеров нет, которые both edge, если только отдельными микросхемами делать.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: VGA 11 года 9 мес. назад #2970

Для синхронизатора ненадо дуальных тригеров.. Вполне нормально рабоает и связка из двух тригеров..
module synchronizer(
	 input wire clk,
    input wire in,
    output reg out
    );
	
	reg reg1;

	always @(posedge clk)
	begin
		reg1 <= in;
		out <= reg1;
	end
	
endmodule

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от wowa.

Re: VGA 11 года 9 мес. назад #2975

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20

wowa пишет: Для синхронизатора ненадо дуальных тригеров.. Вполне нормально рабоает и связка из двух тригеров..

module synchronizer(
	 input wire clk,
    input wire in,
    output reg out
    );
	
	reg reg1;

	always @(posedge clk)
	begin
		reg1 <= in;
		out <= reg1;
	end
	
endmodule

Идея понравилась. Работает. Я просимулировал с ARM в более жестких условиях:
module sinc (
    input wire clk,
	
	input wire [7:0] in,
	output reg [7:0] out
);

reg state;

always @(posedge clk)
begin	

	if (state)
		out <= in;
	else
		out <= 0;
		
	state <= !state;
end

endmodule
Данные считались искаженно, несмотря на то, что частота чтения в 4 раза ниже тактовой. Для объединения шин данных и адреса в одну шину придется городить много дискретной логики вокруг ARM. Жаль.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: VGA 11 года 9 мес. назад #2976

Непонятно зачем была эта конструкция? Чтобы через раз выдвавать или данные или 0? Или по идее это был 8 битный синхронизер? Тут нет начальной и вообще никакой инициализации.. Ну и должны быть ещё какие входные управляющие данные.. Так это бесмысленный модуль. Рулетка :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от wowa.

Re: VGA 11 года 9 мес. назад #2977

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20

wowa пишет: Непонятно зачем была эта конструкция? Чтобы через раз выдвавать или данные или 0? Или по идее это был 8 битный синхронизер? Тут нет начальной и вообще никакой инициализации.. Ну и должны быть ещё какие входные управляющие данные.. Так это бесмысленный модуль. Рулетка :)

Не совсем. Этим я эмулировал то, что когда передается адрес с МК, то передающая шина занята, и данных для МК пока нет (они появятся на второй такт), правда я его сделал без синхронизации по операциям. Впрочем, эта идея все равно плохая, я не знаю как сделать шину, по которой за нечетные такты передается адрес, а по четным тактам идут данные, причем как туда, так и обратно. Получается довольно большой и сложный адаптер для МК.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Alucard.

Re: VGA 11 года 9 мес. назад #2978

Боюсь что тут без арбитра или сигнала с МК неполучится. Можно следить например за адресом и при попадании в границы - производить запись. Но желательно иметь с МК сигнал Адрес/Данные.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

VGA 11 года 7 мес. назад #3237

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20
Название темы "VGA" - совершенно фальшивое. :)
Сделал такой шинный арбитр (обсуждали в ветке про "Отключение ПЛИС от шины"):
  • * Система с двумя master-ами, разделенными специальным двунаправленным MUX/DEer-ом. Замечательная вещь !
  • * Возможны такие соединения: МК=Внешние_устройства, ПЛИС=Внешние_устройства, МК=ПЛИС.
  • * Два слота для "внешних_устройств"
  • * Логика арбитра: ПЛИС имеет приоритет, т.е. может занять шину в любой момент; МК получает сигнал ожидания при попытке записи/чтения.

  • Логика сейчас совсем примитивна, я планирую подключить арбитр в общую шину и дать возможность назначать приоритеты. Кстати, собрана она на микросхемах стандартной логики.

    Весь этот ужас вместе:

    Записал короткое видео, где демонстрируется переключение шины.
    Вложения:

    Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

    Последнее редактирование: от Alucard.
    Время создания страницы: 2.143 секунд
    Работает на Kunena форум