[an error occurred while processing this directive]
С пятничным приветом! (+)
(«Телесистемы»: Конференция 'Программируемые логические схемы и их применение')

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

Отправлено druzhin 27 августа 2004 г. 16:16
В ответ на: В чем же? отправлено Пятничный хрен 27 августа 2004 г. 14:18

Пример1: две одинаковые защелки с выходами out1 и out2.

module latch ( in, s, out1, out2 );

input in, s ;
output reg out1 ;
output wire out2 ;

always @(in or s) if (s) out1 <= in ;
assign out2 = (s) ? in : out2 ;

endmodule

Пример2: два одинаковых мультиплексора с выходами out1 и out2.

module mux ( in1, in2, s, out1, out2 );

input in1, in2, s ;
output reg out1 ;
output wire out2 ;

always @(s or in1 or in2) if (s) out1 <= in1 ; else out1 <= in2 ;
assign out2 = (s) ? in1 : in2 ;

endmodule

Триггеры (flip-flop) получаются только в конструкциях типа
always @(posedge ... ) или always @(negedge ... ).

Теперь по поводу = и <=. Это блокирующее и неблокирущее присваивание.
Если "<=", то всё нормально, получатся обычные flip-flopы.
Если "=", то результат ЗАВИСИТ ОТ ПОРЯДКА СЛЕДОВАНИЯ ПРИСВАИВАНИЙ!!!

Пример3: 3-х битный сдвиговый регистр с посл. входом in
и парал. выходом out.

module block_nonblock1 ( clk, in, out );

input in, clk ;
output reg [2:0] out ;

always @(posedge clk) begin out[2]=out[1]; out[1]=out[0]; out[0]=in; end

endmodule

А теперь ПРИМЕР4!!!: почти то же самое, но синтезируется ОДИН триггер
с входом in и выходами out (out[0], out[1], out[2] замкнуты между собой).

module block_nonblock2 ( clk, in, out );

input in, clk ;
output reg [2:0] out ;

always @(posedge clk) begin out[0]=in; out[1]=out[0]; out[2]=out[1]; end

endmodule

Если использовать "<=", то порядок следования присваиваний пофигу,
в обоих случаях будет 3-х битный сдвиговый регистр.
Поэтому в блоках always надо применять "<=" (nonblocking),
если не хочешь получить неожиданный результат.

ЗЫ: Всё проверено на ISE 6.1 SP3.

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

Ответы


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

Имя (обязательно): 
Пароль: 
E-mail: 

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

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

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


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

E-mail: info@telesys.ru