TurkinDV 0 30 сентября, 2015 Опубликовано 30 сентября, 2015 (изменено) · Жалоба Всем привет! Друзья,подскажите новичку ,пожалуйста, у меня на входе два операнда, как их описать ,чтобы их разрядность была параметризуема? verilog Изменено 30 сентября, 2015 пользователем TurkinDV Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pav2051 0 1 октября, 2015 Опубликовано 1 октября, 2015 (изменено) · Жалоба Для задания разрядности входных портов модуля можно поступить следующим образом: 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)); Изменено 1 октября, 2015 пользователем pav2051 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TurkinDV 0 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба Для задания разрядности входных портов модуля можно поступить следующим образом: 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 0 1 октября, 2015 Опубликовано 1 октября, 2015 (изменено) · Жалоба Ну для начала нужно определиться что нужно подавать на входы блока АЛУ для того, чтобы проверить полностью функциональность модуля и какой ожидаем результат на выходе. Я бы выписал по пунктам операции, которые нужно проверить и для каждой подумать какие возможны случаи исхода этой операции. Например, первым делом хотим протестировать операцию сложения 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 Ну и стандарт верилога в помощь + море книг в инете по верилогу, удачи ) Изменено 1 октября, 2015 пользователем pav2051 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба спасибо большое,помог ,слушай у меня это АЛУ ,нужно написать тестовые программы ,можешь обьяснить как это делать?? Для начала, у нас тут "тыкать" не принято... А что, со скайпом у Вас проблемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться