Vhdl 我';我在这个模拟中失踪了?
我正在尝试为键盘驱动程序编写一个VHDL代码,我需要从11位向量中读取8位,为了保持清楚,这里是读取输入信号的过程(有信号CLK和数据) 结果是: (可点击)Vhdl 我';我在这个模拟中失踪了?,vhdl,modelsim,Vhdl,Modelsim,我正在尝试为键盘驱动程序编写一个VHDL代码,我需要从11位向量中读取8位,为了保持清楚,这里是读取输入信号的过程(有信号CLK和数据) 结果是: (可点击) 问题是我一直在读0xE1,而不是0xF0,其他一切都正常工作,我不明白为什么我缺少这个位。将0xF0的周期模式读为0xE1看起来像一个1位移位,这可能是由测试台生成时钟(键盘CLK)和数据引起的(键盘数据)同时 在硬件设计中,输出数据是时钟的结果,因此在时钟上升沿和新数据之间至少有一个增量周期延迟,但当前测试台设计同时生成时钟和数据,具有
问题是我一直在读
0xE1
,而不是0xF0
,其他一切都正常工作,我不明白为什么我缺少这个位。将0xF0的周期模式读为0xE1看起来像一个1位移位,这可能是由测试台生成时钟(键盘CLK
)和数据引起的(键盘数据
)同时
在硬件设计中,输出数据是时钟的结果,因此在时钟上升沿和新数据之间至少有一个增量周期延迟,但当前测试台设计同时生成时钟和数据,具有:
KEYBOARD_CLK <= '1';
KEYBOARD_DATA <= '0';
KEYBOARD\u CLK将0xF0的周期模式读取为0xE1看起来像是1位移位,这可能是由测试台同时生成时钟(KEYBOARD\u CLK
)和数据(KEYBOARD\u data
)引起的
在硬件设计中,输出数据是时钟的结果,因此在时钟上升沿和新数据之间至少有一个增量周期延迟,但当前测试台设计同时生成时钟和数据,具有:
KEYBOARD_CLK <= '1';
KEYBOARD_DATA <= '0';
KEYBOARD\u CLK感谢您的帮助!这是编写测试台的明智而高效的方式!再次感谢!感谢您的帮助!这是编写测试台的明智而高效的方式!再次感谢!
KEYBOARD_CLK <= '1';
KEYBOARD_DATA <= '0';
CLK_PROCESS : process
BEGIN
KEYBOARD_CLK <= '1';
wait for (KEYBOARD_CLK_PERIOD/2);
KEYBOARD_CLK <= '1';
wait for (KEYBOARD_CLK_PERIOD/2);
end process;
DATA_PROCESS : process
BEGIN
KEYBOARD_DATA <= '0';
for i in 1 to 5 loop -- Number of cycles with same data
wait until rising_edge(KEYBOARD_CLK);
end loop;
...
KEYBOARD_DATA <= '1';
for i in 1 to 5 loop -- Number of cycles with same data
wait until rising_edge(KEYBOARD_CLK);
end loop;
...
end process;