Перейти к содержанию
    

Оптимизация кода на Verilog

Всем привет. Есть данный код для симуляции работы дешифратора (само описание дешифратора и тестбенч). 

сам дешифратор:

module Test(x0, x1, x2, x3, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9,
															F10, F11, F12, F13, F14, F15);
input x0, x1, x2, x3;

output F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15;

assign F0=!x0&&!x1&&!x2&&!x3;

assign F1=!x0&&!x1&&!x2&&x3;

assign F2=!x0&&!x1&&x2&&!x3;

assign F3=!x0&&!x1&&x2&&x3;

assign F4=!x0&&x1&&!x2&&!x3;

assign F5=!x0&&x1&&!x2&&x3;

assign F6=!x0&&x1&&x2&&!x3;

assign F7=!x0&&x1&&x2&&x3;

assign F8=x0&&!x1&&!x2&&!x3;

assign F9=x0&&!x1&&!x2&&x3;

assign F10=x0&&!x1&&x2&&!x3;

assign F11=x0&&!x1&&x2&&x3;

assign F12=x0&&x1&&!x2&&!x3;

assign F13=x0&&x1&&!x2&&x3;

assign F14=x0&&x1&&x2&&!x3;

assign F15=x0&&x1&&x2&&x3;

endmodule

testbench:

`timescale 1 ns / 1 ns
module testbench;
localparam t = 20;
reg x0, x1, x2, x3;
reg F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15;

initial
begin
x0 <= 0;
x1 <= 0;
x2 <= 0;
x3 <= 0;
#20
x0 <= 0;
x1 <= 0;
x2 <= 0;
x3 <= 1;
#20
x0 <= 0;
x1 <= 0;
x2 <= 1;
x3 <= 0;
#20
x0 <= 0;
x1 <= 0;
x2 <= 1;
x3 <= 1;
#20
x0 <= 0;
x1 <= 1;
x2 <= 0;
x3 <= 0;
#20
x0 <= 0;
x1 <= 1;
x2 <= 0;
x3 <= 1;
#20
x0 <= 0;
x1 <= 1;
x2 <= 1;
x3 <= 0;
#20
x0 <= 0;
x1 <= 1;
x2 <= 1;
x3 <= 1;
#20
x0 <= 1;
x1 <= 0;
x2 <= 0;
x3 <= 0;
#20
x0 <= 1;
x1 <= 0;
x2 <= 0;
x3 <= 1;
#20
x0 <= 1;
x1 <= 0;
x2 <= 1;
x3 <= 0;
#20
x0 <= 1;
x1 <= 0;
x2 <= 1;
x3 <= 1;
#20
x0 <= 1;
x1 <= 1;
x2 <= 0;
x3 <= 0;
#20
x0 <= 1;
x1 <= 1;
x2 <= 0;
x3 <= 1;
#20
x0 <= 1;
x1 <= 1;
x2 <= 1;
x3 <= 0;
#20
x0 <= 1;
x1 <= 1;
x2 <= 1;
x3 <= 1;
end

Test dut
(
.x0(x0),
.x1(x1),
.x2(x2),
.x3(x3),
.F0(F0),
.F1(F1),
.F2(F2),
.F3(F3),
.F4(F4),
.F5(F5),
.F6(F6),
.F7(F7),
.F8(F8),
.F9(F9),
.F10(F10),
.F11(F11),
.F12(F12),
.F13(F13),
.F14(F14),
.F15(F15)
);

initial
begin
#300;
$finish();
end
endmodule

Необходимо оптимизировать код. Как это можно сделать? Подскажите, пожалуйста

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

4 hours ago, evmal06 said:

...

testbench:

...

Необходимо оптимизировать код. Как это можно сделать? Подскажите, пожалуйста

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

Например так -

...
input x0, x1, x2, x3;
output F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15;
...

wire [ 3:0] x_in;
wire [15:0] y_ou;

assign x_in = {x3, x2, x1, x0};

assign y_ou = 1<<(~x_in);  

assign {F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15} = y_ou;

А заодно и подучите битовые операции с векторами. А то препод заподозрит неладное если не сможете объяснить  всю эту белиберду :acute:

Если  еще и циклы выучите то сможете существенно упростить ваш testbench.  :yes3:

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое за помощь! 

12 часов назад, RobFPGA сказал:

Приветствую!

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

А можете, пожалуйста, какой-нибудь учебник посоветовать. Был бы очень рад!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, evmal06 said:

Спасибо большое за помощь! 

А можете, пожалуйста, какой-нибудь учебник посоветовать. Был бы очень рад!

 

https://marsohod.org/11-blog/60-books

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...