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

Всем привет! Друзья,подскажите новичку ,пожалуйста, у меня на входе два операнда, как их описать ,чтобы их разрядность была параметризуема? verilog

Изменено пользователем TurkinDV

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


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

Для задания разрядности входных портов модуля можно поступить следующим образом:

module my_module(in1, in2, out);
parameter PAR_IN1 = 8;    // Описываем параметры и задаем значения по умолчанию
parameter PAR_IN2 = 8;
input [PAR_IN1-1:0] in1;    // Описываем входные порты и указываем их разрядность
input [PAR_IN2-1:0] in2;
...
endmodule

Теперь при создании инстанса этого модуля можно переопределить заданные по умолчанию значения (переопределяемые параметры и их значения указываются в скобках после символа #):

my_module #(.PAR_IN1(4), .PAR_IN2(12)) inst0(.in1(in1), .in2(in2), .out(out));

Изменено пользователем pav2051

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


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

Для задания разрядности входных портов модуля можно поступить следующим образом:

module my_module(in1, in2, out);
parameter PAR_IN1 = 8;    // Описываем параметры и задаем значения по умолчанию
parameter PAR_IN2 = 8;
input [PAR_IN1-1:0] in1;    // Описываем входные порты и указываем их разрядность
input [PAR_IN2-1:0] in2;
...
endmodule

Теперь при создании инстанса этого модуля можно переопределить заданные по умолчанию значения (переопределяемые параметры и их значения указываются в скобках после символа #):

my_module #(.PAR_IN1(4), .PAR_IN2(12)) inst0(.in1(in1), .in2(in2), .out(out));

спасибо большое,помог ,слушай у меня это АЛУ ,нужно написать тестовые программы ,можешь обьяснить как это делать??

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


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

Ну для начала нужно определиться что нужно подавать на входы блока АЛУ для того, чтобы проверить полностью функциональность модуля и какой ожидаем результат на выходе. Я бы выписал по пунктам операции, которые нужно проверить и для каждой подумать какие возможны случаи исхода этой операции. Например, первым делом хотим протестировать операцию сложения 2 чисел со знаком, нужно проверить случаи когда оба операнда положительные, когда тот или другой отрицательны и когда оба операнда отрицательны + нужно смоделировать ситуацию с переполнением и убедиться что флаг переполнения устанавливается, и так для каждой операции. Собственно эти шаги и реализовываете на verilog, подаете на вход известные воздействия и сравниваете выходной отклик с ожидаемым. Необходимо создать так называемый тестбенч - модуль для тестирования того или иного функционального блока, там делаете инстанс модуля АЛУ и задаете на него воздействия. Как-то так:

`timescale 1ns/100ps      // Задаем величину временного шага и его точность
module tb_alu;
reg [7:0] in1;                 // Объявляем необходимые сигналы
reg [7:0] in2;
reg [1:0] op;
wire [7:0] out;
wire ovl;                  
reg clk;
initial begin         // Блок initial исполняется единожды
    // sum
    clk = 0;
    in1 = 8'h0A;   // Задаем операнды на входе
    in2 = 8'hF9;
    op = 2'b00;    // Задаем код операции 
#10                   // Ждемс необходимое время, когда на выходе должны появиться данные (пусть будет 10 нс)
    if ((out == 8'h03) && (ovl == 1'b1)) begin     // Сравниваем выходные сигналы с ожидаемыми значениями
        $display("Test ok");                                 // И выводим на экран результат выполнения тестов
    end
    else begin
        $display("Test fail");
    end

    ...                        // Тестируем дальше что нужно
        $finish;                                    
end

always
    #0.5 clk = ~clk;      // Генерируем тактовый сигнал с периодом 1 нс

alu i0(.clk(clk), .in1(in1), .in2(in2), .op(op), .ovl(ovl), .out(out));
endmodule

 

Ну и стандарт верилога в помощь + море книг в инете по верилогу, удачи )

Изменено пользователем pav2051

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


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

спасибо большое,помог ,слушай у меня это АЛУ ,нужно написать тестовые программы ,можешь обьяснить как это делать??

Для начала, у нас тут "тыкать" не принято...

А что, со скайпом у Вас проблемы?

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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