基于FPGA的FIFO存储器设计.doc

上传人:h**** 文档编号:128313 上传时间:2018-07-09 格式:DOC 页数:23 大小:1.24MB
下载 相关 举报
基于FPGA的FIFO存储器设计.doc_第1页
第1页 / 共23页
基于FPGA的FIFO存储器设计.doc_第2页
第2页 / 共23页
基于FPGA的FIFO存储器设计.doc_第3页
第3页 / 共23页
基于FPGA的FIFO存储器设计.doc_第4页
第4页 / 共23页
基于FPGA的FIFO存储器设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、 基于 FPGA 的 FIFO 存储器设计 草鱼 摘要 : p ork草鱼 如何匹配两个传输速率不同的系统间数据传输 , 鲤鱼 避免因为速率的不同而在接口部分产生的复写 、 pork丢失以及读入无效数据的问题 , 鲤鱼 这些已经成为设计者必须思考的问题 。 草鱼 FIFO 缓冲存储器正是解决这种数据传输问题的理想方法 。 草鱼 文章简单介绍了FPGA(现场可编程逻辑门阵列 )的发展历程 ,结构特点与应用价值 , 鲤鱼 简单介绍了FIFO 的功能和实用价值 。 草鱼 提出了 FIFO(先进先出)存储器分别在同步和异步两种状态下的设计方案 。 草鱼 在 Quarter环境中 , 鲤鱼 以 VHDL

2、 作为描述语言 , 鲤鱼 遵循 EDA 标准设计的开发流程 , 鲤鱼 实现了用 FPGA 器件对 FIFO(先进先出)存储器进的设计 。 草鱼并对相应的模块下载到 GW48 系列 EDA 实验开发系统上进行硬件实现 。 草鱼 最后比较了同步 FIFO 存储器和异步 FIFO 存储器各自的优缺点和使用范围 。 草鱼 体现了 FPGA 在数据处理方面的优越性 。 草鱼草鱼 草鱼 关键词 草鱼 草鱼同步 FIFO, 鲤鱼 异步 FIFO 草鱼 , 鲤鱼 FPGA 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼

3、草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 基于 FPGA 的 FIFO 存储器设计 草鱼 草鱼 草鱼 绪论 草鱼 1.1 草鱼 FPGA 的发展及结构特点 草鱼 1.1.1 草鱼 FPGA 的含义及发展 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 FPGA 是现场可编程逻辑门阵列( Field 草鱼 Programmable 草鱼 Gates 草鱼 Array)的缩写 ,鲤鱼 自从 1985 年 Xilinx 公司推出第一片现场可编程逻辑门阵列至今 1。 草鱼 FPGA 已经成为当今电子设计市场上应用最广泛的可编程逻辑器件之一 。 草鱼 可编程逻辑器件按集成度来 区分 , 鲤鱼 可大致分为简单 PLD 和复

4、杂 PLD。 草鱼 如图 21 草鱼 , 鲤鱼 它的发展大致经历了一下三个阶段 3: p ork草鱼 草鱼 草鱼 草鱼 1早期的可编程逻辑器件 : pork70年代初期的 PLD 器件主要用于各种类型的存储问题 , 鲤鱼 主要有 PROM(可编程只读存储器) 、 porkEPROM(紫外线可擦出只读存储器) 、 pork和 EEPROM(电可擦出只读存储器) , 鲤鱼 由于结构简单 , 鲤鱼 它们只能完成简单的逻辑功能 。 草鱼草鱼 草鱼 草鱼 草鱼 2 草鱼 结构上稍微复杂的可编程芯片 : pork70年代末到 80年代初 , 鲤鱼 AMD公司和 Lattice公司先后推出了可编程逻辑器件

5、PLD, 鲤鱼 产品主要有 PAL(可编程逻辑阵列 , 鲤鱼Programmable 草鱼 Array 草鱼 Logic) 、 porkGAL(通用阵列逻辑 , 鲤鱼 Generic 草鱼 Array 草鱼 Logic) 和PLA(可编程逻辑阵列 , 鲤鱼 Programmable 草鱼 Logic 草鱼 Array) .这一类在设计上有很强的灵活性 , 鲤鱼 可以实现速度特性较好的逻辑功能 , 鲤鱼 但由于结构简单 , 鲤鱼 它们只能实现规模较小的电路 。 草鱼草鱼 草鱼 草鱼 草鱼 3 草鱼 功能齐全 、 pork变 成灵活的可编程逻辑器件 : pork80年代中期 , 鲤鱼 Altera

6、公司和 Xilinx公司同期推出了 CPLD(复杂可编程逻辑门阵列 , 鲤鱼 Complex 草鱼 Programmable 草鱼 Logic 草鱼Device)和 FPGA(现场可编程逻辑门阵列 ,Field 草鱼 Programmable 草鱼 Gates 草鱼 Array), 鲤鱼它们都具有体系结构和逻辑单元灵活 , 鲤鱼 集成度高以及适用范围宽等特点 , 鲤鱼 可以实现较大规模的电路 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 图 1 草鱼 进入 90 年代以后 , 鲤鱼 可编程逻辑集

7、成电路进入了飞速发展时期 , 鲤鱼 在系统可编程技术ISP( In System 草鱼 Programmability)和世界扫描测试技术的出现 , 鲤鱼 使得可编程逻辑器件在器件编程技术和器件测试技术方面也获得了划时代的进步 。 草鱼 FPGA/CPLD已成为当今应用最广泛的可编程集成电路之一 。 草鱼 FPGA 器件的应用研究 工程师可在办公室和实验室进行设计 。 草鱼 它还具有静态可重复编程和在系统重构特性 , 鲤鱼 使硬件和软件一样 , 鲤鱼 能够通 过编程来修改 。 草鱼草鱼 FPGA 的结构特点 草鱼 草鱼 草鱼 草鱼 草鱼 一些基本的器件如 GAL、 porkCPLD 之类都是基

8、于乘积项的可编程结构 , 鲤鱼 即由可编程的与阵列和固定的或阵列组成 。 草鱼 而 FPGA 则是另一种可编程逻辑结构 -查找表( Look 草鱼 Up 草鱼 Table, 鲤鱼 LUT)结构 。 草鱼 LUT 是可编程的最小逻辑构成单元 。 草鱼 大部分FPGA 采用 SRAM(静态随即存储器)的查找表逻辑形成结构 , 鲤鱼 就是用 SRAM 来构成逻辑函数发生器 。 草鱼 Xilinx 的 XC4000 系列 、 porkSpartan/3/3E 系 列 , 鲤鱼 Altera 的FLEX10K、 porkACEX、 porkAPEX、 porkCyclone、 porkCyclone 、

9、 porkStratix 等系列都采用 SRAM 查找表构成 , 鲤鱼 是典型的 FPGA 器件 。 草鱼 EDA 技术实用教程潘松 , 鲤鱼 黄继业 草鱼 通常 FPGA 包含 3 类可编程资源 : pork可编程逻辑功能块 、 pork可编程 I/O 功能块和可编程内部互连 。 草鱼 Cyclone/Cyclone 系列器件是 草鱼 Altera 草鱼 公司一款低成本 , 鲤鱼 高性价比的FPGA, 鲤鱼 他的结构和工作原理在 FPGA 器件中具有典型性 。 草鱼 Cyclone/Cyclone器件主要由逻辑阵列快 LAB、 pork嵌入式存储块 、 porkI/O 单元 、 pork嵌入

10、式硬件乘法器和 PLL 等模块组成 , 鲤鱼 各模块之间存在着丰富的互联线和时钟网络 。 草鱼草鱼 FIFO 的基本概念及分类 草鱼 1.2.1 草鱼 FIFO 的基本概念及功能 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 FIFO( First 草鱼 In 草鱼 First 草鱼 Out)是先进先出存储器的缩写 , 鲤鱼 它是一种实现数据先进先出的存储器件 , 鲤鱼 通常用作数据缓冲器 。 草鱼 一种低功耗异步 FIFO 存储器的设计 它与普通存 储器的主要区别在是 FIFO 不需要外部读写地址线 , 鲤鱼 在使用中具有简单 , 鲤鱼 方便的特点 。 草鱼 FIFO 一般用于不同时钟之间的数据传输

11、, 鲤鱼 比如 FIFO 的一端是 AD 数据采集 , 鲤鱼 另一端是计算机的 PCI 总线 , 鲤鱼 在两个不同的时钟域间就可以采用 FIFO 来作为数据缓冲 。 草鱼 另外 , 鲤鱼 对于不同宽度的数据接口也可以用 FIFO, 鲤鱼 例如单片机为 8 位输出 , 鲤鱼 DSP 为 16 位输出 , 鲤鱼 在单片机域 DSP 连接时就可以使用 FIFO来达到数据匹配的目的 。 草鱼草鱼 在实际工作中 , 鲤鱼 对 FIFO 的数据操作是靠其慢 /空标志来实现的 。 草鱼 所谓满 标志 , 鲤鱼 指的是当对 FIFO 写数时 , 鲤鱼 如果数据足够多 , 鲤鱼 多到 FIFO 的内存已经装满了

12、 , 鲤鱼 此时便由 FIFO 内部状态电路送出一个表示内存已满的信号以阻止对 FIFO 的写操作 。 草鱼同理 , 鲤鱼 所谓空标志 , 鲤鱼 指的是当从 FIFO 读数时 , 鲤鱼 如果数据被读完了 , 鲤鱼 便有 FIFO 内部状态电路送出一个空标志信号以阻止对 FIFO 的读操作 。 草鱼 总之 , 鲤鱼 在控制 FIFO 的读写操作时 , 鲤鱼 必须把握一个原则 : pork写满不溢出 , 鲤鱼 读空不多读 。 草鱼基于 VHDL 的 FPGA开发快速入门 -技巧 -实例 草鱼 1.2.2 草鱼 FIFO 的分 类 草鱼 草鱼 草鱼 草鱼 根据 FIFO工作的时钟域不同 , 鲤鱼 可

13、以将 FIFO分为同步 FIFO和异步 FIFO两大类 。草鱼 同步 FIFO 是指读时钟和写时钟为同一个时钟 , 鲤鱼 在时钟沿来临时同时发生读写操作 ; pork异步 FIFO 是指读写时钟不一致 , 鲤鱼 读写时钟是互相独立的 。 草鱼 和同步时钟相比 ,鲤鱼 特别是在网络接口 、 pork图像处理等方面 , 鲤鱼 异步 FIFO 应用空间更为广泛 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 硬件实验平台简介 EDA 技术实验手册 草鱼 GW48EDA/SOPC 实验系统是杭州康芯电子有限公司开发的一个对 EDA/SOPC 的基本实验平台 。 草鱼 该系统拥有以下几个重要特点 : p ork草

14、鱼 Multi-task 草鱼Reconfiguration 电路结构(多功能重配置结构) 草鱼 该电路结构能仅通过一个键 ,鲤鱼 完成纯电子切换的方式选择十余种不同的实验系统硬件电路连接结构 , 鲤鱼 大大提高了实验系统的联系灵活性 , 鲤鱼 又不影响系统的工作速度 。 草鱼 这里仅仅说明本文中所涉及到的电 路模式 , 鲤鱼 我们选择为模式 5.如图所示 , 鲤鱼 草鱼 C L O C K 0C L O C K 2C L O C K 5C L O C K 9 目标芯片FPGA/CPLDH E XP I O 2P I O 3P I O 4P I O 5P I O 7 P I O 6D1D2D3

15、D4D5D6D7D8D 1 6 D 1 5 D 1 4 D 1 3 D 1 2 D 1 1数码 1数码 2数码 3数码 4数码 5数码 6数码 7数码 8NO .0SPEAKER扬声器实验电路结构图译码器 译码器 译码器 译码器 译码器 译码器 译码器 译码器P I O 1 5 - P I O 1 2P I O 1 1 - P I O 8P I O 7 - - P I O 2H E X键 1键 2键 3键 4键 5键 6键 7键 8P I O 4 7 - P I O 4 4P I O 4 3 - P I O 4 0P I O 3 9 - P I O 3 6P I O 3 5 - P I O 3

16、 2P I O 3 1 - P I O 2 8P I O 2 7 - P I O 2 4P I O 2 3 - P I O 2 0P I O 1 9 - P I O 1 6草鱼 FPGA/CPLD 万能插口 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 右图是一块插于主主系统板上目标芯片 适配座 , 鲤鱼对于不同的目标芯片可有不同的适配座 。 草鱼 可用的目标芯片包括目前世界上最大的六家 FPGA/CPLD 厂商几乎所有的 CPLD、 porkFPGA 和所有的 ispPAC 等模拟 EDA器件 。 草鱼 每个脚本公司已经定义标准化 , 鲤鱼 各种芯片与引脚的对应关系可在实验说明中查到 , 鲤鱼 再次不

17、再细说 。 草鱼 A S D OD A T A 0n C O N F I GC O N F _ D O N ED C L KG N Dn C S On C EV C C I OB y t e B l a s t I I在线编程座G N Doooooooooo在线编程座B y t e B l a s t ( M V )S E L 1S E L 0G N DT D In S T AT M ST D OT C K oooooooooo主板右数第 2 、 3 列 “ 目标板插座 ” 信号相同2 . 5 V3 . 3 V1 . 8 V- 1 2 V+ 1 2 VP I O 7 9P I O 7 8P I

18、 O 7 5P I O 7 4P I O 7 3P I O 7 2P I O 7 1P I O 7 0P I O 6 9P I O 6 8C O N 2C O N 1P I O 7 7P I O 7 6P I O 6 7P I O 6 6P I O 6 5P I O 6 4P I O 6 3P I O 6 2P I O 6 1P I O 6 0ooooooooooooooooooooS E L 1S E L 0oooooooooo目标板插座 14039P I O 2 4P I O 2 2P I O 2 0P I O 1 8P I O 1 6P I O 1 4P I O 1 2P I O 1 0

19、P I O 8P I O 6P I O 4n S T AP I O 0P I O 2V C CP I O 2 5P I O 2 3P I O 2 1P I O 1 9P I O 7P I O 1 7P I O 1 5P I O 1 3P I O 1 1P I O 9P I O 5P I O 3P I O 1oooooooooooooooooooooooooG N DT C KT D OT M ST D Iooooo目标板插座 24039P I O 2 7P I O 2 6P I O 2 9P I O 3 1P I O 3 3P I O 3 5P I O 3 7P I O 3 9P I O 4

20、1P I O 4 3P I O 4 5P I O 4 7P I O 4 9C L O C K 0C L O C K 2G N DP I O 2 8P I O 3 0P I O 3 2P I O 3 4P I O 3 6P I O 3 8P I O 4 0P I O 4 2P I O 4 4P I O 4 6P I O 4 8S P E A K E RC L O C K 5C L O C K 9V C CooooooooooooooooooooooooooooooooooooooooByteBlasterMV 编程配置口 : p ork此口由三个用途 草鱼 在对适配板 FPGA/CPLD 进行编

21、程时 , 鲤鱼 用十芯线板此口和适配板的“ JTAG”口相连 。草鱼草鱼 如果进行独立的电子系统开发 、 pork应用系统开发等开 发实践活动 , 鲤鱼 首先应该将系统板上的目标芯片适配座拔下(对于 Cyclone 器件不用拔) , 鲤鱼 用配置的 10 芯编程线将 ByteBlasterMV 口和独立系统上适配板的 JTAG10 芯相接 , 鲤鱼 进行在系统编程 , 鲤鱼进行调试 。 草鱼草鱼 对 isp 单片机 89S51 等进行编程 , 鲤鱼 用十芯线同“ MCU 草鱼 DAWNLOAD” 口相连 。 草鱼草鱼 Quarters 草鱼特点及开发流程 草鱼 1.4.1 草鱼EDA 的设计流

22、程 草鱼 草鱼 草鱼 简单地说 , 鲤鱼 EDA(电子设计自动化Electronic 草鱼 Design 草鱼 Automation)技术可概括为以大规模可编程逻辑器件CPLD/FPGA 为设计载体 , 鲤鱼 通过硬件描述语言输入给相应开发软件 , 鲤鱼 经过编译和仿真 , 鲤鱼 最终下载到设计载体中 , 鲤鱼 从而完成系统电路设计任务的一门新技术 。 草鱼草鱼 利用 EDA 技术进行电路设计的大部分工作是在 EDA 软件工作平台上进行的 ,鲤鱼 EDA 设计流程图如图 () 所示 。 草鱼 EDA 设计流程包括设计准备 、 pork设计输入 、 pork设计处理 、 pork器件编译和设计完

23、成 5 个步骤 , 鲤鱼以及相应的功能仿真 、 pork时序仿真和器件测试 3 个设计验证过程 。 草鱼 QuartusII 在EDA 技术中的应用 草鱼 草鱼EDA 设计流程 1.4.2 草鱼Quarters 草鱼 特点 草鱼 草鱼 草鱼 草鱼 草鱼 Quarters是 Altera 公司推出的目前应用非常广泛的一款 CPLD/FPGA 开发系统 。 草鱼 它是一个完整的多平台设计环境 。 草鱼 它可以轻松满足特定设计的需要 , 鲤鱼 并且提供可编程片上系统( SOPC) 设计的综合开发平台 , 鲤鱼 是 SOPC 设计的基础 。 草鱼 Quarters 草鱼将设计 、 pork综合 、 p

24、ork布局 、 pork仿真验证 、 pork和编程下载以及第三方 EDA 工具集成在一个无缝的 环境中 , 鲤鱼 可以进行系统级设计 、 pork嵌入式系统级设计和可编程逻辑器件设计 。 草鱼草鱼 Quarters开发工具提供了完全集成 , 鲤鱼 且与电路结构无关的数字逻辑设计环境 , 鲤鱼以及 SOPC 设计的嵌入式系统开发平台 。 草鱼 主要特点如下 : pork草鱼 可利用原理图 、 pork结构图 、 porkVerilogHDL、 porkVHDL、 porkAHDL 等硬件描述语言完成逻辑电路的描述和编辑 , 鲤鱼 以及芯片(电路)平面布局连线的编辑 。 草鱼草鱼 功能强大的逻辑

25、综合工具 , 鲤鱼 并提供了 RTL 级查看器(原理图视图和层次结构列表)草鱼 完备的电路功能描述和时序逻辑仿真工具 。 草鱼草鱼 自动定位编译错误 , 鲤鱼 提供高效的器件编程与验证工具 。 草鱼草鱼 RTL-to-Gate 形式验证 。 草鱼草鱼 此外 , 鲤鱼 Quarters还将默认安装 SOPC 草鱼 Builder,自动添加 、 pork参数化和连接 IP 核 , 鲤鱼包括嵌入式处理器 、 pork协处理器 。 草鱼 外设和 用户自定义逻辑 , 鲤鱼 从而为嵌入式的开发提供方便 。 草鱼草鱼 1.4.3 草鱼Quarters设计流程 草鱼 草鱼 草鱼 草鱼Quarters 提供了完

26、全集成且与电路结构 无关的数字逻辑设计环境 , 鲤鱼 拥有CPLD/FPGA各个开发阶段对应得开发工具 。 草鱼 图()是 Quarters的开发流程 , 鲤鱼 Quarters为开发流程的每个阶段提供 Quarters图形用户界面 。 草鱼 EDA 工具界面 。 草鱼 EDA 技术与可编程器件的应用 草鱼 草鱼 2 同步 FIFO 设计及硬件实现 草鱼 2.1 草鱼 同步 FIFO 功能及 设计原理 草鱼 同步 FIFO 通常是指 FIFO 的读写时钟频率相同 、 p ork来源相同 , 鲤鱼 这种 FIFO 的设计较为简单也较为快速 , 鲤鱼 因为 它避免了由于异步时钟逻辑产生的许多设计中

27、具有挑战性的难题 。 草鱼 同步 FIFO 通常用在 读写时钟相同的接口部分 , 鲤鱼 这种 FIFO 相比 较而言 , 鲤鱼 逻辑较为简单 , 鲤鱼 时延较小 , 鲤鱼 传输数据的速度比较快 , 鲤鱼 同步 FIFO 还具有深度可扩展性 。 草鱼草鱼 同步 FIFO 的整个系统可分为写地址产生逻辑 、 p ork度地址产生逻辑 、 pork双端口存储器 、 por k满 /空标志产生逻辑 4大部分 。 草鱼 其中 , 鲤鱼 FIFO 的存储介质为一块双端口 RAM, 鲤鱼 可以同时进行读写操作 。 草鱼 在写地址产生逻辑部分 , 鲤鱼 由写地址产生逻辑产生写控制信号和写地址 ; pork在读

28、地址产生逻辑部分 , 鲤鱼 由读地址产生逻辑产生读控制信号和读地址 。 草鱼 在满/空标志产生部分 , 鲤鱼 由读写地址相互比较产生满 /空标志 。 草鱼 具体模块结构如下图所示 :pork草鱼 草鱼 读数据 写数据 双端口 存储器 写控制信号 写地址 读控制信号 读地址 满 /空标志 产生逻辑 满标志 空标志 时钟输入 写地址产生逻辑 读地址产生逻辑 2.2 同步 FIFO 的 VHDL 语言描述及仿真 草鱼 2.2.1 同步 VHDL 语言描述 草鱼 草鱼 草鱼 草鱼 根据 FIFO 的深度可扩展性 , 鲤鱼 我们以采用宽度为 8, 鲤鱼 深度为 64 为设计目标 。 草鱼 由于同步 FI

29、FO 各个模块描述相对来说比较容易 , 鲤鱼 我们采用一个结构体 , 鲤鱼 多个进程的方式进行描述 。 草鱼草鱼 具体 VHDL 源程序如下 , 鲤鱼 其中各个关键句子都做了详细说明 。 草鱼草鱼 -同步 FIFO 的 FPGA 设计 (VHDL 源程序 )见附录 1 草鱼 2.2.2 时序仿真 及分析 草鱼 草鱼 草鱼 下面是同步 FIFO 的仿真图 , 鲤鱼 其中时钟周期是 100ns, 鲤鱼 写使能信号固定在高电平 ,鲤鱼 读使能信号先在低电平 , 鲤鱼 而后到高电平 。 草鱼 如图 草鱼 草鱼 仿真前半部分 草鱼 草鱼 草鱼 草鱼 草鱼 从图中可以看出 , 鲤鱼 复位后 , 鲤鱼 开始

30、往同步 FIFO 写数 , 鲤鱼 空标志信号转为非空 , 鲤鱼 写读使能信号有效后 , 鲤鱼 开始读数 , 鲤鱼 但是由于写进存储器仍未满 , 鲤鱼 所以输出 ” 000000” 。草鱼 符合设计要求 。 草鱼草鱼 草鱼 仿真后半部分 草鱼 草鱼 草鱼 草鱼 草鱼 图中可以看出 , 鲤鱼 经过大概 64个时钟周期后 , 鲤鱼 FIFO 储存器内数据已经写满 。 草鱼 开始往外依次读数 , 鲤鱼 当每个时钟上升沿到来时 , 鲤鱼 边写边读 。 草鱼 实现了 FIFO 同步读写和缓冲的作用 。 草鱼草鱼 草鱼 时钟为 200ns 草鱼 同样由图可以看出 , 鲤鱼 由于时钟周期为 200ns, 鲤鱼

31、 增加一倍 。 草鱼 所以到经历了大概 12多 微秒即写入 64 个数据后开始往外读数 。 草鱼 仍然实现了先进先出的功能 。 草鱼草鱼 2.3 草鱼硬件实现 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 2.3.1 引 脚设置与下载 草鱼 程序仿真成功后 , 鲤鱼 开始进行引脚设置和下载 。 草鱼 在 Quarters开发环境下 , 鲤鱼 选择 tool菜单中的 Assignments 项 , 鲤鱼 进入 Assignments 草鱼 Editor 草鱼 编辑窗 , 鲤鱼 在 Category 栏中选择 pin 按钮 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 如图() 所示 。 草鱼 单击 n

32、ew选择 本工程要 锁 定的端口信号名 , 鲤鱼 添加到引脚列表中 。 草鱼 我们选择模式 NO.0 模式 , 鲤鱼 因采用的是 Cyclone 系列的 EP1C12Q240C8 芯片 ,鲤鱼 经过查阅相应的“芯片引脚对照表”将相应 引脚编号添加到地址栏中 。 草鱼 由于手工操作太慢 , 鲤鱼 这里将键 3 设置为时钟控制 。 草鱼 键 8设置为复位 。 草鱼 具体配置见下表 。 草鱼草鱼 草鱼 2.3.2 配置文件下载 草鱼 将编译产生的 SOF 文件配置进 FPGA 中 , 鲤鱼 具体步骤如下 :草鱼 (1)打开编程窗和配置 草鱼 。 草鱼 在菜单 tool 中选择 Programmer,

33、在 Mode 栏中选择 JTAG 模式 , 鲤鱼 并选择打钩下载文件右侧的第一小框 。 草鱼 如图()所示 草鱼 ( 2)设置编程器 。 草鱼 将试验箱和电脑相连接 , 鲤鱼 打开 Hardware 草鱼 Setup 对话框 , 鲤鱼 选择ByteBlasterMV 之后 , 鲤鱼 打你 Close 按钮关闭对话框即可 。 草鱼草鱼 草鱼 ( 3)硬件测试 。 草鱼 成功下载 FIFO.sof 后 , 鲤鱼 选择实验电路模式 0, 鲤鱼 将复位键 、 pork读写使能键均置高位 , 鲤鱼 手动触发时钟信号键 , 鲤鱼 每写一个数 , 鲤鱼 触发一次 , 鲤鱼 输入 64 个数之后 ,鲤鱼 在同

34、步时钟控制下 , 鲤鱼 开始输出第一个输入的数 , 鲤鱼 符合同步 FIFO 的设计原理 。 草鱼草鱼 3、 pork异步 FIFO 存储器设计 草鱼 3.1 草鱼 草鱼 异步 FIFO 工作原理 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 异步 FIFO 相当于一个双端口的 RAM, 鲤 鱼一个端口只能写数据 , 鲤鱼 另一个端口只能读数据 。 草鱼 同时读写数据必须按照存储器地址的递增或者递减顺序进行 。 草鱼异步 FIFO设计中的两个关键问题 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 图 () 是异步 FIFO 的原理图 , 鲤鱼 它由四部分组成 , 鲤鱼 目前其内部存储

35、器一般采用 双端口 RAM,输入输出具有两套数据线 , 鲤鱼 独立的读写地址指针在读写时钟的控制下顺序地从双口 RAM 读写数据 。 草鱼 用写时钟把数据放入双口 RAM, 鲤鱼 用读时钟从中 读取 。草鱼 同时根据 FIFO 中的空 /满标致来判断何时可以把数据写入 FIFO 或从 FIFO 中读出 。草鱼 这样就可以把写数据和读数据分开 , 鲤鱼 使整个系统分为完全独立的时钟域 , 鲤鱼 实现异步FIFO 的功能 。 草鱼 异步 FIFO 中存储单元的分析设计 草鱼 草鱼 异步 FIFO 原理图 异步 FIFO 中存储单元的分析设计 草鱼 3.2 异步 FIFO 的设计难点 草鱼 设计异步

36、 FIFO 有两个难点 , 鲤鱼 一是如何同步异步信号 , 鲤鱼 是触发器不产生亚稳态 ; por k二是如何正确地设计空 、 pork满标志信号的电路 。 草鱼 下面阐述解决问题的具体方法 。 草鱼草鱼 3.2.1 草鱼 亚稳态问题的解决 草鱼 草鱼 在数字集成电路中 , 鲤鱼 触发器要满足建立时间( set 草鱼 up)和保持时间( hold)的限制要求 。 草鱼 当一个信号被寄存器锁存时 , 鲤鱼 如果信号和时钟之间不满足这个要求 , 鲤鱼 Q端的值是不确定的 , 鲤鱼 并且在未知的时刻会固定到高电平或低电平 。 草鱼 这个过程称为亚稳态( 草鱼 Metastabihty 草鱼 )。 草

37、鱼 图 () 所示为异步时钟和亚稳态 , 鲤鱼 图中 。 草鱼 cIka 和 clkb 为异步时钟 。 草鱼草鱼 草鱼 异步时钟和亚稳态 草鱼 草鱼 两级时钟同步消除亚稳态 草鱼草鱼 草鱼 亚稳态必定会发生在异步 FIFO 中 。 草鱼 因为在异步 FIFO 中 , 鲤鱼 读写 时钟是完全独立的 。草鱼 虽然亚稳态问题不可避免 , 鲤鱼 但是使用以下两种方法 , 鲤鱼 可以使其发生的概率降到一个可以接受的地步 。 草鱼草鱼 对写地址 /读地址采用格雷码 。 草鱼 由实践可知 , 鲤鱼 同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率 。 草鱼 对多个触发器的输出所组成的写地址

38、 /读地址可以采用格雷码 。 草鱼 由于格雷码每次只变化一位 , 鲤鱼 采用格雷码可以有效地减少亚稳态的产生 。 草鱼草鱼 采用触发器来同步异步输入信号 。 草鱼 如图()中两级触发器可以将出现的亚稳态降到很小程度 , 鲤鱼 但是同时也带来了一定的延时 。 草鱼 需在 设计中加以注意 。 草鱼草鱼 3.2.2 草鱼满 /空标志信号的产生 草鱼 满 /空标志信号的产生是异步 FIFO 设计的核心部分 。 草鱼 是否能正确设计此部分逻辑 ,鲤鱼 将直接影响到 FIFO 得性能 。 草鱼 满 /空标志产生的原则是 : pork写满不溢出 , 鲤鱼 读空不多读 。草鱼 无论在什么时候 , 鲤鱼 都不应

39、出现读写地址同时对一个存储器地址操作的情况 。 草鱼草鱼 我们可以通过设置额外的状态位的办法来判断满 /空状态 。 草鱼 读写指针由地址位和状态位组成 , 鲤鱼 地址位随着相应的操作递增 , 鲤鱼 指针由内存的最后位置回到初始位置的时候状态取反 。 草鱼 因此 , 鲤鱼 当 读写指针的地址位和状态位全部吻合时 , 鲤鱼 读写指针经历了相同次数的循环移动 , 鲤鱼 由此可知判断满 /空标志的公式 : pork草鱼 Empty=(读指针 =写指针 )草鱼 Full=(读指针最高位 /=写指针最高位) AND(读指针其他位 =写指针其他位) 草鱼 3.3 异步 FIFO 存储器 的设计 草鱼 3.3

40、.1 草鱼 格雷码计数器的设计 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 根据以上原理 , 鲤鱼 在设计异步 FIFO 之前 , 鲤鱼 我们先 进行格雷码计数器的设计 。 草鱼二进制指针是由一位状态位和若干二进制编码的地址位组成 。 草鱼 如果在不同 时钟域内直接同步二进制指针 , 鲤鱼 有可能产生问题 。 草鱼 例如 , 鲤鱼 当读指针从 0111 向 1000 变化的时候 , 鲤鱼 指针所有的位都要变化 , 鲤鱼 如果写时钟恰好在读指针的变化时刻采样 , 鲤鱼 那么得到的读指针值有可能从 0000 到 1111 的任何一个 , 鲤鱼 所以二进制不宜被直接同步 。 草鱼 为了在不同时钟域内可以同步指针 , 鲤鱼 可以采用格雷码编码方式 , 鲤鱼 即指针每次移动只变化一位 , 鲤鱼 这样就避免了由于指针多位同时变化而无法直接同步的问题 。 草鱼草鱼 草鱼 草鱼 格雷码计数器是通过同步相应的二进制计数器 , 鲤鱼 将对应的二进制码转换成格雷码

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。