314556154 发表于 2013-5-8 21:03:06

请问一下Avalon外设时序的问题

本帖最后由 314556154 于 2013-5-8 21:04 编辑

大家好
请问大家一个问题:
我自定义了一个Avalon外设,读一个寄存器的代码如下,请问一下我在设置Avalon read时序的时候,Read Wait要设为几个clk?
read_data <= state,read_data要到clk的下个上升沿才能生效,所以Read Wait至少是1个clk,我想问的是1个clk行吗?1个clk后的上升沿read_data生效和Avalon读取read_data是同时的,会不稳定吗?

write的hold应该设置为1个clk吧,因为state <= write_data也是要到下个clk的上升沿才能生效期间要保证write_data不会改变吧?

谢谢大家帮忙!

state_reg_wr_strobe <= (chip_select AND NOT write_n) AND to_std_logic((((std_logic_vector'("0000000000000000") & (address)) = std_logic_vector'("0000000000000000"))));
state_reg_rd_strobe <= (chip_select AND NOT read_n) AND to_std_logic((((std_logic_vector'("0000000000000000") & (address)) = std_logic_vector'("0000000000000000"))));
process (clk)
begin
    if clk'event and clk = '1' then
      if std_logic'(state_reg_wr_strobe) = '1' then
                        state <= write_data;
        elsif std_logic'(state_reg_rd_strobe) = '1' then
                        read_data <= state;
      end if;
   end if;
end process;

314556154 发表于 2013-5-8 21:28:47

我又想了一下,只要state_reg_wr_strobe在read_n、chipselect生效的那个上升沿变为'1',Read Wait和Hold都设为0也是可以的,是这样吗?

314556154 发表于 2013-5-8 21:41:30


在网上又看了一个时序图,看样在read_n、chipselect生效的那个上升沿state_reg_wr_strobe还无法变为1,所以Read Wait还是需要1clk,是这样吗?

蓝色风暴@FPGA 发表于 2013-5-8 21:53:19

不知道楼主是什么问题,建议查看altera官方手册时序图
页: [1]
查看完整版本: 请问一下Avalon外设时序的问题