неправильное выходное значение в 8-битном алюминии

Я хочу написать восьмибитный ALU. Я написал этот код, но когда я его моделирую, вывод имеет значение x, почему это произошло? и у меня есть еще одна проблема, которую я не знаю, как я могу показать 8-битный параметр в моделировании Modelsim, когда у меня есть только два значения 0 или 1?

module eightBitAlu(clk, a, b,si,ci, opcode,outp);
input clk;
input [7:0] a, b;
input [2:0] opcode;
input si;
input ci;
output reg [7:0] outp;

always @(posedge clk)
begin

case (opcode)
3'b000: outp <= a - b;
3'b000 : outp <= a + b;
3'b001 : outp =0;
3'b010 : outp <= a & b;
3'b011 : outp <= a | b;
3'b100 : outp <= ~a;
endcase
end
endmodule

а это мой тестовый модуль

module test_8bitAlu();

reg clk=0,a=3,b=1,si=0,ci=0,opcode=1;

eightBitAlu alu(clk, a, b,si,ci, opcode,outp);

initial begin

#200 clk=1;
    #200 opcode=0;
    #200 opcode=2;
    #200 opcode=3;
    #200 opcode=4;
    #200;

    end

endmodule

person Community    schedule 23.05.2014    source источник


Ответы (1)


a и b имеют ширину всего 1 бит, оставляя верхние 7 битов ваших входных портов неиспользуемыми.

reg clk=0,a=3,b=1,si=0,ci=0,opcode=1;

эквивалентно :

reg clk    = 0;
reg a      = 3;
reg b      = 1;
reg si     = 0;
reg ci     = 0;
reg opcode = 1;

Что вам нужно:

reg        clk    = 0;
reg  [7:0] a      = 3;
reg  [7:0] b      = 1;
reg        si     = 0;
reg        ci     = 0;
reg  [2:0] opcode = 1;
wire [7:0] outp; 

Дальнейшие улучшения заключаются в том, чтобы включить ширину в целочисленное назначение, т.е.:

reg        clk    = 1'd0;
reg  [7:0] a      = 8'd3;

b для двоичного, d для десятичного, o для восьмеричного и h для шестнадцатеричного в width'formatValue

Примечание

outp, если он не определен, будет неявным 1-битным проводом.

Ваши часы в testharness также имеют только 1 положительное преимущество. Вы можете предпочесть определить свои часы как:

initial begin
  clk = 1'b0;
  forever begin
    #100 clk = ~clk;
  end
end

Полная версия вышеперечисленного представлена ​​на EDAplayground.

person Morgan    schedule 23.05.2014
comment
Вот это да. это верно. но все же у меня есть проблема, все биты outp имеют значение 1'hz, кроме outp[0]. почему это произошло? - person ; 23.05.2014
comment
Я добавил это, и у меня есть 8-битный вывод, но меняется только бит outp[0]. - person ; 23.05.2014
comment
У меня как раз те коды, которые я разместил в своем проекте. ничего больше. - person ; 23.05.2014
comment
Обновленный ответ, чтобы покрыть ваши часы testharness. - person Morgan; 23.05.2014