сегмент BCD в декодер 7 в verilog

Я пишу код для имитации декодера из двоичного кода в семисегментный. Когда я это делаю, я получаю красные и синие линии в окне сигнала (в Modelsim), что означает, что вход не управляется, а выход находится в неопределенном состоянии. Но когда я запускаю код, заставляя значения, он показывает правильные результаты. Из этого я могу понять, что проблема в моем тестовом стенде. Я был бы признателен, если бы кто-нибудь мог взглянуть на мой код и указать, что я делаю неправильно. КОД

//BCD to seven segment display
module seven_segment;
reg [3:0] BCD;
wire [6:0] display;
parameter stop_time = 200;


bcd_seven n(display,BCD);       //Instantiation of the bcd to seven segment      display code

initial #stop_time $finish;

initial
begin
BCD = 0;
#10 BCD = 1;
#10 BCD = 2;
#10 BCD = 3;
#10 BCD = 4;
#10 BCD = 5;
#10 BCD = 6;
#10 BCD = 7;
#10 BCD = 8;
#10 BCD = 9;
end
initial begin
$monitor("display = %d BCD = %b",display,BCD);
end
endmodule 

//Decsription of the BCD to seven segment display
module bcd_seven(D,BCD);
output  D; 
reg [6:0] D;
input [3:0] BCD;

parameter BLANK = 7'b0000000;
parameter ZERO = 7'b1111110;
parameter ONE = 7'b0110000;
parameter TWO = 7'b1101101;
parameter THREE = 7'b1111001;
parameter FOUR = 7'b0110011;
parameter FIVE = 7'b1011011;
parameter SIX = 7'b1011111;
parameter SEVEN = 7'b1110000;
parameter EIGHT = 7'b1111111;
parameter NINE = 7'b1111011;

//I have doubt especially in this section
always @(BCD)
case(BCD)
0: D = ZERO;
1: D = ONE;
2: D = TWO;
3: D = THREE;
4: D = FOUR;
5: D = FIVE;
6: D = SIX;
7: D = SEVEN;
8: D = EIGHT;
default: D = BLANK;
endcase
endmodule

person Abhishek Tyagi    schedule 03.02.2015    source источник
comment
Я пытался запустить ваш код. Вход управляется, и выход не является неопределенным. Кажется, все в порядке. Какое поведение вы ожидаете?   -  person e19293001    schedule 03.02.2015
comment
в каком симуляторе ты запускал?   -  person Abhishek Tyagi    schedule 03.02.2015
comment
я за исключением того, что тестовый стенд работает правильно, и, следовательно, когда я запускаю код, я должен получить желаемые формы волны   -  person Abhishek Tyagi    schedule 03.02.2015
comment
запуск вашего кода в icarus verilog должен работать.   -  person e19293001    schedule 03.02.2015
comment
Можете ли вы сказать мне, что я должен искать, прежде чем узнать, будет ли конкретный код работать в симуляторе, я имею в виду, можем ли мы узнать, будет ли работать определенный стиль написания кода с этим симулятором, а не с этим?   -  person Abhishek Tyagi    schedule 03.02.2015
comment
Работает в ModelSim 10.1d, Riviera-PRO EDU 2014.10 на EDA Playground icarus vrilog (0.9.6, 0.9. 7 и 0.10.0) вызывали у меня проблемы, но их легко решить, заменив output D; reg [6:0] D; на output reg [6:0] D;.   -  person Greg    schedule 10.02.2015
comment
Итак, вы получили правильные формы волны, просто запустив код, а не форсируя значения?   -  person Abhishek Tyagi    schedule 11.02.2015


Ответы (1)


Я заметил одну ошибку в вашем коде. Вам не хватает оператора case для BCD = 9. Но это не объясняет другие проблемы, которые вы видите.

person Barry Moss    schedule 04.02.2015