VHDL:如何快速跳过我不关心的寄存器?

时间:2017-07-05 20:24:15

标签: vhdl asic

我有N个M位宽的寄存器。所有寄存器都填充了值,但我只想对那些适合某种模式的寄存器进行采样,例如只查看MSB为1的寄存器。在时钟的每个上升沿,我想读取一个M位宽注册符合该模式。

例如: 有256个8位寄存器(reg0 - reg255)。 Reg0,Reg3和Reg255满足MSB = 1的模式。在第一个上升时钟沿,reg0被发送到输出,因为它匹配模式,第二个上升时钟沿Reg3被发送到输出,并且在第3个时钟边沿Reg255被发送到输出端。

我对HDL很绿,所以我很感激任何帮助。这是一个在时钟进程中使用for循环的应用程序是否有用?哦,我正在使用VHDL解决这个问题。

我不是在寻找一个完整的答案,也许只是我应该查找的一些关键词。

谢谢, Ĵ

1 个答案:

答案 0 :(得分:1)

有一种方法可以做到这一点。

每个寄存器应使用1个标志(二进制寄存器):

该标志指示是否在相关寄存器中检测到模式,将用于知道要发送的寄存器。当寄存器发送时,该标志将被复位。

开始时,强制所有寄存器标志为'0'(未检测到模式/无需发送寄存器)

您将数据加载到寄存器中。

进程检查是否检测到模式,在这种情况下将相关寄存器的标志设置为“1”

使用amor循环或BIG if else(不推荐)over flag。如果标志等于'1',则发送寄存器并重置。如果没有,请转到下一个。 最后一步可以在一个时钟周期内从寄存器传递到另一个寄存器,即使它们被一些其他寄存器(不需要发送)分开。

/!\小心,机制复杂并导致时序约束,设计时钟的性能会受到影响,你会使用更多的LUT。

祝你好运,祝你好运。