Verilog模拟:不同行为相同的条件

时间:2016-08-26 01:18:24

标签: verilog fpga modelsim

我在Alteras DE1板上设计了一个处理器,为此我决定使用JAVA BYTECODES作为指令集。

问题是当指令iadd cmes up我得到两种不同的行为时,堆栈区域是宽度为32且深度为64的altsyncram宏功能不输出数据。我检查了所有的总线和控制信号,它们的值似乎是正确的。

ModelSim SImulation

红线表示地址总线发生变化,导致数据出现变化但紫色线出现问题所在。数据应该改为' h00000004,但它是剂量。

因为你可以看到所有条件都是一样的。

与之相关的代码是:

    stack_write = 1'b0; // read stack_area 
    stack_bus_select = 1'b0; // stack_bus = stack_ptr
    stack_add_sub = 1'b0; // stack incrementer/decrementor = decrement
    stack_add_enable = ~stack_add_enable; // enable stack adder
    stack_ptr = stack_add_out; 
    wait(!clock);
    wait(clock);
    long_A = {{32{stack_data_out[31]}}, stack_data_out[31:0]}; 
    stack_add_sub = 1'b0;
    stack_add_enable = ~stack_add_enable;
    stack_ptr = stack_add_out;
    wait(!clock);
    wait(clock);
    long_B = {{32{stack_data_out[31]}}, stack_data_out[31:0]}; 
    ALU_operation = 3'b100;
    wait(!clock);
    wait(clock);
    stack_data_in_reg = result;
    stack_write = 1'b1; // write stack_area 
    stack_bus_select = 1'b0; // stack_bus = stack_ptr
    stack_add_sub = 1'b1;
    stack_add_enable = ~stack_add_enable;
    stack_ptr = stack_add_out;
    done = 1'b1;

PS:我一般都是verilog和FPGA的新手。所以欢迎任何和所有建议。

0 个答案:

没有答案