Симуляция запуска Modelsim из Quartus не работает должным образом

Это испытательный стенд

`timescale 1 ps/ 1 ps

module sum_fix_vlg_tst();

reg select;
reg [7:-8] valor_a;
reg [7:-8] valor_b;


// wires                                               
wire [8:-8]  result_fx;

sum_fix i1 (

.result_fx(result_fx),
.select(select),
.valor_a(valor_a),
.valor_b(valor_b)
 );

initial                                                
$monitor ("valor_a = %b, valor_b = %b, result_fx = %b", valor_a, 
valor_b,result_fx);

initial
begin                                                  
#10
select = 1;
valor_a = 32'b0000000011111111;
valor_b = 32'b0000000011111111;

#20

valor_a = 32'b1111111111111111;
valor_b = 32'b1111111111111111;

#30

valor_a = 32'b1001100111001000;
valor_b = 32'b0001111000111101;

end                                                    

endmodule

А это уут

`timescale 1 ps/ 1 ps
module sum_fix (valor_a,valor_b,result_fx,select);

input [7:-8] valor_a,valor_b;
output reg [8:-8] result_fx;
input select;


always@ (valor_a or valor_b)
begin 
if (select==1)
result_fx = valor_a + valor_b;
else    
result_fx = valor_a - valor_b;
end

endmodule

Собрано в Quartus хорошо. Затем я запускаю Modelsim следующим образом: Инструменты> RTL-симуляция. Он запускает Modelsim, но он только дает мне много zzzzzzzzzzzzz на входе и xxxxxxxxxxxxxx на выходе без каких-либо волн.

Я хочу сказать, что я не уверен, правильно ли я добавил этот тестовый стенд в проект. Я начинающий. Я сделал следующее: " Назначения"> "Настройки"> "Тест компиляции": нажмите "Тестовые стенды"> "Новый", найдите файл и добавьте, и все в порядке. Я не уверен, что это правильный путь, потому что он выглядит слишком сложным. Пожалуйста, помогите в этом.

Кроме того, я комментирую, что я запускаю шаблон записи тестового стенда в quartus, но я прекратил изменять все из файла, окончательный результат - код выше.

1 ответ

Решение

Итак, я попробовал ваш код на EDAPlayrgound ( http://www.edaplayground.com/x/Cyc), и он выглядит хорошо для меня. (Если хочешь, попробуй сам)

Ты видишь XЭто потому, что в момент времени 0 вы не указали значения ни для одного из ваших входов (так как вы задерживаете 10 временных шагов перед назначением чего-либо). Рассмотрим либо удаление первого #10или поставив несколько заданий перед ним.

(X = Неизвестное значение; Z = Высокий импеданс, что означает ни вход 1, ни 0).

Что касается настройки в Quartus, то, как вы это сделали, было правильно.

Другие вопросы по тегам