与寄存器组相关的VHDL模拟错误

与寄存器组相关的VHDL模拟错误,vhdl,Vhdl,我想制作一个4个寄存器的寄存器组,每个寄存器有2位,具有读/写功能。。。。。。。。。。。。 我使用了混合型建筑。。。。。。。。。。。。。。。。 在这里,我上传我的硬件图像,根据架构和模拟波形 Deco-2*4解码器 PIPO-具有读写能力的并行输入并行输出2位寄存器(正边缘触发) ConnectedBus-输出端的硬件,用于在断言读取时在输出端口转移选定寄存器的输出 但我的问题是,在读取2-3个时钟脉冲后,我没有得到写入寄存器的相同值……但是我的程序编译成功,并且我做了与以下硬件描述相同的

我想制作一个4个寄存器的寄存器组,每个寄存器有2位,具有读/写功能。。。。。。。。。。。。 我使用了混合型建筑。。。。。。。。。。。。。。。。 在这里,我上传我的硬件图像,根据架构和模拟波形

Deco-2*4解码器
PIPO-具有读写能力的并行输入并行输出2位寄存器(正边缘触发)
ConnectedBus-输出端的硬件,用于在断言读取时在输出端口转移选定寄存器的输出

但我的问题是,在读取2-3个时钟脉冲后,我没有得到写入寄存器的相同值……但是我的程序编译成功,并且我做了与以下硬件描述相同的事情…………可能是什么错误

PIPO代码:

lup1:
对于0到N-1中的a,生成

在我看来,你的信号没有一个与你的时钟同步。这很可能会导致“奇怪的行为”,因为信号相互漂移。这样代码的行为是不可预测的。您应该选择同步设计并生成与同一时钟相关的所有信号。

这里opmat是4*2矩阵,具有子类型定义,因此pipoout(a)将输出寄存器a的2位。……我在写入寄存器时使用了时钟,因为DFF是一个正边缘触发器,因此,在PIPO内部使用写入时钟…………但在读取时钟时不使用,因为在PIPO内部,在读取输出时,我已将时钟设置为=0,因此在输出时不会反映任何输入,之前写入的数据将存储在那里…………因此,我只需要在写入过程中使用时钟,否则在deocder中我也不需要它……这就是为什么在硬件时钟中没有显示,但在架构中它是,因为它在PIPO中……所以操作系统很好,或者我错过了一些东西或硬件错误,因为我无法找到它。很抱歉,但我不理解。。。你能上传你的PIPO代码吗?>lup1:>对于0到N-1中的a生成>c(a)Tix:TriState端口映射(ip(a)、bid、i(a));>Dlx:DLat端口映射(i(a)、c(a)、o(a));>Tox:三州港口地图(o(a)、(非投标)、op(a));>末端生成lup1;ip和op侧我使用了三态缓冲区,ip缓冲区有控制位bid(双向),op缓冲区有控制位(非bid),所以在同一时间只有一个缓冲区将打开,并且在DFF中我使用(bid和clk)作为DFF的时钟。请以适当的格式将代码写入原始问题。立即发表评论:不要把(出价和时钟)之类的东西用作时钟!这些都会导致门控时钟,这不是好的做法!相反,您可以使用“bid”作为触发器的启用信号。