6371|4

76

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【FPGA开源教程连载】第十三章A 嵌入式RAM使用之双端口RAM [复制链接]

嵌入式RAM使用之双端口RAM


实验目的: 1.学习Altera公司Cyclone IV系列器件的内部结构
2.学会调用Quartus II软件中提供双口RAM核并进行仿真
实验平台:芯航线FPGA学习套件核心板
实验原理:
       本开发板使用的为Altera公司的CycloneIV系列芯片,其体系结构如图13-1所示。其核心架构是四输入查找表 (LUTs) 构成的 LE, 存储器模块以及乘法器。体系结构中还包括通用PLL以及I/O,其他诸如多用PLL、高速收发器以及PCIe硬核模块会在其高端系列IVGX中存在。
      
图13-1Cyclone IV体系结构
逻辑单元 (LE) 在 Cyclone IV 器件结构中是最小的逻辑单位。LE 紧密且有效的提供了高级功能的逻辑使用。其内部结构如图13-2所示。可以LE基本包含以下几个部分:4输入查找表LUT、D触发器(可以对每个LE 配置可编程的寄存器为D、T、JK或SR触发器操作)以及其它组合逻辑。详细介绍可参考器件手册中Chapter2. LogicElements and Logic Array Blocks in Cyclone IV Devices
13-2逻辑单元内部结构
    嵌入式存储器结构由一列列M9K 存储器模块组成,通过对这些 M9K存储器模块进行配置,可以实现各种存储器功能,例如:RAM、移位寄存器、ROM 以及FIFO缓冲器。详细介绍可参考器件手册中Chapter 3. MemoryBlocks in Cyclone IV Devices
图13-3为一个嵌入式乘法器列以及相邻的逻辑阵列模块 (LAB)。嵌入式乘法器可 以配置成一个18 × 18乘法器,或者配置成两个 9 × 9 乘法器。对于那些大于18 × 18的乘法运算,Quartus® II 软件会将多个嵌入式乘法器模块级联在一起。虽然没有乘法器数据位宽的限制,但数据位宽越大,乘法运算就会越慢。每个嵌入式乘法器均由以下几个单元组成:乘法器级、输入与输出寄存器以及输入与输出接口,其乘法器模块的体系结构如图12-4所示。详细介绍可参考器件手册中Chapter4. EmbeddedMultipliers in Cyclone IV Devices
图12-3与 LAB 相邻的按列排列的嵌入式乘法器                                图12-4乘法器模块的体系结构
       Cyclone IV内部其他部分功能均可在Altera官网提供的CycloneIV 器件手册中下载学习。
实验步骤:
新建一个以名为dpram的工程保存在prj下,然后单击Tools—MegaWizard Plug-In Manager来启动Mega Wizard插件管理器,并新建一个IP核。选择MemoryCompiler下的RAM:2-PORT,并将输出目录确定为工程文件夹下的ip文件夹,并以dpram保存,单击Next。对于单端口RAM,读写操作公用端口A的地址,数据通过端口A写入和读出;对于本节使用的双端口RAM,则是一个读端口和一个写端口。
12-5新建一个双端口的RAM
       这里将双端口RAM的使用方式设置为一个读端口和一个写端口,另一种方式为两个端口都可用做读/写。这也就是设置一般而言的简单双端口RAM还是真正双端口RAM
12-6两端口RAM设置第三页
       设置存储器大小的方式为按照字数确定,另一种方式为按照比特数;不同端口使用相同数的位宽;端口位宽为8;存储器使用的存储块类型为软件自动选择;存储器深度为软件自动选择。
12-7两端口RAM设置第四页
       时钟选择这里为单时钟,用一个时钟和一个时钟使能信号控制存储块所有的寄存器。其他应用场所还可以设置为双时钟使用独立的输入时钟和输出时钟或者双时钟使用单独的读时钟和写时钟。不创建读使能信号;
12-8双端口RAM设置第五页
       对输出端口进行寄存;不创建时钟使能信号;不创建异步复位端口,需注意这里复位并不复位RAM中的数据而是只复位寄存器上的值。
12-9两端口RAM设置第七页
这个选项只会在前面选择“一个读端口和一个写端口”或者“两个端口都可用读写”,才会出现如果对同一个地址既要写又要读,那么输出端口q的输出是什么。这里选择不关心,另一种可以设置为写数据之前的存储数据。
12-10两端口RAM设置第8
       这里不对RAM进行初始化,在后面使用ROM时必须进行初始化,初始化步骤将在ROM部分再讲解。
12-11两端口RAM设置第10
       然后确定配置信息后即可点击Finish完成配置。
并将生成的IP核加入工程,即可在工程下看到加入的IP核文件并设置为顶层文件。
为了测试仿真编写测试激励文件,新建dpram_tb.v文件并输入以下内容再次进行分析和综合直至没有错误以及警告,保存到testbench文件夹下。这里除了实现例化需要仿真的文件以及时钟创建,还实现了在地址从0~16上写入数据从255减至240。延时一段时间后读地址为0~16上的数据。


编译无误后可以在图12-12设计报告中看到本设计的使用的逻辑单元为0,这是因为这里我们只生成了一个RAM的IP核,没有使用逻辑设计。
12-12设计报告
设置好仿真脚本后进行功能仿真,可以看到如图12-12所示的数据写入时的波形文件。在写入信号使能有效后,上升沿来到后地址0写入数据’d255,下一个上升沿在地址1处写入数据’d254,以此类推。可以看出数据写入正常。
12-12数据写入时波形
放大读取部分数据波形,在图12-13中发现在写入与读间隔中,输出端口移植是’d255不利于分析数据。这里将激励文件中的rdaddress初始值改为一个写操作用不到的地址,大于16即可:rdaddress = 30;重启仿真即可看到图12-14波形数据。可看出输出总是延迟一个系统时钟周期。
12-13读数据波形文件
12-14修改后的读取波形数据
为了更好的观察时钟沿与地址、数据变化的过程,全编译后进行时序仿真。读数据时,可以看出第一个箭头时钟上升沿采到地址0 ;第二个时钟上升沿开始赋值,但是由于逻辑延迟(红框)后才开始赋值;因此第三个时钟上升沿的数据才是稳定的。
       这样就完成了,一个双端口RAM的配置与仿真。下一讲将以此为基础,进行串口收发+按键+双口RAM组成的简易系统设计。




小梅哥
芯航线电子工作室


关于学习资料,小梅哥系列所有能够开放的资料和更新(包括视频教程,程序代码,教程文档,工具软件,开发板资料)都会发布在我的云分享。(记得订阅)链接:http://yun.baidu.com/share/home?uk=402885837&view=share#category/type=0



class13_dpram.rar

895.93 KB, 下载次数: 81

第十三章A_嵌入式RAM使用之双端口RAM.pdf

1.18 MB, 下载次数: 82

此帖出自FPGA/CPLD论坛

最新回复

謝謝分享, 學習支持, 支持支持   详情 回复 发表于 2021-7-11 22:39

赞赏

1

查看全部赞赏

点赞 关注
 

回复
举报

356

帖子

0

TA的资源

一粒金砂(中级)

推荐
 
谢谢小梅哥
此帖出自FPGA/CPLD论坛

点评

感谢您的支持!!!  详情 回复 发表于 2017-1-4 00:56
 
 

回复

76

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
本文配有由小梅哥精心录制的配套视频教程,现已上架到本站EE大学堂,欢迎大家前往观看。观看过程中如果对哪一课程有疑问,可以到对应的文档教程帖子下面回复,我们会及时为您解答。视频教程链接:https://training.eeworld.com.cn/course/3577
此帖出自FPGA/CPLD论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(高级)

4
 

感谢您的支持!!!
此帖出自FPGA/CPLD论坛
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(初级)

5
 

謝謝分享, 學習支持, 支持支持

此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表