CY7C68013的slave fifo的时序分析(附FPGA代码)

时序图是所有硬件设计工程师不得不关心的东西,这个是我在做CY7C68013与FPGA模块连接时遇到的,以此为例介绍一下此时序图的读写技巧和编程技巧。

首先看Slave fifo的写时序(图片来自CY7C68013的官方datasheet)


1、首先看时序图左侧的4个I/O(IFCLK,SLWT,DATA,FLAG)这是我们想操作slave fifo必须要用的,也是我们主要关心的东西。

2、然后明确我们的目的是向fifo写入数据,也就是写入DATA,从图9-7中可以看出DATA是在上升沿时写入的,同时DATA的写入是有要求的:必须在距离上升沿至少时间之前输入并且在上升沿之后保持的时间。从表格9-9中可知至少为9.2ns,为0。

3、然后继续看图中的SLWR,由前面的datasheet我们已经知道SLWR是FIFO的写信号,用于控制FIFO写入的。同上一样,我们也看到了SLWR两个重要的的时间,时间分别是18.1和0。

4、继续看FLAGS,FLAGS由datasheet知是slave fifo空满的标志位。通过图中看出,标志位实在数据上升沿输入后的时间后才输出的。因此程序中我们要检测FLAGS状态时必须在此时间之后才能检测到。这一点是很重要的,否则可能会导致数据溢出。

5、最后是IFCLK了,对于IFCLK datasheet个出的说明是 “Interface Clock, used for synchronously clocking data into or out of the slave FIFOs. IFCLK also serves as a timing reference for all slave FIFO control signals and GPIF. When internal clocking,IFCONFIG.7 = 1, is used the IFCLK pin can be configured to output 30/48 MHz by bits IFCONFIG.5 and IFCONFIG.6. IFCLK may be inverted, whether internally or externally sourced, by setting the bit IFCONFIG.4 =1.”。简单说就是IFCLK是控制数据输入输出的时钟,并且其频率有两个选择:内部时钟30MHZ/48MHZ 或者使用外部时钟 。 我先是用外部时钟(FPGA输出时钟)编的,后来在应用中发现并不方便,因此有换成了内部时钟控制,两种方法都很简单。附的程序为内部时钟48Mhz控制的。

然后就要上程序了:(这里只是控制时序部分的程序)

always@(negedge IFCLK or negedge rst_n) //为了配合时序,此处采用下降沿的时候操作
if(!rst_n)
begin
SLWR <= 1; //不允许向FX2LP写入,注意SLWR标志位是“0”有效
data_out <= 16'h00;
end
else if(flagb && start_ad) //如果FIFO非满并且AD采集开关已经打开
begin
SLWR <= 0;
data_out <= data;
end
else
begin 
SLWR <= 1;//不允许向FX2LP写入
end

endmodule


还有读fifo部分的时序分析,由于时间问题,以后有时间在写。


第一次写博客,如果有什么纰漏或者错误的话,欢迎大侠批评指正。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值