我有一个输入信号(Data),它是std_logic_vector(511 downto 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(15 downto 0)的0到15。
问题:我希望将这些数组信号ch1_vector_block和ch2_vector_block初始化为ch1_sample_block和ch2_sample_block中包含的数据。问题在于,因为它们是在流程中分配的(在clk或数据发生变化之前不会被“唤醒”),所以它们被初始化为“U”(未初始化)。我没有初始化ch1_vector_block / ch2_vector_blocks的原因是因为我不想初始化32个向量。这是整个过程的重点
我在时间t = 0时为数据(输入信号)赋值,并且因为ch1_sample_block和ch2_sample_block是同时分配的数据,所以在t = 0时它们的值被初始化为我想要的值。
但是,如果时间t = 0,即使数据值发生变化,进程也不会唤醒并为向量块赋值?我该如何实现这个呢?我试图避免这样做:
ch1_vector_block(0)< = ch1_sample_block(15 downto 0) 。 。 。 ch1_vector_block(15)< = ch1_sample_block(255 downto 240)
谢谢!