0

我有一个输入信号 (Data),它是 std_logic_vector (511 down to 0)。我将前 256 位分配给信号 ch1_sample_block,将后 256 位分配给信号 ch2_sample_block。我在我的架构主体中使用并发分配,因此无论 Data 在启动时具有什么值,这两个子信号也具有该值。在此之后我创建了一个进程vector_assignment,它将每个子信号中的所有数据(在16位std_logic_vector块中)分配给两个数组ch1_vector_block和ch2_vector_block,它们分别是std_logic_vector的0到15(15下降到0)。

问题:我希望将这些数组信号 ch1_vector_block 和 ch2_vector_block 初始化为 ch1_sample_block 和 ch2_sample_block 中包含的数据。问题在于,因为它们是在进程中分配的(在 clk 或 Data 发生变化之前不会“唤醒”),它们被初始化为“U”(未初始化)。我没有初始化 ch1_vector_block/ch2_vector_blocks 的原因是我不想初始化 32 个向量。这就是整个过程的重点

我在时间 t = 0 为 Data(输入信号)分配了一个值,并且因为 ch1_sample_block 和 ch2_sample_block 被同时分配了 Data,所以它们在 t = 0 时的值按照我想要的方式进行初始化。

但是为什么在时间 t = 0 时,即使 Data 的值发生了变化,进程也没有唤醒并为向量块赋值呢?我需要如何实现呢?我试图避免这样做:

ch1_vector_block(0) <= ch1_sample_block(15 downto 0) 。. . ch1_vector_block(15) <= ch1_sample_block(255 到 240)

谢谢!

Modelsim 仿真

更新

更新的源代码

4

0 回答 0