[an error occurred while processing this directive]
Ничего не получится, тут влоб задачу не возмеш
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено GoodMan 12 августа 2005 г. 13:13
В ответ на: обработка по спаду и срезу в Verilog отправлено <font color=gray>первокласник</font> 29 июля 2005 г. 18:58

Если в списке событий фронт, тоесть:

always@(posedge Clk)

а в теле проверяэтся уровень сигнала, тоесть:

if(Clk)...,

то компилятор генерирует комбинаторику,- это основной способ сделать ассинхронный reset.

Таким образом, если Вам нужна сихронная логика, то в теле олвейса, не должно быть проверки уровней сигналов из списка событий.

Для решения Вашей задачи нужно разнести по разный олвейсах передний и задний фронт, вот пример определения старта и стопа на I2C:
module IO_I2C(SDA,scl,incycle,in_first,in_second,in_third,out_first,out_second,out_third);

inout SDA;
input scl;
output incycle;

input[7:0]in_first;
input[7:0]in_second;
input[7:0]in_third;

output[7:0]out_first;
output[7:0]out_second;
output[7:0]out_third;

reg start;
reg stop;

//старт стоп
always@(negedge SDA)
begin
if(scl == 1) start = 1;
else start = 0;
end

always@(posedge SDA)
begin
if(scl == 1) stop = 1;
else stop = 0;
end


//формирование окна цикла обмена

assign incycle = start? 1'b1 : (stop? 1'b0 : incycle);
...

incycle = 1 - после старта и 0 после стопа

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru