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

Отправлено yes 07 сентября 2001 г. 14:34
В ответ на: предлагаю проверить интелектуальность используемых средств синтеза отправлено yes 07 сентября 2001 г. 14:20

интересно проверить переносимость "стиля кодирования" для различных средств синтеза...

результаты Ambita меня порадовали - если интересно напишу

-------------------

и еще две модели ...

типа неоптимально

module cntr1(clk, incAdr, decAdr, up, down, out, outAdr);
parameter lgw=4, lgn=3, num=1<input [lgn:0] incAdr, decAdr, outAdr;
input clk,up,down;
output [width-1:0] out;

reg [width-1:0] cntr[0:num-1];

assign out=cntr[outAdr];

wire inhibit= up&down&(incAdr==decAdr);

wire inc=up&~inhibit;
wire dec=down&~inhibit;

always @(posedge clk)
begin
if (inc)
cntr[incAdr] <= cntr[incAdr]+1;
if (dec)
cntr[decAdr] <= cntr[decAdr]-1;
end

endmodule


-------------------

и оптимально

module cntr2(clk, incAdr, decAdr, up, down, out, outAdr);
parameter lgw=4, lgn=3, num=1<input [lgn:0] incAdr, decAdr, outAdr;
input clk,up,down;
output [width-1:0] out;

reg [width-1:0] cntr[0:num-1];

integer i;

wire [num-1:0] inc=up<wire [num-1:0] dec=down<wire [width-1:0] add=cntr[incAdr]+1;
wire [width-1:0] sub=cntr[decAdr]-1;

assign out=cntr[outAdr];

always @(posedge clk)
begin
for(i=0;i cntr[i]= inc[i]^dec[i] ? (inc[i] ? add : sub):cntr[i];
end
endmodule


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru