基于FPGA的异步FIFO设计与实现

基于FPGA的异步FIFO设计与实现
基于FPGA的异步FIFO设计与实现

 

 万方数据

 

 万方数据

 

 万方数据

基于FPGA的异步FIFO设计与实现

作者:熊红兵, 陈琦, Xiong,Hongbing, Chen,Qi

作者单位:熊红兵,Xiong,Hongbing(100084,清华大学电子工程系), 陈琦,Chen,Qi(100080,中国科学院电子学研究所)

刊名:

微计算机信息

英文刊名:CONTROL & AUTOMATION

年,卷(期):2006,22(17)

被引用次数:10次

参考文献(5条)

1.韦乐平同步光传输网络 1998

2.ITU_T Rec.G.78

3."Characteristics of synchronous digital hierarchy (SDH)equipment functional blocks" 1997

3.晏磊基于FPGA曼彻斯特码数据传输系统的实现[期刊论文]-微计算机信息 2006(01-02)

4.ITU_T Rec.G.707."Network Node Interface for the synchronous digital hierarchy (SDH)" 2000

5.陈晓华;熊红兵;张志伟ZX2513设计方案

本文读者也读过(10条)

1.彭莉.秦建业.付宇卓.Peng Li.Qin Jianye.Fu Yuzhuo异步FIFO的设计与验证[期刊论文]-计算机工程与应用2005,41(3)

2.张维旭.贺占庄.ZHANG Wei-xu.HE Zhan-zhuang基于FPGA的异步FIFO设计[期刊论文]-计算机技术与发展2006,16(7)

3.胡宏平.胡兵.HU HONGPING.HU BING基于FPGA的双口RAM在信号采集中的应用[期刊论文]-微计算机信息2007,23(35)

4.于海.樊晓桠.YU Hai.FAN Xiao-ya基于FPGA异步FIFO的研究与实现[期刊论文]-微电子学与计算机2007,24(3)

5.秦鸿刚.刘京科.吴迪基于FPGA的双口RAM实现及应用[期刊论文]-电子设计工程2010,18(2)

6.肖静娴.戴亚文.Xiao Jingxian.Dai Yawen基于FPGA的异步FIFO缓存设计[期刊论文]-电子测量技术

2009,32(11)

7.郝晓莉.刘洪波.沈绪榜.HAO Xiao-li.LIU Hong-bo.SHEN Xu-bang异步FIFO中存储单元的分析设计[期刊论文]-计算机技术与发展2007,17(3)

8.卜宪宪.Bu Xianxian异步FIFO的Verilog设计[期刊论文]-计算机与数字工程2007,38(6)

9.杨军.孔兵.宋克俭.尹航.YANG Jun.KONG Bing.SONG Ke-jian.YIN Hang基于FPGA的高速异步FIFO存储器设计[期刊论文]-云南大学学报(自然科学版)2007,29(6)

10.吴昆.黄坤.傅勇.盛翊智一种基于格雷码的异步FIFO设计与实现[期刊论文]-计算机与数字工程2007,35(1)

引证文献(10条)

1.黄忠朝.赵于前一种实现高速异步FIFO的FPGA方法[期刊论文]-计算机工程与应用 2010(3)

2.吕超.刘伯安适用于PCI-E接口的高速FIFO电路设计[期刊论文]-微计算机信息 2008(11)

3.王淦平.于凤芹.王灿忠.李剑鸿基于DSP和Ethernet的实时信号频谱监测系统[期刊论文]-仪表技术与传感器2009(2)

4.王冠雅.李淑清基于FPGA的光栅地震检波器信号处理研究[期刊论文]-自动化与仪表 2008(4)

5.苏兢.杨志义.韩芝侠基于FPGA的数控系统LCD控制器设计与实现[期刊论文]-科学技术与工程 2007(5)

6.刘晋.刘峰FPGA在大幅面高速彩色喷绘机喷头接口中的应用[期刊论文]-微型机与应用 2011(23)

7.段素蓉.庄圣贤一种内置FIFO全双工UART的设计与实现[期刊论文]-通信技术 2010(2)

8.侯风乾.宁子立.毕博瑞基于FPGA的FSO准同步数字复接器的实现[期刊论文]-应用光学 2010(2)

9.姜黎.曹新星.高志军基于FPGA的雷达检测波门的设计与实现[期刊论文]-计算机与数字工程 2013(2)

10.张海勇.叶显阳.皮代军.秦水介一种低功耗异步FIFO存储器的设计[期刊论文]-现代电子技术 2008(18)

引用本文格式:熊红兵.陈琦.Xiong,Hongbing.Chen,Qi基于FPGA的异步FIFO设计与实现[期刊论文]-微计算机信息 2006(17)

同步缓冲器(FIFO)的设计与实现..

同步缓冲器(FIFO)的设计与实现 姓名:崔琦 学号:100260305 班级:2010级电科3班 院系:电气与信息工程学院 专业:电子科学与技术 同组人姓名:梁承润 李建凯 (说明:我们三个人前面的报告部分是一样的,因为课设基本是三个人商议完成,所以就感觉报告部分没什么不同的就只写了一份报告)

目录 1原理与系统设计 (3) 2设计思想 (4) 3源码与注释 (5) 4仿真 (12) 5综合 (15) 6心得体会与建议 (19)

1 原理与系统设计 FIFO(First In First Out)——是一种可以实现数据先入先出的存储器件。FIFO就像一个单向管道,数据只能按固定的方向从管道一头进来,再按相同的顺序从管道另一头出去,最先进来的数据必定是最先出去。FIFO被普遍用作数据缓冲器。 FIFO的基本单元是寄存器,作为存储器件,FIFO的存储能力是由其内部定义的存储寄存器的数量决定的。本题中所设计的是同步FIFO(即输出输入端时钟频率一致),异步复位,其存储能力为(16x8),输出两个状态信号:full与empty,以供后继电路使用。 根据系统要求,画出的系统框图,如图1所示 clock reset 读控制信号写控制信号 input full empty output 图1同步FIFO框图 端口说明: 输入:in_data: 输入数据端口,位宽为8位; read_n: 读使能端,当read_n=0时,可以读出数据; write_n: 写使能端,当write_n=0时,可以写入数据; clock: 时钟信号,在时钟的正边沿进行采样; reset_n: 复位信号,当reset_n=0时,计数器及读写都被清零(即:读写地址指针都指向0) 输出:out_data: 输出数据端口,位宽为8位;; full:FIFO状态信号,当full=1时,表明该FIFO存储器已经写满; empty:FIFO状态信号,当empty=1时,表明该FIFO存储器已经读空;

一个异步FIFO的设计示例

一、异步FIFO 技术规 1. 总体描述 1.1. 功能定义 异步FIFO ( First In First Out)指的是在两个相互独立的时钟域下, 数据从一个时钟域写入FIFO 而另一个时钟域又从这个FIFO 中将数据读出。 本设计用8*256的RAM 实现异步FIFO 。 具体功能: 1. 写使能有效,且FIFO 不为满时,在写时钟的上升沿向FIFO 中写入数据。 2. 读使能有效,且FIFO 不为空时,在读时钟的上升沿从FIFO 中读出数据。 3. 当FIFO 写满时产生满信号,当FIFO 读空时产生空信号。 1.2. 应用围 异步FIFO 是用来作为缓冲的存储器, 它能对数据进行快速、顺序的存储和发送, 主要用来解决不同速率器件间的速率匹配问题。 2. 引脚描述 图1 2.1. 引脚功能描述

2.2.引脚时序描述 当写满时full由低变高,当读空时empty由低变高。只要不为满full就为低,不为空empty就为低。 3.顶层模块划分

图2 顶层模块说明: 1.ram_fifo :存储器模块,用于存放及输出数据; 2.w_addr_reg : 保存访问RAM的写地址; 3.r_addr_reg : 保存访问RAM的读地址; 4.w_addr_adder : 计算RAM下一个写地址; 5.r_addr_adder: 计算RAM下一个读地址; 6.cmp : 将读地址和写地址进行比较产生空满标志。 设计思想说明: FIFO满空的判定:当读地址的值加1之后等于写地址的值时,表明FIFO写满,当写地址的值加一之后等于读地址的值时,表明FIFO读空。在初始状态时FIFO的读地址在RAM 的中间位置,写地址在RAM的开始位置,所以初始状态FIFO不满也不空。空满信号的产生由组合电路产生。 4.功能模块描述

(完整版)基于FPGA的智能交通灯的设计毕业设计

目录 摘要 ............................................................. I 1 前言 (1) 2 交通红绿灯控制电路的发展与技术现状 (2) 2.1 交通控制系统以及交通红绿灯控制电路的发展现状 (2) 2.2 智能交通红绿灯控制电路技术的现状 (3) 3 VHDL、FPGA、Quartus ii简介 (5) 3.1 VHDL简介 (5) 3.1.1 VHDL简介 (5) 3.1.2 VHDL语言的特点 (6) 3.2 FPGA简介 (8) 3.2.1 PLD器件的设计特点 (8) 3.2.2 FPGA的基本结构 (10) 3.2.3 采用FPGA设计逻辑电路的优点 (11) 3.3 Quartus II 的简介 (12) 4 具体方案论证与设计 (13) 4.1 具体方案论证 (13) 4.2系统算法设计 (15) 4.3 具体电路原理图 (16) 4.4 电路仿真图 (16) 5 实验结果 (17) 总结 (18) 参考文献 ......................................... 错误!未定义书签。附录: .. (19)

基于FPGA的十字路口交通信号灯 摘要 本文主要介绍十字路口交通灯控制器的设计。首先,介绍交通控制系统以及交通红绿灯控制电路的发展现状;然后采用硬件描述语言进行的交通灯控制器设计。重点介绍了控制系统各部分的设计,以及各个模块之间的同步处理。为了克服交通信号灯控制系统传统设计方法的弊端,更加适应城镇交通现状,利用VHDL语言、采用层次化混合输入方式,设计了具有3种信号灯和倒计时显示器的交通信号灯控制系统,在 QuartusⅡ下进行仿真,并下载到FPGA中制作成实际的硬件电路进行了模拟运行.使用该方法设计的交通灯控制系统电路简单、运行可靠、易于实现,可实现对交通信号的控制和显示功能。 关键词 FPGA;QUARTUS ii;HDPLD;十字路口交通灯控制器; Based on FPGA intersection traffic lights Abstract This paper describes the design of intersection traffic signal controller.First, the introduction of traffic control systems and traffic light control circuit of the development status; then using language designed for the traffic light controller.Focus on various parts of the control system

(完整版)异步FIFO设计

异步FIFO设计文档 一、概述 在大规模ASIC或FPGA设计中,多时钟系统往往是不可避免的,这样就产生了不同时钟域数据传输的问题,其中一个比较好的解决方案就是使用异步FIFO来作不同时钟域数据传输的缓冲区,这们既可以使相异时钟域数据传输的时序要求变得宽松,也提高了它们之间的传输效率。此文内容就是阐述异步FIFO的设计。 二、设计原理 2.1结构框图 Fig. 2.1.1 如上图所示的同步模块synchronize to write clk,其作用是把读时钟域的读指针rd_ptr采集到写时钟(wr_clk)域,然后和写指针wr_ptr进行比较从而产生或撤消写满标志位wr_full;类似地,同步模块synchronize to read clk 的作用是把写时钟域的写指针wr_ptr采集到读时钟域,然后和读指针rd_ptr进行比较从而产生或撤消读空标志位rd_empty。 另外还有写指针wr_ptr和写满标志位wr_full产生模块,读指针rd_ptr和读模块。RAM产生模块,以及双端口存储rd_empty空标志位 2.2 二进制计数器存在的问题 异步FIFO读写指针需要在数学上的操作和比较才能产生准确的空满标志位,但由于读写指针属于不同的时钟域及读写时钟相位关系的不确定性,同步模块采集另一时钟域的指针时,此指针有可能正处在跳变的过程中,如图Fig.2.2.1所示,那么采集到的值很有可能是不期望的值,当然,不期望的错误结果也会随之发生。

Fig. 2.2.1 上图中,rd_ptr2sync 3和4以及4和5之间的中间态是由于到各寄存器的时钟 rd_clk存在偏差而引起的。二进制的递增操作,在大多数情况下都会有两位或者两以上的bit位在同一个递增操作内发生变化,但由于实际电路中会存在时钟偏差和不同的路径延时,二进制计数器在自增时会不可避免地产生错误的中间结果,如图Fig.2.2.2。 Fig.2.2.2 上升沿到达rd_clk的电路原型以及局部波形的放大。由于Fig.2.2.1上图是 三寄存器的时间各不相同,这就导致了rd_ptr2sync的值从3'b011跳变3'b100的过程中经历了3'b111和3'b101,直到最后一个时钟(rd_clk0)沿的到来rd_ptr2sync 才跳变到正确结果3'b100。中间结果的持续的时间虽然相对短暂,但是这些不正确的结果完全有可能被其它时钟域的同步模块采集到而产生错误的动作,见上图。由此可见,要避免中间结果的产生,其中一个可行的方案就是使被同步模块采集的数据递变时,每次只有一个bit位发生改变。格雷码计数器就是一个不错的选择。 2.3 格雷码计数器的实现 2.3.1 格雷码的表现形式 格雷码一个最大的特点就是在递增或递减的过程中,每次只变化一位,这是它最大的优点。同时它也有自己的局限性,那就是循环计数深度必须是2的n次幂,否则就失去了每次只变化一位的特性。深度为16的二进制及格雷码递变表如下:Binary Gray 0 0000 0000

基于FPGA下的交通灯控制器设计

引言 随着城乡的经济发展,车辆的数量在迅速的增加,交通阻塞的问题已经严重影响了人们的出行。 现在的社会是一个数字化程度相当高的社会,很多的系统设计师都愿意把自己的设计设计成集成电路芯片,芯片可以在实际中方便使用。随着EDA技术的发展,嵌入式通用及标准FPGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CPLD 以其不可替代的地位及伴随而来的极具知识经济特征的IP芯片产业的崛起,正越来越受到业内人士的密切关注。FPGA就是在这样的背景下诞生的,它在数字电路中的地位也越来越高,这样迅速的发展源于它的众多特点。交通等是保障交通道路畅通和安全的重要工具,而控制器是交通灯控制的主要部分,它可以通过很多种方式来实现。在这许许多多的方法之中,使用FPGA和VHDL语言设计的交通灯控制器,比起其他的方法显得更加灵活、易于改动,并且它的设计周期性更加短。 城市中的交通事故频繁发生,威胁着人们的生命健康和工作生活,交通阻塞问题在延迟出行时间的同时,还会造成更多的空气污染和噪声污染。在这种情况下,根据每个道路的实际情况来设置交通灯,使道路更加通畅,这对构建和谐畅通的城市交通有着十分重要的意义。

第一章软件介绍 1.1 QuartusⅡ介绍 本次毕业设计是基于FPGA下的设计,FPGA是现场可编程门阵列,FPGA开发工具种类很多、智能化高、功能非常的强大。可编程QuartusⅡ是一个为逻辑器件编程提供编程环境的软件,它能够支持VHDL、Verilog HDL语言的设计。在该软件环境下,设计者可以实现程序的编写、编译、仿真、图形设计、图形的仿真等许许多多的功能。在做交通灯控制器设计时选择的编程语言是VHDL语言。 在这里简单的介绍一下QuartusⅡ的基本部分。图1-1-1是一幅启动界面的图片。在设计前需要对软件进行初步的了解,在图中已经明显的标出了每一部分的名称。 图 1-1-1 启动界面 开始设计前我们需要新建一个工程,首先要在启动界面上的菜单栏中找到File,单击它选择它下拉菜单中的“New Project Wizard”时会出现图1-1-2所显示的对话框,把项目名称按照需要填好后单击Next,便会进入图 1-1-3 显示的界面。

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

同步FIFO之VHDL描述

同步F I F O之V H D L描述(1)同步FIFO之VHDL描述 同步FIFO的意思是说FIFO的读写时钟是同一个时钟,不同于异步FIFO,异步FIFO的读写时钟是完全异步的。同步FIFO的对外接口包括时钟,清零,读请求,写请求,数据输入总线,数据输出总线,空以及满信号。下面分别对同步FI FO的对外接口信号作一描述: 1.时钟,输入,用于同步FIFO的读和写,上升沿有效; 2.清零,输入,异步清零信号,低电平有效,该信号有效时,FIFO被清空; 3.写请求,输入,低电平有效,该信号有效时,表明外部电路请求向FIF O写入数据; 4.读请求,输入,低电平有效,该信号有效时,表明外部电路请求从FIF O中读取数据; 5.数据输入总线,输入,当写信号有效时,数据输入总线上的数据被写入到FIFO中; 6.数据输出总线,输出,当读信号有效时,数据从FIFO中被读出并放到数据输出总线上; 7.空,输出,高电平有效,当该信号有效时,表明FIFO中没有任何数据,全部为空; 8.满,输出,高电平有效,当该信号有效时,表明FIFO已经满了,没有空间可用来存贮数据。 使用VHDL描述的FIFO将以上面的接口为基础,并且可以参数化配置FIFO的宽度和深度。先把对外接口描述出来吧。

------------------------------------- -- Designer : skycanny -- Date : 2007-1-29 -- Description : Synchronous FIFO created by VHDL library ieee; use sfifo is generic(width : positive depth : positive ); port ( clk : in std_logic; rst : in std_logic; wq : in std_logic; rq : in std_logic; data : in std_logic_vector(width - 1 downto 0); q : in std_logic_vector(width - 1 downto 0); empty : out std_logic; full : out std_logic ); end entity sfifo;

用FIFO设计AD与DSP之间的接口.

用FIFO设计A/D与DSP之间的接口 摘要:在采用CCD对非透明薄板厚度的测量系统设计中,采用高速A/D和DSP等器件进行电路设计可以确定CCD的像点位置。由于A/D转换器的采样速率和DSP的工作时钟频率相差非常大,为了提高DSP 的工作效率,避免数据丢失和控制方便,采用小容量的FIFO作为两者之间的接口可以产生很好的效果。 关键词:A/D;DSP;FIFO 1前言 在使用CCD对非透明薄板厚度的测量系统设计中,笔者采用高速A/D和DSP等器件设计信号采集和处理电路来确定CCD的像点位置。其具体电路如图1所示,该信号采集和处理电路由CCD驱动电路、加法电路、滤波放大等信号预处理电路、A/D转换电路、FIFO、DSP电路、时序与逻辑控制产生电路、USB总线接口电路等组成。其中DSP芯片选用TI公司生产的TMS320C6211高速数字信号处理芯片它主要用于对A/D转换后的数据进行插值和重心算法处理,从而确定CCD上像元的位置,然后把处理后的数据通过USB总线传输到PC机进行厚度计算、结果显示、存储等后续处理。该电路所需的时钟信号和采样逻辑控制时序由一片FPGA芯片产生。 当模拟信号由ADC转换成数字信号后,往往都需要输入DSPs的CPU作进一步处理。但A/D转换后数据输出与DSP的读外部数据的时钟很难精确地配合。即使DSP能读取到外部总线上的数据,由于A/D速率是4MHz,DSP外部存储器时钟为90MHz,为了读到总线上的数据,DSP外部存储器读写时钟也必须控制在4MHz,这样就大大降低了DSP的使用效率,同时再加上DSP处理数据也需要一定的时间,而不能一味地读取外部数据。所以,为了控制方便,避免数据丢失,设计时应采用小容量的FIFO作为两者之间的接口。本设计选用的FIFO芯片是Cypress公司的CY7C425-25ns。该芯片容量为1k×9bit,存取时间最大为25ns,读写周期最小为35ns。该器件具有半满(HF)、全满(FF)和空(EF)三个标志位输出,可以同时满足深度和宽度级联的需要。 图1 2DSP与FIFO芯片的工作原理 2.1FIFO读写过程 FIFO的一次读写过程如图2所示,由于FIFO是顺序读取数据,因此只需提供读写和其它控制信号线,而不需要一般RAM所需的地址线。若将两路A/D输出的数据存入FIFO中,每片FIFO用8bit两片FIFO即可级联构成16bit的数据宽度。由于FIFO采用的是5V供电,所以经电压转换器件74LVTH244可将5V数据信号电平转换成3.3V,然后与DSP的16Bit外部数据总线相连。再由FIFO的半满信号HF作为外部中断信号,当FIFO存储器半满时,便可

异步fifo设计及时序约束设置

一、前言 跨时钟域的同步处理,使用异步FIFO是常用的方式之一,对于异步FIFO的设计,网上的大部分资料来源于《Simulation and Synthesis Techniques for Asynchronous FIFO Design》一文 其异步FIFO的结构如下图所示 本文不是介绍上图描述的设计。我从基本的数字电路时序开始,介绍异步FIFO的相关问题。最后介绍如何用时序约束保证设计的正确性 二、数字电路时序 对于数字电路来讲,我们的信号在时钟边沿发生变化,Dat1信号是一种理想情况,而Dat2是实际情况,其特点是 一、相对时钟边沿有延时 二、信号变化有一段时间(电平转换时间),在这段时间就是亚稳态 在亚稳态期间进行数据采样,不能获得稳定的值。数字电路中经过时序约束,在T1产生的信号,在T2一定稳定(否则就是不满足时序),所以对于只有一个时钟的数字电路来说,它在T1和T2都能获得稳定的信号(T1时刻的值为0、T2时刻的值为1)

三、跨时钟域时序问题 对于异步时钟而言(相位不同),对于CLK1产生的信号,CLK2有可能在任意时刻进行数据采样 在FIFO的设计中,将会产生2种信号,一种是数据本身(用Data表示),另外一种是指示数据是否有效(用valid表示),注意(valid不一定是一个比特的寄存器,可以是由FIFO中的读写指针产生而来,例如fifo的full或empty状态) 异步FIFO的问题在于,如果CLK2在时钟T2进行采样,那么有可能得到valid有效,而数据无效的情况。这样在CLK2采样取得的设计就是错误的数据。 四、处理异步FIFO的valid和data(理论基础) 我们假设valid为低电平表示没有数据,高电平为有数据,解决的办法就是,当CLK对valid进行采样时,即使valid处于亚稳态期间,数据信号也是稳定的 如上图所以,在T1时刻进行上升沿采样,虽然valid是一个亚稳态状态,但是此时Data 是一个稳定的值,如果在T1时刻采样的valid为1,那么可以得到稳定的Data信号,如果在T1时刻采样的valid为0,那么控制逻辑认为在T1无法获得数据,从而在下一个时钟获取 注意:T2时刻是在下降沿进行采样,而此时的Data信号也是稳定的

【CPLD Verilog】CPLD实现同步FIFO

CPLD实现同步FIFO 1 实现原理 CPLD实现8个字节的同步FIFO,实现8个字节数据的缓存。CPLD内部模块逻辑框图如下所示。 Data_a_we_pulse写数据到FIFO的使能信号。 Data_a_rd_pulse从FIFO读取数据的使能信号。 Data_a_in和Data_a_out分别表示写入FIFO和从FIFO读出的数据的值。 Data_a_we_full指示FIFO写满的状态。 Data_a_rd_nop指示FIFO读空的状态。 2 CPLD代码 module fifo_8B ( clk, reset_n, data_a_in, data_a_we_pulse,

data_a_we_full, data_a_out, data_a_rd_pulse, data_a_rd_nop ); input clk; input reset_n; input [7:0] data_a_in; input data_a_we_pulse; output data_a_we_full; output [7:0] data_a_out; input data_a_rd_pulse; output data_a_rd_nop; //////////////////////////FIFO 写入数据逻辑//////////////////////////// reg [7:0] fifo_mem [7:0]; //FIFO空间,8个8bit的空间 reg [2:0] fifo_we_addr; //FIFO写地址寄存器 reg fifo_we_addr_reverse_pulse; //FIFO写地址翻转状态寄存器,用于指示写//地址是否从最大地址翻转回到最小地址 always@(posedge clk or negedge reset_n) begin if(reset_n == 1'b0)

FPGA异步fifo设计完整报告

目录 一、技术规范 (3) 1、设计完成的功能: (3) 2、系统整体框图: (3) 3、I/O管脚的描述: (3) 4、验证和测试工具选择: (4) 5、说明关键模块: (4) 6、拟选用的FPGA类型: (4) 二、FIFO总体设计方案 (5) 系统功能描述: (5) 电路结构图: (5) 系统的总体输入输出设定 (6) 系统时序分析: (6) 关键模块设计分析: (7) 三、FIFO验证方案 (8) FIFO功能: (8) 1、概述: (8) 2、预确认: (8) 3、模块运行确认: (9) 4、系统运行确认: (9) 四、仿真激励代码 (10) 五、电路设计FIFO源代码 (11)

六、FPGA设计FIFO综合布局布线报告: (16) 综合引脚分配: (16) 电路布局布线: (16) 七、时序仿真报告 (17) 时序仿真波形: (17) 八、FIFO下载代码和引脚分布 (17) 系统输入输出引脚分布: (21) 九、心得体会 (21)

技术规范 1、设计完成的功能: 本实验完成的是8位异步FIFO的设计,其中写时钟100MHz,读时钟为5MHz,其中RAM的深度为256。当写时钟脉冲上升沿到来时,判断写信号是有效,则写一个八位数据到RAM中;当读时钟脉冲上升沿到来时,判断读信号是有效,则从RAM中把一个八位数据读出来。当RAM中数据写满时产生一个满标志,不能再往RAM再写数据;当RAM中数据读空时产生一个满标志,不能再从RAM读出数据。 2、系统整体框图:

3、I/O管脚的描述: 管脚名称方向H/L电平位宽功能描述 rst_n input 3.3V/01全局复位信号 rd_en input 3.3V/01读使能低有效 wr_en input 3.3V/01写使能低有效 rd_empty output 3.3V/01读空标志高有效wr_full output 3.3V/01写满标志高有效rd_data output 3.3V/08数据输出 wr_data input 3.3V/08数据写入 clk_100M input 3.3V/01写数据时钟 clk_5M input 3.3V/01读数据时钟 4、验证和测试工具选择: Modelsim SE6.1f进行前仿真和后仿。在软件QuartusII中进行综合。 5、说明关键模块: 对控制输入的读写地址要进行设计,以便在写满或是读空只产生一个标志,以此来实现对FIFO的缓冲的控制。也就是读地址加1与写地址相等则为读空,产生读空标志;写地址加1与读地址相等则为读空,产生写满标志 6、拟选用的FPGA类型:ep1cq240c8n

verilog同步和异步FIFO,可直接仿真和综合

EDA/SOPC课程设计报告 题目:同异步FIFO模块的设计与验证 姓名: xxx 学号: 120260320 同组人: xxx 指导教师: xxx 成绩:

目录 目录................................................................................................................................................... II 第1章课程设计的要求 . (1) 1.1 课程设计的目的 (1) 1.2 课程设计的条件 (1) 1.3 课程设计的要求 (1) 第2章课程设计的内容 (2) 2.1 设计思路 (2) 2.2 软件流程图 (3) 2.3 HDL代码阐述 (7) 2.4 ModelSim验证 (13) 第3章课程设计的心得 (21)

第1章课程设计的要求 1.1 课程设计的目的 ●掌握FIFO设计的基本原理与方法 ●培养Verilog语言模块化设计的思想意识 ●完成一个FIFO的设计与验证 ●掌握较大工程的基本开发技能 ●培养综合运用Modelsim工具进行硬件开发的能力 ●培养数字系统设计的基本能力 ●加强对课堂Verilog语言学习的理解与升华 1.2 课程设计的条件 ●设计条件ISE、Modelsim等开发软件的使用 1.3 课程设计的要求 ●设计要求1 设计同步FIFO并验证(包括仿真验证、FPGA验证) ●设计要求2 设计异步FIFO并验证(包括仿真验证、FPGA验证) ●设计要求3 采用Design Compiler完成其逻辑综合,评估其面积和时序 ●设计要求4 完成综合后的SDF反标仿真

基于FPGA的交通灯课程设计报告

总体设计要求和技术要点 1.任务及要求 (1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 (2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。 (3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。 (5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。 (6)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。 工作内容及时间进度安排 第17周:周1---周2 :立题、论证方案设计 周3---周5 :程序设计与调试 第18周:周1---周3 :硬件调试与测试、撰写课程设计报告 周4---周5 :验收答辩 课程设计成果 1.与设计内容对应的软件程序 2.课程设计总结报告

摘要 本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL 作为设计功能描述语言,选用Altera公司的EP1K30144-PIN TQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。 Abstract This experiment designed for independent choice experiment, experiment choice which has the function of the countdown display red yellow green traffic design, description language (VHDL as design function is applied in the experiments, the most main control chip select MAX II EPM240T100C5 Altera company, experiment report, this paper briefly introduces the MAX II device series, and gives the design diagram, detailed introduces the traffic lights of the design process, the experiment report with the code results photo graph.

双口ram实现同步fifo(源代码)

module fifo_ram(fifo_reset,clk,r,w,read_data,write_data, full,empty,Fcounter); parameter data_width=8; parameter addr_width=9; input fifo_reset,clk,r,w; input[data_width-1:0] write_data; output[data_width-1:0] read_data ; output full,empty; output[addr_width-1:0] Fcounter; reg full,empty; wire[data_width-1:0] read_data ; reg[addr_width-1:0] Fcounter; reg[addr_width-1:0] write_addr; reg[addr_width-1:0] read_addr; wire r_allow=(r&&!empty); wire w_allow=(w&&!full); r_w_ram u1(.w_clk(clk), .r_clk(clk), .w_addr(write_addr), .r_addr(read_addr), .w_allow(w_allow), .r_allow(r_allow), .w_data(write_data), .r_data(read_data));//wire always@(posedge clk,posedge fifo_reset) begin if(fifo_reset) empty<='b1; else empty<=(!w&&(Fcounter[8:1]==0)&&((Fcounter[0]==0)||r)); end always@(posedge clk,posedge fifo_reset) begin if(fifo_reset)

FIFO存储器的设计

FIFO存储器的设计 摘要:FIFO是一种不同时钟域之间传递数据的常用方法,基于FIFO(先进先出)设计的存储器的数据读出顺序与数据写入顺序始终一致。这种存储器主要用在两个处理数据速度不同的数字系统之间,作为数据缓冲器来提供必要的数据缓冲,使这两个数字系统达到同步,这在许多信号处理系统中是必须的。这篇文章介绍了一种容量为1k×9的具有异步和同步功能FIFO存储器的设计方法,这种设计方法也可以用于存储容量更大的存储器的设计。在设计具体逻辑单元时,基于Fundry厂商制定的工艺尺寸规则,优化了部分常用的逻辑电路,来减小版图面积和降低生产成本。 关键词:先进先出存储器;指针;数据缓冲;异步;同步 中图分类号:TN432 文献标识码: A Designing of FIFO memory Abstract :FIFO is a general way to communicate between different clock domains. The memory based on FIFO (First-In, First-Out) keeps track of the order in which date is entered into the memory and reads the date out in the same order. The most common application of a FIFO is as a buffer memory between two digital systems operating at different speeds, providing the necessary data buffering to achieve synchronization, which is a requirement for many signal processing systems. This paper describes a design of a 1k×9 asynchronous and simultaneous FIFO memory, which can also be applied on the larger memory size. Based on the fundry’s rule of the technology, we optimize some units in order to reduce the square of the layout and cost, during designing of the units of the logic. Keywords: FIFO memory; pointer; data buffering; asynchronous; simultaneous 1 引言 存储器是存储数字信息的电路或系统,随着IC产业的迅猛发展,现代数字系统需要高速存储和检索大量信息的能力,存储器在数字电路中越来越重要。最近的调查显示,在世界范围内,存储器芯片大约占了半导体交易的30%。 低功耗高速度的先进先出存储器在大规模数字集成电路中,尤其是在片上系统(System on Chip)中经常作为一个必不可少的模块被用到。在功能上FIFO存储器有点类似一个串行移位寄存器,数据读出顺序与数据写入顺序始终一致。这种存储器主要用在两个处理数据速度不同的数字系统之间,作为数据缓冲器使用[1]。即使这两个系统数据处理速度相同,要想使它们同步也是不可能的,FIFO存储器提供了必要的数据缓冲使其达到同步,这在许多信号处理系统中是必须的。

基于FPGA的交通灯设计说明

交通信号灯控制器

目录 第一章系统设计 1.1设计要求 (3) 1.2 方案比较 (3) 1.3方案论证 (3) 1.3.1总体思路 (4) 1.3.2设计方案 (5) 第二章单元电路设计 2.1 4位二进制计数器 (6) 2.2 两位二进制计数器 (6) 2.3定时时间到检测电路 (6) 2.4红黄绿灯输出控制电路 (6) 2.5计时器 (6) 第三章软件设计 3.1用VHDL编写程序 (6) 3.2 程序流程 (7) 3.3程序清单及仿真 (7) 第四章系统测试 (7) 第五章结论 (8) 参考文献 (9) 附录 (10)

0 引言 随着经济的飞速发展,现代化交通管理成了当今的热点问题。一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。本系统通过设计一交通信号灯控制器,达到交通控制的目的。除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。 第1章 系统设计 1.1设计要求 (1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间。 (2) 交通灯红变绿是直接进行的,没有间隔时间。 (3) 主干道上的绿灯时间为20秒,支干道的绿灯时间为10秒。 (4) 在任意时间,显示每个状态到该状态结束所需要的时间。 1.2方案比较 要实现对交通灯的控制,有很多的方案可供选择。 方案一:由两块CMOS 集成电路完成定时和序列控制功能,三只双向晶体管完成实际的电源切换功能。电路中采用10V 负电源(可由市电电压经降压、整流、滤波、稳压而得)、CD4049集成电路、计数器CD4017等器件。其中双向晶闸管选用400V 、4A 的,二极管选用BY127型和1N4148型,稳压管选用10V 、1W 的。因直接使用市电工作,故在安装和使用时安全系数较低,且硬件电路复杂,所用器件多。 方案二:运用VHDL 语言分别控制分频和状态机两个模块, 即信号源经分频器分频后得到1Hz 脉冲,输出脉冲控制状态机中预置四个状态的循环,从而达到交通控制作用.该方案电路结构简单,使用器件少,易于安装和使用.但不宜于电路扩展,适用围小,应用不广泛. 方案三:采用VHDL 语言输入的方式实现交通信号灯控制器,并灵活运用了通用元件CBU14和CBU12作为4位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。 分析以上三种方案的优缺点,显然第三种方案具有更大的优越性、灵活性,所以采用第三种方案进行设计。 1.3 方案论证 1.3.1 总体思路 系统交通管理示意图如图1.3.1. 主干道 支干道 图1.3.1 路口交通管理示意图 由此可得出交通信号灯A 、B 、C 、D 的4种状态:

同步FIFO之VHDL描述

同步FIFO之VHDL描述(1) 作者:skycanny时间:2007-09-28 16:09:38 来自:skycanny的笔记浏览次数:1601 文字大小:【大】【中】【小】同步FIFO之VHDL描述 同步FIFO的意思是说FIFO的读写时钟是同一个时钟,不同于异步FIFO,异步FIFO的读写时钟是完全异步的。同步FIFO的对外接口包括时钟,清零,读请求,写请求,数据输入总线,数据输出总线,空以及满信号。下面分别对同步FIFO的对外接口信号作一描述:1.时钟,输入,用于同步FIFO的读和写,上升沿有效; 2.清零,输入,异步清零信号,低电平有效,该信号有效时,FIFO被清空; 3.写请求,输入,低电平有效,该信号有效时,表明外部电路请求向FIFO写入数据; 4.读请求,输入,低电平有效,该信号有效时,表明外部电路请求从FIFO中读取数据; 5.数据输入总线,输入,当写信号有效时,数据输入总线上的数据被写入到FIFO中; 6.数据输出总线,输出,当读信号有效时,数据从FIFO中被读出并放到数据输出总线上; 7.空,输出,高电平有效,当该信号有效时,表明FIFO中没有任何数据,全部为空; 8.满,输出,高电平有效,当该信号有效时,表明FIFO已经满了,没有空间可用来存贮数据。 使用VHDL描述的FIFO将以上面的接口为基础,并且可以参数化配置FIFO的宽度和深度。先把对外接口描述出来吧。 --------------------------------------------------------------------------------------------------------- -- Designer : skycanny -- Date : 2007-1-29 -- Description : Synchronous FIFO created by VHDL library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity sfifo is generic(width : positive depth : positive ); port ( clk : in std_logic; rst : in std_logic; wq : in std_logic; rq : in std_logic; data : in std_logic_vector(width - 1 downto 0); q : in std_logic_vector(width - 1 downto 0); empty : out std_logic; full : out std_logic ); end entity sfifo; ----------------------------------------------------------------------------------------------------------- 同步FIFO内部通过控制电路和RAM实现,控制电路主要包括写指针管理电路,读指针管理电路,以及FIFO状态判断电路,对于同步FIFO来讲,读和写的指针管理电路实际上就是二进制计数器。

FIFO原理讲解

异 步 FIFO 结 构 (第一部分) 作者:Vijay A.Nebhrajani 翻译:Adam Luo 2006年7月 设计一个FIFO是ASIC设计者遇到的最普遍的问题之一。本文着重介绍怎样设计FIFO——这是一个看似简单却很复杂的任务。 一开始,要注意,FIFO通常用于时钟域的过渡,是双时钟设计。换句话说,设计工程要处理(work off)两个时钟,因此在大多数情况下,FIFO工作于独立的两个时钟之间。然而,我们不从这样的结构开始介绍—我们将从工作在单时钟的一个FIFO特例开始。虽然工作在同一时钟的FIFO在实际应用中很少用到,但它为更多的复杂设计搭建一个平台,这是非常有用的。然后再从特例推广到更为普通的FIFO,该系列文章包括以下内容: 1.单时钟结构 2.双时钟结构——双钟结构1 3.双时钟结构——双钟结构2 4.双时钟结构——双钟结构3 5.脉冲模式FIFO

单时钟FIFO特例 FIFO有很多种结构,包括波浪型(ripple)FIFO,移位寄存器型以及其他一些我们并不关心的结构类型。我们将集中讨论包含RAM存储器的结构类型。其结构如图1所示。 通过分析,我们看到图中有一个具有独立的读端口和独立的写端口的RAM 存储器。这样选择是为了分析方便。如果是一个单端口的存储器,还应包含一个仲裁器保证同一时刻只能进行一项操作(读或写),我们选择双口RAM(无需真正的双口RAM,因为我们只是希望有一个简单的相互独立的读写端口)是因为这些实例非常接近实际情况。 读、写端口拥有又两个计数器产生的宽度为log2(array_size)的互相独立的读、写地址。数据宽度是一个非常重要的参数将在在稍后的结构选择时予以介绍,而现在我们不必过分的关心它。为了一致,我们称这些计数器为“读指针”(read pointer)和“写指针”(write pointer)。写指针指向下一个将要写入的位置,读指针指向下一个将要读取的位置。每次写操作使写指针加1,读操作使读指针加1。 我们看到最下面的模块为“状态”(stauts) 模块。这个模块的任务实给FIFO 提供“空”(empty)和“满”(full)信号。这些信号告诉外部电路FIFO已经达到了临界条件:如果出现“满”信号,那么FIFO为写操作的临界状态,如果出现“空”信号,则FIFO为读操作的临界状态。写操作的临界状态(“full is active”)表示FIFO已经没有空间来存储更多的数据,读操作的临界表示FIFO没有更多

相关文档
最新文档