IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> FPGA19 嵌入式RAM之双端口RAM 使用和测试 -> 正文阅读

[嵌入式]FPGA19 嵌入式RAM之双端口RAM 使用和测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t93Mpr2Y-1627401356069)(FPGA 09 阻塞和非阻塞状态的理解.assets/test.png)]

FPGA19 嵌入式RAM之双端口RAM 使用和测试

在这里插入图片描述

模块名称: dpram() IP Core

主要功能 :调用内部的资源,实现数据的读/写功能

实验目的 :了解这些芯片专用硬件资源的情况下,将其合理的应用到对应的系统中

FPGA 芯片的内部结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6qRntvD-1627981341795)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313155153023.png)]

RAM,随机存取序列

实验目的及现象:通过串口发送数据到FPGA 中,FPGA接收到数据后将数据存储在双口 ram 的一段连续空间中,通过Quartus 软件提供的In-System Memory Content Editor 工具查看RAM中接收到的数据。当需要时,按下按键0,则FPGA将 RAM中存储的数据通过串口发送出去。

知识点:
1、Altera公司Cyclone lv系列器件的内部结构

2、存储器IP核的使用。

3、In-System Memory Content Editor 内存查看工具的使用。

4、后面实现【串口收发+按键+双口RAM组成的简易系统设计】

实现方式:

1、调用IP核,实现数据的存取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KXaT4V1n-1627981341798)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313160533804.png)]

创建IP核

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i5MsHse6-1627981341800)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313160805014.png)]

双口RAM配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FkvdXL4I-1627981341802)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313161419894.png)]

对双口RAM【类似与电脑的内存条空间】的 解释

1、针对上面的结构图,我们可以看到 几个信号线

data[7:0],表示的是即将写入的数据

wraddress [4:0]: 表示的是数据要写入或者说是数据要存入的地址

wren : 表示数据写入使能信号

readdress[4:0] : 表示读取数据的地址

q[7:0 ]: 表示的是读取的该地址的数据。

clk : 时钟

2、如何使用双端口ram模块

① 一个读端口,一个写端口

②两个都是读/写端口

3、内存结构单元的大小

1、使用字节作为一个存取单

2、使用bit作为一个存取单元

ram 配置的类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3juZfxp1-1627981341803)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313163612314.png)]

对双口RAM【类似与电脑的内存条空间】的解释

1、选择开辟的8bit(我们在上一张配置的结果中选择的是一个字节)的内存大小,这里是选择了 256字节

2、使用不同的数据对应着不同的位宽

理解: 这个的话就类似与整体的数据大小(size)和address的分配的一种对应关系

由上述 256字节来说

假设我们使用 8位数据输入,那么address就是[7:0]的地址

那么,如果在输出端配置的是:

? ① 8位数据输出,即q[7:0] ,那么 rdaddress也是 [7:0]

? ②16位数据输出,即q[15:0],那么 rdaddress就是[6:0]即可

也就是说,输入和输出是不一定都是相匹配的,可以根据自己的需求进行更改。

3、申请内存的分配的结构类型

默认选 auto(自动分配内存), M9K 和LCs的还不太了解。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GRSdIPXx-1627981341804)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313165310770.png)]

1、第一个是时钟的配置

	①选用单时钟

? ②读和写使用不同的时钟

? ③输入和输出使用不同的时钟

2、是否要创建读使能信号

? 下面的配置主要针对的是大于8位的位宽来进行配置的(暂时不管)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4ieM4yd-1627981341805)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313170111959.png)]

1、是否要使用寄存器(默认选择使用即可)

2、创建一个时钟使能信号(不用)

3、创建一个寄存器清零信号(暂时不用)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5oD8uCV0-1627981341806)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313170507410.png)]

本次我们使用的读和写数据使用的是同一个时钟,当我们同时在读和写同一个地址的数据的时候,我们需要认为此时q输出的数据是:

? ① 读取之前的数据

? ② 我不关心是之前的还是当前写入的(本次选用的是下面的方案)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nyOZoKCW-1627981341806)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313170947943.png)]

1、如何初始化你的内存(RAM)

? ① 让其保持空白

? ②使用mif文件对内存进行初始化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QP7sUsBD-1627981341807)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313171158971.png)]

next

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sGRhhUS5-1627981341808)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210313171226146.png)]

直接finish 。

本实验主要是熟悉和了解ram的使用:

以下是个人总结:

1、了解ram,其实ram就是我们说的内存,但是在我们实现的时候,就是要对内存执行【读/写】两个操作。

我们一般来说,写操作就是将输入写入到指定的地址中,【读】操作就是将存在在某个地址的数据读取出来。

生活实例:

? 这个可以理解为我们图书馆里面的书架,每个格子里面都可以存放书本(注:是任意或者非固定目标的书本),然后每个格子里面也各有标号。当我们需要读取的时候,只要对对应的格子编号,就可以找我我们要的书。

? 这个和ram是类似的,也就是说,地址里面的数据是可以根据自己的想法来改变的。

dpram_tb.v 文件

`timescale 1ns/1ns

`define clk_period 20

module dpram_tb;

	reg clock;
	reg [7:0]data;
	reg [7:0]rdaddress;
	reg [7:0]wraddress;
	reg wren;
	
	wire [7:0]q;
	
	integer i;
	
	dpram dpram0(
		.clock(clock),
		.data(data),
		.rdaddress(rdaddress),
		.wraddress(wraddress),
		.wren(wren),
		.q(q)
	);
	
	initial clock = 1;
	always#(`clk_period/2)clock = ~clock;
	
	initial begin
		data = 0;
		rdaddress = 30;
		wraddress = 0;
		wren = 0;
		#(`clk_period*20 +1 );
		for (i=0;i<=15;i=i+1)begin
			wren = 1;
			data = 255 - i;
			wraddress = i;
			#`clk_period;
		end
		wren = 0;
		#(`clk_period*20);
		for (i=0;i<=15;i=i+1)begin
			rdaddress = i;
			#`clk_period;
		end
		#(`clk_period*20);
		$stop;	
	end

endmodule

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:22:45  更:2021-08-04 11:23:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:34:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码