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

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

Отправлено cx 18 июля 2006 г. 15:50

Всегда описывал мультиплексор так:

wire [7:0] dout = (sel == 3'd0)? din_0 :
(sel == 3'd1)? din_1 :
(sel == 3'd2)? din_2 :
(sel == 3'd3)? din_3 :
(sel == 3'd4)? din_4 : 8'b0;

пока не столкнулся с тем, что он слимитировал быстродействие.
Переписал так:

reg [7:0] dout;
always @(*) begin
case(sel)
3'd0 : dout = din_0;
3'd1 : dout = din_1;
3'd2 : dout = din_2;
3'd3 : dout = din_3;
3'd4 : dout = din_4;

default : dout = 8'd0;
endcase
end

Стало быстрее. Никто не разбирался, почему так? Синтезатор не может не видеть что условия в скобках в первом случае взаимоисключающие.
(Quartus, Cyclone 2).

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

Ответы


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

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

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

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

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


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание