120 likes | 379 Views
FPGA 中软异步 FIFO 设计和实现. 宋文 SA10225236. 项目要做什么?. 什么是 FIFO FIFO 是英文 First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。异步是指读写不是由一个时钟信号控制的,用于解决高速器件和低速器件之间数据暂存问题。. 项目要做什么?. 什么是 FPGA
E N D
FPGA中软异步FIFO设计和实现 宋文 SA10225236
项目要做什么? • 什么是FIFO FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。异步是指读写不是由一个时钟信号控制的,用于解决高速器件和低速器件之间数据暂存问题。
项目要做什么? • 什么是FPGA FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
为什么要在FGPA中实现异步FIFO • 现场可编程门阵列FPGA是在专用ASIC 的基础上发展出来的,它克服了专用ASIC不够灵活的缺点。与其它中小规模集成电路相比,它有很强的灵活性,即其内部的具体逻辑功能可以根据需要配置,对电路的修改和维护很方便目前FPGA的容量已经跨过了百万门级使得FPGA 成为解决系统级设计的重要选择方案之一。现在FPGA 已经成为多种数据采集系统应用的强有力的解决方案。由于可编程方案的灵活性,数据采集系统设计可以适应日益变化的标准协议和性能需求,FPGA具有集成优势和更低的系统成本。
项目分析 • 如何做这个项目 • 项目的难点和难题
如何设计FIFO • 模块划分 FPGA 中的软FIFO由三部分构成:写地址产生模块、双口RAM和读地址产生模块。
由上图可以看出,写地址产生模块根据写时钟和写有效信号产生递增的写地址,读地址产生模块根据读时钟和读有效信号产生递增的读地址。FIFO的操作如下:在写时钟wr_clk的升沿,当wren有效时,将wr_data写入双口RAM中写地址对应的位置中;始终将读地址对应的双口RAM中的数据输出到读数据总线上。这样就实现了先进先出的功能。写地址产生模块还根据读地址和写地址关系产生FIFO的满标志。当wren有效时,若写地址+2=读地址时,full为1;当wren无效时,若写地址+ 1=读地址时,full为1。读地址产生模块还根据读地址和写地址的差产生FIFO的空标志。当rden有效时,若写地址-1=读地址时,empty为 1;当rden无效时,若写地址=读地址时,empty为1。按照以上方式产生标志信号是为了提前一个时钟周期产生对应的标志信号。
需要克服的问题 • 如何用HDL语言编码 • 如何判断双口RAM是否为满
初步解决方案 • HDL编码 采用目前广泛流行的 HDL进行编码, Verilog源与C语言掌握快可读性强而且各大厂商都有相应的产品支持,例如ALTERA,XILINX,Lattice ,其中XILINX就是本次工程试验所选开发环境的提供商。
双口RAM状态描述 • 原则是:写满不溢出,读空不多读。 在实际工作中我们要考虑很多问题,不能以RAM全满为满,全空为空这会造成器件的空载浪费资源。故在快空或快慢时向高/低速部件发送信号及时处理数据。暂假定FIFO容量的75%作为上限,设定FIFO容量的25%为下限。
设计中软硬件的支持 • 总体在Modelsim中完成程序编写和测试 • FPGA实现则在XILINX (赛灵思)公司的芯片上进行(靠学院提供)