CY7C68013的slave fifo的时序分析(附FPGA代码)
来源:互联网 发布:macbook视频剪辑软件 编辑:程序博客网 时间:2024/06/06 05:39
时序图是所有硬件设计工程师不得不关心的东西,这个是我在做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部分的时序分析,由于时间问题,以后有时间在写。
第一次写博客,如果有什么纰漏或者错误的话,欢迎大侠批评指正。
- CY7C68013的slave fifo的时序分析(附FPGA代码)
- FX2LP cy7c68013——Slave FIFO 与FPGA通信
- FIFO的基础和时序分析学习
- FPGA时序分析的一些理解
- FIFO的FPGA实现
- FIFO的FPGA实现
- CY7C68013A的slave fifo autoout 模式配置代码
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- FPGA中FIFO的配置
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- Xilinx FPGA的约束设计和时序分析总结 (转)
- Xilinx FPGA的约束设计和时序分析总结
- while循环,内容只是过一遍,若需深入,请自行补充
- Hello CSDN
- PostgreSqlHelper类
- UITableView的简单使用
- java基础:为什么有的对象只声明不初始化不会报错?
- CY7C68013的slave fifo的时序分析(附FPGA代码)
- 设计模式--外观模式
- 搭建高可用MongoDB集群(四):分片-----个人记录
- linux 查看网卡是否有网线连接
- Codeforces Round #313 (Div. 2) (A、B、C、D)
- Android 压力测试 Monkey
- PHP重载
- MyBatis批量插入数据
- splash启动速度优化