英飞凌
直播中

而无返还

8年用户 1158经验值
擅长:光电显示
私信 关注

关于FX3同步Slave FIFO非突发传输的疑问求解

在FX3同步Slave FIFO的非突发传输中,FPGA在将SLRD拉低后,等两个时钟周期,然后采样数据总线,采样数据总线前要判断对应地址的FLAG是否为高,只有为高才采样数据总线,请问是这样的吗?比如下面的Verilog代码片段:
always@(posedge clk)begin
...
//该时钟沿之前的两个时钟周期SLRD为低
if(flag==1'd1)//如果对应地址的flag为高,则采样数据总线
     data_buf=data_i;//将数据总线的值赋给data_buf数据缓冲区

                                                                                                                                                                                                                                                                                                                                                                                                        
                                                        

回帖(1)

h1654155275.5669

2024-6-3 16:54:48
是的,您的理解是正确的。在FX3同步Slave FIFO的非突发传输中,FPGA需要在SLRD信号拉低后的两个时钟周期内采样数据总线。在采样数据总线之前,需要检查对应地址的FLAG信号是否为高。只有在FLAG为高的情况下,才进行数据采样。

以下是一个简化的Verilog代码示例,展示了这个过程:

```verilog
reg [7:0] data_buf;
reg [7:0] data_i;
reg flag;
reg slrd;

always @(posedge clk) begin
  // 等待SLRD信号拉低后的两个时钟周期
  if (slrd == 1'b0) begin
    // 等待两个时钟周期
    #1;
    #1;
   
    // 检查FLAG信号是否为高
    if (flag == 1'b1) begin
      // 如果FLAG为高,则采样数据总线
      data_buf <= data_i;
    end
  end
end
```

在这个示例中,我们首先检查SLRD信号是否为低。如果是,我们等待两个时钟周期,然后检查FLAG信号是否为高。如果FLAG为高,我们将数据总线(data_i)的值赋给数据缓冲区(data_buf)。这样,我们就可以在FX3同步Slave FIFO的非突发传输中正确地采样数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分