2017-08-07 59 views
-1

我们正在编写一个迷你处理器,它根据写入其内存的指令解析信息。迷你处理器的FSM卡在分支等循环中

我们的测试台中的第一条指令(内存中的地址0)是,而作为分支写入的循环等于:if (delimeter == 0) jump 0

为了区分等待分界线的情况和分支相等(或分支不等于)的一般情况,我们添加了一个特定的waiting_for_delimeter信号,但取指指令需要一个时钟周期,并且由于管线插入了NOP (没有操作指令),在下一个时钟中,waiting_for_delimeter不能为1,因为它“看到”一个NOP而不是分支相等指令。

有人可以帮助我们解决这个问题吗?

谢谢!

Simulation Waves

+0

你在说哪种语言?你能提供更多的代码吗? – Serge

+0

我用Verilog – efalk

+0

写[请在这里看到相关代码] [1] [1]:https://i.stack.imgur.com/cRDUn.png – efalk

回答

0

如果信号waiting_for_delimiter看到分支我没有从你的问题理解,被设置为1,然后重置为零,因为NOP的,或者它从来没有得到台,因为它从来没有看到科。

对于第一种情况:

如果要“记住”的信号waiting_for_delimiter应为1,下个周期,只是使用FF品尝它:

reg waiting_for_delimiter_r1; 

always @(posedge clk or posedge rst) 
    if (rst) 
     waiting_for_delimiter_r1 <= 1'b0; 
    else 
     waiting_for_delimiter_r1 <= waiting_for_delimiter; 

这样,在下一个周期中,您将在waiting_for_delimiter_r1中显示正确的指示。

对于第二种情况:

按照相同的方法,并且采样指令或该分支被采用所述指示。在waiting_for_delimiter逻辑中使用此采样。