|
本帖最后由 渭水清风1 于 2014-12-2 15:14 编辑
在用VHDL写模块处理SPI时,由于需要响应双边沿,因此模块时钟采用了高速时钟(比如16MHz),SPI_SCLK(600kHz)当一般信号处理,靠clk触发来判断spi_sclk的边沿。
类似这样:
process(n_reset,clk)
begin
if n_reset = '1' then
if rising_edge(clk) then
previous_spi_sclk <= spi_sclk;
if previous_spi_sclk = '0' and spi_sclk= '1' then
-- DO SOMETHING
end if;
end if;
else
-- RESET REGISTERS
end if;
end process;
不过发现在使用中,会发生SPI_SCLK边沿偶尔丢失的问题,导致移位错位,把波形输出观察,发现previous_spi_sclk 信号并没有什么问题。不知道是否有人遇到过? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|