我有一个输入信号(Data),它是std_logic_vector(511 downto 0) . 我将前256位分配给信号ch1_sample_block,将第二256位分配给信号ch2_sample_block . 我在我的架构体中使用并发赋值,这样无论Data在启动时有什么 Value ,这两个子信号也都有这个值 . 之后我创建了一个进程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)

谢谢!

Modelsim simulation

Updated

Updated Source Code